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

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: mlink.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emitxh: 2.47
  8.  */
  9.  
  10. /*
  11.  *    COMPONENT_NAME: somuc
  12.  * 
  13.  *    ORIGINS: 82, 81, 27
  14.  * 
  15.  * 
  16.  *     25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1996,1996
  17.  *    All Rights Reserved
  18.  *    Licensed Materials - Property of IBM
  19.  *    US Government Users Restricted Rights - Use, duplication or
  20.  *    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  21.  * 
  22.  *    Copyright ⌐ 1988, 1989 Apple Computer, Inc. All rights reserved.
  23.  * 
  24.  * CLASS_NAME: somf_MLinkable
  25.  * 
  26.  * DESCRIPTION: This class defines the general attributes of objects that
  27.  *              contain links.  For example, TPrimitiveLinkedList uses
  28.  *              somf_MLinkable.
  29.  * 
  30.  */
  31.  
  32.  
  33. #ifndef SOM_somf_MLinkable_xh
  34. #define SOM_somf_MLinkable_xh
  35.  
  36. class somf_MLinkable;
  37.  
  38. #define somf_MLinkable_MajorVersion 2
  39. #define somf_MLinkable_MinorVersion 1
  40.  
  41. /* C++ SOM defs */
  42. #include <somcls.xh>
  43. #include <somcm.xh>
  44.  
  45. /* C++ parent defs */
  46. #ifndef SOM_SOMObject_xh
  47. #include <somobj.xh>
  48. #endif
  49.  
  50. #ifndef somf_MLinkable_API
  51. #define somf_MLinkable_API
  52. /*
  53.  * -- The Class API
  54.  */
  55.  
  56. /*
  57.  * Start of bindings for IDL types
  58.  */
  59.  
  60. class SOMClass;
  61. class SOMObject;
  62.  
  63. /*
  64.  * End of bindings for IDL types.
  65.  */
  66.  
  67. /* A procedure to create the somf_MLinkable Class */
  68. SOMEXTERN SOMClass * SOMLINK somf_MLinkableNewClass(
  69.         integer4 majorVersion,
  70.         integer4 minorVersion);
  71.  
  72. /* The API to the somf_MLinkable class object, and the methods it introduces. */
  73. SOMEXTERN struct somf_MLinkableClassDataStructure {
  74.     SOMClass *classObject;
  75.     somMToken somfGetNext;
  76.     somMToken somfSetNext;
  77.     somMToken somfGetPrevious;
  78.     somMToken somfSetPrevious;
  79.     somMToken somfMLinkableInit;
  80. } SOMDLINK somf_MLinkableClassData;
  81. #define _somf_MLinkable somf_MLinkableClassData.classObject
  82.  
  83. /* The API to parentMtabs for somf_MLinkable, and the instance data it introduces. */
  84. SOMEXTERN struct somf_MLinkableCClassDataStructure {
  85.     somMethodTabs parentMtab;
  86.     somDToken              instanceDataToken;
  87. } SOMDLINK somf_MLinkableCClassData;
  88.  
  89. /*
  90.  * -- Typedefs for somf_MLinkable Method Procedures
  91.  */
  92. SOMEXTERN {
  93. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somfMLinkableInit(somf_MLinkable *somSelf, Environment *ev, 
  94.         somf_MLinkable* n, 
  95.         somf_MLinkable* p);
  96. typedef somTP_somf_MLinkable_somfMLinkableInit *somTD_somf_MLinkable_somfMLinkableInit;
  97. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somfGetNext(somf_MLinkable *somSelf, Environment *ev);
  98. typedef somTP_somf_MLinkable_somfGetNext *somTD_somf_MLinkable_somfGetNext;
  99. typedef void   SOMLINK somTP_somf_MLinkable_somfSetNext(somf_MLinkable *somSelf, Environment *ev, 
  100.         somf_MLinkable* aLink);
  101. typedef somTP_somf_MLinkable_somfSetNext *somTD_somf_MLinkable_somfSetNext;
  102. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somfGetPrevious(somf_MLinkable *somSelf, Environment *ev);
  103. typedef somTP_somf_MLinkable_somfGetPrevious *somTD_somf_MLinkable_somfGetPrevious;
  104. typedef void   SOMLINK somTP_somf_MLinkable_somfSetPrevious(somf_MLinkable *somSelf, Environment *ev, 
  105.         somf_MLinkable* aLink);
  106. typedef somTP_somf_MLinkable_somfSetPrevious *somTD_somf_MLinkable_somfSetPrevious;
  107.  
  108. /*
  109.  * -- Typedefs for Reintroduced Wrapper Methods
  110.  */
  111. typedef void   SOMLINK somTP_somf_MLinkable_somDefaultInit(somf_MLinkable *somSelf, 
  112.         som3InitCtrl* ctrl);
  113. typedef somTP_somf_MLinkable_somDefaultInit *somTD_somf_MLinkable_somDefaultInit;
  114. typedef void   SOMLINK somTP_somf_MLinkable_somDestruct(somf_MLinkable *somSelf, 
  115.         octet doFree, 
  116.         som3DestructCtrl* ctrl);
  117. typedef somTP_somf_MLinkable_somDestruct *somTD_somf_MLinkable_somDestruct;
  118. typedef void   SOMLINK somTP_somf_MLinkable_somDefaultCopyInit(somf_MLinkable *somSelf, 
  119.         som3InitCtrl* ctrl, 
  120.         SOMObject* fromObj);
  121. typedef somTP_somf_MLinkable_somDefaultCopyInit *somTD_somf_MLinkable_somDefaultCopyInit;
  122. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somDefaultAssign(somf_MLinkable *somSelf, 
  123.         som3AssignCtrl* ctrl, 
  124.         SOMObject* fromObj);
  125. typedef somTP_somf_MLinkable_somDefaultAssign *somTD_somf_MLinkable_somDefaultAssign;
  126. typedef void   SOMLINK somTP_somf_MLinkable_somDefaultConstCopyInit(somf_MLinkable *somSelf, 
  127.         som3InitCtrl* ctrl, 
  128.         SOMObject* fromObj);
  129. typedef somTP_somf_MLinkable_somDefaultConstCopyInit *somTD_somf_MLinkable_somDefaultConstCopyInit;
  130. typedef void   SOMLINK somTP_somf_MLinkable_somDefaultVCopyInit(somf_MLinkable *somSelf, 
  131.         som3InitCtrl* ctrl, 
  132.         SOMObject* fromObj);
  133. typedef somTP_somf_MLinkable_somDefaultVCopyInit *somTD_somf_MLinkable_somDefaultVCopyInit;
  134. typedef void   SOMLINK somTP_somf_MLinkable_somDefaultConstVCopyInit(somf_MLinkable *somSelf, 
  135.         som3InitCtrl* ctrl, 
  136.         SOMObject* fromObj);
  137. typedef somTP_somf_MLinkable_somDefaultConstVCopyInit *somTD_somf_MLinkable_somDefaultConstVCopyInit;
  138. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somDefaultConstAssign(somf_MLinkable *somSelf, 
  139.         som3AssignCtrl* ctrl, 
  140.         SOMObject* fromObj);
  141. typedef somTP_somf_MLinkable_somDefaultConstAssign *somTD_somf_MLinkable_somDefaultConstAssign;
  142. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somDefaultVAssign(somf_MLinkable *somSelf, 
  143.         som3AssignCtrl* ctrl, 
  144.         SOMObject* fromObj);
  145. typedef somTP_somf_MLinkable_somDefaultVAssign *somTD_somf_MLinkable_somDefaultVAssign;
  146. typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somDefaultConstVAssign(somf_MLinkable *somSelf, 
  147.         som3AssignCtrl* ctrl, 
  148.         SOMObject* fromObj);
  149. typedef somTP_somf_MLinkable_somDefaultConstVAssign *somTD_somf_MLinkable_somDefaultConstVAssign;
  150. typedef void   SOMLINK somTP_somf_MLinkable_somInit(somf_MLinkable *somSelf);
  151. typedef somTP_somf_MLinkable_somInit *somTD_somf_MLinkable_somInit;
  152. typedef void   SOMLINK somTP_somf_MLinkable_somFree(somf_MLinkable *somSelf);
  153. typedef somTP_somf_MLinkable_somFree *somTD_somf_MLinkable_somFree;
  154. typedef void   SOMLINK somTP_somf_MLinkable_somUninit(somf_MLinkable *somSelf);
  155. typedef somTP_somf_MLinkable_somUninit *somTD_somf_MLinkable_somUninit;
  156. typedef SOMClass*   SOMLINK somTP_somf_MLinkable_somGetClass(somf_MLinkable *somSelf);
  157. typedef somTP_somf_MLinkable_somGetClass *somTD_somf_MLinkable_somGetClass;
  158. typedef string   SOMLINK somTP_somf_MLinkable_somGetClassName(somf_MLinkable *somSelf);
  159. typedef somTP_somf_MLinkable_somGetClassName *somTD_somf_MLinkable_somGetClassName;
  160. typedef long   SOMLINK somTP_somf_MLinkable_somGetSize(somf_MLinkable *somSelf);
  161. typedef somTP_somf_MLinkable_somGetSize *somTD_somf_MLinkable_somGetSize;
  162. typedef boolean   SOMLINK somTP_somf_MLinkable_somIsA(somf_MLinkable *somSelf, 
  163.         SOMClass* aClassObj);
  164. typedef somTP_somf_MLinkable_somIsA *somTD_somf_MLinkable_somIsA;
  165. typedef boolean   SOMLINK somTP_somf_MLinkable_somIsInstanceOf(somf_MLinkable *somSelf, 
  166.         SOMClass* aClassObj);
  167. typedef somTP_somf_MLinkable_somIsInstanceOf *somTD_somf_MLinkable_somIsInstanceOf;
  168. typedef boolean   SOMLINK somTP_somf_MLinkable_somRespondsTo(somf_MLinkable *somSelf, 
  169.         somId mId);
  170. typedef somTP_somf_MLinkable_somRespondsTo *somTD_somf_MLinkable_somRespondsTo;
  171. typedef boolean   SOMLINK somTP_somf_MLinkable_somDispatch(somf_MLinkable *somSelf, 
  172.         somToken* retValue, 
  173.         somId methodId, 
  174.         va_list ap);
  175. typedef somTP_somf_MLinkable_somDispatch *somTD_somf_MLinkable_somDispatch;
  176. typedef boolean   SOMLINK somTP_somf_MLinkable_somClassDispatch(somf_MLinkable *somSelf, 
  177.         SOMClass* clsObj, 
  178.         somToken* retValue, 
  179.         somId methodId, 
  180.         va_list ap);
  181. typedef somTP_somf_MLinkable_somClassDispatch *somTD_somf_MLinkable_somClassDispatch;
  182. typedef boolean   SOMLINK somTP_somf_MLinkable_somCastObj(somf_MLinkable *somSelf, 
  183.         SOMClass* cls);
  184. typedef somTP_somf_MLinkable_somCastObj *somTD_somf_MLinkable_somCastObj;
  185. typedef boolean   SOMLINK somTP_somf_MLinkable_somResetObj(somf_MLinkable *somSelf);
  186. typedef somTP_somf_MLinkable_somResetObj *somTD_somf_MLinkable_somResetObj;
  187. typedef void   SOMLINK somTP_somf_MLinkable_somDispatchV(somf_MLinkable *somSelf, 
  188.         somId methodId, 
  189.         somId descriptor, 
  190.         va_list ap);
  191. typedef somTP_somf_MLinkable_somDispatchV *somTD_somf_MLinkable_somDispatchV;
  192. typedef long   SOMLINK somTP_somf_MLinkable_somDispatchL(somf_MLinkable *somSelf, 
  193.         somId methodId, 
  194.         somId descriptor, 
  195.         va_list ap);
  196. typedef somTP_somf_MLinkable_somDispatchL *somTD_somf_MLinkable_somDispatchL;
  197. typedef void*   SOMLINK somTP_somf_MLinkable_somDispatchA(somf_MLinkable *somSelf, 
  198.         somId methodId, 
  199.         somId descriptor, 
  200.         va_list ap);
  201. typedef somTP_somf_MLinkable_somDispatchA *somTD_somf_MLinkable_somDispatchA;
  202. typedef double   SOMLINK somTP_somf_MLinkable_somDispatchD(somf_MLinkable *somSelf, 
  203.         somId methodId, 
  204.         somId descriptor, 
  205.         va_list ap);
  206. typedef somTP_somf_MLinkable_somDispatchD *somTD_somf_MLinkable_somDispatchD;
  207. typedef SOMObject*   SOMLINK somTP_somf_MLinkable_somPrintSelf(somf_MLinkable *somSelf);
  208. typedef somTP_somf_MLinkable_somPrintSelf *somTD_somf_MLinkable_somPrintSelf;
  209. typedef void   SOMLINK somTP_somf_MLinkable_somDumpSelf(somf_MLinkable *somSelf, 
  210.         long level);
  211. typedef somTP_somf_MLinkable_somDumpSelf *somTD_somf_MLinkable_somDumpSelf;
  212. typedef void   SOMLINK somTP_somf_MLinkable_somDumpSelfInt(somf_MLinkable *somSelf, 
  213.         long level);
  214. typedef somTP_somf_MLinkable_somDumpSelfInt *somTD_somf_MLinkable_somDumpSelfInt;
  215. }
  216.  
  217. #endif /* somf_MLinkable_API */
  218.  
  219.  
  220. /*
  221.  * -- This emitter treats Method Tokens as Thunks by default.
  222.  * -- Use the sc modifier "nothunks" to change this default
  223.  */
  224. #undef somresolve_
  225. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  226.  
  227. /*
  228.  * -- The C++ Wrapper Class for somf_MLinkable
  229.  */
  230. class somf_MLinkable : public SOMObject
  231. {
  232. public:
  233.  
  234. // somf_MLinkable::new creates the class object if necessary, and then uses somNewNoInit
  235. // to allocate memory and create the object. Initialization is in ctors.
  236. void *operator new(size_t)
  237. {
  238.    if (!_somf_MLinkable) somf_MLinkableNewClass(somf_MLinkable_MajorVersion,somf_MLinkable_MinorVersion);
  239.    return (void*)
  240.       SOM_Resolve(_somf_MLinkable,SOMClass,somNewNoInit)
  241.          ((SOMClass *)((void*)_somf_MLinkable));
  242. }
  243.  
  244. // somf_MLinkable::delete uses somDestruct.
  245. void operator delete(void * obj)
  246. {
  247.    if (obj && *(void**)obj) {
  248.       SOM_Resolve(obj,SOMObject,somFree)
  249.          ((SOMObject*)obj);
  250.    }
  251. }
  252.  
  253. somf_MLinkable& operator=(somf_MLinkable& fromObj)
  254. {
  255.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  256.    return *this;
  257. }
  258.  
  259. somf_MLinkable()
  260. {
  261.    if (*(void**)this != 
  262.        ((somParentMtabStructPtr)
  263.         (somf_MLinkableCClassData.parentMtab))->mtab)
  264.       return;
  265.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  266. }
  267.  
  268. somf_MLinkable(somf_MLinkable* fromObj)
  269. {
  270.    if (*(void**)this != 
  271.        ((somParentMtabStructPtr)
  272.         (somf_MLinkableCClassData.parentMtab))->mtab)
  273.       return;
  274.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  275. }
  276.  
  277. #ifdef __IBMCPP__
  278. #pragma info(nocnv,nopar)
  279. #endif
  280. somf_MLinkable(const somf_MLinkable* fromObj)
  281. {
  282.    if (*(void**)this != 
  283.        ((somParentMtabStructPtr)
  284.         (somf_MLinkableCClassData.parentMtab))->mtab)
  285.       return;
  286.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  287. }
  288. #ifdef __IBMCPP__
  289. #pragma info(restore)
  290. #endif
  291.  
  292.  
  293. /* method: somfMLinkableInit */
  294. somf_MLinkable*   somfMLinkableInit(Environment *ev, 
  295.         somf_MLinkable* n, 
  296.         somf_MLinkable* p)
  297. {
  298. /*
  299.  *  This method initialized the somf_MLinkable object using n and p.
  300.  */
  301.    return SOM_ResolveD(this,somf_MLinkable,somf_MLinkable,somfMLinkableInit)
  302.     (this, ev,n,p);
  303. }
  304.  
  305.  
  306. /* method: somfGetNext */
  307. somf_MLinkable*   somfGetNext(Environment *ev)
  308. {
  309. /*
  310.  *  This method returns a pointer to the next somf_MLinkable.
  311.  */
  312.    return SOM_ResolveD(this,somf_MLinkable,somf_MLinkable,somfGetNext)
  313.     (this, ev);
  314. }
  315.  
  316.  
  317. /* method: somfSetNext */
  318. void   somfSetNext(Environment *ev, 
  319.         somf_MLinkable* aLink)
  320. {
  321. /*
  322.  *  This method sets the pointer to the next somf_MLinkable.
  323.  */
  324.    SOM_ResolveD(this,somf_MLinkable,somf_MLinkable,somfSetNext)
  325.     (this, ev,aLink);
  326. }
  327.  
  328.  
  329. /* method: somfGetPrevious */
  330. somf_MLinkable*   somfGetPrevious(Environment *ev)
  331. {
  332. /*
  333.  *  This method returns a pointer to the previous somf_MLinkable.
  334.  */
  335.    return SOM_ResolveD(this,somf_MLinkable,somf_MLinkable,somfGetPrevious)
  336.     (this, ev);
  337. }
  338.  
  339.  
  340. /* method: somfSetPrevious */
  341. void   somfSetPrevious(Environment *ev, 
  342.         somf_MLinkable* aLink)
  343. {
  344. /*
  345.  *  This method sets the pointer to the previous somf_MLinkable.
  346.  */
  347.    SOM_ResolveD(this,somf_MLinkable,somf_MLinkable,somfSetPrevious)
  348.     (this, ev,aLink);
  349. }
  350.  
  351.  
  352. /*
  353.  * Reintroduce inherited methods
  354.  */
  355.  
  356. /* initializer method: somDefaultInit */
  357. void   somDefaultInit(som3InitCtrl* ctrl)
  358. {
  359. /*
  360.  *  A default initializer for a SOM object. Passing a null ctrl
  361.  *  indicates to the receiver that its class is the class of the
  362.  *  object being initialized, whereby the initializer will determine
  363.  *  an appropriate control structure.
  364.  */
  365.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultInit)
  366.     (this,ctrl);
  367. }
  368.  
  369.  
  370. /* method: somDestruct */
  371. void   somDestruct(octet doFree, 
  372.         som3DestructCtrl* ctrl)
  373. {
  374. /*
  375.  *  The default destructor for a SOM object. A nonzero <doFree>
  376.  *  indicates that the object storage should be freed by the
  377.  *  object's class (via somDeallocate) after uninitialization.
  378.  *  As with somDefaultInit, a null ctrl can be passed.
  379.  */
  380.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDestruct)
  381.     (this,doFree,ctrl);
  382. }
  383.  
  384.  
  385. /* initializer method: somDefaultCopyInit */
  386. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  387.         SOMObject* fromObj)
  388. {
  389. /*
  390.  *  A default copy constructor. Use this to make copies of objects for
  391.  *  calling methods with "by-value" argument semantics.
  392.  */
  393.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultCopyInit)
  394.     (this,ctrl,fromObj);
  395. }
  396.  
  397.  
  398. /* method: somDefaultAssign */
  399. somf_MLinkable*  somDefaultAssign(som3AssignCtrl* ctrl, 
  400.         SOMObject* fromObj)
  401. {
  402. /*
  403.  *  A default assignment operator. Use this to "assign" the state of one
  404.  *  object to another.
  405.  */
  406.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultAssign)
  407.     (this,ctrl,fromObj);
  408. }
  409.  
  410.  
  411. /* initializer method: somDefaultConstCopyInit */
  412. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  413.         SOMObject* fromObj)
  414. {
  415. /*
  416.  *  A default copy constructor that uses a const fromObj.
  417.  */
  418.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultConstCopyInit)
  419.     (this,ctrl,fromObj);
  420. }
  421.  
  422.  
  423. /* initializer method: somDefaultVCopyInit */
  424. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  425.         SOMObject* fromObj)
  426. {
  427. /*
  428.  *  A default copy constructor that uses a volatile fromObj.
  429.  */
  430.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultVCopyInit)
  431.     (this,ctrl,fromObj);
  432. }
  433.  
  434.  
  435. /* initializer method: somDefaultConstVCopyInit */
  436. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  437.         SOMObject* fromObj)
  438. {
  439. /*
  440.  *  A default copy constructor that uses a const volatile fromObj.
  441.  */
  442.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultConstVCopyInit)
  443.     (this,ctrl,fromObj);
  444. }
  445.  
  446.  
  447. /* method: somDefaultConstAssign */
  448. somf_MLinkable*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  449.         SOMObject* fromObj)
  450. {
  451. /*
  452.  *  A default assignment operator that uses a const fromObj.
  453.  */
  454.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultConstAssign)
  455.     (this,ctrl,fromObj);
  456. }
  457.  
  458.  
  459. /* method: somDefaultVAssign */
  460. somf_MLinkable*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  461.         SOMObject* fromObj)
  462. {
  463. /*
  464.  *  A default assignment operator that uses a volatile fromObj.
  465.  */
  466.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultVAssign)
  467.     (this,ctrl,fromObj);
  468. }
  469.  
  470.  
  471. /* method: somDefaultConstVAssign */
  472. somf_MLinkable*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  473.         SOMObject* fromObj)
  474. {
  475. /*
  476.  *  A default assignment operator that uses a const volatile fromObj.
  477.  */
  478.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDefaultConstVAssign)
  479.     (this,ctrl,fromObj);
  480. }
  481.  
  482.  
  483. /* method: somInit */
  484. void   somInit()
  485. {
  486. /*
  487.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  488.  */
  489.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somInit)
  490.     (this);
  491. }
  492.  
  493.  
  494. /* method: somFree */
  495. void   somFree()
  496. {
  497. /*
  498.  *  Use as directed by framework implementations.
  499.  */
  500.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somFree)
  501.     (this);
  502. }
  503.  
  504.  
  505. /* method: somUninit */
  506. void   somUninit()
  507. {
  508. /*
  509.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  510.  */
  511.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somUninit)
  512.     (this);
  513. }
  514.  
  515.  
  516. /* method: somGetClass */
  517. SOMClass*   somGetClass()
  518. {
  519. /*
  520.  *  Return the receiver's class.
  521.  */
  522.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somGetClass)
  523.     (this);
  524. }
  525.  
  526.  
  527. /* method: somGetClassName */
  528. string   somGetClassName()
  529. {
  530. /*
  531.  *  Return the name of the receiver's class.
  532.  */
  533.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somGetClassName)
  534.     (this);
  535. }
  536.  
  537.  
  538. /* method: somGetSize */
  539. long   somGetSize()
  540. {
  541. /*
  542.  *  Return the size of the receiver.
  543.  */
  544.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somGetSize)
  545.     (this);
  546. }
  547.  
  548.  
  549. /* method: somIsA */
  550. boolean   somIsA(SOMClass* aClassObj)
  551. {
  552. /*
  553.  *  Returns 1 (true) if the receiver responds to methods
  554.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  555.  */
  556.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somIsA)
  557.     (this,aClassObj);
  558. }
  559.  
  560.  
  561. /* method: somIsInstanceOf */
  562. boolean   somIsInstanceOf(SOMClass* aClassObj)
  563. {
  564. /*
  565.  *  Returns 1 (true) if the receiver is an instance of
  566.  *  <aClassObj> and 0 (false) otherwise.
  567.  */
  568.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somIsInstanceOf)
  569.     (this,aClassObj);
  570. }
  571.  
  572.  
  573. /* method: somRespondsTo */
  574. boolean   somRespondsTo(somId mId)
  575. {
  576. /*
  577.  *  Returns 1 (true) if the indicated method can be invoked
  578.  *  on the receiver and 0 (false) otherwise.
  579.  */
  580.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somRespondsTo)
  581.     (this,mId);
  582. }
  583.  
  584.  
  585. /* va_list method: somDispatch */
  586.  
  587. /*
  588.  *  This method provides a generic, class-specific dispatch mechanism.
  589.  *  It accepts as input <retValue> a pointer to the memory area to be
  590.  *  loaded with the result of dispatching the method indicated by
  591.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  592.  *  on which the method is to be invoked as the first argument.
  593.  */
  594. /* the va_list invocation form */
  595. boolean   somf_MLinkable_somDispatch(somToken* retValue, 
  596.         somId methodId, 
  597.         va_list ap)
  598. {return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatch)
  599.     (this,retValue,methodId,ap);
  600. }
  601.  
  602. /* the varargs invocation form */
  603. boolean   somDispatch(somToken* retValue, 
  604.         somId methodId, 
  605.         ...)
  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.    va_list ap;
  615.    va_start(ap, methodId);
  616.    boolean __somResult = 
  617.       SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatch)
  618.     (this,retValue,methodId,ap);
  619.    va_end(ap);
  620.    return __somResult;
  621. }
  622.  
  623.  
  624. /* va_list method: somClassDispatch */
  625.  
  626. /*
  627.  *  Like somDispatch, but method resolution for static methods is done
  628.  *  according to the clsObj instance method table.
  629.  */
  630. /* the va_list invocation form */
  631. boolean   somf_MLinkable_somClassDispatch(SOMClass* clsObj, 
  632.         somToken* retValue, 
  633.         somId methodId, 
  634.         va_list ap)
  635. {return SOM_ResolveD(this,somf_MLinkable,SOMObject,somClassDispatch)
  636.     (this,clsObj,retValue,methodId,ap);
  637. }
  638.  
  639. /* the varargs invocation form */
  640. boolean   somClassDispatch(SOMClass* clsObj, 
  641.         somToken* retValue, 
  642.         somId methodId, 
  643.         ...)
  644. {
  645. /*
  646.  *  Like somDispatch, but method resolution for static methods is done
  647.  *  according to the clsObj instance method table.
  648.  */
  649.    va_list ap;
  650.    va_start(ap, methodId);
  651.    boolean __somResult = 
  652.       SOM_ResolveD(this,somf_MLinkable,SOMObject,somClassDispatch)
  653.     (this,clsObj,retValue,methodId,ap);
  654.    va_end(ap);
  655.    return __somResult;
  656. }
  657.  
  658.  
  659. /* method: somCastObj */
  660. boolean   somCastObj(SOMClass* cls)
  661. {
  662. /*
  663.  *  cast the receiving object to cls (which must be an ancestor of the
  664.  *  objects true class. Returns true on success.
  665.  */
  666.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somCastObj)
  667.     (this,cls);
  668. }
  669.  
  670.  
  671. /* method: somResetObj */
  672. boolean   somResetObj()
  673. {
  674. /*
  675.  *  reset an object to its true class. Returns true always.
  676.  */
  677.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somResetObj)
  678.     (this);
  679. }
  680.  
  681.  
  682. /* va_list method: somDispatchV */
  683.  
  684. /*
  685.  *  Obsolete. Use somDispatch instead.
  686.  */
  687. /* the va_list invocation form */
  688. void   somf_MLinkable_somDispatchV(somId methodId, 
  689.         somId descriptor, 
  690.         va_list ap)
  691. {   SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchV)
  692.     (this,methodId,descriptor,ap);
  693. }
  694.  
  695. /* the varargs invocation form */
  696. void   somDispatchV(somId methodId, 
  697.         somId descriptor, 
  698.         ...)
  699. {
  700. /*
  701.  *  Obsolete. Use somDispatch instead.
  702.  */
  703.    va_list ap;
  704.    va_start(ap, descriptor);
  705.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchV)
  706.     (this,methodId,descriptor,ap);
  707.    va_end(ap);
  708. }
  709.  
  710.  
  711. /* va_list method: somDispatchL */
  712.  
  713. /*
  714.  *  Obsolete. Use somDispatch instead.
  715.  */
  716. /* the va_list invocation form */
  717. long   somf_MLinkable_somDispatchL(somId methodId, 
  718.         somId descriptor, 
  719.         va_list ap)
  720. {return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchL)
  721.     (this,methodId,descriptor,ap);
  722. }
  723.  
  724. /* the varargs invocation form */
  725. long   somDispatchL(somId methodId, 
  726.         somId descriptor, 
  727.         ...)
  728. {
  729. /*
  730.  *  Obsolete. Use somDispatch instead.
  731.  */
  732.    va_list ap;
  733.    va_start(ap, descriptor);
  734.    long __somResult = 
  735.       SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchL)
  736.     (this,methodId,descriptor,ap);
  737.    va_end(ap);
  738.    return __somResult;
  739. }
  740.  
  741.  
  742. /* va_list method: somDispatchA */
  743.  
  744. /*
  745.  *  Obsolete. Use somDispatch instead.
  746.  */
  747. /* the va_list invocation form */
  748. void*   somf_MLinkable_somDispatchA(somId methodId, 
  749.         somId descriptor, 
  750.         va_list ap)
  751. {return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchA)
  752.     (this,methodId,descriptor,ap);
  753. }
  754.  
  755. /* the varargs invocation form */
  756. void*   somDispatchA(somId methodId, 
  757.         somId descriptor, 
  758.         ...)
  759. {
  760. /*
  761.  *  Obsolete. Use somDispatch instead.
  762.  */
  763.    va_list ap;
  764.    va_start(ap, descriptor);
  765.    void* __somResult = 
  766.       SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchA)
  767.     (this,methodId,descriptor,ap);
  768.    va_end(ap);
  769.    return __somResult;
  770. }
  771.  
  772.  
  773. /* va_list method: somDispatchD */
  774.  
  775. /*
  776.  *  Obsolete. Use somDispatch instead.
  777.  */
  778. /* the va_list invocation form */
  779. double   somf_MLinkable_somDispatchD(somId methodId, 
  780.         somId descriptor, 
  781.         va_list ap)
  782. {return SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchD)
  783.     (this,methodId,descriptor,ap);
  784. }
  785.  
  786. /* the varargs invocation form */
  787. double   somDispatchD(somId methodId, 
  788.         somId descriptor, 
  789.         ...)
  790. {
  791. /*
  792.  *  Obsolete. Use somDispatch instead.
  793.  */
  794.    va_list ap;
  795.    va_start(ap, descriptor);
  796.    double __somResult = 
  797.       SOM_ResolveD(this,somf_MLinkable,SOMObject,somDispatchD)
  798.     (this,methodId,descriptor,ap);
  799.    va_end(ap);
  800.    return __somResult;
  801. }
  802.  
  803.  
  804. /* method: somPrintSelf */
  805. SOMObject*   somPrintSelf()
  806. {
  807. /*
  808.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  809.  *  information about this object.  The default implementation just gives
  810.  *  the object's class name and its address in memory.
  811.  *  <self> is returned.
  812.  */
  813.    return SOM_ResolveD(this,somf_MLinkable,SOMObject,somPrintSelf)
  814.     (this);
  815. }
  816.  
  817.  
  818. /* method: somDumpSelf */
  819. void   somDumpSelf(long level)
  820. {
  821. /*
  822.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  823.  *  and its current state.
  824.  * 
  825.  *  <level> indicates the nesting level for describing compound objects
  826.  *  it must be greater than or equal to zero.  All lines in the
  827.  *  description will be preceeded by <2*level> spaces.
  828.  * 
  829.  *  This routine only actually writes the data that concerns the object
  830.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  831.  *  the object's current state.  This approach allows readable
  832.  *  descriptions of compound objects to be constructed.
  833.  * 
  834.  *  Generally it is not necessary to override this method, if it is
  835.  *  overriden it generally must be completely replaced.
  836.  */
  837.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDumpSelf)
  838.     (this,level);
  839. }
  840.  
  841.  
  842. /* method: somDumpSelfInt */
  843. void   somDumpSelfInt(long level)
  844. {
  845. /*
  846.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  847.  *  Generally this method will need to be overridden.  When overriding
  848.  *  it, begin by calling the parent class form of this method and then
  849.  *  write in a description of your class's instance data. This will
  850.  *  result in a description of all the object's instance data going
  851.  *  from its root ancestor class to its specific class.
  852.  */
  853.    SOM_ResolveD(this,somf_MLinkable,SOMObject,somDumpSelfInt)
  854.     (this,level);
  855. }
  856.  
  857.  
  858.  
  859. };   /* somf_MLinkable */
  860.  
  861.  
  862.  
  863. #endif       /* SOM_somf_MLinkable_xh */
  864.