home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / som / include / somobj.h < prev    next >
C/C++ Source or Header  |  1999-02-22  |  44KB  |  1,378 lines

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: somobj.h.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emith: 2.47
  8.  */
  9.  
  10. #ifndef SOM_SOMObject_h
  11. #define SOM_SOMObject_h
  12.  
  13.  
  14. #include <som.h>
  15.  
  16. /*
  17.  * -- This emitter treats Method Tokens as Thunks by default.
  18.  * -- Use the sc modifier "nothunks" to change this default
  19.  */
  20. #undef somresolve_
  21. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  22.  
  23. /*
  24.  * Define the class name as an object type
  25.  */
  26. #ifndef SOMObject
  27. #define SOMObject SOMObject
  28. #endif
  29. /*
  30.  *  This is the SOM root class, all SOM classes must be descended from
  31.  *  <SOMObject>. <SOMObject> has no instance data so there is no
  32.  *  per-instance cost to to being descended from it.
  33.  */
  34.  
  35. /*
  36.  * Start of bindings for IDL types
  37.  */
  38.  
  39. #ifndef SOMClass
  40.     #define SOMClass SOMObject
  41. #endif /* SOMClass */
  42. #ifndef _IDL_SEQUENCE_SOMObject_defined
  43. #define _IDL_SEQUENCE_SOMObject_defined
  44. typedef struct {
  45.     unsigned long _maximum;
  46.     unsigned long _length;
  47.     SOMObject **_buffer;
  48. } _IDL_SEQUENCE_SOMObject;
  49. #endif /* _IDL_SEQUENCE_SOMObject_defined */ 
  50. typedef
  51. _IDL_SEQUENCE_SOMObject SOMObject_SOMObjectSequence;
  52. /*
  53.  *  a sequence of SOM Objects
  54.  */
  55.  
  56. #ifndef _IDL_SEQUENCE_octet_defined
  57. #define _IDL_SEQUENCE_octet_defined
  58. typedef struct {
  59.     unsigned long _maximum;
  60.     unsigned long _length;
  61.     octet *_buffer;
  62. } _IDL_SEQUENCE_octet;
  63. #endif /* _IDL_SEQUENCE_octet_defined */ 
  64. typedef
  65. _IDL_SEQUENCE_octet SOMObject_BooleanSequence;
  66. /*
  67.  *  a sequence of booleans.
  68.  */
  69.  
  70. typedef
  71. struct SOMObject_somObjectOffset {
  72. SOMObject* obj;
  73. long  offset;
  74. } SOMObject_somObjectOffset;
  75. /*
  76.  *  a structure to describe an object-related offset
  77.  */
  78.  
  79. struct SOMObject_somObjectOffset;
  80. #ifndef _IDL_SEQUENCE_SOMObject_somObjectOffset_defined
  81. #define _IDL_SEQUENCE_SOMObject_somObjectOffset_defined
  82. typedef struct {
  83.     unsigned long _maximum;
  84.     unsigned long _length;
  85.     struct SOMObject_somObjectOffset *_buffer;
  86. } _IDL_SEQUENCE_SOMObject_somObjectOffset;
  87. #endif /* _IDL_SEQUENCE_SOMObject_somObjectOffset_defined */ 
  88. typedef
  89. _IDL_SEQUENCE_SOMObject_somObjectOffset SOMObject_somObjectOffsets;
  90. /*
  91.  *  a sequence of object-related offsets
  92.  */
  93.  
  94.  
  95. #ifndef SOM_DONT_USE_SHORT_NAMES
  96.  
  97. #ifndef SOM_DONT_USE_SHORT_NAMES
  98. #ifndef SOMTGD_SOMObjectSequence
  99.     #ifdef SOMObjectSequence
  100.         #undef SOMObjectSequence
  101.         #define SOMTGD_SOMObjectSequence 1
  102.     #else
  103.         #define SOMObjectSequence SOMObject_SOMObjectSequence
  104.     #endif /* SOMObjectSequence */
  105. #endif /* SOMTGD_SOMObjectSequence */
  106. #endif /* SOM_DONT_USE_SHORT_NAMES */
  107.  
  108. #ifndef SOM_DONT_USE_SHORT_NAMES
  109. #ifndef SOMTGD_BooleanSequence
  110.     #ifdef BooleanSequence
  111.         #undef BooleanSequence
  112.         #define SOMTGD_BooleanSequence 1
  113.     #else
  114.         #define BooleanSequence SOMObject_BooleanSequence
  115.     #endif /* BooleanSequence */
  116. #endif /* SOMTGD_BooleanSequence */
  117. #endif /* SOM_DONT_USE_SHORT_NAMES */
  118. #ifndef SOMTGD_somObjectOffset
  119.     #ifdef somObjectOffset
  120.         #undef somObjectOffset
  121.         #define SOMTGD_somObjectOffset 1
  122.     #else
  123.         #define somObjectOffset SOMObject_somObjectOffset
  124.     #endif /* somObjectOffset */
  125. #endif /* SOMTGD_somObjectOffset */
  126. #ifndef SOMTGD__IDL_SEQUENCE_somObjectOffset
  127.     #ifdef _IDL_SEQUENCE_somObjectOffset
  128.         #undef _IDL_SEQUENCE_somObjectOffset
  129.         #define SOMTGD__IDL_SEQUENCE_somObjectOffset 1
  130.     #else
  131.         #define _IDL_SEQUENCE_somObjectOffset _IDL_SEQUENCE_SOMObject_somObjectOffset
  132.     #endif /* _IDL_SEQUENCE_somObjectOffset */
  133. #endif /* SOMTGD__IDL_SEQUENCE_somObjectOffset */
  134.  
  135. #ifndef SOM_DONT_USE_SHORT_NAMES
  136. #ifndef SOMTGD_somObjectOffsets
  137.     #ifdef somObjectOffsets
  138.         #undef somObjectOffsets
  139.         #define SOMTGD_somObjectOffsets 1
  140.     #else
  141.         #define somObjectOffsets SOMObject_somObjectOffsets
  142.     #endif /* somObjectOffsets */
  143. #endif /* SOMTGD_somObjectOffsets */
  144. #endif /* SOM_DONT_USE_SHORT_NAMES */
  145. #endif /* SOM_DONT_USE_SHORT_NAMES */
  146.  
  147. /*
  148.  * End of bindings for IDL types.
  149.  */
  150.  
  151. #define SOMObject_MajorVersion 1
  152. #define SOMObject_MinorVersion 5
  153.  
  154. /*
  155.  * External name shortening if required
  156.  */
  157. #ifdef SOM_USE_SHORT_EXTERNAL_NAMES
  158. #define SOMObjectNewClass somobc
  159. #pragma linkage(somobc, system)
  160. #define SOMObjectClassData somobd
  161. #define SOMObjectCClassData somobx
  162. #endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
  163. /*--------------Migration------------*/
  164. #define SOMObject_classObj SOMObjectClassData.classObject
  165. #define _SOMObject SOMObject_classObj
  166.  
  167. /*
  168.  * Declare the class creation procedure
  169.  */
  170. SOMEXTERN SOMClass * SOMLINK SOMObjectNewClass(integer4 somtmajorVersion,
  171.         integer4 somtminorVersion);
  172. #pragma linkage(SOMObjectNewClass, system)
  173.  
  174. /*
  175.  * Declare the class data structure
  176.  */
  177. SOMEXTERN struct SOMObjectClassDataStructure {
  178.     SOMClass *classObject;
  179.     somMToken somInit;
  180.     somMToken somUninit;
  181.     somMToken somFree;
  182.     somMToken somDefaultVCopyInit;
  183.     somMToken somGetClassName;
  184.     somMToken somGetClass;
  185.     somMToken somIsA;
  186.     somMToken somRespondsTo;
  187.     somMToken somIsInstanceOf;
  188.     somMToken somGetSize;
  189.     somMToken somDumpSelf;
  190.     somMToken somDumpSelfInt;
  191.     somMToken somPrintSelf;
  192.     somMToken somDefaultConstVCopyInit;
  193.     somMToken somDispatchV;
  194.     somMToken somDispatchL;
  195.     somMToken somDispatchA;
  196.     somMToken somDispatchD;
  197.     somMToken somDispatch;
  198.     somMToken somClassDispatch;
  199.     somMToken somCastObj;
  200.     somMToken somResetObj;
  201.     somMToken somDefaultInit;
  202.     somMToken somDestruct;
  203.     somMToken somPrivate1;
  204.     somMToken somPrivate2;
  205.     somMToken somDefaultCopyInit;
  206.     somMToken somDefaultConstCopyInit;
  207.     somMToken somDefaultAssign;
  208.     somMToken somDefaultConstAssign;
  209.     somMToken somDefaultVAssign;
  210.     somMToken somDefaultConstVAssign;
  211. } SOMDLINK SOMObjectClassData;
  212.  
  213. /*
  214.  * Declare the C specific class data structure
  215.  */
  216. SOMEXTERN struct SOMObjectCClassDataStructure {
  217.     somMethodTabs parentMtab;
  218.     somDToken instanceDataToken;
  219.     somMethodProc *somDispatchV;
  220.     somMethodProc *somDispatchL;
  221.     somMethodProc *somDispatchA;
  222.     somMethodProc *somDispatchD;
  223.     somMethodProc *somDispatch;
  224.     somMethodProc *somClassDispatch;
  225. } SOMDLINK SOMObjectCClassData;
  226.  
  227. /*
  228.  * New and Renew macros for SOMObject
  229.  */
  230. #define SOMObjectNew() \
  231.    ( _SOMObject ? \
  232.     _somNew(_SOMObject) \
  233.     : ( SOMObjectNewClass(\
  234.         SOMObject_MajorVersion, \
  235.         SOMObject_MinorVersion),\
  236.        _somNew(_SOMObject)))
  237. #define SOMObjectRenew(buf) \
  238.    ( _SOMObject ? \
  239.     _somRenew(_SOMObject, buf) \
  240.     : ( SOMObjectNewClass(\
  241.         SOMObject_MajorVersion, \
  242.         SOMObject_MinorVersion),\
  243.        _somRenew(_SOMObject, buf)))
  244.  
  245. /*
  246.  * New Method: somDefaultInit
  247.  */
  248. typedef void   SOMLINK somTP_SOMObject_somDefaultInit(SOMObject *somSelf, 
  249.         som3InitCtrl* ctrl);
  250. #pragma linkage(somTP_SOMObject_somDefaultInit, system)
  251. typedef somTP_SOMObject_somDefaultInit *somTD_SOMObject_somDefaultInit;
  252. /*
  253.  *  A default initializer for a SOM object. Passing a null ctrl
  254.  *  indicates to the receiver that its class is the class of the
  255.  *  object being initialized, whereby the initializer will determine
  256.  *  an appropriate control structure.
  257.  */
  258. #define somMD_SOMObject_somDefaultInit "::SOMObject::somDefaultInit"
  259. #define SOMObject_somDefaultInit(somSelf,ctrl) \
  260.     (SOM_Resolve(somSelf, SOMObject, somDefaultInit) \
  261.     (somSelf,ctrl))
  262. #ifndef SOMGD_somDefaultInit
  263.     #if (defined(_somDefaultInit) || defined(__somDefaultInit))
  264.         #undef _somDefaultInit
  265.         #undef __somDefaultInit
  266.         #define SOMGD_somDefaultInit 1
  267.     #else
  268.         #define _somDefaultInit SOMObject_somDefaultInit
  269.     #endif /* _somDefaultInit */
  270. #endif /* SOMGD_somDefaultInit */
  271.  
  272. /*
  273.  * New Method: somDestruct
  274.  */
  275. typedef void   SOMLINK somTP_SOMObject_somDestruct(SOMObject *somSelf, 
  276.         octet doFree, 
  277.         som3DestructCtrl* ctrl);
  278. #pragma linkage(somTP_SOMObject_somDestruct, system)
  279. typedef somTP_SOMObject_somDestruct *somTD_SOMObject_somDestruct;
  280. /*
  281.  *  The default destructor for a SOM object. A nonzero <doFree>
  282.  *  indicates that the object storage should be freed by the
  283.  *  object's class (via somDeallocate) after uninitialization.
  284.  *  As with somDefaultInit, a null ctrl can be passed.
  285.  */
  286. #define somMD_SOMObject_somDestruct "::SOMObject::somDestruct"
  287. #define SOMObject_somDestruct(somSelf,doFree,ctrl) \
  288.     (SOM_Resolve(somSelf, SOMObject, somDestruct) \
  289.     (somSelf,doFree,ctrl))
  290. #ifndef SOMGD_somDestruct
  291.     #if (defined(_somDestruct) || defined(__somDestruct))
  292.         #undef _somDestruct
  293.         #undef __somDestruct
  294.         #define SOMGD_somDestruct 1
  295.     #else
  296.         #define _somDestruct SOMObject_somDestruct
  297.     #endif /* _somDestruct */
  298. #endif /* SOMGD_somDestruct */
  299.  
  300. /*
  301.  * New Method: somDefaultCopyInit
  302.  */
  303. typedef void   SOMLINK somTP_SOMObject_somDefaultCopyInit(SOMObject *somSelf, 
  304.         som3InitCtrl* ctrl, 
  305.         SOMObject* fromObj);
  306. #pragma linkage(somTP_SOMObject_somDefaultCopyInit, system)
  307. typedef somTP_SOMObject_somDefaultCopyInit *somTD_SOMObject_somDefaultCopyInit;
  308. /*
  309.  *  A default copy constructor. Use this to make copies of objects for
  310.  *  calling methods with "by-value" argument semantics.
  311.  */
  312. #define somMD_SOMObject_somDefaultCopyInit "::SOMObject::somDefaultCopyInit"
  313. #define SOMObject_somDefaultCopyInit(somSelf,ctrl,fromObj) \
  314.     (SOM_Resolve(somSelf, SOMObject, somDefaultCopyInit) \
  315.     (somSelf,ctrl,fromObj))
  316. #ifndef SOMGD_somDefaultCopyInit
  317.     #if (defined(_somDefaultCopyInit) || defined(__somDefaultCopyInit))
  318.         #undef _somDefaultCopyInit
  319.         #undef __somDefaultCopyInit
  320.         #define SOMGD_somDefaultCopyInit 1
  321.     #else
  322.         #define _somDefaultCopyInit SOMObject_somDefaultCopyInit
  323.     #endif /* _somDefaultCopyInit */
  324. #endif /* SOMGD_somDefaultCopyInit */
  325.  
  326. /*
  327.  * New Method: somDefaultAssign
  328.  */
  329. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultAssign(SOMObject *somSelf, 
  330.         som3AssignCtrl* ctrl, 
  331.         SOMObject* fromObj);
  332. #pragma linkage(somTP_SOMObject_somDefaultAssign, system)
  333. typedef somTP_SOMObject_somDefaultAssign *somTD_SOMObject_somDefaultAssign;
  334. /*
  335.  *  A default assignment operator. Use this to "assign" the state of one
  336.  *  object to another.
  337.  */
  338. #define somMD_SOMObject_somDefaultAssign "::SOMObject::somDefaultAssign"
  339. #define SOMObject_somDefaultAssign(somSelf,ctrl,fromObj) \
  340.     (SOM_Resolve(somSelf, SOMObject, somDefaultAssign) \
  341.     (somSelf,ctrl,fromObj))
  342. #ifndef SOMGD_somDefaultAssign
  343.     #if (defined(_somDefaultAssign) || defined(__somDefaultAssign))
  344.         #undef _somDefaultAssign
  345.         #undef __somDefaultAssign
  346.         #define SOMGD_somDefaultAssign 1
  347.     #else
  348.         #define _somDefaultAssign SOMObject_somDefaultAssign
  349.     #endif /* _somDefaultAssign */
  350. #endif /* SOMGD_somDefaultAssign */
  351.  
  352. /*
  353.  * New Method: somDefaultConstCopyInit
  354.  */
  355. typedef void   SOMLINK somTP_SOMObject_somDefaultConstCopyInit(SOMObject *somSelf, 
  356.         som3InitCtrl* ctrl, 
  357.         SOMObject* fromObj);
  358. #pragma linkage(somTP_SOMObject_somDefaultConstCopyInit, system)
  359. typedef somTP_SOMObject_somDefaultConstCopyInit *somTD_SOMObject_somDefaultConstCopyInit;
  360. /*
  361.  *  A default copy constructor that uses a const fromObj.
  362.  */
  363. #define somMD_SOMObject_somDefaultConstCopyInit "::SOMObject::somDefaultConstCopyInit"
  364. #define SOMObject_somDefaultConstCopyInit(somSelf,ctrl,fromObj) \
  365.     (SOM_Resolve(somSelf, SOMObject, somDefaultConstCopyInit) \
  366.     (somSelf,ctrl,fromObj))
  367. #ifndef SOMGD_somDefaultConstCopyInit
  368.     #if (defined(_somDefaultConstCopyInit) || defined(__somDefaultConstCopyInit))
  369.         #undef _somDefaultConstCopyInit
  370.         #undef __somDefaultConstCopyInit
  371.         #define SOMGD_somDefaultConstCopyInit 1
  372.     #else
  373.         #define _somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
  374.     #endif /* _somDefaultConstCopyInit */
  375. #endif /* SOMGD_somDefaultConstCopyInit */
  376.  
  377. /*
  378.  * New Method: somDefaultVCopyInit
  379.  */
  380. typedef void   SOMLINK somTP_SOMObject_somDefaultVCopyInit(SOMObject *somSelf, 
  381.         som3InitCtrl* ctrl, 
  382.         SOMObject* fromObj);
  383. #pragma linkage(somTP_SOMObject_somDefaultVCopyInit, system)
  384. typedef somTP_SOMObject_somDefaultVCopyInit *somTD_SOMObject_somDefaultVCopyInit;
  385. /*
  386.  *  A default copy constructor that uses a volatile fromObj.
  387.  */
  388. #define somMD_SOMObject_somDefaultVCopyInit "::SOMObject::somDefaultVCopyInit"
  389. #define SOMObject_somDefaultVCopyInit(somSelf,ctrl,fromObj) \
  390.     (SOM_Resolve(somSelf, SOMObject, somDefaultVCopyInit) \
  391.     (somSelf,ctrl,fromObj))
  392. #ifndef SOMGD_somDefaultVCopyInit
  393.     #if (defined(_somDefaultVCopyInit) || defined(__somDefaultVCopyInit))
  394.         #undef _somDefaultVCopyInit
  395.         #undef __somDefaultVCopyInit
  396.         #define SOMGD_somDefaultVCopyInit 1
  397.     #else
  398.         #define _somDefaultVCopyInit SOMObject_somDefaultVCopyInit
  399.     #endif /* _somDefaultVCopyInit */
  400. #endif /* SOMGD_somDefaultVCopyInit */
  401.  
  402. /*
  403.  * New Method: somDefaultConstVCopyInit
  404.  */
  405. typedef void   SOMLINK somTP_SOMObject_somDefaultConstVCopyInit(SOMObject *somSelf, 
  406.         som3InitCtrl* ctrl, 
  407.         SOMObject* fromObj);
  408. #pragma linkage(somTP_SOMObject_somDefaultConstVCopyInit, system)
  409. typedef somTP_SOMObject_somDefaultConstVCopyInit *somTD_SOMObject_somDefaultConstVCopyInit;
  410. /*
  411.  *  A default copy constructor that uses a const volatile fromObj.
  412.  */
  413. #define somMD_SOMObject_somDefaultConstVCopyInit "::SOMObject::somDefaultConstVCopyInit"
  414. #define SOMObject_somDefaultConstVCopyInit(somSelf,ctrl,fromObj) \
  415.     (SOM_Resolve(somSelf, SOMObject, somDefaultConstVCopyInit) \
  416.     (somSelf,ctrl,fromObj))
  417. #ifndef SOMGD_somDefaultConstVCopyInit
  418.     #if (defined(_somDefaultConstVCopyInit) || defined(__somDefaultConstVCopyInit))
  419.         #undef _somDefaultConstVCopyInit
  420.         #undef __somDefaultConstVCopyInit
  421.         #define SOMGD_somDefaultConstVCopyInit 1
  422.     #else
  423.         #define _somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
  424.     #endif /* _somDefaultConstVCopyInit */
  425. #endif /* SOMGD_somDefaultConstVCopyInit */
  426.  
  427. /*
  428.  * New Method: somDefaultConstAssign
  429.  */
  430. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultConstAssign(SOMObject *somSelf, 
  431.         som3AssignCtrl* ctrl, 
  432.         SOMObject* fromObj);
  433. #pragma linkage(somTP_SOMObject_somDefaultConstAssign, system)
  434. typedef somTP_SOMObject_somDefaultConstAssign *somTD_SOMObject_somDefaultConstAssign;
  435. /*
  436.  *  A default assignment operator that uses a const fromObj.
  437.  */
  438. #define somMD_SOMObject_somDefaultConstAssign "::SOMObject::somDefaultConstAssign"
  439. #define SOMObject_somDefaultConstAssign(somSelf,ctrl,fromObj) \
  440.     (SOM_Resolve(somSelf, SOMObject, somDefaultConstAssign) \
  441.     (somSelf,ctrl,fromObj))
  442. #ifndef SOMGD_somDefaultConstAssign
  443.     #if (defined(_somDefaultConstAssign) || defined(__somDefaultConstAssign))
  444.         #undef _somDefaultConstAssign
  445.         #undef __somDefaultConstAssign
  446.         #define SOMGD_somDefaultConstAssign 1
  447.     #else
  448.         #define _somDefaultConstAssign SOMObject_somDefaultConstAssign
  449.     #endif /* _somDefaultConstAssign */
  450. #endif /* SOMGD_somDefaultConstAssign */
  451.  
  452. /*
  453.  * New Method: somDefaultVAssign
  454.  */
  455. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultVAssign(SOMObject *somSelf, 
  456.         som3AssignCtrl* ctrl, 
  457.         SOMObject* fromObj);
  458. #pragma linkage(somTP_SOMObject_somDefaultVAssign, system)
  459. typedef somTP_SOMObject_somDefaultVAssign *somTD_SOMObject_somDefaultVAssign;
  460. /*
  461.  *  A default assignment operator that uses a volatile fromObj.
  462.  */
  463. #define somMD_SOMObject_somDefaultVAssign "::SOMObject::somDefaultVAssign"
  464. #define SOMObject_somDefaultVAssign(somSelf,ctrl,fromObj) \
  465.     (SOM_Resolve(somSelf, SOMObject, somDefaultVAssign) \
  466.     (somSelf,ctrl,fromObj))
  467. #ifndef SOMGD_somDefaultVAssign
  468.     #if (defined(_somDefaultVAssign) || defined(__somDefaultVAssign))
  469.         #undef _somDefaultVAssign
  470.         #undef __somDefaultVAssign
  471.         #define SOMGD_somDefaultVAssign 1
  472.     #else
  473.         #define _somDefaultVAssign SOMObject_somDefaultVAssign
  474.     #endif /* _somDefaultVAssign */
  475. #endif /* SOMGD_somDefaultVAssign */
  476.  
  477. /*
  478.  * New Method: somDefaultConstVAssign
  479.  */
  480. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultConstVAssign(SOMObject *somSelf, 
  481.         som3AssignCtrl* ctrl, 
  482.         SOMObject* fromObj);
  483. #pragma linkage(somTP_SOMObject_somDefaultConstVAssign, system)
  484. typedef somTP_SOMObject_somDefaultConstVAssign *somTD_SOMObject_somDefaultConstVAssign;
  485. /*
  486.  *  A default assignment operator that uses a const volatile fromObj.
  487.  */
  488. #define somMD_SOMObject_somDefaultConstVAssign "::SOMObject::somDefaultConstVAssign"
  489. #define SOMObject_somDefaultConstVAssign(somSelf,ctrl,fromObj) \
  490.     (SOM_Resolve(somSelf, SOMObject, somDefaultConstVAssign) \
  491.     (somSelf,ctrl,fromObj))
  492. #ifndef SOMGD_somDefaultConstVAssign
  493.     #if (defined(_somDefaultConstVAssign) || defined(__somDefaultConstVAssign))
  494.         #undef _somDefaultConstVAssign
  495.         #undef __somDefaultConstVAssign
  496.         #define SOMGD_somDefaultConstVAssign 1
  497.     #else
  498.         #define _somDefaultConstVAssign SOMObject_somDefaultConstVAssign
  499.     #endif /* _somDefaultConstVAssign */
  500. #endif /* SOMGD_somDefaultConstVAssign */
  501.  
  502. /*
  503.  * New Method: somInit
  504.  */
  505. typedef void   SOMLINK somTP_SOMObject_somInit(SOMObject *somSelf);
  506. #pragma linkage(somTP_SOMObject_somInit, system)
  507. typedef somTP_SOMObject_somInit *somTD_SOMObject_somInit;
  508. /*
  509.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  510.  */
  511. #define somMD_SOMObject_somInit "::SOMObject::somInit"
  512. #define SOMObject_somInit(somSelf) \
  513.     (SOM_Resolve(somSelf, SOMObject, somInit) \
  514.     (somSelf))
  515. #ifndef SOMGD_somInit
  516.     #if (defined(_somInit) || defined(__somInit))
  517.         #undef _somInit
  518.         #undef __somInit
  519.         #define SOMGD_somInit 1
  520.     #else
  521.         #define _somInit SOMObject_somInit
  522.     #endif /* _somInit */
  523. #endif /* SOMGD_somInit */
  524.  
  525. /*
  526.  * New Method: somFree
  527.  */
  528. typedef void   SOMLINK somTP_SOMObject_somFree(SOMObject *somSelf);
  529. #pragma linkage(somTP_SOMObject_somFree, system)
  530. typedef somTP_SOMObject_somFree *somTD_SOMObject_somFree;
  531. /*
  532.  *  Use as directed by framework implementations.
  533.  */
  534. #define somMD_SOMObject_somFree "::SOMObject::somFree"
  535. #define SOMObject_somFree(somSelf) \
  536.     (SOM_Resolve(somSelf, SOMObject, somFree) \
  537.     (somSelf))
  538. #ifndef SOMGD_somFree
  539.     #if (defined(_somFree) || defined(__somFree))
  540.         #undef _somFree
  541.         #undef __somFree
  542.         #define SOMGD_somFree 1
  543.     #else
  544.         #define _somFree SOMObject_somFree
  545.     #endif /* _somFree */
  546. #endif /* SOMGD_somFree */
  547.  
  548. /*
  549.  * New Method: somUninit
  550.  */
  551. typedef void   SOMLINK somTP_SOMObject_somUninit(SOMObject *somSelf);
  552. #pragma linkage(somTP_SOMObject_somUninit, system)
  553. typedef somTP_SOMObject_somUninit *somTD_SOMObject_somUninit;
  554. /*
  555.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  556.  */
  557. #define somMD_SOMObject_somUninit "::SOMObject::somUninit"
  558. #define SOMObject_somUninit(somSelf) \
  559.     (SOM_Resolve(somSelf, SOMObject, somUninit) \
  560.     (somSelf))
  561. #ifndef SOMGD_somUninit
  562.     #if (defined(_somUninit) || defined(__somUninit))
  563.         #undef _somUninit
  564.         #undef __somUninit
  565.         #define SOMGD_somUninit 1
  566.     #else
  567.         #define _somUninit SOMObject_somUninit
  568.     #endif /* _somUninit */
  569. #endif /* SOMGD_somUninit */
  570.  
  571. /*
  572.  * New Method: somGetClass
  573.  */
  574. typedef SOMClass*   SOMLINK somTP_SOMObject_somGetClass(SOMObject *somSelf);
  575. #pragma linkage(somTP_SOMObject_somGetClass, system)
  576. typedef somTP_SOMObject_somGetClass *somTD_SOMObject_somGetClass;
  577. /*
  578.  *  Return the receiver's class.
  579.  */
  580. #define somMD_SOMObject_somGetClass "::SOMObject::somGetClass"
  581. #define SOMObject_somGetClass(somSelf) \
  582.     (SOM_Resolve(somSelf, SOMObject, somGetClass) \
  583.     (somSelf))
  584. #ifndef SOMGD_somGetClass
  585.     #if (defined(_somGetClass) || defined(__somGetClass))
  586.         #undef _somGetClass
  587.         #undef __somGetClass
  588.         #define SOMGD_somGetClass 1
  589.     #else
  590.         #define _somGetClass SOMObject_somGetClass
  591.     #endif /* _somGetClass */
  592. #endif /* SOMGD_somGetClass */
  593.  
  594. /*
  595.  * New Method: somGetClassName
  596.  */
  597. typedef string   SOMLINK somTP_SOMObject_somGetClassName(SOMObject *somSelf);
  598. #pragma linkage(somTP_SOMObject_somGetClassName, system)
  599. typedef somTP_SOMObject_somGetClassName *somTD_SOMObject_somGetClassName;
  600. /*
  601.  *  Return the name of the receiver's class.
  602.  */
  603. #define somMD_SOMObject_somGetClassName "::SOMObject::somGetClassName"
  604. #define SOMObject_somGetClassName(somSelf) \
  605.     (SOM_Resolve(somSelf, SOMObject, somGetClassName) \
  606.     (somSelf))
  607. #ifndef SOMGD_somGetClassName
  608.     #if (defined(_somGetClassName) || defined(__somGetClassName))
  609.         #undef _somGetClassName
  610.         #undef __somGetClassName
  611.         #define SOMGD_somGetClassName 1
  612.     #else
  613.         #define _somGetClassName SOMObject_somGetClassName
  614.     #endif /* _somGetClassName */
  615. #endif /* SOMGD_somGetClassName */
  616.  
  617. /*
  618.  * New Method: somGetSize
  619.  */
  620. typedef long   SOMLINK somTP_SOMObject_somGetSize(SOMObject *somSelf);
  621. #pragma linkage(somTP_SOMObject_somGetSize, system)
  622. typedef somTP_SOMObject_somGetSize *somTD_SOMObject_somGetSize;
  623. /*
  624.  *  Return the size of the receiver.
  625.  */
  626. #define somMD_SOMObject_somGetSize "::SOMObject::somGetSize"
  627. #define SOMObject_somGetSize(somSelf) \
  628.     (SOM_Resolve(somSelf, SOMObject, somGetSize) \
  629.     (somSelf))
  630. #ifndef SOMGD_somGetSize
  631.     #if (defined(_somGetSize) || defined(__somGetSize))
  632.         #undef _somGetSize
  633.         #undef __somGetSize
  634.         #define SOMGD_somGetSize 1
  635.     #else
  636.         #define _somGetSize SOMObject_somGetSize
  637.     #endif /* _somGetSize */
  638. #endif /* SOMGD_somGetSize */
  639.  
  640. /*
  641.  * New Method: somIsA
  642.  */
  643. typedef boolean   SOMLINK somTP_SOMObject_somIsA(SOMObject *somSelf, 
  644.         SOMClass* aClassObj);
  645. #pragma linkage(somTP_SOMObject_somIsA, system)
  646. typedef somTP_SOMObject_somIsA *somTD_SOMObject_somIsA;
  647. /*
  648.  *  Returns 1 (true) if the receiver responds to methods
  649.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  650.  */
  651. #define somMD_SOMObject_somIsA "::SOMObject::somIsA"
  652. #define SOMObject_somIsA(somSelf,aClassObj) \
  653.     (SOM_Resolve(somSelf, SOMObject, somIsA) \
  654.     (somSelf,aClassObj))
  655. #ifndef SOMGD_somIsA
  656.     #if (defined(_somIsA) || defined(__somIsA))
  657.         #undef _somIsA
  658.         #undef __somIsA
  659.         #define SOMGD_somIsA 1
  660.     #else
  661.         #define _somIsA SOMObject_somIsA
  662.     #endif /* _somIsA */
  663. #endif /* SOMGD_somIsA */
  664.  
  665. /*
  666.  * New Method: somIsInstanceOf
  667.  */
  668. typedef boolean   SOMLINK somTP_SOMObject_somIsInstanceOf(SOMObject *somSelf, 
  669.         SOMClass* aClassObj);
  670. #pragma linkage(somTP_SOMObject_somIsInstanceOf, system)
  671. typedef somTP_SOMObject_somIsInstanceOf *somTD_SOMObject_somIsInstanceOf;
  672. /*
  673.  *  Returns 1 (true) if the receiver is an instance of
  674.  *  <aClassObj> and 0 (false) otherwise.
  675.  */
  676. #define somMD_SOMObject_somIsInstanceOf "::SOMObject::somIsInstanceOf"
  677. #define SOMObject_somIsInstanceOf(somSelf,aClassObj) \
  678.     (SOM_Resolve(somSelf, SOMObject, somIsInstanceOf) \
  679.     (somSelf,aClassObj))
  680. #ifndef SOMGD_somIsInstanceOf
  681.     #if (defined(_somIsInstanceOf) || defined(__somIsInstanceOf))
  682.         #undef _somIsInstanceOf
  683.         #undef __somIsInstanceOf
  684.         #define SOMGD_somIsInstanceOf 1
  685.     #else
  686.         #define _somIsInstanceOf SOMObject_somIsInstanceOf
  687.     #endif /* _somIsInstanceOf */
  688. #endif /* SOMGD_somIsInstanceOf */
  689.  
  690. /*
  691.  * New Method: somRespondsTo
  692.  */
  693. typedef boolean   SOMLINK somTP_SOMObject_somRespondsTo(SOMObject *somSelf, 
  694.         somId mId);
  695. #pragma linkage(somTP_SOMObject_somRespondsTo, system)
  696. typedef somTP_SOMObject_somRespondsTo *somTD_SOMObject_somRespondsTo;
  697. /*
  698.  *  Returns 1 (true) if the indicated method can be invoked
  699.  *  on the receiver and 0 (false) otherwise.
  700.  */
  701. #define somMD_SOMObject_somRespondsTo "::SOMObject::somRespondsTo"
  702. #define SOMObject_somRespondsTo(somSelf,mId) \
  703.     (SOM_Resolve(somSelf, SOMObject, somRespondsTo) \
  704.     (somSelf,mId))
  705. #ifndef SOMGD_somRespondsTo
  706.     #if (defined(_somRespondsTo) || defined(__somRespondsTo))
  707.         #undef _somRespondsTo
  708.         #undef __somRespondsTo
  709.         #define SOMGD_somRespondsTo 1
  710.     #else
  711.         #define _somRespondsTo SOMObject_somRespondsTo
  712.     #endif /* _somRespondsTo */
  713. #endif /* SOMGD_somRespondsTo */
  714.  
  715. /*
  716.  * New Method: somDispatch
  717.  */
  718. typedef boolean   SOMLINK somTP_SOMObject_somDispatch(SOMObject *somSelf, 
  719.         somToken* retValue, 
  720.         somId methodId, 
  721.         va_list ap);
  722. #pragma linkage(somTP_SOMObject_somDispatch, system)
  723. typedef somTP_SOMObject_somDispatch *somTD_SOMObject_somDispatch;
  724. /*
  725.  *  This method provides a generic, class-specific dispatch mechanism.
  726.  *  It accepts as input <retValue> a pointer to the memory area to be
  727.  *  loaded with the result of dispatching the method indicated by
  728.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  729.  *  on which the method is to be invoked as the first argument.
  730.  */
  731. #define somMD_SOMObject_somDispatch "::SOMObject::somDispatch"
  732. #define SOMObject_somDispatch(somSelf,retValue,methodId,ap) \
  733.     (SOM_Resolve(somSelf, SOMObject, somDispatch) \
  734.     (somSelf,retValue,methodId,ap))
  735.  
  736. /*
  737.  * legacy support for non-system-linkage vararg stub
  738.  * use -mnolegacy to avoid generating this stub.
  739.  */
  740. #ifdef SOMObject_VA_EXTERN
  741.     SOMEXTERN
  742. #else
  743.     static
  744. #endif
  745. boolean   va_SOMObject_somDispatch(SOMObject *somSelf,
  746.         somToken* retValue,
  747.         somId methodId,
  748.         ...)
  749. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  750. {
  751.     boolean result;
  752.     va_list ap;
  753.     va_start(ap, methodId);
  754.     result = SOMObject_somDispatch(somSelf,retValue,methodId,ap);
  755.     va_end(ap);
  756.     return (result);
  757. }    
  758. #else
  759.     ;
  760. #endif
  761.  
  762. /*
  763.  * normal vararg stubs
  764.  */
  765. #ifndef SOMGD_va_somDispatch
  766.    #ifdef va_somDispatch
  767.       #undef va_somDispatch
  768.       #define SOMGD_va_somDispatch 1
  769.    #else
  770.       #define va_somDispatch somva_SOMObject_somDispatch
  771.    #endif /* va_somDispatch */
  772. #endif /* SOMGD_va_somDispatch */
  773. #ifndef SOMGD_somDispatch
  774.     #if (defined(_somDispatch) || defined(__somDispatch))
  775.         #undef _somDispatch
  776.         #undef __somDispatch
  777.         #define SOMGD_somDispatch 1
  778.     #else
  779.         #define _somDispatch somva_SOMObject_somDispatch
  780.     #endif /* _somDispatch */
  781. #endif /* SOMGD_somDispatch */
  782. #ifdef SOMObject_VA_EXTERN
  783. #pragma linkage(somva_SOMObject_somDispatch, system)
  784.     SOMEXTERN
  785. #else
  786.     static
  787. #endif
  788. boolean  SOMLINK somva_SOMObject_somDispatch(SOMObject *somSelf,
  789.         somToken* retValue,
  790.         somId methodId,
  791.         ...)
  792. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  793. {
  794.     boolean result;
  795.     va_list ap;
  796.     va_start(ap, methodId);
  797.     result = SOMObject_somDispatch(somSelf,retValue,methodId,ap);
  798.     va_end(ap);
  799.     return (result);
  800. }    
  801. #else
  802.     ;
  803. #endif
  804.  
  805. /*
  806.  * New Method: somClassDispatch
  807.  */
  808. typedef boolean   SOMLINK somTP_SOMObject_somClassDispatch(SOMObject *somSelf, 
  809.         SOMClass* clsObj, 
  810.         somToken* retValue, 
  811.         somId methodId, 
  812.         va_list ap);
  813. #pragma linkage(somTP_SOMObject_somClassDispatch, system)
  814. typedef somTP_SOMObject_somClassDispatch *somTD_SOMObject_somClassDispatch;
  815. /*
  816.  *  Like somDispatch, but method resolution for static methods is done
  817.  *  according to the clsObj instance method table.
  818.  */
  819. #define somMD_SOMObject_somClassDispatch "::SOMObject::somClassDispatch"
  820. #define SOMObject_somClassDispatch(somSelf,clsObj,retValue,methodId,ap) \
  821.     (SOM_Resolve(somSelf, SOMObject, somClassDispatch) \
  822.     (somSelf,clsObj,retValue,methodId,ap))
  823.  
  824. /*
  825.  * legacy support for non-system-linkage vararg stub
  826.  * use -mnolegacy to avoid generating this stub.
  827.  */
  828. #ifdef SOMObject_VA_EXTERN
  829.     SOMEXTERN
  830. #else
  831.     static
  832. #endif
  833. boolean   va_SOMObject_somClassDispatch(SOMObject *somSelf,
  834.         SOMClass* clsObj,
  835.         somToken* retValue,
  836.         somId methodId,
  837.         ...)
  838. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  839. {
  840.     boolean result;
  841.     va_list ap;
  842.     va_start(ap, methodId);
  843.     result = SOMObject_somClassDispatch(somSelf,clsObj,retValue,methodId,ap);
  844.     va_end(ap);
  845.     return (result);
  846. }    
  847. #else
  848.     ;
  849. #endif
  850.  
  851. /*
  852.  * normal vararg stubs
  853.  */
  854. #ifndef SOMGD_va_somClassDispatch
  855.    #ifdef va_somClassDispatch
  856.       #undef va_somClassDispatch
  857.       #define SOMGD_va_somClassDispatch 1
  858.    #else
  859.       #define va_somClassDispatch somva_SOMObject_somClassDispatch
  860.    #endif /* va_somClassDispatch */
  861. #endif /* SOMGD_va_somClassDispatch */
  862. #ifndef SOMGD_somClassDispatch
  863.     #if (defined(_somClassDispatch) || defined(__somClassDispatch))
  864.         #undef _somClassDispatch
  865.         #undef __somClassDispatch
  866.         #define SOMGD_somClassDispatch 1
  867.     #else
  868.         #define _somClassDispatch somva_SOMObject_somClassDispatch
  869.     #endif /* _somClassDispatch */
  870. #endif /* SOMGD_somClassDispatch */
  871. #ifdef SOMObject_VA_EXTERN
  872. #pragma linkage(somva_SOMObject_somClassDispatch, system)
  873.     SOMEXTERN
  874. #else
  875.     static
  876. #endif
  877. boolean  SOMLINK somva_SOMObject_somClassDispatch(SOMObject *somSelf,
  878.         SOMClass* clsObj,
  879.         somToken* retValue,
  880.         somId methodId,
  881.         ...)
  882. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  883. {
  884.     boolean result;
  885.     va_list ap;
  886.     va_start(ap, methodId);
  887.     result = SOMObject_somClassDispatch(somSelf,clsObj,retValue,methodId,ap);
  888.     va_end(ap);
  889.     return (result);
  890. }    
  891. #else
  892.     ;
  893. #endif
  894.  
  895. /*
  896.  * New Method: somCastObj
  897.  */
  898. typedef boolean   SOMLINK somTP_SOMObject_somCastObj(SOMObject *somSelf, 
  899.         SOMClass* cls);
  900. #pragma linkage(somTP_SOMObject_somCastObj, system)
  901. typedef somTP_SOMObject_somCastObj *somTD_SOMObject_somCastObj;
  902. /*
  903.  *  cast the receiving object to cls (which must be an ancestor of the
  904.  *  objects true class. Returns true on success.
  905.  */
  906. #define somMD_SOMObject_somCastObj "::SOMObject::somCastObj"
  907. #define SOMObject_somCastObj(somSelf,cls) \
  908.     (SOM_Resolve(somSelf, SOMObject, somCastObj) \
  909.     (somSelf,cls))
  910. #ifndef SOMGD_somCastObj
  911.     #if (defined(_somCastObj) || defined(__somCastObj))
  912.         #undef _somCastObj
  913.         #undef __somCastObj
  914.         #define SOMGD_somCastObj 1
  915.     #else
  916.         #define _somCastObj SOMObject_somCastObj
  917.     #endif /* _somCastObj */
  918. #endif /* SOMGD_somCastObj */
  919.  
  920. /*
  921.  * New Method: somResetObj
  922.  */
  923. typedef boolean   SOMLINK somTP_SOMObject_somResetObj(SOMObject *somSelf);
  924. #pragma linkage(somTP_SOMObject_somResetObj, system)
  925. typedef somTP_SOMObject_somResetObj *somTD_SOMObject_somResetObj;
  926. /*
  927.  *  reset an object to its true class. Returns true always.
  928.  */
  929. #define somMD_SOMObject_somResetObj "::SOMObject::somResetObj"
  930. #define SOMObject_somResetObj(somSelf) \
  931.     (SOM_Resolve(somSelf, SOMObject, somResetObj) \
  932.     (somSelf))
  933. #ifndef SOMGD_somResetObj
  934.     #if (defined(_somResetObj) || defined(__somResetObj))
  935.         #undef _somResetObj
  936.         #undef __somResetObj
  937.         #define SOMGD_somResetObj 1
  938.     #else
  939.         #define _somResetObj SOMObject_somResetObj
  940.     #endif /* _somResetObj */
  941. #endif /* SOMGD_somResetObj */
  942.  
  943. /*
  944.  * New Method: somDispatchV
  945.  */
  946. typedef void   SOMLINK somTP_SOMObject_somDispatchV(SOMObject *somSelf, 
  947.         somId methodId, 
  948.         somId descriptor, 
  949.         va_list ap);
  950. #pragma linkage(somTP_SOMObject_somDispatchV, system)
  951. typedef somTP_SOMObject_somDispatchV *somTD_SOMObject_somDispatchV;
  952. /*
  953.  *  Obsolete. Use somDispatch instead.
  954.  */
  955. #define somMD_SOMObject_somDispatchV "::SOMObject::somDispatchV"
  956. #define SOMObject_somDispatchV(somSelf,methodId,descriptor,ap) \
  957.     (SOM_Resolve(somSelf, SOMObject, somDispatchV) \
  958.     (somSelf,methodId,descriptor,ap))
  959.  
  960. /*
  961.  * legacy support for non-system-linkage vararg stub
  962.  * use -mnolegacy to avoid generating this stub.
  963.  */
  964. #ifdef SOMObject_VA_EXTERN
  965.     SOMEXTERN
  966. #else
  967.     static
  968. #endif
  969. void   va_SOMObject_somDispatchV(SOMObject *somSelf,
  970.         somId methodId,
  971.         somId descriptor,
  972.         ...)
  973. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  974. {
  975.     va_list ap;
  976.     va_start(ap, descriptor);
  977.     SOMObject_somDispatchV(somSelf,methodId,descriptor,ap);
  978.     va_end(ap);
  979. }    
  980. #else
  981.     ;
  982. #endif
  983.  
  984. /*
  985.  * normal vararg stubs
  986.  */
  987. #ifndef SOMGD_va_somDispatchV
  988.    #ifdef va_somDispatchV
  989.       #undef va_somDispatchV
  990.       #define SOMGD_va_somDispatchV 1
  991.    #else
  992.       #define va_somDispatchV somva_SOMObject_somDispatchV
  993.    #endif /* va_somDispatchV */
  994. #endif /* SOMGD_va_somDispatchV */
  995. #ifndef SOMGD_somDispatchV
  996.     #if (defined(_somDispatchV) || defined(__somDispatchV))
  997.         #undef _somDispatchV
  998.         #undef __somDispatchV
  999.         #define SOMGD_somDispatchV 1
  1000.     #else
  1001.         #define _somDispatchV somva_SOMObject_somDispatchV
  1002.     #endif /* _somDispatchV */
  1003. #endif /* SOMGD_somDispatchV */
  1004. #ifdef SOMObject_VA_EXTERN
  1005. #pragma linkage(somva_SOMObject_somDispatchV, system)
  1006.     SOMEXTERN
  1007. #else
  1008.     static
  1009. #endif
  1010. void  SOMLINK somva_SOMObject_somDispatchV(SOMObject *somSelf,
  1011.         somId methodId,
  1012.         somId descriptor,
  1013.         ...)
  1014. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1015. {
  1016.     va_list ap;
  1017.     va_start(ap, descriptor);
  1018.     SOMObject_somDispatchV(somSelf,methodId,descriptor,ap);
  1019.     va_end(ap);
  1020. }    
  1021. #else
  1022.     ;
  1023. #endif
  1024.  
  1025. /*
  1026.  * New Method: somDispatchL
  1027.  */
  1028. typedef long   SOMLINK somTP_SOMObject_somDispatchL(SOMObject *somSelf, 
  1029.         somId methodId, 
  1030.         somId descriptor, 
  1031.         va_list ap);
  1032. #pragma linkage(somTP_SOMObject_somDispatchL, system)
  1033. typedef somTP_SOMObject_somDispatchL *somTD_SOMObject_somDispatchL;
  1034. /*
  1035.  *  Obsolete. Use somDispatch instead.
  1036.  */
  1037. #define somMD_SOMObject_somDispatchL "::SOMObject::somDispatchL"
  1038. #define SOMObject_somDispatchL(somSelf,methodId,descriptor,ap) \
  1039.     (SOM_Resolve(somSelf, SOMObject, somDispatchL) \
  1040.     (somSelf,methodId,descriptor,ap))
  1041.  
  1042. /*
  1043.  * legacy support for non-system-linkage vararg stub
  1044.  * use -mnolegacy to avoid generating this stub.
  1045.  */
  1046. #ifdef SOMObject_VA_EXTERN
  1047.     SOMEXTERN
  1048. #else
  1049.     static
  1050. #endif
  1051. long   va_SOMObject_somDispatchL(SOMObject *somSelf,
  1052.         somId methodId,
  1053.         somId descriptor,
  1054.         ...)
  1055. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1056. {
  1057.     long result;
  1058.     va_list ap;
  1059.     va_start(ap, descriptor);
  1060.     result = SOMObject_somDispatchL(somSelf,methodId,descriptor,ap);
  1061.     va_end(ap);
  1062.     return (result);
  1063. }    
  1064. #else
  1065.     ;
  1066. #endif
  1067.  
  1068. /*
  1069.  * normal vararg stubs
  1070.  */
  1071. #ifndef SOMGD_va_somDispatchL
  1072.    #ifdef va_somDispatchL
  1073.       #undef va_somDispatchL
  1074.       #define SOMGD_va_somDispatchL 1
  1075.    #else
  1076.       #define va_somDispatchL somva_SOMObject_somDispatchL
  1077.    #endif /* va_somDispatchL */
  1078. #endif /* SOMGD_va_somDispatchL */
  1079. #ifndef SOMGD_somDispatchL
  1080.     #if (defined(_somDispatchL) || defined(__somDispatchL))
  1081.         #undef _somDispatchL
  1082.         #undef __somDispatchL
  1083.         #define SOMGD_somDispatchL 1
  1084.     #else
  1085.         #define _somDispatchL somva_SOMObject_somDispatchL
  1086.     #endif /* _somDispatchL */
  1087. #endif /* SOMGD_somDispatchL */
  1088. #ifdef SOMObject_VA_EXTERN
  1089. #pragma linkage(somva_SOMObject_somDispatchL, system)
  1090.     SOMEXTERN
  1091. #else
  1092.     static
  1093. #endif
  1094. long  SOMLINK somva_SOMObject_somDispatchL(SOMObject *somSelf,
  1095.         somId methodId,
  1096.         somId descriptor,
  1097.         ...)
  1098. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1099. {
  1100.     long result;
  1101.     va_list ap;
  1102.     va_start(ap, descriptor);
  1103.     result = SOMObject_somDispatchL(somSelf,methodId,descriptor,ap);
  1104.     va_end(ap);
  1105.     return (result);
  1106. }    
  1107. #else
  1108.     ;
  1109. #endif
  1110.  
  1111. /*
  1112.  * New Method: somDispatchA
  1113.  */
  1114. typedef void*   SOMLINK somTP_SOMObject_somDispatchA(SOMObject *somSelf, 
  1115.         somId methodId, 
  1116.         somId descriptor, 
  1117.         va_list ap);
  1118. #pragma linkage(somTP_SOMObject_somDispatchA, system)
  1119. typedef somTP_SOMObject_somDispatchA *somTD_SOMObject_somDispatchA;
  1120. /*
  1121.  *  Obsolete. Use somDispatch instead.
  1122.  */
  1123. #define somMD_SOMObject_somDispatchA "::SOMObject::somDispatchA"
  1124. #define SOMObject_somDispatchA(somSelf,methodId,descriptor,ap) \
  1125.     (SOM_Resolve(somSelf, SOMObject, somDispatchA) \
  1126.     (somSelf,methodId,descriptor,ap))
  1127.  
  1128. /*
  1129.  * legacy support for non-system-linkage vararg stub
  1130.  * use -mnolegacy to avoid generating this stub.
  1131.  */
  1132. #ifdef SOMObject_VA_EXTERN
  1133.     SOMEXTERN
  1134. #else
  1135.     static
  1136. #endif
  1137. void*   va_SOMObject_somDispatchA(SOMObject *somSelf,
  1138.         somId methodId,
  1139.         somId descriptor,
  1140.         ...)
  1141. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1142. {
  1143.     void* result;
  1144.     va_list ap;
  1145.     va_start(ap, descriptor);
  1146.     result = SOMObject_somDispatchA(somSelf,methodId,descriptor,ap);
  1147.     va_end(ap);
  1148.     return (result);
  1149. }    
  1150. #else
  1151.     ;
  1152. #endif
  1153.  
  1154. /*
  1155.  * normal vararg stubs
  1156.  */
  1157. #ifndef SOMGD_va_somDispatchA
  1158.    #ifdef va_somDispatchA
  1159.       #undef va_somDispatchA
  1160.       #define SOMGD_va_somDispatchA 1
  1161.    #else
  1162.       #define va_somDispatchA somva_SOMObject_somDispatchA
  1163.    #endif /* va_somDispatchA */
  1164. #endif /* SOMGD_va_somDispatchA */
  1165. #ifndef SOMGD_somDispatchA
  1166.     #if (defined(_somDispatchA) || defined(__somDispatchA))
  1167.         #undef _somDispatchA
  1168.         #undef __somDispatchA
  1169.         #define SOMGD_somDispatchA 1
  1170.     #else
  1171.         #define _somDispatchA somva_SOMObject_somDispatchA
  1172.     #endif /* _somDispatchA */
  1173. #endif /* SOMGD_somDispatchA */
  1174. #ifdef SOMObject_VA_EXTERN
  1175. #pragma linkage(somva_SOMObject_somDispatchA, system)
  1176.     SOMEXTERN
  1177. #else
  1178.     static
  1179. #endif
  1180. void*  SOMLINK somva_SOMObject_somDispatchA(SOMObject *somSelf,
  1181.         somId methodId,
  1182.         somId descriptor,
  1183.         ...)
  1184. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1185. {
  1186.     void* result;
  1187.     va_list ap;
  1188.     va_start(ap, descriptor);
  1189.     result = SOMObject_somDispatchA(somSelf,methodId,descriptor,ap);
  1190.     va_end(ap);
  1191.     return (result);
  1192. }    
  1193. #else
  1194.     ;
  1195. #endif
  1196.  
  1197. /*
  1198.  * New Method: somDispatchD
  1199.  */
  1200. typedef double   SOMLINK somTP_SOMObject_somDispatchD(SOMObject *somSelf, 
  1201.         somId methodId, 
  1202.         somId descriptor, 
  1203.         va_list ap);
  1204. #pragma linkage(somTP_SOMObject_somDispatchD, system)
  1205. typedef somTP_SOMObject_somDispatchD *somTD_SOMObject_somDispatchD;
  1206. /*
  1207.  *  Obsolete. Use somDispatch instead.
  1208.  */
  1209. #define somMD_SOMObject_somDispatchD "::SOMObject::somDispatchD"
  1210. #define SOMObject_somDispatchD(somSelf,methodId,descriptor,ap) \
  1211.     (SOM_Resolve(somSelf, SOMObject, somDispatchD) \
  1212.     (somSelf,methodId,descriptor,ap))
  1213.  
  1214. /*
  1215.  * legacy support for non-system-linkage vararg stub
  1216.  * use -mnolegacy to avoid generating this stub.
  1217.  */
  1218. #ifdef SOMObject_VA_EXTERN
  1219.     SOMEXTERN
  1220. #else
  1221.     static
  1222. #endif
  1223. double   va_SOMObject_somDispatchD(SOMObject *somSelf,
  1224.         somId methodId,
  1225.         somId descriptor,
  1226.         ...)
  1227. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1228. {
  1229.     double result;
  1230.     va_list ap;
  1231.     va_start(ap, descriptor);
  1232.     result = SOMObject_somDispatchD(somSelf,methodId,descriptor,ap);
  1233.     va_end(ap);
  1234.     return (result);
  1235. }    
  1236. #else
  1237.     ;
  1238. #endif
  1239.  
  1240. /*
  1241.  * normal vararg stubs
  1242.  */
  1243. #ifndef SOMGD_va_somDispatchD
  1244.    #ifdef va_somDispatchD
  1245.       #undef va_somDispatchD
  1246.       #define SOMGD_va_somDispatchD 1
  1247.    #else
  1248.       #define va_somDispatchD somva_SOMObject_somDispatchD
  1249.    #endif /* va_somDispatchD */
  1250. #endif /* SOMGD_va_somDispatchD */
  1251. #ifndef SOMGD_somDispatchD
  1252.     #if (defined(_somDispatchD) || defined(__somDispatchD))
  1253.         #undef _somDispatchD
  1254.         #undef __somDispatchD
  1255.         #define SOMGD_somDispatchD 1
  1256.     #else
  1257.         #define _somDispatchD somva_SOMObject_somDispatchD
  1258.     #endif /* _somDispatchD */
  1259. #endif /* SOMGD_somDispatchD */
  1260. #ifdef SOMObject_VA_EXTERN
  1261. #pragma linkage(somva_SOMObject_somDispatchD, system)
  1262.     SOMEXTERN
  1263. #else
  1264.     static
  1265. #endif
  1266. double  SOMLINK somva_SOMObject_somDispatchD(SOMObject *somSelf,
  1267.         somId methodId,
  1268.         somId descriptor,
  1269.         ...)
  1270. #if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
  1271. {
  1272.     double result;
  1273.     va_list ap;
  1274.     va_start(ap, descriptor);
  1275.     result = SOMObject_somDispatchD(somSelf,methodId,descriptor,ap);
  1276.     va_end(ap);
  1277.     return (result);
  1278. }    
  1279. #else
  1280.     ;
  1281. #endif
  1282.  
  1283. /*
  1284.  * New Method: somPrintSelf
  1285.  */
  1286. typedef SOMObject*   SOMLINK somTP_SOMObject_somPrintSelf(SOMObject *somSelf);
  1287. #pragma linkage(somTP_SOMObject_somPrintSelf, system)
  1288. typedef somTP_SOMObject_somPrintSelf *somTD_SOMObject_somPrintSelf;
  1289. /*
  1290.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  1291.  *  information about this object.  The default implementation just gives
  1292.  *  the object's class name and its address in memory.
  1293.  *  <self> is returned.
  1294.  */
  1295. #define somMD_SOMObject_somPrintSelf "::SOMObject::somPrintSelf"
  1296. #define SOMObject_somPrintSelf(somSelf) \
  1297.     (SOM_Resolve(somSelf, SOMObject, somPrintSelf) \
  1298.     (somSelf))
  1299. #ifndef SOMGD_somPrintSelf
  1300.     #if (defined(_somPrintSelf) || defined(__somPrintSelf))
  1301.         #undef _somPrintSelf
  1302.         #undef __somPrintSelf
  1303.         #define SOMGD_somPrintSelf 1
  1304.     #else
  1305.         #define _somPrintSelf SOMObject_somPrintSelf
  1306.     #endif /* _somPrintSelf */
  1307. #endif /* SOMGD_somPrintSelf */
  1308.  
  1309. /*
  1310.  * New Method: somDumpSelf
  1311.  */
  1312. typedef void   SOMLINK somTP_SOMObject_somDumpSelf(SOMObject *somSelf, 
  1313.         long level);
  1314. #pragma linkage(somTP_SOMObject_somDumpSelf, system)
  1315. typedef somTP_SOMObject_somDumpSelf *somTD_SOMObject_somDumpSelf;
  1316. /*
  1317.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  1318.  *  and its current state.
  1319.  * 
  1320.  *  <level> indicates the nesting level for describing compound objects
  1321.  *  it must be greater than or equal to zero.  All lines in the
  1322.  *  description will be preceeded by <2*level> spaces.
  1323.  * 
  1324.  *  This routine only actually writes the data that concerns the object
  1325.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  1326.  *  the object's current state.  This approach allows readable
  1327.  *  descriptions of compound objects to be constructed.
  1328.  * 
  1329.  *  Generally it is not necessary to override this method, if it is
  1330.  *  overriden it generally must be completely replaced.
  1331.  */
  1332. #define somMD_SOMObject_somDumpSelf "::SOMObject::somDumpSelf"
  1333. #define SOMObject_somDumpSelf(somSelf,level) \
  1334.     (SOM_Resolve(somSelf, SOMObject, somDumpSelf) \
  1335.     (somSelf,level))
  1336. #ifndef SOMGD_somDumpSelf
  1337.     #if (defined(_somDumpSelf) || defined(__somDumpSelf))
  1338.         #undef _somDumpSelf
  1339.         #undef __somDumpSelf
  1340.         #define SOMGD_somDumpSelf 1
  1341.     #else
  1342.         #define _somDumpSelf SOMObject_somDumpSelf
  1343.     #endif /* _somDumpSelf */
  1344. #endif /* SOMGD_somDumpSelf */
  1345.  
  1346. /*
  1347.  * New Method: somDumpSelfInt
  1348.  */
  1349. typedef void   SOMLINK somTP_SOMObject_somDumpSelfInt(SOMObject *somSelf, 
  1350.         long level);
  1351. #pragma linkage(somTP_SOMObject_somDumpSelfInt, system)
  1352. typedef somTP_SOMObject_somDumpSelfInt *somTD_SOMObject_somDumpSelfInt;
  1353. /*
  1354.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  1355.  *  Generally this method will need to be overridden.  When overriding
  1356.  *  it, begin by calling the parent class form of this method and then
  1357.  *  write in a description of your class's instance data. This will
  1358.  *  result in a description of all the object's instance data going
  1359.  *  from its root ancestor class to its specific class.
  1360.  */
  1361. #define somMD_SOMObject_somDumpSelfInt "::SOMObject::somDumpSelfInt"
  1362. #define SOMObject_somDumpSelfInt(somSelf,level) \
  1363.     (SOM_Resolve(somSelf, SOMObject, somDumpSelfInt) \
  1364.     (somSelf,level))
  1365. #ifndef SOMGD_somDumpSelfInt
  1366.     #if (defined(_somDumpSelfInt) || defined(__somDumpSelfInt))
  1367.         #undef _somDumpSelfInt
  1368.         #undef __somDumpSelfInt
  1369.         #define SOMGD_somDumpSelfInt 1
  1370.     #else
  1371.         #define _somDumpSelfInt SOMObject_somDumpSelfInt
  1372.     #endif /* _somDumpSelfInt */
  1373. #endif /* SOMGD_somDumpSelfInt */
  1374. #ifndef SOM_DONT_USE_INHERITED_MACROS
  1375. #endif /* SOM_DONT_USE_INHERITED_MACROS */
  1376.  
  1377. #endif       /* SOM_SOMObject_h */
  1378.