home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / smarts / cppdll / cppdll.cpp next >
Encoding:
Text File  |  1996-02-21  |  4.1 KB  |  135 lines

  1. --------------------------------------------------------------------------------
  2. --
  3. -- COPYRIGHT:
  4. --   IBM WorkFrame - Project Smarts
  5. --   (C) Copyright International Business Machines Corporation 1996
  6. --   Licensed Material - Program-Property of IBM - All Rights Reserved.
  7. --   US Government Users Restricted Rights - Use, duplication, or disclosure
  8. --   restricted by GSA ADP Schedule Contract with IBM Corp.
  9. --
  10. --------------------------------------------------------------------------------
  11. <include prologcp.tde>
  12.  
  13. //----------------------------------------------
  14. // $FILE_NAME$.cpp - Source file for a C++ DLL
  15. //----------------------------------------------
  16.  
  17. #include "$FILE_NAME$.hpp"
  18.  
  19. /***************************/
  20. /* Defining Static Objects */
  21. /***************************/
  22.  
  23. int area::objectCount = 0;
  24. int rectangle::objectCount = 0;
  25. int triangle::objectCount = 0;
  26.  
  27. <if ($CPPFILT$)>
  28. /*-----------------------------------------------------------------*/
  29. /* This file defines 3 classes, area, rectangle, and triangle.     */
  30. /* No symbol or class is marked with the _Export keyword or        */
  31. /* exported via the #pragma export directive.  Exporting is done   */
  32. /* using a .DEF file created with the help of the CPPFILT utility  */
  33. /* that creates an EXPORT entry for every public symbol.  The      */
  34. /* symbols are thus exported by their mangled names.               */
  35. /*-----------------------------------------------------------------*/
  36. </if>
  37. <if ($EXPORT$)>
  38. /*--------------------------------------------------------------*/
  39. /* This file defines 3 classes, area, rectangle, and triangle.  */
  40. /* Identify the classes we wish to export                       */
  41. /*--------------------------------------------------------------*/
  42. class _Export area;
  43. class _Export rectangle;
  44. class _Export triangle;
  45. </if>
  46. <if ($PRAGMA$)>
  47. /*--------------------------------------------------------------*/
  48. /* This file defines 3 classes, area, rectangle, and triangle.  */
  49. /* Identify the symbols we wish to export                       */
  50. /*--------------------------------------------------------------*/
  51. #pragma export(area::objectCount)
  52. #pragma export(area::getDim)
  53. #pragma export(area::getArea)
  54. #pragma export(area::area(void))
  55. #pragma export(area::setarea)
  56.  
  57. #pragma export(triangle::objectCount)
  58. #pragma export(triangle::getArea)
  59. #pragma export(triangle::triangle(void))
  60.  
  61. #pragma export(rectangle::objectCount)
  62. #pragma export(rectangle::getArea)
  63. #pragma export(rectangle::rectangle(void))
  64.  
  65. /*---------------------------------------------------------*/
  66. /* Considerations: Ensure you export all the required      */
  67. /* member functions.  If an inlined or exported function   */
  68. /* uses private or protected members, you must also export */
  69. /* those members.  In addition, you should also export     */
  70. /* all static members otherwise clients of your class will */
  71. /* not be able to debug their code because the reference   */
  72. /* to the static data members cannot be resolved.          */
  73. /*---------------------------------------------------------*/
  74. </if>
  75.  
  76. /****************************/
  77. /* Defining the Base Class  */
  78. /****************************/
  79.  
  80. area::area(void)
  81.    {
  82.    ++area::objectCount;
  83.    }
  84.  
  85. void area::setarea(double d1 , double d2)
  86.          {
  87.          dim1 = d1;
  88.          dim2 = d2;
  89.          }
  90.  
  91. void area::getDim(double &d1, double &d2)
  92.          {
  93.          d1 = dim1;
  94.          d2 = dim2;
  95.          }
  96.  
  97. double area::getArea()
  98.          {
  99.          return -1 ;    /* not override */
  100.          }
  101.  
  102. /*******************************/
  103. /* Defining a   Derived class  */
  104. /*******************************/
  105.  
  106. double rectangle::getArea()
  107.          {
  108.          double d1,d2;
  109.          getDim (d1,d2);
  110.          return d1*d2;
  111.          }
  112.  
  113. rectangle::rectangle(void)
  114.    {
  115.    ++rectangle::objectCount;
  116.    }
  117.  
  118. /*******************************/
  119. /* Defining a   Derived class  */
  120. /*******************************/
  121.  
  122.  
  123. triangle::triangle()
  124.    {
  125.    ++triangle::objectCount;
  126.    }
  127.  
  128. double triangle::getArea()
  129.    {
  130.    double d1,d2;
  131.    getDim (d1,d2);
  132.    return .5*d1*d2;
  133.    }
  134.  
  135.