home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / som / include / somobj.xh < prev    next >
Text File  |  1999-02-22  |  25KB  |  884 lines

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: somobj.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emitxh: 2.47
  8.  */
  9.  
  10. #ifndef SOM_SOMObject_xh
  11. #define SOM_SOMObject_xh
  12.  
  13. class SOMObject;
  14.  
  15. /*
  16.  *  This is the SOM root class, all SOM classes must be descended from
  17.  *  <SOMObject>. <SOMObject> has no instance data so there is no
  18.  *  per-instance cost to to being descended from it.
  19.  */
  20.  
  21. #define SOMObject_MajorVersion 1
  22. #define SOMObject_MinorVersion 5
  23.  
  24. /* C++ SOM defs */
  25. #include <som.xh>
  26.  
  27. #ifndef SOMObject_API
  28. #define SOMObject_API
  29. /*
  30.  * -- The Class API
  31.  */
  32.  
  33. /*
  34.  * Start of bindings for IDL types
  35.  */
  36.  
  37. class SOMClass;
  38. class SOMObject;
  39. #ifndef _IDL_SEQUENCE_SOMObject_defined
  40. #define _IDL_SEQUENCE_SOMObject_defined
  41. typedef struct {
  42.     unsigned long _maximum;
  43.     unsigned long _length;
  44.     SOMObject **_buffer;
  45. } _IDL_SEQUENCE_SOMObject;
  46. #endif /* _IDL_SEQUENCE_SOMObject_defined */ 
  47. typedef
  48. _IDL_SEQUENCE_SOMObject SOMObject_SOMObjectSequence;
  49. /*
  50.  *  a sequence of SOM Objects
  51.  */
  52.  
  53. #ifndef _IDL_SEQUENCE_octet_defined
  54. #define _IDL_SEQUENCE_octet_defined
  55. typedef struct {
  56.     unsigned long _maximum;
  57.     unsigned long _length;
  58.     octet *_buffer;
  59. } _IDL_SEQUENCE_octet;
  60. #endif /* _IDL_SEQUENCE_octet_defined */ 
  61. typedef
  62. _IDL_SEQUENCE_octet SOMObject_BooleanSequence;
  63. /*
  64.  *  a sequence of booleans.
  65.  */
  66.  
  67. typedef
  68. struct SOMObject_somObjectOffset {
  69. SOMObject* obj;
  70. long  offset;
  71. } SOMObject_somObjectOffset;
  72. /*
  73.  *  a structure to describe an object-related offset
  74.  */
  75.  
  76. struct SOMObject_somObjectOffset;
  77. #ifndef _IDL_SEQUENCE_SOMObject_somObjectOffset_defined
  78. #define _IDL_SEQUENCE_SOMObject_somObjectOffset_defined
  79. typedef struct {
  80.     unsigned long _maximum;
  81.     unsigned long _length;
  82.     struct SOMObject_somObjectOffset *_buffer;
  83. } _IDL_SEQUENCE_SOMObject_somObjectOffset;
  84. #endif /* _IDL_SEQUENCE_SOMObject_somObjectOffset_defined */ 
  85. typedef
  86. _IDL_SEQUENCE_SOMObject_somObjectOffset SOMObject_somObjectOffsets;
  87. /*
  88.  *  a sequence of object-related offsets
  89.  */
  90.  
  91.  
  92. #ifndef SOM_DONT_USE_SHORT_NAMES
  93.  
  94. #ifndef SOM_DONT_USE_SHORT_NAMES
  95. #ifndef SOMTGD_SOMObjectSequence
  96.     #ifdef SOMObjectSequence
  97.         #undef SOMObjectSequence
  98.         #define SOMTGD_SOMObjectSequence 1
  99.     #else
  100.         #define SOMObjectSequence SOMObject_SOMObjectSequence
  101.     #endif /* SOMObjectSequence */
  102. #endif /* SOMTGD_SOMObjectSequence */
  103. #endif /* SOM_DONT_USE_SHORT_NAMES */
  104.  
  105. #ifndef SOM_DONT_USE_SHORT_NAMES
  106. #ifndef SOMTGD_BooleanSequence
  107.     #ifdef BooleanSequence
  108.         #undef BooleanSequence
  109.         #define SOMTGD_BooleanSequence 1
  110.     #else
  111.         #define BooleanSequence SOMObject_BooleanSequence
  112.     #endif /* BooleanSequence */
  113. #endif /* SOMTGD_BooleanSequence */
  114. #endif /* SOM_DONT_USE_SHORT_NAMES */
  115. #ifndef SOMTGD_somObjectOffset
  116.     #ifdef somObjectOffset
  117.         #undef somObjectOffset
  118.         #define SOMTGD_somObjectOffset 1
  119.     #else
  120.         #define somObjectOffset SOMObject_somObjectOffset
  121.     #endif /* somObjectOffset */
  122. #endif /* SOMTGD_somObjectOffset */
  123. #ifndef SOMTGD__IDL_SEQUENCE_somObjectOffset
  124.     #ifdef _IDL_SEQUENCE_somObjectOffset
  125.         #undef _IDL_SEQUENCE_somObjectOffset
  126.         #define SOMTGD__IDL_SEQUENCE_somObjectOffset 1
  127.     #else
  128.         #define _IDL_SEQUENCE_somObjectOffset _IDL_SEQUENCE_SOMObject_somObjectOffset
  129.     #endif /* _IDL_SEQUENCE_somObjectOffset */
  130. #endif /* SOMTGD__IDL_SEQUENCE_somObjectOffset */
  131.  
  132. #ifndef SOM_DONT_USE_SHORT_NAMES
  133. #ifndef SOMTGD_somObjectOffsets
  134.     #ifdef somObjectOffsets
  135.         #undef somObjectOffsets
  136.         #define SOMTGD_somObjectOffsets 1
  137.     #else
  138.         #define somObjectOffsets SOMObject_somObjectOffsets
  139.     #endif /* somObjectOffsets */
  140. #endif /* SOMTGD_somObjectOffsets */
  141. #endif /* SOM_DONT_USE_SHORT_NAMES */
  142. #endif /* SOM_DONT_USE_SHORT_NAMES */
  143.  
  144. /*
  145.  * End of bindings for IDL types.
  146.  */
  147.  
  148. /* A procedure to create the SOMObject Class */
  149. SOMEXTERN SOMClass * SOMLINK SOMObjectNewClass(
  150.         integer4 majorVersion,
  151.         integer4 minorVersion);
  152.  
  153. /* The API to the SOMObject class object, and the methods it introduces. */
  154. SOMEXTERN struct SOMObjectClassDataStructure {
  155.     SOMClass *classObject;
  156.     somMToken somInit;
  157.     somMToken somUninit;
  158.     somMToken somFree;
  159.     somMToken somDefaultVCopyInit;
  160.     somMToken somGetClassName;
  161.     somMToken somGetClass;
  162.     somMToken somIsA;
  163.     somMToken somRespondsTo;
  164.     somMToken somIsInstanceOf;
  165.     somMToken somGetSize;
  166.     somMToken somDumpSelf;
  167.     somMToken somDumpSelfInt;
  168.     somMToken somPrintSelf;
  169.     somMToken somDefaultConstVCopyInit;
  170.     somMToken somDispatchV;
  171.     somMToken somDispatchL;
  172.     somMToken somDispatchA;
  173.     somMToken somDispatchD;
  174.     somMToken somDispatch;
  175.     somMToken somClassDispatch;
  176.     somMToken somCastObj;
  177.     somMToken somResetObj;
  178.     somMToken somDefaultInit;
  179.     somMToken somDestruct;
  180.     somMToken somPrivate1;
  181.     somMToken somPrivate2;
  182.     somMToken somDefaultCopyInit;
  183.     somMToken somDefaultConstCopyInit;
  184.     somMToken somDefaultAssign;
  185.     somMToken somDefaultConstAssign;
  186.     somMToken somDefaultVAssign;
  187.     somMToken somDefaultConstVAssign;
  188. } SOMDLINK SOMObjectClassData;
  189. #define _SOMObject SOMObjectClassData.classObject
  190.  
  191. /* The API to parentMtabs for SOMObject, and the instance data it introduces. */
  192. SOMEXTERN struct SOMObjectCClassDataStructure {
  193.     somMethodTabs parentMtab;
  194.     somDToken              instanceDataToken;
  195. } SOMDLINK SOMObjectCClassData;
  196.  
  197. /*
  198.  * -- Typedefs for SOMObject Method Procedures
  199.  */
  200. SOMEXTERN {
  201. typedef void   SOMLINK somTP_SOMObject_somDefaultInit(SOMObject *somSelf, 
  202.         som3InitCtrl* ctrl);
  203. typedef somTP_SOMObject_somDefaultInit *somTD_SOMObject_somDefaultInit;
  204. typedef void   SOMLINK somTP_SOMObject_somDestruct(SOMObject *somSelf, 
  205.         octet doFree, 
  206.         som3DestructCtrl* ctrl);
  207. typedef somTP_SOMObject_somDestruct *somTD_SOMObject_somDestruct;
  208. typedef void   SOMLINK somTP_SOMObject_somDefaultCopyInit(SOMObject *somSelf, 
  209.         som3InitCtrl* ctrl, 
  210.         SOMObject* fromObj);
  211. typedef somTP_SOMObject_somDefaultCopyInit *somTD_SOMObject_somDefaultCopyInit;
  212. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultAssign(SOMObject *somSelf, 
  213.         som3AssignCtrl* ctrl, 
  214.         SOMObject* fromObj);
  215. typedef somTP_SOMObject_somDefaultAssign *somTD_SOMObject_somDefaultAssign;
  216. typedef void   SOMLINK somTP_SOMObject_somDefaultConstCopyInit(SOMObject *somSelf, 
  217.         som3InitCtrl* ctrl, 
  218.         SOMObject* fromObj);
  219. typedef somTP_SOMObject_somDefaultConstCopyInit *somTD_SOMObject_somDefaultConstCopyInit;
  220. typedef void   SOMLINK somTP_SOMObject_somDefaultVCopyInit(SOMObject *somSelf, 
  221.         som3InitCtrl* ctrl, 
  222.         SOMObject* fromObj);
  223. typedef somTP_SOMObject_somDefaultVCopyInit *somTD_SOMObject_somDefaultVCopyInit;
  224. typedef void   SOMLINK somTP_SOMObject_somDefaultConstVCopyInit(SOMObject *somSelf, 
  225.         som3InitCtrl* ctrl, 
  226.         SOMObject* fromObj);
  227. typedef somTP_SOMObject_somDefaultConstVCopyInit *somTD_SOMObject_somDefaultConstVCopyInit;
  228. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultConstAssign(SOMObject *somSelf, 
  229.         som3AssignCtrl* ctrl, 
  230.         SOMObject* fromObj);
  231. typedef somTP_SOMObject_somDefaultConstAssign *somTD_SOMObject_somDefaultConstAssign;
  232. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultVAssign(SOMObject *somSelf, 
  233.         som3AssignCtrl* ctrl, 
  234.         SOMObject* fromObj);
  235. typedef somTP_SOMObject_somDefaultVAssign *somTD_SOMObject_somDefaultVAssign;
  236. typedef SOMObject*   SOMLINK somTP_SOMObject_somDefaultConstVAssign(SOMObject *somSelf, 
  237.         som3AssignCtrl* ctrl, 
  238.         SOMObject* fromObj);
  239. typedef somTP_SOMObject_somDefaultConstVAssign *somTD_SOMObject_somDefaultConstVAssign;
  240. typedef void   SOMLINK somTP_SOMObject_somInit(SOMObject *somSelf);
  241. typedef somTP_SOMObject_somInit *somTD_SOMObject_somInit;
  242. typedef void   SOMLINK somTP_SOMObject_somFree(SOMObject *somSelf);
  243. typedef somTP_SOMObject_somFree *somTD_SOMObject_somFree;
  244. typedef void   SOMLINK somTP_SOMObject_somUninit(SOMObject *somSelf);
  245. typedef somTP_SOMObject_somUninit *somTD_SOMObject_somUninit;
  246. typedef SOMClass*   SOMLINK somTP_SOMObject_somGetClass(SOMObject *somSelf);
  247. typedef somTP_SOMObject_somGetClass *somTD_SOMObject_somGetClass;
  248. typedef string   SOMLINK somTP_SOMObject_somGetClassName(SOMObject *somSelf);
  249. typedef somTP_SOMObject_somGetClassName *somTD_SOMObject_somGetClassName;
  250. typedef long   SOMLINK somTP_SOMObject_somGetSize(SOMObject *somSelf);
  251. typedef somTP_SOMObject_somGetSize *somTD_SOMObject_somGetSize;
  252. typedef boolean   SOMLINK somTP_SOMObject_somIsA(SOMObject *somSelf, 
  253.         SOMClass* aClassObj);
  254. typedef somTP_SOMObject_somIsA *somTD_SOMObject_somIsA;
  255. typedef boolean   SOMLINK somTP_SOMObject_somIsInstanceOf(SOMObject *somSelf, 
  256.         SOMClass* aClassObj);
  257. typedef somTP_SOMObject_somIsInstanceOf *somTD_SOMObject_somIsInstanceOf;
  258. typedef boolean   SOMLINK somTP_SOMObject_somRespondsTo(SOMObject *somSelf, 
  259.         somId mId);
  260. typedef somTP_SOMObject_somRespondsTo *somTD_SOMObject_somRespondsTo;
  261. typedef boolean   SOMLINK somTP_SOMObject_somDispatch(SOMObject *somSelf, 
  262.         somToken* retValue, 
  263.         somId methodId, 
  264.         va_list ap);
  265. typedef somTP_SOMObject_somDispatch *somTD_SOMObject_somDispatch;
  266. typedef boolean   SOMLINK somTP_SOMObject_somClassDispatch(SOMObject *somSelf, 
  267.         SOMClass* clsObj, 
  268.         somToken* retValue, 
  269.         somId methodId, 
  270.         va_list ap);
  271. typedef somTP_SOMObject_somClassDispatch *somTD_SOMObject_somClassDispatch;
  272. typedef boolean   SOMLINK somTP_SOMObject_somCastObj(SOMObject *somSelf, 
  273.         SOMClass* cls);
  274. typedef somTP_SOMObject_somCastObj *somTD_SOMObject_somCastObj;
  275. typedef boolean   SOMLINK somTP_SOMObject_somResetObj(SOMObject *somSelf);
  276. typedef somTP_SOMObject_somResetObj *somTD_SOMObject_somResetObj;
  277. typedef void   SOMLINK somTP_SOMObject_somDispatchV(SOMObject *somSelf, 
  278.         somId methodId, 
  279.         somId descriptor, 
  280.         va_list ap);
  281. typedef somTP_SOMObject_somDispatchV *somTD_SOMObject_somDispatchV;
  282. typedef long   SOMLINK somTP_SOMObject_somDispatchL(SOMObject *somSelf, 
  283.         somId methodId, 
  284.         somId descriptor, 
  285.         va_list ap);
  286. typedef somTP_SOMObject_somDispatchL *somTD_SOMObject_somDispatchL;
  287. typedef void*   SOMLINK somTP_SOMObject_somDispatchA(SOMObject *somSelf, 
  288.         somId methodId, 
  289.         somId descriptor, 
  290.         va_list ap);
  291. typedef somTP_SOMObject_somDispatchA *somTD_SOMObject_somDispatchA;
  292. typedef double   SOMLINK somTP_SOMObject_somDispatchD(SOMObject *somSelf, 
  293.         somId methodId, 
  294.         somId descriptor, 
  295.         va_list ap);
  296. typedef somTP_SOMObject_somDispatchD *somTD_SOMObject_somDispatchD;
  297. typedef SOMObject*   SOMLINK somTP_SOMObject_somPrintSelf(SOMObject *somSelf);
  298. typedef somTP_SOMObject_somPrintSelf *somTD_SOMObject_somPrintSelf;
  299. typedef void   SOMLINK somTP_SOMObject_somDumpSelf(SOMObject *somSelf, 
  300.         long level);
  301. typedef somTP_SOMObject_somDumpSelf *somTD_SOMObject_somDumpSelf;
  302. typedef void   SOMLINK somTP_SOMObject_somDumpSelfInt(SOMObject *somSelf, 
  303.         long level);
  304. typedef somTP_SOMObject_somDumpSelfInt *somTD_SOMObject_somDumpSelfInt;
  305. }
  306.  
  307. #endif /* SOMObject_API */
  308.  
  309.  
  310. /*
  311.  * -- This emitter treats Method Tokens as Thunks by default.
  312.  * -- Use the sc modifier "nothunks" to change this default
  313.  */
  314. #undef somresolve_
  315. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  316. // special somclass api for use in SOMObject.xh
  317. #include <somcls.api>
  318.  
  319. /*
  320.  * -- The C++ Wrapper Class for SOMObject
  321.  */
  322.  
  323. class SOMObject
  324. {
  325. /*
  326.  *  This is the SOM root class, all SOM classes must be descended from
  327.  *  <SOMObject>. <SOMObject> has no instance data so there is no
  328.  *  per-instance cost to to being descended from it.
  329.  */
  330. public:
  331.  
  332. // SOMObject::new creates the class object if necessary, and then uses somNewNoInit
  333. // to allocate memory and create the object. Initialization is in ctors.
  334. void *operator new(size_t)
  335. {
  336.    if (!_SOMObject) SOMObjectNewClass(SOMObject_MajorVersion,SOMObject_MinorVersion);
  337.    return (void*)
  338.       SOM_Resolve(_SOMObject,SOMClass,somNewNoInit)
  339.          ((SOMClass *)((void*)_SOMObject));
  340. }
  341.  
  342. // SOMObject::delete uses somDestruct.
  343. void operator delete(void * obj)
  344. {
  345.    if (obj && *(void**)obj) {
  346.       SOM_Resolve(obj,SOMObject,somFree)
  347.          ((SOMObject*)obj);
  348.    }
  349. }
  350.  
  351. SOMObject& operator=(SOMObject& fromObj)
  352. {
  353.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  354.    return *this;
  355. }
  356.  
  357. SOMObject()
  358. {
  359. }
  360.  
  361. SOMObject(SOMObject* fromObj)
  362. {
  363. }
  364.  
  365. #ifdef __IBMCPP__
  366. #pragma info(nocnv,nopar)
  367. #endif
  368. SOMObject(const SOMObject* fromObj)
  369. {
  370. }
  371. #ifdef __IBMCPP__
  372. #pragma info(restore)
  373. #endif
  374.  
  375.  
  376. /* initializer method: somDefaultInit */
  377. void   somDefaultInit(som3InitCtrl* ctrl)
  378. {
  379. /*
  380.  *  A default initializer for a SOM object. Passing a null ctrl
  381.  *  indicates to the receiver that its class is the class of the
  382.  *  object being initialized, whereby the initializer will determine
  383.  *  an appropriate control structure.
  384.  */
  385.    SOM_ResolveD(this,SOMObject,SOMObject,somDefaultInit)
  386.     (this,ctrl);
  387. }
  388.  
  389.  
  390. /* method: somDestruct */
  391. void   somDestruct(octet doFree, 
  392.         som3DestructCtrl* ctrl)
  393. {
  394. /*
  395.  *  The default destructor for a SOM object. A nonzero <doFree>
  396.  *  indicates that the object storage should be freed by the
  397.  *  object's class (via somDeallocate) after uninitialization.
  398.  *  As with somDefaultInit, a null ctrl can be passed.
  399.  */
  400.    SOM_ResolveD(this,SOMObject,SOMObject,somDestruct)
  401.     (this,doFree,ctrl);
  402. }
  403.  
  404.  
  405. /* initializer method: somDefaultCopyInit */
  406. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  407.         SOMObject* fromObj)
  408. {
  409. /*
  410.  *  A default copy constructor. Use this to make copies of objects for
  411.  *  calling methods with "by-value" argument semantics.
  412.  */
  413.    SOM_ResolveD(this,SOMObject,SOMObject,somDefaultCopyInit)
  414.     (this,ctrl,fromObj);
  415. }
  416.  
  417.  
  418. /* method: somDefaultAssign */
  419. SOMObject*  somDefaultAssign(som3AssignCtrl* ctrl, 
  420.         SOMObject* fromObj)
  421. {
  422. /*
  423.  *  A default assignment operator. Use this to "assign" the state of one
  424.  *  object to another.
  425.  */
  426.    return SOM_ResolveD(this,SOMObject,SOMObject,somDefaultAssign)
  427.     (this,ctrl,fromObj);
  428. }
  429.  
  430.  
  431. /* initializer method: somDefaultConstCopyInit */
  432. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  433.         SOMObject* fromObj)
  434. {
  435. /*
  436.  *  A default copy constructor that uses a const fromObj.
  437.  */
  438.    SOM_ResolveD(this,SOMObject,SOMObject,somDefaultConstCopyInit)
  439.     (this,ctrl,fromObj);
  440. }
  441.  
  442.  
  443. /* initializer method: somDefaultVCopyInit */
  444. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  445.         SOMObject* fromObj)
  446. {
  447. /*
  448.  *  A default copy constructor that uses a volatile fromObj.
  449.  */
  450.    SOM_ResolveD(this,SOMObject,SOMObject,somDefaultVCopyInit)
  451.     (this,ctrl,fromObj);
  452. }
  453.  
  454.  
  455. /* initializer method: somDefaultConstVCopyInit */
  456. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  457.         SOMObject* fromObj)
  458. {
  459. /*
  460.  *  A default copy constructor that uses a const volatile fromObj.
  461.  */
  462.    SOM_ResolveD(this,SOMObject,SOMObject,somDefaultConstVCopyInit)
  463.     (this,ctrl,fromObj);
  464. }
  465.  
  466.  
  467. /* method: somDefaultConstAssign */
  468. SOMObject*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  469.         SOMObject* fromObj)
  470. {
  471. /*
  472.  *  A default assignment operator that uses a const fromObj.
  473.  */
  474.    return SOM_ResolveD(this,SOMObject,SOMObject,somDefaultConstAssign)
  475.     (this,ctrl,fromObj);
  476. }
  477.  
  478.  
  479. /* method: somDefaultVAssign */
  480. SOMObject*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  481.         SOMObject* fromObj)
  482. {
  483. /*
  484.  *  A default assignment operator that uses a volatile fromObj.
  485.  */
  486.    return SOM_ResolveD(this,SOMObject,SOMObject,somDefaultVAssign)
  487.     (this,ctrl,fromObj);
  488. }
  489.  
  490.  
  491. /* method: somDefaultConstVAssign */
  492. SOMObject*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  493.         SOMObject* fromObj)
  494. {
  495. /*
  496.  *  A default assignment operator that uses a const volatile fromObj.
  497.  */
  498.    return SOM_ResolveD(this,SOMObject,SOMObject,somDefaultConstVAssign)
  499.     (this,ctrl,fromObj);
  500. }
  501.  
  502.  
  503. /* method: somInit */
  504. void   somInit()
  505. {
  506. /*
  507.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  508.  */
  509.    SOM_ResolveD(this,SOMObject,SOMObject,somInit)
  510.     (this);
  511. }
  512.  
  513.  
  514. /* method: somFree */
  515. void   somFree()
  516. {
  517. /*
  518.  *  Use as directed by framework implementations.
  519.  */
  520.    SOM_ResolveD(this,SOMObject,SOMObject,somFree)
  521.     (this);
  522. }
  523.  
  524.  
  525. /* method: somUninit */
  526. void   somUninit()
  527. {
  528. /*
  529.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  530.  */
  531.    SOM_ResolveD(this,SOMObject,SOMObject,somUninit)
  532.     (this);
  533. }
  534.  
  535.  
  536. /* method: somGetClass */
  537. SOMClass*   somGetClass()
  538. {
  539. /*
  540.  *  Return the receiver's class.
  541.  */
  542.    return SOM_ResolveD(this,SOMObject,SOMObject,somGetClass)
  543.     (this);
  544. }
  545.  
  546.  
  547. /* method: somGetClassName */
  548. string   somGetClassName()
  549. {
  550. /*
  551.  *  Return the name of the receiver's class.
  552.  */
  553.    return SOM_ResolveD(this,SOMObject,SOMObject,somGetClassName)
  554.     (this);
  555. }
  556.  
  557.  
  558. /* method: somGetSize */
  559. long   somGetSize()
  560. {
  561. /*
  562.  *  Return the size of the receiver.
  563.  */
  564.    return SOM_ResolveD(this,SOMObject,SOMObject,somGetSize)
  565.     (this);
  566. }
  567.  
  568.  
  569. /* method: somIsA */
  570. boolean   somIsA(SOMClass* aClassObj)
  571. {
  572. /*
  573.  *  Returns 1 (true) if the receiver responds to methods
  574.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  575.  */
  576.    return SOM_ResolveD(this,SOMObject,SOMObject,somIsA)
  577.     (this,aClassObj);
  578. }
  579.  
  580.  
  581. /* method: somIsInstanceOf */
  582. boolean   somIsInstanceOf(SOMClass* aClassObj)
  583. {
  584. /*
  585.  *  Returns 1 (true) if the receiver is an instance of
  586.  *  <aClassObj> and 0 (false) otherwise.
  587.  */
  588.    return SOM_ResolveD(this,SOMObject,SOMObject,somIsInstanceOf)
  589.     (this,aClassObj);
  590. }
  591.  
  592.  
  593. /* method: somRespondsTo */
  594. boolean   somRespondsTo(somId mId)
  595. {
  596. /*
  597.  *  Returns 1 (true) if the indicated method can be invoked
  598.  *  on the receiver and 0 (false) otherwise.
  599.  */
  600.    return SOM_ResolveD(this,SOMObject,SOMObject,somRespondsTo)
  601.     (this,mId);
  602. }
  603.  
  604.  
  605. /* va_list method: somDispatch */
  606.  
  607. /*
  608.  *  This method provides a generic, class-specific dispatch mechanism.
  609.  *  It accepts as input <retValue> a pointer to the memory area to be
  610.  *  loaded with the result of dispatching the method indicated by
  611.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  612.  *  on which the method is to be invoked as the first argument.
  613.  */
  614. /* the va_list invocation form */
  615. boolean   SOMObject_somDispatch(somToken* retValue, 
  616.         somId methodId, 
  617.         va_list ap)
  618. {return SOM_ResolveD(this,SOMObject,SOMObject,somDispatch)
  619.     (this,retValue,methodId,ap);
  620. }
  621.  
  622. /* the varargs invocation form */
  623. boolean   somDispatch(somToken* retValue, 
  624.         somId methodId, 
  625.         ...)
  626. {
  627. /*
  628.  *  This method provides a generic, class-specific dispatch mechanism.
  629.  *  It accepts as input <retValue> a pointer to the memory area to be
  630.  *  loaded with the result of dispatching the method indicated by
  631.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  632.  *  on which the method is to be invoked as the first argument.
  633.  */
  634.    va_list ap;
  635.    va_start(ap, methodId);
  636.    boolean __somResult = 
  637.       SOM_ResolveD(this,SOMObject,SOMObject,somDispatch)
  638.     (this,retValue,methodId,ap);
  639.    va_end(ap);
  640.    return __somResult;
  641. }
  642.  
  643.  
  644. /* va_list method: somClassDispatch */
  645.  
  646. /*
  647.  *  Like somDispatch, but method resolution for static methods is done
  648.  *  according to the clsObj instance method table.
  649.  */
  650. /* the va_list invocation form */
  651. boolean   SOMObject_somClassDispatch(SOMClass* clsObj, 
  652.         somToken* retValue, 
  653.         somId methodId, 
  654.         va_list ap)
  655. {return SOM_ResolveD(this,SOMObject,SOMObject,somClassDispatch)
  656.     (this,clsObj,retValue,methodId,ap);
  657. }
  658.  
  659. /* the varargs invocation form */
  660. boolean   somClassDispatch(SOMClass* clsObj, 
  661.         somToken* retValue, 
  662.         somId methodId, 
  663.         ...)
  664. {
  665. /*
  666.  *  Like somDispatch, but method resolution for static methods is done
  667.  *  according to the clsObj instance method table.
  668.  */
  669.    va_list ap;
  670.    va_start(ap, methodId);
  671.    boolean __somResult = 
  672.       SOM_ResolveD(this,SOMObject,SOMObject,somClassDispatch)
  673.     (this,clsObj,retValue,methodId,ap);
  674.    va_end(ap);
  675.    return __somResult;
  676. }
  677.  
  678.  
  679. /* method: somCastObj */
  680. boolean   somCastObj(SOMClass* cls)
  681. {
  682. /*
  683.  *  cast the receiving object to cls (which must be an ancestor of the
  684.  *  objects true class. Returns true on success.
  685.  */
  686.    return SOM_ResolveD(this,SOMObject,SOMObject,somCastObj)
  687.     (this,cls);
  688. }
  689.  
  690.  
  691. /* method: somResetObj */
  692. boolean   somResetObj()
  693. {
  694. /*
  695.  *  reset an object to its true class. Returns true always.
  696.  */
  697.    return SOM_ResolveD(this,SOMObject,SOMObject,somResetObj)
  698.     (this);
  699. }
  700.  
  701.  
  702. /* va_list method: somDispatchV */
  703.  
  704. /*
  705.  *  Obsolete. Use somDispatch instead.
  706.  */
  707. /* the va_list invocation form */
  708. void   SOMObject_somDispatchV(somId methodId, 
  709.         somId descriptor, 
  710.         va_list ap)
  711. {   SOM_ResolveD(this,SOMObject,SOMObject,somDispatchV)
  712.     (this,methodId,descriptor,ap);
  713. }
  714.  
  715. /* the varargs invocation form */
  716. void   somDispatchV(somId methodId, 
  717.         somId descriptor, 
  718.         ...)
  719. {
  720. /*
  721.  *  Obsolete. Use somDispatch instead.
  722.  */
  723.    va_list ap;
  724.    va_start(ap, descriptor);
  725.    SOM_ResolveD(this,SOMObject,SOMObject,somDispatchV)
  726.     (this,methodId,descriptor,ap);
  727.    va_end(ap);
  728. }
  729.  
  730.  
  731. /* va_list method: somDispatchL */
  732.  
  733. /*
  734.  *  Obsolete. Use somDispatch instead.
  735.  */
  736. /* the va_list invocation form */
  737. long   SOMObject_somDispatchL(somId methodId, 
  738.         somId descriptor, 
  739.         va_list ap)
  740. {return SOM_ResolveD(this,SOMObject,SOMObject,somDispatchL)
  741.     (this,methodId,descriptor,ap);
  742. }
  743.  
  744. /* the varargs invocation form */
  745. long   somDispatchL(somId methodId, 
  746.         somId descriptor, 
  747.         ...)
  748. {
  749. /*
  750.  *  Obsolete. Use somDispatch instead.
  751.  */
  752.    va_list ap;
  753.    va_start(ap, descriptor);
  754.    long __somResult = 
  755.       SOM_ResolveD(this,SOMObject,SOMObject,somDispatchL)
  756.     (this,methodId,descriptor,ap);
  757.    va_end(ap);
  758.    return __somResult;
  759. }
  760.  
  761.  
  762. /* va_list method: somDispatchA */
  763.  
  764. /*
  765.  *  Obsolete. Use somDispatch instead.
  766.  */
  767. /* the va_list invocation form */
  768. void*   SOMObject_somDispatchA(somId methodId, 
  769.         somId descriptor, 
  770.         va_list ap)
  771. {return SOM_ResolveD(this,SOMObject,SOMObject,somDispatchA)
  772.     (this,methodId,descriptor,ap);
  773. }
  774.  
  775. /* the varargs invocation form */
  776. void*   somDispatchA(somId methodId, 
  777.         somId descriptor, 
  778.         ...)
  779. {
  780. /*
  781.  *  Obsolete. Use somDispatch instead.
  782.  */
  783.    va_list ap;
  784.    va_start(ap, descriptor);
  785.    void* __somResult = 
  786.       SOM_ResolveD(this,SOMObject,SOMObject,somDispatchA)
  787.     (this,methodId,descriptor,ap);
  788.    va_end(ap);
  789.    return __somResult;
  790. }
  791.  
  792.  
  793. /* va_list method: somDispatchD */
  794.  
  795. /*
  796.  *  Obsolete. Use somDispatch instead.
  797.  */
  798. /* the va_list invocation form */
  799. double   SOMObject_somDispatchD(somId methodId, 
  800.         somId descriptor, 
  801.         va_list ap)
  802. {return SOM_ResolveD(this,SOMObject,SOMObject,somDispatchD)
  803.     (this,methodId,descriptor,ap);
  804. }
  805.  
  806. /* the varargs invocation form */
  807. double   somDispatchD(somId methodId, 
  808.         somId descriptor, 
  809.         ...)
  810. {
  811. /*
  812.  *  Obsolete. Use somDispatch instead.
  813.  */
  814.    va_list ap;
  815.    va_start(ap, descriptor);
  816.    double __somResult = 
  817.       SOM_ResolveD(this,SOMObject,SOMObject,somDispatchD)
  818.     (this,methodId,descriptor,ap);
  819.    va_end(ap);
  820.    return __somResult;
  821. }
  822.  
  823.  
  824. /* method: somPrintSelf */
  825. SOMObject*   somPrintSelf()
  826. {
  827. /*
  828.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  829.  *  information about this object.  The default implementation just gives
  830.  *  the object's class name and its address in memory.
  831.  *  <self> is returned.
  832.  */
  833.    return SOM_ResolveD(this,SOMObject,SOMObject,somPrintSelf)
  834.     (this);
  835. }
  836.  
  837.  
  838. /* method: somDumpSelf */
  839. void   somDumpSelf(long level)
  840. {
  841. /*
  842.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  843.  *  and its current state.
  844.  * 
  845.  *  <level> indicates the nesting level for describing compound objects
  846.  *  it must be greater than or equal to zero.  All lines in the
  847.  *  description will be preceeded by <2*level> spaces.
  848.  * 
  849.  *  This routine only actually writes the data that concerns the object
  850.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  851.  *  the object's current state.  This approach allows readable
  852.  *  descriptions of compound objects to be constructed.
  853.  * 
  854.  *  Generally it is not necessary to override this method, if it is
  855.  *  overriden it generally must be completely replaced.
  856.  */
  857.    SOM_ResolveD(this,SOMObject,SOMObject,somDumpSelf)
  858.     (this,level);
  859. }
  860.  
  861.  
  862. /* method: somDumpSelfInt */
  863. void   somDumpSelfInt(long level)
  864. {
  865. /*
  866.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  867.  *  Generally this method will need to be overridden.  When overriding
  868.  *  it, begin by calling the parent class form of this method and then
  869.  *  write in a description of your class's instance data. This will
  870.  *  result in a description of all the object's instance data going
  871.  *  from its root ancestor class to its specific class.
  872.  */
  873.    SOM_ResolveD(this,SOMObject,SOMObject,somDumpSelfInt)
  874.     (this,level);
  875. }
  876.  
  877.  
  878.  
  879. };   /* SOMObject */
  880.  
  881.  
  882.  
  883. #endif       /* SOM_SOMObject_xh */
  884.