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

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: po.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emitxh: 2.47
  8.  */
  9.  
  10. /*
  11.  *    COMPONENT_NAME: somp
  12.  * 
  13.  *    ORIGINS: 27
  14.  * 
  15.  * 
  16.  *     25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1994,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.  */
  23.  
  24.  
  25. #ifndef SOM_SOMPPersistentObject_xh
  26. #define SOM_SOMPPersistentObject_xh
  27.  
  28. class SOMPPersistentObject;
  29.  
  30. /*
  31.  *                    PERSISTENT OBJECT METACLASS
  32.  * 
  33.  */
  34.  
  35. #define SOMPPersistentObject_MajorVersion 2
  36. #define SOMPPersistentObject_MinorVersion 1
  37.  
  38. /* C++ SOM defs */
  39. #include <somcls.xh>
  40. #include <somcm.xh>
  41.  
  42. /* C++ parent defs */
  43. #ifndef SOM_SOMObject_xh
  44. #include <somobj.xh>
  45. #endif
  46.  
  47. #ifndef SOMPPersistentObject_API
  48. #define SOMPPersistentObject_API
  49. /*
  50.  * -- The Class API
  51.  */
  52.  
  53. /*
  54.  * Start of bindings for IDL types
  55.  */
  56.  
  57. class SOMClass;
  58. class SOMObject;
  59. class SOMPIdAssigner;
  60. class SOMPEncoderDecoderAbstract;
  61. class SOMPIOGroup;
  62. class SOMPPersistentId;
  63. class M_SOMPPersistentObject;
  64. #define SOMPPersistentObject_SOMP_STATE_UNDEFINED 32768 /* 0x8000 */
  65. #define SOMPPersistentObject_SOMP_STATE_UNSTABLE 16384 /* 0x4000 */
  66. #define SOMPPersistentObject_SOMP_STATE_STABLE 4096 /* 0x1000 */
  67. #define SOMPPersistentObject_SOMP_STATE_DIRTY 2048 /* 0x0800 */
  68. #define SOMPPersistentObject_SOMP_STATE_COMPACT 1024 /* 0x0400 */
  69.  
  70. #ifndef SOM_DONT_USE_SHORT_NAMES
  71. #ifndef SOMTGD_SOMP_STATE_UNDEFINED
  72.     #ifdef SOMP_STATE_UNDEFINED
  73.         #undef SOMP_STATE_UNDEFINED
  74.         #define SOMTGD_SOMP_STATE_UNDEFINED 1
  75.     #else
  76.         #define SOMP_STATE_UNDEFINED SOMPPersistentObject_SOMP_STATE_UNDEFINED
  77.     #endif /* SOMP_STATE_UNDEFINED */
  78. #endif /* SOMTGD_SOMP_STATE_UNDEFINED */
  79. #ifndef SOMTGD_SOMP_STATE_UNSTABLE
  80.     #ifdef SOMP_STATE_UNSTABLE
  81.         #undef SOMP_STATE_UNSTABLE
  82.         #define SOMTGD_SOMP_STATE_UNSTABLE 1
  83.     #else
  84.         #define SOMP_STATE_UNSTABLE SOMPPersistentObject_SOMP_STATE_UNSTABLE
  85.     #endif /* SOMP_STATE_UNSTABLE */
  86. #endif /* SOMTGD_SOMP_STATE_UNSTABLE */
  87. #ifndef SOMTGD_SOMP_STATE_STABLE
  88.     #ifdef SOMP_STATE_STABLE
  89.         #undef SOMP_STATE_STABLE
  90.         #define SOMTGD_SOMP_STATE_STABLE 1
  91.     #else
  92.         #define SOMP_STATE_STABLE SOMPPersistentObject_SOMP_STATE_STABLE
  93.     #endif /* SOMP_STATE_STABLE */
  94. #endif /* SOMTGD_SOMP_STATE_STABLE */
  95. #ifndef SOMTGD_SOMP_STATE_DIRTY
  96.     #ifdef SOMP_STATE_DIRTY
  97.         #undef SOMP_STATE_DIRTY
  98.         #define SOMTGD_SOMP_STATE_DIRTY 1
  99.     #else
  100.         #define SOMP_STATE_DIRTY SOMPPersistentObject_SOMP_STATE_DIRTY
  101.     #endif /* SOMP_STATE_DIRTY */
  102. #endif /* SOMTGD_SOMP_STATE_DIRTY */
  103. #ifndef SOMTGD_SOMP_STATE_COMPACT
  104.     #ifdef SOMP_STATE_COMPACT
  105.         #undef SOMP_STATE_COMPACT
  106.         #define SOMTGD_SOMP_STATE_COMPACT 1
  107.     #else
  108.         #define SOMP_STATE_COMPACT SOMPPersistentObject_SOMP_STATE_COMPACT
  109.     #endif /* SOMP_STATE_COMPACT */
  110. #endif /* SOMTGD_SOMP_STATE_COMPACT */
  111. #endif /* SOM_DONT_USE_SHORT_NAMES */
  112.  
  113. /*
  114.  * End of bindings for IDL types.
  115.  */
  116.  
  117. /* A procedure to create the SOMPPersistentObject Class */
  118. class M_SOMPPersistentObject;
  119. SOMEXTERN M_SOMPPersistentObject * SOMLINK SOMPPersistentObjectNewClass(
  120.         integer4 majorVersion,
  121.         integer4 minorVersion);
  122.  
  123. /* The API to the SOMPPersistentObject class object, and the methods it introduces. */
  124. SOMEXTERN struct SOMPPersistentObjectClassDataStructure {
  125.     M_SOMPPersistentObject *classObject;
  126.     somMToken sompInitNextAvail;
  127.     somMToken sompInitNearObject;
  128.     somMToken sompInitGivenId;
  129.     somMToken sompGetPersistentId;
  130.     somMToken sompGetPersistentIdString;
  131.     somMToken sompSetEncoderDecoderName;
  132.     somMToken sompGetEncoderDecoderName;
  133.     somMToken sompRegisterPersistentPointer;
  134.     somMToken sompUnRegisterPersistentPointer;
  135.     somMToken sompPersistentPointerCount;
  136.     somMToken sompGetNthPersistentPointer;
  137.     somMToken sompEquals;
  138.     somMToken sompPassivate;
  139.     somMToken sompActivated;
  140.     somMToken sompGetRelativeIdString;
  141.     somMToken sompUnInitIOGroup;
  142.     somMToken sompSetDirty;
  143.     somMToken sompMarkForCompaction;
  144.     somMToken sompSetState;
  145.     somMToken sompCheckState;
  146.     somMToken sompClearState;
  147.     somMToken sompInitIOGroup;
  148.     somMToken sompGetEncoderDecoder;
  149.     somMToken sompFreeEncoderDecoder;
  150.     somMToken sompGetIOGroup;
  151.     somMToken sompSetIOGroup;
  152.     somMToken sompGetStoredLength;
  153.     somMToken sompSetStoredLength;
  154.     somMToken sompGetMIOffset;
  155.     somMToken sompSetMIOffset;
  156.     somMToken sompIsDirty;
  157.     somMToken sompGetDirty;
  158. } SOMDLINK SOMPPersistentObjectClassData;
  159. #define _SOMPPersistentObject SOMPPersistentObjectClassData.classObject
  160.  
  161. /* The API to parentMtabs for SOMPPersistentObject, and the instance data it introduces. */
  162. SOMEXTERN struct SOMPPersistentObjectCClassDataStructure {
  163.     somMethodTabs parentMtab;
  164.     somDToken              instanceDataToken;
  165. } SOMDLINK SOMPPersistentObjectCClassData;
  166.  
  167. /*
  168.  * -- Typedefs for SOMPPersistentObject Method Procedures
  169.  */
  170. SOMEXTERN {
  171. typedef void   SOMLINK somTP_SOMPPersistentObject_sompInitNextAvail(SOMPPersistentObject *somSelf, Environment *ev, 
  172.         SOMPIdAssigner* thisAssigner);
  173. typedef somTP_SOMPPersistentObject_sompInitNextAvail *somTD_SOMPPersistentObject_sompInitNextAvail;
  174. typedef void   SOMLINK somTP_SOMPPersistentObject_sompInitNearObject(SOMPPersistentObject *somSelf, Environment *ev, 
  175.         SOMPPersistentObject* nearObject);
  176. typedef somTP_SOMPPersistentObject_sompInitNearObject *somTD_SOMPPersistentObject_sompInitNearObject;
  177. typedef void   SOMLINK somTP_SOMPPersistentObject_sompInitGivenId(SOMPPersistentObject *somSelf, Environment *ev, 
  178.         SOMPPersistentId* thisId);
  179. typedef somTP_SOMPPersistentObject_sompInitGivenId *somTD_SOMPPersistentObject_sompInitGivenId;
  180. typedef SOMPPersistentId*   SOMLINK somTP_SOMPPersistentObject_sompGetPersistentId(SOMPPersistentObject *somSelf, Environment *ev);
  181. typedef somTP_SOMPPersistentObject_sompGetPersistentId *somTD_SOMPPersistentObject_sompGetPersistentId;
  182. typedef string   SOMLINK somTP_SOMPPersistentObject_sompGetPersistentIdString(SOMPPersistentObject *somSelf, Environment *ev, 
  183.         string outBuff);
  184. typedef somTP_SOMPPersistentObject_sompGetPersistentIdString *somTD_SOMPPersistentObject_sompGetPersistentIdString;
  185. typedef void   SOMLINK somTP_SOMPPersistentObject_sompSetEncoderDecoderName(SOMPPersistentObject *somSelf, Environment *ev, 
  186.         string myName);
  187. typedef somTP_SOMPPersistentObject_sompSetEncoderDecoderName *somTD_SOMPPersistentObject_sompSetEncoderDecoderName;
  188. typedef string   SOMLINK somTP_SOMPPersistentObject_sompGetEncoderDecoderName(SOMPPersistentObject *somSelf, Environment *ev);
  189. typedef somTP_SOMPPersistentObject_sompGetEncoderDecoderName *somTD_SOMPPersistentObject_sompGetEncoderDecoderName;
  190. typedef boolean   SOMLINK somTP_SOMPPersistentObject_sompEquals(SOMPPersistentObject *somSelf, Environment *ev, 
  191.         SOMPPersistentId* otherId);
  192. typedef somTP_SOMPPersistentObject_sompEquals *somTD_SOMPPersistentObject_sompEquals;
  193. typedef void   SOMLINK somTP_SOMPPersistentObject_sompPassivate(SOMPPersistentObject *somSelf, Environment *ev);
  194. typedef somTP_SOMPPersistentObject_sompPassivate *somTD_SOMPPersistentObject_sompPassivate;
  195. typedef void   SOMLINK somTP_SOMPPersistentObject_sompActivated(SOMPPersistentObject *somSelf, Environment *ev);
  196. typedef somTP_SOMPPersistentObject_sompActivated *somTD_SOMPPersistentObject_sompActivated;
  197. typedef string   SOMLINK somTP_SOMPPersistentObject_sompGetRelativeIdString(SOMPPersistentObject *somSelf, Environment *ev, 
  198.         SOMObject* ifNearThisObject, 
  199.         string relativeIdString);
  200. typedef somTP_SOMPPersistentObject_sompGetRelativeIdString *somTD_SOMPPersistentObject_sompGetRelativeIdString;
  201. typedef SOMPIOGroup*   SOMLINK somTP_SOMPPersistentObject_sompInitIOGroup(SOMPPersistentObject *somSelf, Environment *ev, 
  202.         SOMObject* nearPersistentObj);
  203. typedef somTP_SOMPPersistentObject_sompInitIOGroup *somTD_SOMPPersistentObject_sompInitIOGroup;
  204. typedef void   SOMLINK somTP_SOMPPersistentObject_sompSetDirty(SOMPPersistentObject *somSelf, Environment *ev);
  205. typedef somTP_SOMPPersistentObject_sompSetDirty *somTD_SOMPPersistentObject_sompSetDirty;
  206. typedef boolean   SOMLINK somTP_SOMPPersistentObject_sompIsDirty(SOMPPersistentObject *somSelf, Environment *ev);
  207. typedef somTP_SOMPPersistentObject_sompIsDirty *somTD_SOMPPersistentObject_sompIsDirty;
  208. typedef boolean   SOMLINK somTP_SOMPPersistentObject_sompGetDirty(SOMPPersistentObject *somSelf, Environment *ev);
  209. typedef somTP_SOMPPersistentObject_sompGetDirty *somTD_SOMPPersistentObject_sompGetDirty;
  210. typedef void   SOMLINK somTP_SOMPPersistentObject_sompMarkForCompaction(SOMPPersistentObject *somSelf, Environment *ev);
  211. typedef somTP_SOMPPersistentObject_sompMarkForCompaction *somTD_SOMPPersistentObject_sompMarkForCompaction;
  212. typedef void   SOMLINK somTP_SOMPPersistentObject_sompSetState(SOMPPersistentObject *somSelf, Environment *ev, 
  213.         unsigned short state);
  214. typedef somTP_SOMPPersistentObject_sompSetState *somTD_SOMPPersistentObject_sompSetState;
  215. typedef boolean   SOMLINK somTP_SOMPPersistentObject_sompCheckState(SOMPPersistentObject *somSelf, Environment *ev, 
  216.         unsigned short state);
  217. typedef somTP_SOMPPersistentObject_sompCheckState *somTD_SOMPPersistentObject_sompCheckState;
  218. typedef void   SOMLINK somTP_SOMPPersistentObject_sompClearState(SOMPPersistentObject *somSelf, Environment *ev, 
  219.         unsigned short state);
  220. typedef somTP_SOMPPersistentObject_sompClearState *somTD_SOMPPersistentObject_sompClearState;
  221. typedef SOMPEncoderDecoderAbstract*   SOMLINK somTP_SOMPPersistentObject_sompGetEncoderDecoder(SOMPPersistentObject *somSelf, Environment *ev);
  222. typedef somTP_SOMPPersistentObject_sompGetEncoderDecoder *somTD_SOMPPersistentObject_sompGetEncoderDecoder;
  223. typedef void   SOMLINK somTP_SOMPPersistentObject_sompFreeEncoderDecoder(SOMPPersistentObject *somSelf, Environment *ev);
  224. typedef somTP_SOMPPersistentObject_sompFreeEncoderDecoder *somTD_SOMPPersistentObject_sompFreeEncoderDecoder;
  225. typedef SOMPIOGroup*   SOMLINK somTP_SOMPPersistentObject_sompGetIOGroup(SOMPPersistentObject *somSelf, Environment *ev);
  226. typedef somTP_SOMPPersistentObject_sompGetIOGroup *somTD_SOMPPersistentObject_sompGetIOGroup;
  227.  
  228. /*
  229.  * -- Typedefs for Reintroduced Wrapper Methods
  230.  */
  231. typedef void   SOMLINK somTP_SOMPPersistentObject_somDefaultInit(SOMPPersistentObject *somSelf, 
  232.         som3InitCtrl* ctrl);
  233. typedef somTP_SOMPPersistentObject_somDefaultInit *somTD_SOMPPersistentObject_somDefaultInit;
  234. typedef void   SOMLINK somTP_SOMPPersistentObject_somDestruct(SOMPPersistentObject *somSelf, 
  235.         octet doFree, 
  236.         som3DestructCtrl* ctrl);
  237. typedef somTP_SOMPPersistentObject_somDestruct *somTD_SOMPPersistentObject_somDestruct;
  238. typedef void   SOMLINK somTP_SOMPPersistentObject_somDefaultCopyInit(SOMPPersistentObject *somSelf, 
  239.         som3InitCtrl* ctrl, 
  240.         SOMObject* fromObj);
  241. typedef somTP_SOMPPersistentObject_somDefaultCopyInit *somTD_SOMPPersistentObject_somDefaultCopyInit;
  242. typedef SOMPPersistentObject*   SOMLINK somTP_SOMPPersistentObject_somDefaultAssign(SOMPPersistentObject *somSelf, 
  243.         som3AssignCtrl* ctrl, 
  244.         SOMObject* fromObj);
  245. typedef somTP_SOMPPersistentObject_somDefaultAssign *somTD_SOMPPersistentObject_somDefaultAssign;
  246. typedef void   SOMLINK somTP_SOMPPersistentObject_somDefaultConstCopyInit(SOMPPersistentObject *somSelf, 
  247.         som3InitCtrl* ctrl, 
  248.         SOMObject* fromObj);
  249. typedef somTP_SOMPPersistentObject_somDefaultConstCopyInit *somTD_SOMPPersistentObject_somDefaultConstCopyInit;
  250. typedef void   SOMLINK somTP_SOMPPersistentObject_somDefaultVCopyInit(SOMPPersistentObject *somSelf, 
  251.         som3InitCtrl* ctrl, 
  252.         SOMObject* fromObj);
  253. typedef somTP_SOMPPersistentObject_somDefaultVCopyInit *somTD_SOMPPersistentObject_somDefaultVCopyInit;
  254. typedef void   SOMLINK somTP_SOMPPersistentObject_somDefaultConstVCopyInit(SOMPPersistentObject *somSelf, 
  255.         som3InitCtrl* ctrl, 
  256.         SOMObject* fromObj);
  257. typedef somTP_SOMPPersistentObject_somDefaultConstVCopyInit *somTD_SOMPPersistentObject_somDefaultConstVCopyInit;
  258. typedef SOMPPersistentObject*   SOMLINK somTP_SOMPPersistentObject_somDefaultConstAssign(SOMPPersistentObject *somSelf, 
  259.         som3AssignCtrl* ctrl, 
  260.         SOMObject* fromObj);
  261. typedef somTP_SOMPPersistentObject_somDefaultConstAssign *somTD_SOMPPersistentObject_somDefaultConstAssign;
  262. typedef SOMPPersistentObject*   SOMLINK somTP_SOMPPersistentObject_somDefaultVAssign(SOMPPersistentObject *somSelf, 
  263.         som3AssignCtrl* ctrl, 
  264.         SOMObject* fromObj);
  265. typedef somTP_SOMPPersistentObject_somDefaultVAssign *somTD_SOMPPersistentObject_somDefaultVAssign;
  266. typedef SOMPPersistentObject*   SOMLINK somTP_SOMPPersistentObject_somDefaultConstVAssign(SOMPPersistentObject *somSelf, 
  267.         som3AssignCtrl* ctrl, 
  268.         SOMObject* fromObj);
  269. typedef somTP_SOMPPersistentObject_somDefaultConstVAssign *somTD_SOMPPersistentObject_somDefaultConstVAssign;
  270. typedef void   SOMLINK somTP_SOMPPersistentObject_somInit(SOMPPersistentObject *somSelf);
  271. typedef somTP_SOMPPersistentObject_somInit *somTD_SOMPPersistentObject_somInit;
  272. typedef void   SOMLINK somTP_SOMPPersistentObject_somFree(SOMPPersistentObject *somSelf);
  273. typedef somTP_SOMPPersistentObject_somFree *somTD_SOMPPersistentObject_somFree;
  274. typedef void   SOMLINK somTP_SOMPPersistentObject_somUninit(SOMPPersistentObject *somSelf);
  275. typedef somTP_SOMPPersistentObject_somUninit *somTD_SOMPPersistentObject_somUninit;
  276. typedef M_SOMPPersistentObject*   SOMLINK somTP_SOMPPersistentObject_somGetClass(SOMPPersistentObject *somSelf);
  277. typedef somTP_SOMPPersistentObject_somGetClass *somTD_SOMPPersistentObject_somGetClass;
  278. typedef string   SOMLINK somTP_SOMPPersistentObject_somGetClassName(SOMPPersistentObject *somSelf);
  279. typedef somTP_SOMPPersistentObject_somGetClassName *somTD_SOMPPersistentObject_somGetClassName;
  280. typedef long   SOMLINK somTP_SOMPPersistentObject_somGetSize(SOMPPersistentObject *somSelf);
  281. typedef somTP_SOMPPersistentObject_somGetSize *somTD_SOMPPersistentObject_somGetSize;
  282. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somIsA(SOMPPersistentObject *somSelf, 
  283.         SOMClass* aClassObj);
  284. typedef somTP_SOMPPersistentObject_somIsA *somTD_SOMPPersistentObject_somIsA;
  285. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somIsInstanceOf(SOMPPersistentObject *somSelf, 
  286.         SOMClass* aClassObj);
  287. typedef somTP_SOMPPersistentObject_somIsInstanceOf *somTD_SOMPPersistentObject_somIsInstanceOf;
  288. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somRespondsTo(SOMPPersistentObject *somSelf, 
  289.         somId mId);
  290. typedef somTP_SOMPPersistentObject_somRespondsTo *somTD_SOMPPersistentObject_somRespondsTo;
  291. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somDispatch(SOMPPersistentObject *somSelf, 
  292.         somToken* retValue, 
  293.         somId methodId, 
  294.         va_list ap);
  295. typedef somTP_SOMPPersistentObject_somDispatch *somTD_SOMPPersistentObject_somDispatch;
  296. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somClassDispatch(SOMPPersistentObject *somSelf, 
  297.         SOMClass* clsObj, 
  298.         somToken* retValue, 
  299.         somId methodId, 
  300.         va_list ap);
  301. typedef somTP_SOMPPersistentObject_somClassDispatch *somTD_SOMPPersistentObject_somClassDispatch;
  302. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somCastObj(SOMPPersistentObject *somSelf, 
  303.         SOMClass* cls);
  304. typedef somTP_SOMPPersistentObject_somCastObj *somTD_SOMPPersistentObject_somCastObj;
  305. typedef boolean   SOMLINK somTP_SOMPPersistentObject_somResetObj(SOMPPersistentObject *somSelf);
  306. typedef somTP_SOMPPersistentObject_somResetObj *somTD_SOMPPersistentObject_somResetObj;
  307. typedef void   SOMLINK somTP_SOMPPersistentObject_somDispatchV(SOMPPersistentObject *somSelf, 
  308.         somId methodId, 
  309.         somId descriptor, 
  310.         va_list ap);
  311. typedef somTP_SOMPPersistentObject_somDispatchV *somTD_SOMPPersistentObject_somDispatchV;
  312. typedef long   SOMLINK somTP_SOMPPersistentObject_somDispatchL(SOMPPersistentObject *somSelf, 
  313.         somId methodId, 
  314.         somId descriptor, 
  315.         va_list ap);
  316. typedef somTP_SOMPPersistentObject_somDispatchL *somTD_SOMPPersistentObject_somDispatchL;
  317. typedef void*   SOMLINK somTP_SOMPPersistentObject_somDispatchA(SOMPPersistentObject *somSelf, 
  318.         somId methodId, 
  319.         somId descriptor, 
  320.         va_list ap);
  321. typedef somTP_SOMPPersistentObject_somDispatchA *somTD_SOMPPersistentObject_somDispatchA;
  322. typedef double   SOMLINK somTP_SOMPPersistentObject_somDispatchD(SOMPPersistentObject *somSelf, 
  323.         somId methodId, 
  324.         somId descriptor, 
  325.         va_list ap);
  326. typedef somTP_SOMPPersistentObject_somDispatchD *somTD_SOMPPersistentObject_somDispatchD;
  327. typedef SOMObject*   SOMLINK somTP_SOMPPersistentObject_somPrintSelf(SOMPPersistentObject *somSelf);
  328. typedef somTP_SOMPPersistentObject_somPrintSelf *somTD_SOMPPersistentObject_somPrintSelf;
  329. typedef void   SOMLINK somTP_SOMPPersistentObject_somDumpSelf(SOMPPersistentObject *somSelf, 
  330.         long level);
  331. typedef somTP_SOMPPersistentObject_somDumpSelf *somTD_SOMPPersistentObject_somDumpSelf;
  332. typedef void   SOMLINK somTP_SOMPPersistentObject_somDumpSelfInt(SOMPPersistentObject *somSelf, 
  333.         long level);
  334. typedef somTP_SOMPPersistentObject_somDumpSelfInt *somTD_SOMPPersistentObject_somDumpSelfInt;
  335. }
  336.  
  337. #endif /* SOMPPersistentObject_API */
  338.  
  339.  
  340. /*
  341.  * -- This emitter treats Method Tokens as Thunks by default.
  342.  * -- Use the sc modifier "nothunks" to change this default
  343.  */
  344. #undef somresolve_
  345. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  346.  
  347. /*
  348.  * -- The C++ Wrapper Class for SOMPPersistentObject
  349.  */
  350. class SOMPPersistentObject : public SOMObject
  351. {
  352. /*
  353.  *                    PERSISTENT OBJECT METACLASS
  354.  * 
  355.  */
  356. public:
  357.  
  358. // SOMPPersistentObject::new creates the class object if necessary, and then uses somNewNoInit
  359. // to allocate memory and create the object. Initialization is in ctors.
  360. void *operator new(size_t)
  361. {
  362.    if (!_SOMPPersistentObject) SOMPPersistentObjectNewClass(SOMPPersistentObject_MajorVersion,SOMPPersistentObject_MinorVersion);
  363.    return (void*)
  364.       SOM_Resolve(_SOMPPersistentObject,SOMClass,somNewNoInit)
  365.          ((SOMClass *)((void*)_SOMPPersistentObject));
  366. }
  367.  
  368. // SOMPPersistentObject::delete uses somDestruct.
  369. void operator delete(void * obj)
  370. {
  371.    if (obj && *(void**)obj) {
  372.       SOM_Resolve(obj,SOMObject,somFree)
  373.          ((SOMObject*)obj);
  374.    }
  375. }
  376.  
  377. SOMPPersistentObject& operator=(SOMPPersistentObject& fromObj)
  378. {
  379.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  380.    return *this;
  381. }
  382.  
  383. SOMPPersistentObject()
  384. {
  385.    if (*(void**)this != 
  386.        ((somParentMtabStructPtr)
  387.         (SOMPPersistentObjectCClassData.parentMtab))->mtab)
  388.       return;
  389.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  390. }
  391.  
  392. SOMPPersistentObject(SOMPPersistentObject* fromObj)
  393. {
  394.    if (*(void**)this != 
  395.        ((somParentMtabStructPtr)
  396.         (SOMPPersistentObjectCClassData.parentMtab))->mtab)
  397.       return;
  398.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  399. }
  400.  
  401. #ifdef __IBMCPP__
  402. #pragma info(nocnv,nopar)
  403. #endif
  404. SOMPPersistentObject(const SOMPPersistentObject* fromObj)
  405. {
  406.    if (*(void**)this != 
  407.        ((somParentMtabStructPtr)
  408.         (SOMPPersistentObjectCClassData.parentMtab))->mtab)
  409.       return;
  410.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  411. }
  412. #ifdef __IBMCPP__
  413. #pragma info(restore)
  414. #endif
  415.  
  416.  
  417. /* method: sompInitNextAvail */
  418. void   sompInitNextAvail(Environment *ev, 
  419.         SOMPIdAssigner* thisAssigner)
  420. {
  421.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompInitNextAvail)
  422.     (this, ev,thisAssigner);
  423. }
  424.  
  425.  
  426. /* method: sompInitNearObject */
  427. void   sompInitNearObject(Environment *ev, 
  428.         SOMPPersistentObject* nearObject)
  429. {
  430.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompInitNearObject)
  431.     (this, ev,nearObject);
  432. }
  433.  
  434.  
  435. /* method: sompInitGivenId */
  436. void   sompInitGivenId(Environment *ev, 
  437.         SOMPPersistentId* thisId)
  438. {
  439.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompInitGivenId)
  440.     (this, ev,thisId);
  441. }
  442.  
  443.  
  444. /* method: sompGetPersistentId */
  445. SOMPPersistentId*   sompGetPersistentId(Environment *ev)
  446. {
  447.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetPersistentId)
  448.     (this, ev);
  449. }
  450.  
  451.  
  452. /* method: sompGetPersistentIdString */
  453. string   sompGetPersistentIdString(Environment *ev, 
  454.         string outBuff)
  455. {
  456. /*
  457.  *  Get persistent ID. Returns string representation of persistent ID.
  458.  *  Puts the fully-qualified persistent object ID in the caller-supplied
  459.  *  buffer.  (The caller must allocate the memory for the buffer, and
  460.  *  is also responsible for freeing it when appropriate.)
  461.  */
  462.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetPersistentIdString)
  463.     (this, ev,outBuff);
  464. }
  465.  
  466.  
  467. /* method: sompSetEncoderDecoderName */
  468. void   sompSetEncoderDecoderName(Environment *ev, 
  469.         string myName)
  470. {
  471. /*
  472.  *  Set the class name of the EncoderDecoder.
  473.  *  If this method is not called, the encoder/decoder class name is the
  474.  *  one returned by the class object.
  475.  */
  476.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompSetEncoderDecoderName)
  477.     (this, ev,myName);
  478. }
  479.  
  480.  
  481. /* method: sompGetEncoderDecoderName */
  482. string   sompGetEncoderDecoderName(Environment *ev)
  483. {
  484. /*
  485.  *  Get the class name of the EncoderDecoder
  486.  */
  487.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetEncoderDecoderName)
  488.     (this, ev);
  489. }
  490.  
  491.  
  492. /* method: sompEquals */
  493. boolean   sompEquals(Environment *ev, 
  494.         SOMPPersistentId* otherId)
  495. {
  496. /*
  497.  *  Checks to see if this object's ID is equivalent to the given ID.
  498.  *  Returns TRUE if the ID's are equivalent, FALSE otherwise.
  499.  */
  500.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompEquals)
  501.     (this, ev,otherId);
  502. }
  503.  
  504.  
  505. /* method: sompPassivate */
  506. void   sompPassivate(Environment *ev)
  507. {
  508. /*
  509.  *  This method is called by the persistence framework just prior
  510.  *  to saving a persistent object.  It provides a means for a
  511.  *  client to tidy up any data necessary in the persistent object
  512.  *  (or its embedded objects) before the save operation is
  513.  *  completed.  This method does nothing if not overridden by the
  514.  *  client.
  515.  */
  516.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompPassivate)
  517.     (this, ev);
  518. }
  519.  
  520.  
  521. /* method: sompActivated */
  522. void   sompActivated(Environment *ev)
  523. {
  524. /*
  525.  *  This method is called by the persistence framework after a
  526.  *  persistent object is restored.  It provides a means for a client
  527.  *  to perform any initializations prior to the use of the persistent
  528.  *  object. That is, make the object useable. If not overridden, this
  529.  *  method sets the state of the object to POSTATE_STABLE.
  530.  */
  531.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompActivated)
  532.     (this, ev);
  533. }
  534.  
  535.  
  536. /* method: sompGetRelativeIdString */
  537. string   sompGetRelativeIdString(Environment *ev, 
  538.         SOMObject* ifNearThisObject, 
  539.         string relativeIdString)
  540. {
  541. /*
  542.  *  if the persistent object is in the same IOGroup as <ifNearThisObject>,
  543.  *  places an Id string of the form:
  544.  * 
  545.  *             <IOGroupMgrClassName>:$RELATIVE:<offset>
  546.  * 
  547.  *  in relativeIdString, else places a fully-qualified Id of the form:
  548.  * 
  549.  *             <IOGroupMgrClassName>:<path/filename>:<offset>
  550.  * 
  551.  *  in relativeIdString.  Returns pointer to relativeIdString through the
  552.  *  operation name.  Note: the caller must allocate relativeIdString prior
  553.  *  to invoking the operation.
  554.  */
  555.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetRelativeIdString)
  556.     (this, ev,ifNearThisObject,relativeIdString);
  557. }
  558.  
  559.  
  560. /* method: sompInitIOGroup */
  561. SOMPIOGroup*   sompInitIOGroup(Environment *ev, 
  562.         SOMObject* nearPersistentObj)
  563. {
  564. /*
  565.  *  Initialize the IO group for this object. (Used at InitPersistentID time)
  566.  *  Each persistent object is a member of an I/O Group. An I/O Group
  567.  *  can consist of one or more persistent objects.
  568.  * 
  569.  *  The I/O Group in which this persistent object is a member is
  570.  *  determined by the "nearPersistentObj" argument.
  571.  *  If given nearPersistentObj is NULL, a new IOGroup may be instantiated.
  572.  *  Otherwise, nearPersistentObj is expected to be a persistent object with
  573.  *  an existing IOGroup. This object is made a member of the
  574.  *  nearPersistentObj I/O Group.
  575.  * 
  576.  *  An I/O Group offset is assigned by this method. This offset may
  577.  *  be returned via sompGetPersistentOffset on the ID of this object.
  578.  */
  579.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompInitIOGroup)
  580.     (this, ev,nearPersistentObj);
  581. }
  582.  
  583.  
  584. /* method: sompSetDirty */
  585. void   sompSetDirty(Environment *ev)
  586. {
  587. /*
  588.  *  Sets the state of an object to dirty.  Front method for SetState.
  589.  */
  590.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompSetDirty)
  591.     (this, ev);
  592. }
  593.  
  594.  
  595. /* method: sompIsDirty */
  596. boolean   sompIsDirty(Environment *ev)
  597. {
  598. /*
  599.  *  This is used for optimization.  The default always returns TRUE.  Optimized
  600.  *  persistent objects can override this to return sompGetDirty(), and then
  601.  *  be sure to invoke sompSetDirty() whenever the object is updated.
  602.  */
  603.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompIsDirty)
  604.     (this, ev);
  605. }
  606.  
  607.  
  608. /* method: sompGetDirty */
  609. boolean   sompGetDirty(Environment *ev)
  610. {
  611. /*
  612.  *  This returns TRUE if the dirty bit is set, FALSE otherwise.
  613.  */
  614.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetDirty)
  615.     (this, ev);
  616. }
  617.  
  618.  
  619. /* method: sompMarkForCompaction */
  620. void   sompMarkForCompaction(Environment *ev)
  621. {
  622. /*
  623.  *  Note to the Persistence Framework that the next time this object is
  624.  *  saved, the entire IO Group should be compacted, if possible.
  625.  */
  626.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompMarkForCompaction)
  627.     (this, ev);
  628. }
  629.  
  630.  
  631. /* method: sompSetState */
  632. void   sompSetState(Environment *ev, 
  633.         unsigned short state)
  634. {
  635. /*
  636.  *  Sets specified state.
  637.  *  See po.csc for a description of the possible states.
  638.  */
  639.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompSetState)
  640.     (this, ev,state);
  641. }
  642.  
  643.  
  644. /* method: sompCheckState */
  645. boolean   sompCheckState(Environment *ev, 
  646.         unsigned short state)
  647. {
  648. /*
  649.  *  Returns TRUE if given state is true for this object.
  650.  *  See po.csc for a description of the possible states.
  651.  */
  652.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompCheckState)
  653.     (this, ev,state);
  654. }
  655.  
  656.  
  657. /* method: sompClearState */
  658. void   sompClearState(Environment *ev, 
  659.         unsigned short state)
  660. {
  661. /*
  662.  *  Clears specified state.
  663.  */
  664.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompClearState)
  665.     (this, ev,state);
  666. }
  667.  
  668.  
  669. /* method: sompGetEncoderDecoder */
  670. SOMPEncoderDecoderAbstract*   sompGetEncoderDecoder(Environment *ev)
  671. {
  672. /*
  673.  *  If an Encoder/Decoder has not already been instantiated, one
  674.  *  is instantiated. A pointer to the encoder/decoder is
  675.  *  returned. NULL is returned if this object's encoder/decoder
  676.  *  cannot be instantiated.  This method should only be used by the IO Group
  677.  *  Mgr class.
  678.  */
  679.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetEncoderDecoder)
  680.     (this, ev);
  681. }
  682.  
  683.  
  684. /* method: sompFreeEncoderDecoder */
  685. void   sompFreeEncoderDecoder(Environment *ev)
  686. {
  687. /*
  688.  *  Free this object's encoder/decoder. This method should only be used
  689.  *  by the IO Group Manager class.
  690.  */
  691.    SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompFreeEncoderDecoder)
  692.     (this, ev);
  693. }
  694.  
  695.  
  696. /* method: sompGetIOGroup */
  697. SOMPIOGroup*   sompGetIOGroup(Environment *ev)
  698. {
  699. /*
  700.  *  Get a pointer to the IOGroup collection object for this object.
  701.  *  Within the returned collection are this object and any objects
  702.  *  initialized near it (with sompInitNearObject). This method is intended
  703.  *  to be use by IO Group Mgr implementors.
  704.  */
  705.    return SOM_ResolveD(this,SOMPPersistentObject,SOMPPersistentObject,sompGetIOGroup)
  706.     (this, ev);
  707. }
  708.  
  709.  
  710. /*
  711.  * Reintroduce inherited methods
  712.  */
  713.  
  714. /* initializer method: somDefaultInit */
  715. void   somDefaultInit(som3InitCtrl* ctrl)
  716. {
  717. /*
  718.  *  A default initializer for a SOM object. Passing a null ctrl
  719.  *  indicates to the receiver that its class is the class of the
  720.  *  object being initialized, whereby the initializer will determine
  721.  *  an appropriate control structure.
  722.  */
  723.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultInit)
  724.     (this,ctrl);
  725. }
  726.  
  727.  
  728. /* method: somDestruct */
  729. void   somDestruct(octet doFree, 
  730.         som3DestructCtrl* ctrl)
  731. {
  732. /*
  733.  *  The default destructor for a SOM object. A nonzero <doFree>
  734.  *  indicates that the object storage should be freed by the
  735.  *  object's class (via somDeallocate) after uninitialization.
  736.  *  As with somDefaultInit, a null ctrl can be passed.
  737.  */
  738.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDestruct)
  739.     (this,doFree,ctrl);
  740. }
  741.  
  742.  
  743. /* initializer method: somDefaultCopyInit */
  744. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  745.         SOMObject* fromObj)
  746. {
  747. /*
  748.  *  A default copy constructor. Use this to make copies of objects for
  749.  *  calling methods with "by-value" argument semantics.
  750.  */
  751.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultCopyInit)
  752.     (this,ctrl,fromObj);
  753. }
  754.  
  755.  
  756. /* method: somDefaultAssign */
  757. SOMPPersistentObject*  somDefaultAssign(som3AssignCtrl* ctrl, 
  758.         SOMObject* fromObj)
  759. {
  760. /*
  761.  *  A default assignment operator. Use this to "assign" the state of one
  762.  *  object to another.
  763.  */
  764.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultAssign)
  765.     (this,ctrl,fromObj);
  766. }
  767.  
  768.  
  769. /* initializer method: somDefaultConstCopyInit */
  770. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  771.         SOMObject* fromObj)
  772. {
  773. /*
  774.  *  A default copy constructor that uses a const fromObj.
  775.  */
  776.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultConstCopyInit)
  777.     (this,ctrl,fromObj);
  778. }
  779.  
  780.  
  781. /* initializer method: somDefaultVCopyInit */
  782. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  783.         SOMObject* fromObj)
  784. {
  785. /*
  786.  *  A default copy constructor that uses a volatile fromObj.
  787.  */
  788.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultVCopyInit)
  789.     (this,ctrl,fromObj);
  790. }
  791.  
  792.  
  793. /* initializer method: somDefaultConstVCopyInit */
  794. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  795.         SOMObject* fromObj)
  796. {
  797. /*
  798.  *  A default copy constructor that uses a const volatile fromObj.
  799.  */
  800.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultConstVCopyInit)
  801.     (this,ctrl,fromObj);
  802. }
  803.  
  804.  
  805. /* method: somDefaultConstAssign */
  806. SOMPPersistentObject*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  807.         SOMObject* fromObj)
  808. {
  809. /*
  810.  *  A default assignment operator that uses a const fromObj.
  811.  */
  812.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultConstAssign)
  813.     (this,ctrl,fromObj);
  814. }
  815.  
  816.  
  817. /* method: somDefaultVAssign */
  818. SOMPPersistentObject*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  819.         SOMObject* fromObj)
  820. {
  821. /*
  822.  *  A default assignment operator that uses a volatile fromObj.
  823.  */
  824.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultVAssign)
  825.     (this,ctrl,fromObj);
  826. }
  827.  
  828.  
  829. /* method: somDefaultConstVAssign */
  830. SOMPPersistentObject*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  831.         SOMObject* fromObj)
  832. {
  833. /*
  834.  *  A default assignment operator that uses a const volatile fromObj.
  835.  */
  836.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDefaultConstVAssign)
  837.     (this,ctrl,fromObj);
  838. }
  839.  
  840.  
  841. /* method: somInit */
  842. void   somInit()
  843. {
  844. /*
  845.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  846.  */
  847.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somInit)
  848.     (this);
  849. }
  850.  
  851.  
  852. /* method: somFree */
  853. void   somFree()
  854. {
  855. /*
  856.  *  Use as directed by framework implementations.
  857.  */
  858.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somFree)
  859.     (this);
  860. }
  861.  
  862.  
  863. /* method: somUninit */
  864. void   somUninit()
  865. {
  866. /*
  867.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  868.  */
  869.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somUninit)
  870.     (this);
  871. }
  872.  
  873.  
  874. /* method: somGetClass */
  875. M_SOMPPersistentObject*  somGetClass()
  876. {
  877. /*
  878.  *  Return the receiver's class.
  879.  */
  880.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somGetClass)
  881.     (this);
  882. }
  883.  
  884.  
  885. /* method: somGetClassName */
  886. string   somGetClassName()
  887. {
  888. /*
  889.  *  Return the name of the receiver's class.
  890.  */
  891.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somGetClassName)
  892.     (this);
  893. }
  894.  
  895.  
  896. /* method: somGetSize */
  897. long   somGetSize()
  898. {
  899. /*
  900.  *  Return the size of the receiver.
  901.  */
  902.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somGetSize)
  903.     (this);
  904. }
  905.  
  906.  
  907. /* method: somIsA */
  908. boolean   somIsA(SOMClass* aClassObj)
  909. {
  910. /*
  911.  *  Returns 1 (true) if the receiver responds to methods
  912.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  913.  */
  914.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somIsA)
  915.     (this,aClassObj);
  916. }
  917.  
  918.  
  919. /* method: somIsInstanceOf */
  920. boolean   somIsInstanceOf(SOMClass* aClassObj)
  921. {
  922. /*
  923.  *  Returns 1 (true) if the receiver is an instance of
  924.  *  <aClassObj> and 0 (false) otherwise.
  925.  */
  926.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somIsInstanceOf)
  927.     (this,aClassObj);
  928. }
  929.  
  930.  
  931. /* method: somRespondsTo */
  932. boolean   somRespondsTo(somId mId)
  933. {
  934. /*
  935.  *  Returns 1 (true) if the indicated method can be invoked
  936.  *  on the receiver and 0 (false) otherwise.
  937.  */
  938.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somRespondsTo)
  939.     (this,mId);
  940. }
  941.  
  942.  
  943. /* va_list method: somDispatch */
  944.  
  945. /*
  946.  *  This method provides a generic, class-specific dispatch mechanism.
  947.  *  It accepts as input <retValue> a pointer to the memory area to be
  948.  *  loaded with the result of dispatching the method indicated by
  949.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  950.  *  on which the method is to be invoked as the first argument.
  951.  */
  952. /* the va_list invocation form */
  953. boolean   SOMPPersistentObject_somDispatch(somToken* retValue, 
  954.         somId methodId, 
  955.         va_list ap)
  956. {return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatch)
  957.     (this,retValue,methodId,ap);
  958. }
  959.  
  960. /* the varargs invocation form */
  961. boolean   somDispatch(somToken* retValue, 
  962.         somId methodId, 
  963.         ...)
  964. {
  965. /*
  966.  *  This method provides a generic, class-specific dispatch mechanism.
  967.  *  It accepts as input <retValue> a pointer to the memory area to be
  968.  *  loaded with the result of dispatching the method indicated by
  969.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  970.  *  on which the method is to be invoked as the first argument.
  971.  */
  972.    va_list ap;
  973.    va_start(ap, methodId);
  974.    boolean __somResult = 
  975.       SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatch)
  976.     (this,retValue,methodId,ap);
  977.    va_end(ap);
  978.    return __somResult;
  979. }
  980.  
  981.  
  982. /* va_list method: somClassDispatch */
  983.  
  984. /*
  985.  *  Like somDispatch, but method resolution for static methods is done
  986.  *  according to the clsObj instance method table.
  987.  */
  988. /* the va_list invocation form */
  989. boolean   SOMPPersistentObject_somClassDispatch(SOMClass* clsObj, 
  990.         somToken* retValue, 
  991.         somId methodId, 
  992.         va_list ap)
  993. {return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somClassDispatch)
  994.     (this,clsObj,retValue,methodId,ap);
  995. }
  996.  
  997. /* the varargs invocation form */
  998. boolean   somClassDispatch(SOMClass* clsObj, 
  999.         somToken* retValue, 
  1000.         somId methodId, 
  1001.         ...)
  1002. {
  1003. /*
  1004.  *  Like somDispatch, but method resolution for static methods is done
  1005.  *  according to the clsObj instance method table.
  1006.  */
  1007.    va_list ap;
  1008.    va_start(ap, methodId);
  1009.    boolean __somResult = 
  1010.       SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somClassDispatch)
  1011.     (this,clsObj,retValue,methodId,ap);
  1012.    va_end(ap);
  1013.    return __somResult;
  1014. }
  1015.  
  1016.  
  1017. /* method: somCastObj */
  1018. boolean   somCastObj(SOMClass* cls)
  1019. {
  1020. /*
  1021.  *  cast the receiving object to cls (which must be an ancestor of the
  1022.  *  objects true class. Returns true on success.
  1023.  */
  1024.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somCastObj)
  1025.     (this,cls);
  1026. }
  1027.  
  1028.  
  1029. /* method: somResetObj */
  1030. boolean   somResetObj()
  1031. {
  1032. /*
  1033.  *  reset an object to its true class. Returns true always.
  1034.  */
  1035.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somResetObj)
  1036.     (this);
  1037. }
  1038.  
  1039.  
  1040. /* va_list method: somDispatchV */
  1041.  
  1042. /*
  1043.  *  Obsolete. Use somDispatch instead.
  1044.  */
  1045. /* the va_list invocation form */
  1046. void   SOMPPersistentObject_somDispatchV(somId methodId, 
  1047.         somId descriptor, 
  1048.         va_list ap)
  1049. {   SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchV)
  1050.     (this,methodId,descriptor,ap);
  1051. }
  1052.  
  1053. /* the varargs invocation form */
  1054. void   somDispatchV(somId methodId, 
  1055.         somId descriptor, 
  1056.         ...)
  1057. {
  1058. /*
  1059.  *  Obsolete. Use somDispatch instead.
  1060.  */
  1061.    va_list ap;
  1062.    va_start(ap, descriptor);
  1063.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchV)
  1064.     (this,methodId,descriptor,ap);
  1065.    va_end(ap);
  1066. }
  1067.  
  1068.  
  1069. /* va_list method: somDispatchL */
  1070.  
  1071. /*
  1072.  *  Obsolete. Use somDispatch instead.
  1073.  */
  1074. /* the va_list invocation form */
  1075. long   SOMPPersistentObject_somDispatchL(somId methodId, 
  1076.         somId descriptor, 
  1077.         va_list ap)
  1078. {return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchL)
  1079.     (this,methodId,descriptor,ap);
  1080. }
  1081.  
  1082. /* the varargs invocation form */
  1083. long   somDispatchL(somId methodId, 
  1084.         somId descriptor, 
  1085.         ...)
  1086. {
  1087. /*
  1088.  *  Obsolete. Use somDispatch instead.
  1089.  */
  1090.    va_list ap;
  1091.    va_start(ap, descriptor);
  1092.    long __somResult = 
  1093.       SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchL)
  1094.     (this,methodId,descriptor,ap);
  1095.    va_end(ap);
  1096.    return __somResult;
  1097. }
  1098.  
  1099.  
  1100. /* va_list method: somDispatchA */
  1101.  
  1102. /*
  1103.  *  Obsolete. Use somDispatch instead.
  1104.  */
  1105. /* the va_list invocation form */
  1106. void*   SOMPPersistentObject_somDispatchA(somId methodId, 
  1107.         somId descriptor, 
  1108.         va_list ap)
  1109. {return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchA)
  1110.     (this,methodId,descriptor,ap);
  1111. }
  1112.  
  1113. /* the varargs invocation form */
  1114. void*   somDispatchA(somId methodId, 
  1115.         somId descriptor, 
  1116.         ...)
  1117. {
  1118. /*
  1119.  *  Obsolete. Use somDispatch instead.
  1120.  */
  1121.    va_list ap;
  1122.    va_start(ap, descriptor);
  1123.    void* __somResult = 
  1124.       SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchA)
  1125.     (this,methodId,descriptor,ap);
  1126.    va_end(ap);
  1127.    return __somResult;
  1128. }
  1129.  
  1130.  
  1131. /* va_list method: somDispatchD */
  1132.  
  1133. /*
  1134.  *  Obsolete. Use somDispatch instead.
  1135.  */
  1136. /* the va_list invocation form */
  1137. double   SOMPPersistentObject_somDispatchD(somId methodId, 
  1138.         somId descriptor, 
  1139.         va_list ap)
  1140. {return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchD)
  1141.     (this,methodId,descriptor,ap);
  1142. }
  1143.  
  1144. /* the varargs invocation form */
  1145. double   somDispatchD(somId methodId, 
  1146.         somId descriptor, 
  1147.         ...)
  1148. {
  1149. /*
  1150.  *  Obsolete. Use somDispatch instead.
  1151.  */
  1152.    va_list ap;
  1153.    va_start(ap, descriptor);
  1154.    double __somResult = 
  1155.       SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDispatchD)
  1156.     (this,methodId,descriptor,ap);
  1157.    va_end(ap);
  1158.    return __somResult;
  1159. }
  1160.  
  1161.  
  1162. /* method: somPrintSelf */
  1163. SOMObject*   somPrintSelf()
  1164. {
  1165. /*
  1166.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  1167.  *  information about this object.  The default implementation just gives
  1168.  *  the object's class name and its address in memory.
  1169.  *  <self> is returned.
  1170.  */
  1171.    return SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somPrintSelf)
  1172.     (this);
  1173. }
  1174.  
  1175.  
  1176. /* method: somDumpSelf */
  1177. void   somDumpSelf(long level)
  1178. {
  1179. /*
  1180.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  1181.  *  and its current state.
  1182.  * 
  1183.  *  <level> indicates the nesting level for describing compound objects
  1184.  *  it must be greater than or equal to zero.  All lines in the
  1185.  *  description will be preceeded by <2*level> spaces.
  1186.  * 
  1187.  *  This routine only actually writes the data that concerns the object
  1188.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  1189.  *  the object's current state.  This approach allows readable
  1190.  *  descriptions of compound objects to be constructed.
  1191.  * 
  1192.  *  Generally it is not necessary to override this method, if it is
  1193.  *  overriden it generally must be completely replaced.
  1194.  */
  1195.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDumpSelf)
  1196.     (this,level);
  1197. }
  1198.  
  1199.  
  1200. /* method: somDumpSelfInt */
  1201. void   somDumpSelfInt(long level)
  1202. {
  1203. /*
  1204.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  1205.  *  Generally this method will need to be overridden.  When overriding
  1206.  *  it, begin by calling the parent class form of this method and then
  1207.  *  write in a description of your class's instance data. This will
  1208.  *  result in a description of all the object's instance data going
  1209.  *  from its root ancestor class to its specific class.
  1210.  */
  1211.    SOM_ResolveD(this,SOMPPersistentObject,SOMObject,somDumpSelfInt)
  1212.     (this,level);
  1213. }
  1214.  
  1215.  
  1216.  
  1217. };   /* SOMPPersistentObject */
  1218.  
  1219.  
  1220.  
  1221. #endif       /* SOM_SOMPPersistentObject_xh */
  1222.  
  1223. #ifndef SOM_M_SOMPPersistentObject_xh
  1224. #define SOM_M_SOMPPersistentObject_xh
  1225.  
  1226. class M_SOMPPersistentObject;
  1227.  
  1228. #define M_SOMPPersistentObject_MajorVersion 2
  1229. #define M_SOMPPersistentObject_MinorVersion 1
  1230.  
  1231. /* C++ SOM defs */
  1232. #include <somcls.xh>
  1233. #include <somcm.xh>
  1234.  
  1235. /* C++ parent defs */
  1236. #ifndef SOM_SOMClass_xh
  1237. #include <somcls.xh>
  1238. #endif
  1239.  
  1240. #ifndef M_SOMPPersistentObject_API
  1241. #define M_SOMPPersistentObject_API
  1242. /*
  1243.  * -- The Class API
  1244.  */
  1245.  
  1246. /*
  1247.  * Start of bindings for IDL types
  1248.  */
  1249.  
  1250.  
  1251. /*
  1252.  * End of bindings for IDL types.
  1253.  */
  1254.  
  1255. /*
  1256.  * -- M_SOMPPersistentObject is a metaclass for SOMPPersistentObject. Make sure SOMPPersistentObject is known.
  1257.  */
  1258. class SOMPPersistentObject;
  1259.  
  1260.  
  1261. /* A procedure to create the M_SOMPPersistentObject Class */
  1262. SOMEXTERN SOMClass * SOMLINK M_SOMPPersistentObjectNewClass(
  1263.         integer4 majorVersion,
  1264.         integer4 minorVersion);
  1265.  
  1266. /* The API to the M_SOMPPersistentObject class object, and the methods it introduces. */
  1267. SOMEXTERN struct M_SOMPPersistentObjectClassDataStructure {
  1268.     SOMClass *classObject;
  1269.     somMToken sompRegisterEDPair;
  1270.     somMToken sompGetTotalEDPairs;
  1271.     somMToken sompGetNthEDPair;
  1272.     somMToken sompGetNthEDPairObj;
  1273.     somMToken sompSetClassLevelEncoderDecoderName;
  1274.     somMToken sompGetClassLevelEncoderDecoderName;
  1275. } SOMDLINK M_SOMPPersistentObjectClassData;
  1276. #define _M_SOMPPersistentObject M_SOMPPersistentObjectClassData.classObject
  1277.  
  1278. /* The API to parentMtabs for M_SOMPPersistentObject, and the instance data it introduces. */
  1279. SOMEXTERN struct M_SOMPPersistentObjectCClassDataStructure {
  1280.     somMethodTabs parentMtab;
  1281.     somDToken              instanceDataToken;
  1282. } SOMDLINK M_SOMPPersistentObjectCClassData;
  1283.  
  1284. /*
  1285.  * -- Typedefs for M_SOMPPersistentObject Method Procedures
  1286.  */
  1287. SOMEXTERN {
  1288. typedef void   SOMLINK somTP_M_SOMPPersistentObject_sompSetClassLevelEncoderDecoderName(M_SOMPPersistentObject *somSelf, Environment *ev, 
  1289.         string myName);
  1290. typedef somTP_M_SOMPPersistentObject_sompSetClassLevelEncoderDecoderName *somTD_M_SOMPPersistentObject_sompSetClassLevelEncoderDecoderName;
  1291. typedef string   SOMLINK somTP_M_SOMPPersistentObject_sompGetClassLevelEncoderDecoderName(M_SOMPPersistentObject *somSelf, Environment *ev);
  1292. typedef somTP_M_SOMPPersistentObject_sompGetClassLevelEncoderDecoderName *somTD_M_SOMPPersistentObject_sompGetClassLevelEncoderDecoderName;
  1293.  
  1294. /*
  1295.  * -- Typedefs for Reintroduced Wrapper Methods
  1296.  */
  1297. typedef long   SOMLINK somTP_M_SOMPPersistentObject__get_somDataAlignment(M_SOMPPersistentObject *somSelf);
  1298. typedef somTP_M_SOMPPersistentObject__get_somDataAlignment *somTD_M_SOMPPersistentObject__get_somDataAlignment;
  1299. typedef SOMClass_somOffsets   SOMLINK somTP_M_SOMPPersistentObject__get_somInstanceDataOffsets(M_SOMPPersistentObject *somSelf);
  1300. typedef somTP_M_SOMPPersistentObject__get_somInstanceDataOffsets *somTD_M_SOMPPersistentObject__get_somInstanceDataOffsets;
  1301. typedef SOMClass_SOMClassSequence   SOMLINK somTP_M_SOMPPersistentObject__get_somDirectInitClasses(M_SOMPPersistentObject *somSelf);
  1302. typedef somTP_M_SOMPPersistentObject__get_somDirectInitClasses *somTD_M_SOMPPersistentObject__get_somDirectInitClasses;
  1303. typedef SOMPPersistentObject*   SOMLINK somTP_M_SOMPPersistentObject_somNew(M_SOMPPersistentObject *somSelf);
  1304. typedef somTP_M_SOMPPersistentObject_somNew *somTD_M_SOMPPersistentObject_somNew;
  1305. typedef SOMObject*   SOMLINK somTP_M_SOMPPersistentObject_somNewNoInit(M_SOMPPersistentObject *somSelf);
  1306. typedef somTP_M_SOMPPersistentObject_somNewNoInit *somTD_M_SOMPPersistentObject_somNewNoInit;
  1307. typedef SOMObject*   SOMLINK somTP_M_SOMPPersistentObject_somRenew(M_SOMPPersistentObject *somSelf, 
  1308.         void* obj);
  1309. typedef somTP_M_SOMPPersistentObject_somRenew *somTD_M_SOMPPersistentObject_somRenew;
  1310. typedef SOMObject*   SOMLINK somTP_M_SOMPPersistentObject_somRenewNoInit(M_SOMPPersistentObject *somSelf, 
  1311.         void* obj);
  1312. typedef somTP_M_SOMPPersistentObject_somRenewNoInit *somTD_M_SOMPPersistentObject_somRenewNoInit;
  1313. typedef SOMObject*   SOMLINK somTP_M_SOMPPersistentObject_somRenewNoZero(M_SOMPPersistentObject *somSelf, 
  1314.         void* obj);
  1315. typedef somTP_M_SOMPPersistentObject_somRenewNoZero *somTD_M_SOMPPersistentObject_somRenewNoZero;
  1316. typedef SOMObject*   SOMLINK somTP_M_SOMPPersistentObject_somRenewNoInitNoZero(M_SOMPPersistentObject *somSelf, 
  1317.         void* obj);
  1318. typedef somTP_M_SOMPPersistentObject_somRenewNoInitNoZero *somTD_M_SOMPPersistentObject_somRenewNoInitNoZero;
  1319. typedef somToken   SOMLINK somTP_M_SOMPPersistentObject_somAllocate(M_SOMPPersistentObject *somSelf, 
  1320.         long size);
  1321. typedef somTP_M_SOMPPersistentObject_somAllocate *somTD_M_SOMPPersistentObject_somAllocate;
  1322. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDeallocate(M_SOMPPersistentObject *somSelf, 
  1323.         somToken memptr);
  1324. typedef somTP_M_SOMPPersistentObject_somDeallocate *somTD_M_SOMPPersistentObject_somDeallocate;
  1325. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somInitClass(M_SOMPPersistentObject *somSelf, 
  1326.         string className, 
  1327.         SOMClass* parentClass, 
  1328.         long dataSize, 
  1329.         long maxStaticMethods, 
  1330.         long majorVersion, 
  1331.         long minorVersion);
  1332. typedef somTP_M_SOMPPersistentObject_somInitClass *somTD_M_SOMPPersistentObject_somInitClass;
  1333. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somInitMIClass(M_SOMPPersistentObject *somSelf, 
  1334.         long inherit_vars, 
  1335.         string className, 
  1336.         SOMClass_SOMClassSequence* parentClasses, 
  1337.         long dataSize, 
  1338.         long dataAlignment, 
  1339.         long maxStaticMethods, 
  1340.         long majorVersion, 
  1341.         long minorVersion);
  1342. typedef somTP_M_SOMPPersistentObject_somInitMIClass *somTD_M_SOMPPersistentObject_somInitMIClass;
  1343. typedef somMToken   SOMLINK somTP_M_SOMPPersistentObject_somAddStaticMethod(M_SOMPPersistentObject *somSelf, 
  1344.         somId methodId, 
  1345.         somId methodDescriptor, 
  1346.         somMethodPtr method, 
  1347.         somMethodPtr redispatchStub, 
  1348.         somMethodPtr applyStub);
  1349. typedef somTP_M_SOMPPersistentObject_somAddStaticMethod *somTD_M_SOMPPersistentObject_somAddStaticMethod;
  1350. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somAddDynamicMethod(M_SOMPPersistentObject *somSelf, 
  1351.         somId methodId, 
  1352.         somId methodDescriptor, 
  1353.         somMethodPtr method, 
  1354.         somMethodPtr applyStub);
  1355. typedef somTP_M_SOMPPersistentObject_somAddDynamicMethod *somTD_M_SOMPPersistentObject_somAddDynamicMethod;
  1356. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somOverrideSMethod(M_SOMPPersistentObject *somSelf, 
  1357.         somId methodId, 
  1358.         somMethodPtr method);
  1359. typedef somTP_M_SOMPPersistentObject_somOverrideSMethod *somTD_M_SOMPPersistentObject_somOverrideSMethod;
  1360. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somClassReady(M_SOMPPersistentObject *somSelf);
  1361. typedef somTP_M_SOMPPersistentObject_somClassReady *somTD_M_SOMPPersistentObject_somClassReady;
  1362. typedef somMethodPtr   SOMLINK somTP_M_SOMPPersistentObject_somGetApplyStub(M_SOMPPersistentObject *somSelf, 
  1363.         somId methodId);
  1364. typedef somTP_M_SOMPPersistentObject_somGetApplyStub *somTD_M_SOMPPersistentObject_somGetApplyStub;
  1365. typedef somClassDataStructure*   SOMLINK somTP_M_SOMPPersistentObject_somGetClassData(M_SOMPPersistentObject *somSelf);
  1366. typedef somTP_M_SOMPPersistentObject_somGetClassData *somTD_M_SOMPPersistentObject_somGetClassData;
  1367. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somSetClassData(M_SOMPPersistentObject *somSelf, 
  1368.         somClassDataStructure* cds);
  1369. typedef somTP_M_SOMPPersistentObject_somSetClassData *somTD_M_SOMPPersistentObject_somSetClassData;
  1370. typedef somMethodTab*   SOMLINK somTP_M_SOMPPersistentObject_somGetClassMtab(M_SOMPPersistentObject *somSelf);
  1371. typedef somTP_M_SOMPPersistentObject_somGetClassMtab *somTD_M_SOMPPersistentObject_somGetClassMtab;
  1372. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetInstanceOffset(M_SOMPPersistentObject *somSelf);
  1373. typedef somTP_M_SOMPPersistentObject_somGetInstanceOffset *somTD_M_SOMPPersistentObject_somGetInstanceOffset;
  1374. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetInstancePartSize(M_SOMPPersistentObject *somSelf);
  1375. typedef somTP_M_SOMPPersistentObject_somGetInstancePartSize *somTD_M_SOMPPersistentObject_somGetInstancePartSize;
  1376. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetInstanceSize(M_SOMPPersistentObject *somSelf);
  1377. typedef somTP_M_SOMPPersistentObject_somGetInstanceSize *somTD_M_SOMPPersistentObject_somGetInstanceSize;
  1378. typedef somDToken   SOMLINK somTP_M_SOMPPersistentObject_somGetInstanceToken(M_SOMPPersistentObject *somSelf);
  1379. typedef somTP_M_SOMPPersistentObject_somGetInstanceToken *somTD_M_SOMPPersistentObject_somGetInstanceToken;
  1380. typedef somDToken   SOMLINK somTP_M_SOMPPersistentObject_somGetMemberToken(M_SOMPPersistentObject *somSelf, 
  1381.         long memberOffset, 
  1382.         somDToken instanceToken);
  1383. typedef somTP_M_SOMPPersistentObject_somGetMemberToken *somTD_M_SOMPPersistentObject_somGetMemberToken;
  1384. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somGetMethodData(M_SOMPPersistentObject *somSelf, 
  1385.         somId methodId, 
  1386.         somMethodData* md);
  1387. typedef somTP_M_SOMPPersistentObject_somGetMethodData *somTD_M_SOMPPersistentObject_somGetMethodData;
  1388. typedef somMethodProc*   SOMLINK somTP_M_SOMPPersistentObject_somGetRdStub(M_SOMPPersistentObject *somSelf, 
  1389.         somId methodId);
  1390. typedef somTP_M_SOMPPersistentObject_somGetRdStub *somTD_M_SOMPPersistentObject_somGetRdStub;
  1391. typedef somId   SOMLINK somTP_M_SOMPPersistentObject_somGetMethodDescriptor(M_SOMPPersistentObject *somSelf, 
  1392.         somId methodId);
  1393. typedef somTP_M_SOMPPersistentObject_somGetMethodDescriptor *somTD_M_SOMPPersistentObject_somGetMethodDescriptor;
  1394. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetMethodIndex(M_SOMPPersistentObject *somSelf, 
  1395.         somId id);
  1396. typedef somTP_M_SOMPPersistentObject_somGetMethodIndex *somTD_M_SOMPPersistentObject_somGetMethodIndex;
  1397. typedef somMToken   SOMLINK somTP_M_SOMPPersistentObject_somGetMethodToken(M_SOMPPersistentObject *somSelf, 
  1398.         somId methodId);
  1399. typedef somTP_M_SOMPPersistentObject_somGetMethodToken *somTD_M_SOMPPersistentObject_somGetMethodToken;
  1400. typedef string   SOMLINK somTP_M_SOMPPersistentObject_somGetName(M_SOMPPersistentObject *somSelf);
  1401. typedef somTP_M_SOMPPersistentObject_somGetName *somTD_M_SOMPPersistentObject_somGetName;
  1402. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somGetNthMethodData(M_SOMPPersistentObject *somSelf, 
  1403.         long n, 
  1404.         somMethodData* md);
  1405. typedef somTP_M_SOMPPersistentObject_somGetNthMethodData *somTD_M_SOMPPersistentObject_somGetNthMethodData;
  1406. typedef somId   SOMLINK somTP_M_SOMPPersistentObject_somGetNthMethodInfo(M_SOMPPersistentObject *somSelf, 
  1407.         long n, 
  1408.         somId* descriptor);
  1409. typedef somTP_M_SOMPPersistentObject_somGetNthMethodInfo *somTD_M_SOMPPersistentObject_somGetNthMethodInfo;
  1410. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetNumMethods(M_SOMPPersistentObject *somSelf);
  1411. typedef somTP_M_SOMPPersistentObject_somGetNumMethods *somTD_M_SOMPPersistentObject_somGetNumMethods;
  1412. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetNumStaticMethods(M_SOMPPersistentObject *somSelf);
  1413. typedef somTP_M_SOMPPersistentObject_somGetNumStaticMethods *somTD_M_SOMPPersistentObject_somGetNumStaticMethods;
  1414. typedef SOMClass*   SOMLINK somTP_M_SOMPPersistentObject_somGetParent(M_SOMPPersistentObject *somSelf);
  1415. typedef somTP_M_SOMPPersistentObject_somGetParent *somTD_M_SOMPPersistentObject_somGetParent;
  1416. typedef SOMClass_SOMClassSequence   SOMLINK somTP_M_SOMPPersistentObject_somGetParents(M_SOMPPersistentObject *somSelf);
  1417. typedef somTP_M_SOMPPersistentObject_somGetParents *somTD_M_SOMPPersistentObject_somGetParents;
  1418. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somGetVersionNumbers(M_SOMPPersistentObject *somSelf, 
  1419.         long* majorVersion, 
  1420.         long* minorVersion);
  1421. typedef somTP_M_SOMPPersistentObject_somGetVersionNumbers *somTD_M_SOMPPersistentObject_somGetVersionNumbers;
  1422. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somFindMethod(M_SOMPPersistentObject *somSelf, 
  1423.         somId methodId, 
  1424.         somMethodPtr* m);
  1425. typedef somTP_M_SOMPPersistentObject_somFindMethod *somTD_M_SOMPPersistentObject_somFindMethod;
  1426. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somFindMethodOk(M_SOMPPersistentObject *somSelf, 
  1427.         somId methodId, 
  1428.         somMethodPtr* m);
  1429. typedef somTP_M_SOMPPersistentObject_somFindMethodOk *somTD_M_SOMPPersistentObject_somFindMethodOk;
  1430. typedef somMethodPtr   SOMLINK somTP_M_SOMPPersistentObject_somFindSMethod(M_SOMPPersistentObject *somSelf, 
  1431.         somId methodId);
  1432. typedef somTP_M_SOMPPersistentObject_somFindSMethod *somTD_M_SOMPPersistentObject_somFindSMethod;
  1433. typedef somMethodPtr   SOMLINK somTP_M_SOMPPersistentObject_somFindSMethodOk(M_SOMPPersistentObject *somSelf, 
  1434.         somId methodId);
  1435. typedef somTP_M_SOMPPersistentObject_somFindSMethodOk *somTD_M_SOMPPersistentObject_somFindSMethodOk;
  1436. typedef somMethodPtr   SOMLINK somTP_M_SOMPPersistentObject_somLookupMethod(M_SOMPPersistentObject *somSelf, 
  1437.         somId methodId);
  1438. typedef somTP_M_SOMPPersistentObject_somLookupMethod *somTD_M_SOMPPersistentObject_somLookupMethod;
  1439. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somCheckVersion(M_SOMPPersistentObject *somSelf, 
  1440.         long majorVersion, 
  1441.         long minorVersion);
  1442. typedef somTP_M_SOMPPersistentObject_somCheckVersion *somTD_M_SOMPPersistentObject_somCheckVersion;
  1443. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somDescendedFrom(M_SOMPPersistentObject *somSelf, 
  1444.         SOMClass* aClassObj);
  1445. typedef somTP_M_SOMPPersistentObject_somDescendedFrom *somTD_M_SOMPPersistentObject_somDescendedFrom;
  1446. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somSupportsMethod(M_SOMPPersistentObject *somSelf, 
  1447.         somId mId);
  1448. typedef somTP_M_SOMPPersistentObject_somSupportsMethod *somTD_M_SOMPPersistentObject_somSupportsMethod;
  1449. typedef somMethodPtr   SOMLINK somTP_M_SOMPPersistentObject_somDefinedMethod(M_SOMPPersistentObject *somSelf, 
  1450.         somMToken method);
  1451. typedef somTP_M_SOMPPersistentObject_somDefinedMethod *somTD_M_SOMPPersistentObject_somDefinedMethod;
  1452. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somOverrideMtab(M_SOMPPersistentObject *somSelf);
  1453. typedef somTP_M_SOMPPersistentObject_somOverrideMtab *somTD_M_SOMPPersistentObject_somOverrideMtab;
  1454. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDefaultInit(M_SOMPPersistentObject *somSelf, 
  1455.         som3InitCtrl* ctrl);
  1456. typedef somTP_M_SOMPPersistentObject_somDefaultInit *somTD_M_SOMPPersistentObject_somDefaultInit;
  1457. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDestruct(M_SOMPPersistentObject *somSelf, 
  1458.         octet doFree, 
  1459.         som3DestructCtrl* ctrl);
  1460. typedef somTP_M_SOMPPersistentObject_somDestruct *somTD_M_SOMPPersistentObject_somDestruct;
  1461. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDefaultCopyInit(M_SOMPPersistentObject *somSelf, 
  1462.         som3InitCtrl* ctrl, 
  1463.         SOMObject* fromObj);
  1464. typedef somTP_M_SOMPPersistentObject_somDefaultCopyInit *somTD_M_SOMPPersistentObject_somDefaultCopyInit;
  1465. typedef M_SOMPPersistentObject*   SOMLINK somTP_M_SOMPPersistentObject_somDefaultAssign(M_SOMPPersistentObject *somSelf, 
  1466.         som3AssignCtrl* ctrl, 
  1467.         SOMObject* fromObj);
  1468. typedef somTP_M_SOMPPersistentObject_somDefaultAssign *somTD_M_SOMPPersistentObject_somDefaultAssign;
  1469. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDefaultConstCopyInit(M_SOMPPersistentObject *somSelf, 
  1470.         som3InitCtrl* ctrl, 
  1471.         SOMObject* fromObj);
  1472. typedef somTP_M_SOMPPersistentObject_somDefaultConstCopyInit *somTD_M_SOMPPersistentObject_somDefaultConstCopyInit;
  1473. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDefaultVCopyInit(M_SOMPPersistentObject *somSelf, 
  1474.         som3InitCtrl* ctrl, 
  1475.         SOMObject* fromObj);
  1476. typedef somTP_M_SOMPPersistentObject_somDefaultVCopyInit *somTD_M_SOMPPersistentObject_somDefaultVCopyInit;
  1477. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDefaultConstVCopyInit(M_SOMPPersistentObject *somSelf, 
  1478.         som3InitCtrl* ctrl, 
  1479.         SOMObject* fromObj);
  1480. typedef somTP_M_SOMPPersistentObject_somDefaultConstVCopyInit *somTD_M_SOMPPersistentObject_somDefaultConstVCopyInit;
  1481. typedef M_SOMPPersistentObject*   SOMLINK somTP_M_SOMPPersistentObject_somDefaultConstAssign(M_SOMPPersistentObject *somSelf, 
  1482.         som3AssignCtrl* ctrl, 
  1483.         SOMObject* fromObj);
  1484. typedef somTP_M_SOMPPersistentObject_somDefaultConstAssign *somTD_M_SOMPPersistentObject_somDefaultConstAssign;
  1485. typedef M_SOMPPersistentObject*   SOMLINK somTP_M_SOMPPersistentObject_somDefaultVAssign(M_SOMPPersistentObject *somSelf, 
  1486.         som3AssignCtrl* ctrl, 
  1487.         SOMObject* fromObj);
  1488. typedef somTP_M_SOMPPersistentObject_somDefaultVAssign *somTD_M_SOMPPersistentObject_somDefaultVAssign;
  1489. typedef M_SOMPPersistentObject*   SOMLINK somTP_M_SOMPPersistentObject_somDefaultConstVAssign(M_SOMPPersistentObject *somSelf, 
  1490.         som3AssignCtrl* ctrl, 
  1491.         SOMObject* fromObj);
  1492. typedef somTP_M_SOMPPersistentObject_somDefaultConstVAssign *somTD_M_SOMPPersistentObject_somDefaultConstVAssign;
  1493. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somInit(M_SOMPPersistentObject *somSelf);
  1494. typedef somTP_M_SOMPPersistentObject_somInit *somTD_M_SOMPPersistentObject_somInit;
  1495. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somFree(M_SOMPPersistentObject *somSelf);
  1496. typedef somTP_M_SOMPPersistentObject_somFree *somTD_M_SOMPPersistentObject_somFree;
  1497. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somUninit(M_SOMPPersistentObject *somSelf);
  1498. typedef somTP_M_SOMPPersistentObject_somUninit *somTD_M_SOMPPersistentObject_somUninit;
  1499. typedef SOMClass*   SOMLINK somTP_M_SOMPPersistentObject_somGetClass(M_SOMPPersistentObject *somSelf);
  1500. typedef somTP_M_SOMPPersistentObject_somGetClass *somTD_M_SOMPPersistentObject_somGetClass;
  1501. typedef string   SOMLINK somTP_M_SOMPPersistentObject_somGetClassName(M_SOMPPersistentObject *somSelf);
  1502. typedef somTP_M_SOMPPersistentObject_somGetClassName *somTD_M_SOMPPersistentObject_somGetClassName;
  1503. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somGetSize(M_SOMPPersistentObject *somSelf);
  1504. typedef somTP_M_SOMPPersistentObject_somGetSize *somTD_M_SOMPPersistentObject_somGetSize;
  1505. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somIsA(M_SOMPPersistentObject *somSelf, 
  1506.         SOMClass* aClassObj);
  1507. typedef somTP_M_SOMPPersistentObject_somIsA *somTD_M_SOMPPersistentObject_somIsA;
  1508. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somIsInstanceOf(M_SOMPPersistentObject *somSelf, 
  1509.         SOMClass* aClassObj);
  1510. typedef somTP_M_SOMPPersistentObject_somIsInstanceOf *somTD_M_SOMPPersistentObject_somIsInstanceOf;
  1511. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somRespondsTo(M_SOMPPersistentObject *somSelf, 
  1512.         somId mId);
  1513. typedef somTP_M_SOMPPersistentObject_somRespondsTo *somTD_M_SOMPPersistentObject_somRespondsTo;
  1514. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somDispatch(M_SOMPPersistentObject *somSelf, 
  1515.         somToken* retValue, 
  1516.         somId methodId, 
  1517.         va_list ap);
  1518. typedef somTP_M_SOMPPersistentObject_somDispatch *somTD_M_SOMPPersistentObject_somDispatch;
  1519. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somClassDispatch(M_SOMPPersistentObject *somSelf, 
  1520.         SOMClass* clsObj, 
  1521.         somToken* retValue, 
  1522.         somId methodId, 
  1523.         va_list ap);
  1524. typedef somTP_M_SOMPPersistentObject_somClassDispatch *somTD_M_SOMPPersistentObject_somClassDispatch;
  1525. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somCastObj(M_SOMPPersistentObject *somSelf, 
  1526.         SOMClass* cls);
  1527. typedef somTP_M_SOMPPersistentObject_somCastObj *somTD_M_SOMPPersistentObject_somCastObj;
  1528. typedef boolean   SOMLINK somTP_M_SOMPPersistentObject_somResetObj(M_SOMPPersistentObject *somSelf);
  1529. typedef somTP_M_SOMPPersistentObject_somResetObj *somTD_M_SOMPPersistentObject_somResetObj;
  1530. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDispatchV(M_SOMPPersistentObject *somSelf, 
  1531.         somId methodId, 
  1532.         somId descriptor, 
  1533.         va_list ap);
  1534. typedef somTP_M_SOMPPersistentObject_somDispatchV *somTD_M_SOMPPersistentObject_somDispatchV;
  1535. typedef long   SOMLINK somTP_M_SOMPPersistentObject_somDispatchL(M_SOMPPersistentObject *somSelf, 
  1536.         somId methodId, 
  1537.         somId descriptor, 
  1538.         va_list ap);
  1539. typedef somTP_M_SOMPPersistentObject_somDispatchL *somTD_M_SOMPPersistentObject_somDispatchL;
  1540. typedef void*   SOMLINK somTP_M_SOMPPersistentObject_somDispatchA(M_SOMPPersistentObject *somSelf, 
  1541.         somId methodId, 
  1542.         somId descriptor, 
  1543.         va_list ap);
  1544. typedef somTP_M_SOMPPersistentObject_somDispatchA *somTD_M_SOMPPersistentObject_somDispatchA;
  1545. typedef double   SOMLINK somTP_M_SOMPPersistentObject_somDispatchD(M_SOMPPersistentObject *somSelf, 
  1546.         somId methodId, 
  1547.         somId descriptor, 
  1548.         va_list ap);
  1549. typedef somTP_M_SOMPPersistentObject_somDispatchD *somTD_M_SOMPPersistentObject_somDispatchD;
  1550. typedef SOMObject*   SOMLINK somTP_M_SOMPPersistentObject_somPrintSelf(M_SOMPPersistentObject *somSelf);
  1551. typedef somTP_M_SOMPPersistentObject_somPrintSelf *somTD_M_SOMPPersistentObject_somPrintSelf;
  1552. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDumpSelf(M_SOMPPersistentObject *somSelf, 
  1553.         long level);
  1554. typedef somTP_M_SOMPPersistentObject_somDumpSelf *somTD_M_SOMPPersistentObject_somDumpSelf;
  1555. typedef void   SOMLINK somTP_M_SOMPPersistentObject_somDumpSelfInt(M_SOMPPersistentObject *somSelf, 
  1556.         long level);
  1557. typedef somTP_M_SOMPPersistentObject_somDumpSelfInt *somTD_M_SOMPPersistentObject_somDumpSelfInt;
  1558. }
  1559.  
  1560. #endif /* M_SOMPPersistentObject_API */
  1561.  
  1562.  
  1563. /*
  1564.  * -- This emitter treats Method Tokens as Thunks by default.
  1565.  * -- Use the sc modifier "nothunks" to change this default
  1566.  */
  1567. #undef somresolve_
  1568. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  1569.  
  1570. /*
  1571.  * -- The C++ Wrapper Class for M_SOMPPersistentObject
  1572.  */
  1573. class M_SOMPPersistentObject : public SOMClass
  1574. {
  1575. public:
  1576.  
  1577. // M_SOMPPersistentObject::new creates the class object if necessary, and then uses somNewNoInit
  1578. // to allocate memory and create the object. Initialization is in ctors.
  1579. void *operator new(size_t)
  1580. {
  1581.    if (!_M_SOMPPersistentObject) M_SOMPPersistentObjectNewClass(M_SOMPPersistentObject_MajorVersion,M_SOMPPersistentObject_MinorVersion);
  1582.    return (void*)
  1583.       SOM_Resolve(_M_SOMPPersistentObject,SOMClass,somNewNoInit)
  1584.          ((SOMClass *)((void*)_M_SOMPPersistentObject));
  1585. }
  1586.  
  1587. // M_SOMPPersistentObject::delete uses somDestruct.
  1588. void operator delete(void * obj)
  1589. {
  1590.    if (obj && *(void**)obj) {
  1591.       SOM_Resolve(obj,SOMObject,somFree)
  1592.          ((SOMObject*)obj);
  1593.    }
  1594. }
  1595.  
  1596. M_SOMPPersistentObject& operator=(M_SOMPPersistentObject& fromObj)
  1597. {
  1598.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  1599.    return *this;
  1600. }
  1601.  
  1602. M_SOMPPersistentObject()
  1603. {
  1604.    if (*(void**)this != 
  1605.        ((somParentMtabStructPtr)
  1606.         (M_SOMPPersistentObjectCClassData.parentMtab))->mtab)
  1607.       return;
  1608.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  1609. }
  1610.  
  1611. M_SOMPPersistentObject(M_SOMPPersistentObject* fromObj)
  1612. {
  1613.    if (*(void**)this != 
  1614.        ((somParentMtabStructPtr)
  1615.         (M_SOMPPersistentObjectCClassData.parentMtab))->mtab)
  1616.       return;
  1617.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  1618. }
  1619.  
  1620. #ifdef __IBMCPP__
  1621. #pragma info(nocnv,nopar)
  1622. #endif
  1623. M_SOMPPersistentObject(const M_SOMPPersistentObject* fromObj)
  1624. {
  1625.    if (*(void**)this != 
  1626.        ((somParentMtabStructPtr)
  1627.         (M_SOMPPersistentObjectCClassData.parentMtab))->mtab)
  1628.       return;
  1629.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  1630. }
  1631. #ifdef __IBMCPP__
  1632. #pragma info(restore)
  1633. #endif
  1634.  
  1635.  
  1636. /* method: sompSetClassLevelEncoderDecoderName */
  1637. void   sompSetClassLevelEncoderDecoderName(Environment *ev, 
  1638.         string myName)
  1639. {
  1640. /*
  1641.  *  Set Encoder/Decoder name at the class level
  1642.  */
  1643.    SOM_ResolveD(this,M_SOMPPersistentObject,M_SOMPPersistentObject,sompSetClassLevelEncoderDecoderName)
  1644.     (this, ev,myName);
  1645. }
  1646.  
  1647.  
  1648. /* method: sompGetClassLevelEncoderDecoderName */
  1649. string   sompGetClassLevelEncoderDecoderName(Environment *ev)
  1650. {
  1651. /*
  1652.  *  Get class level Encoder/Decoder name.
  1653.  */
  1654.    return SOM_ResolveD(this,M_SOMPPersistentObject,M_SOMPPersistentObject,sompGetClassLevelEncoderDecoderName)
  1655.     (this, ev);
  1656. }
  1657.  
  1658.  
  1659. /*
  1660.  * Reintroduce inherited methods
  1661.  */
  1662.  
  1663. /* method: _get_somDataAlignment */
  1664. long   _get_somDataAlignment()
  1665. {
  1666. /*
  1667.  *  The alignment required for the instance data structure
  1668.  *  introduced by the receiving class.
  1669.  */
  1670.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,_get_somDataAlignment)
  1671.     (this);
  1672. }
  1673.  
  1674.  
  1675. /* nonstatic method: _get_somInstanceDataOffsets */
  1676. SOMClass_somOffsets   _get_somInstanceDataOffsets()
  1677. {
  1678. /*
  1679.  *  A sequence of the instance data offsets for all classes used in
  1680.  *  the derivation of the receiving class (including the receiver).
  1681.  */
  1682.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,_get_somInstanceDataOffsets)
  1683.     (this);
  1684. }
  1685.  
  1686.  
  1687. /* nonstatic method: _get_somDirectInitClasses */
  1688. SOMClass_SOMClassSequence   _get_somDirectInitClasses()
  1689. {
  1690. /*
  1691.  *  The ancestors whose initializers the receiving
  1692.  *  class wants to directly invoke.
  1693.  */
  1694.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,_get_somDirectInitClasses)
  1695.     (this);
  1696. }
  1697.  
  1698.  
  1699. /* method: somNew */
  1700. SOMPPersistentObject*  somNew()
  1701. {
  1702. /*
  1703.  *  Uses SOMMalloc to allocate storage for a new instance of the
  1704.  *  receiving class, and then calls somRenewNoInitNoZero to load the
  1705.  *  new object's method table pointer. Then somDefaultInit is called to
  1706.  *  initialize the new object.  Note: If the instance is a class object,
  1707.  *  somInitMIClass must then be invoked to declare parents and
  1708.  *  initialize the class's instance method table. Upon failure, NULL
  1709.  *  is returned.
  1710.  */
  1711.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somNew)
  1712.     (this);
  1713. }
  1714.  
  1715.  
  1716. /* method: somNewNoInit */
  1717. SOMObject*   somNewNoInit()
  1718. {
  1719. /*
  1720.  *  Equivalent to somNew except that somDefaultInit is not called.
  1721.  */
  1722.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somNewNoInit)
  1723.     (this);
  1724. }
  1725.  
  1726.  
  1727. /* method: somRenew */
  1728. SOMObject*   somRenew(void* obj)
  1729. {
  1730. /*
  1731.  *  Equivalent to somNew except that storage is not allocated.
  1732.  *  <obj> is taken as the address of the new object.
  1733.  */
  1734.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somRenew)
  1735.     (this,obj);
  1736. }
  1737.  
  1738.  
  1739. /* method: somRenewNoInit */
  1740. SOMObject*   somRenewNoInit(void* obj)
  1741. {
  1742. /*
  1743.  *  Equivalent to somRenew except that somDefaultInit is not called.
  1744.  */
  1745.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somRenewNoInit)
  1746.     (this,obj);
  1747. }
  1748.  
  1749.  
  1750. /* method: somRenewNoZero */
  1751. SOMObject*   somRenewNoZero(void* obj)
  1752. {
  1753. /*
  1754.  *  Equivalent to somRenew except that memory is not zeroed out.
  1755.  */
  1756.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somRenewNoZero)
  1757.     (this,obj);
  1758. }
  1759.  
  1760.  
  1761. /* method: somRenewNoInitNoZero */
  1762. SOMObject*   somRenewNoInitNoZero(void* obj)
  1763. {
  1764. /*
  1765.  *  The purpose of this method is to load an object's method table.
  1766.  *  The SOM API requires that somRenewNoInitNoZero always be
  1767.  *  called when creating a new object whose metaclass is not SOMClass.
  1768.  *  This is because metaclasses must be guaranteed that they can use
  1769.  *  somRenewNoInitNoZero to track object creation if this is desired.
  1770.  */
  1771.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somRenewNoInitNoZero)
  1772.     (this,obj);
  1773. }
  1774.  
  1775.  
  1776. /* nonstatic method: somAllocate */
  1777. somToken   somAllocate(long size)
  1778. {
  1779. /*
  1780.  *  Allocates memory to hold an object and returns a pointer to this memory.
  1781.  *  This is a nonstatic method, and cannot be overridden. The default
  1782.  *  implementation calls SOMMalloc, but a class designer can specify a
  1783.  *  different implementation using the somallocate modifier in IDL. The
  1784.  *  allocator takes the same parameters as this method.
  1785.  */
  1786.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somAllocate)
  1787.     (this,size);
  1788. }
  1789.  
  1790.  
  1791. /* nonstatic method: somDeallocate */
  1792. void   somDeallocate(somToken memptr)
  1793. {
  1794. /*
  1795.  *  Zeros out the method table pointer stored in the word pointed to by
  1796.  *  memptr, and then deallocates the block of memory pointed to by memptr.
  1797.  *  This is a nonstatic method and cannot be overridden. The default
  1798.  *  deallocator called is SOMFree, but a class designer can specify a
  1799.  *  different deallocator using the somdeallocate modifier in IDL. The
  1800.  *  deallocator takes a char* (memptr) and a long (size) as arguments.
  1801.  */
  1802.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somDeallocate)
  1803.     (this,memptr);
  1804. }
  1805.  
  1806.  
  1807. /* method: somInitClass */
  1808. void   somInitClass(string className, 
  1809.         SOMClass* parentClass, 
  1810.         long dataSize, 
  1811.         long maxStaticMethods, 
  1812.         long majorVersion, 
  1813.         long minorVersion)
  1814. {
  1815. /*
  1816.  *  somInitClass is obsolete, and should no longer be used. The SOM 2.0
  1817.  *  kernel provides special handling for redispatch stubs in the case
  1818.  *  of SOM 1.0 classes, and use of this method is what tells the kernel
  1819.  *  that old-style redispatch stubs will be registered.
  1820.  */
  1821.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somInitClass)
  1822.     (this,className,parentClass,dataSize,maxStaticMethods,majorVersion,minorVersion);
  1823. }
  1824.  
  1825.  
  1826. /* method: somInitMIClass */
  1827. void   somInitMIClass(long inherit_vars, 
  1828.         string className, 
  1829.         SOMClass_SOMClassSequence* parentClasses, 
  1830.         long dataSize, 
  1831.         long dataAlignment, 
  1832.         long maxStaticMethods, 
  1833.         long majorVersion, 
  1834.         long minorVersion)
  1835. {
  1836. /*
  1837.  *  somInitMIClass implements the second phase of dynamic class creation:
  1838.  *  inheritance of interface and possibly implementation (instance
  1839.  *  variables) by suitable initialization of <self> (a class object).
  1840.  * 
  1841.  *  For somInitMIClass, the inherit_vars argument controls whether abstract
  1842.  *  or implementation inheritance is used. Inherit_vars is a 32 bit
  1843.  *  bit-vector. Implementation is inherited from parent i iff the bit
  1844.  *  1<<i is on, or i>=32.
  1845.  *  On a class-by-class basis, for each class ancestor, implementation
  1846.  *  inheritance always takes precidence over abstract inheritance. This is
  1847.  *  necessary to guarantee that procedures supporting parent method calls
  1848.  *  (available on non-abstract parents) are always supported by parent
  1849.  *  instance variables.
  1850.  * 
  1851.  *  <className> is a string containing the class name. A copy is made, so
  1852.  *  the string may be freed upon return to the caller if this is desired.
  1853.  * 
  1854.  *  <parentClasses> is a SOMClassSequence containing pointers to the
  1855.  *  parent classes. somInitMIClass makes a copy of this, so it may
  1856.  *  be freed upon return to the caller if this is desired.
  1857.  * 
  1858.  *  <dataSize> is the space needed for the instance variables
  1859.  *  introduced by this class.
  1860.  * 
  1861.  *  <dataAlignment> specifies the desired byte alignment for instance
  1862.  *  data introduced by this class. A value of 0 selects a system-wide default;
  1863.  *  any other argument is taken as the desired byte alignment multiple. Thus,
  1864.  *  for example, even if a byte multiple of 8 is needed for double precision
  1865.  *  values on a given system (so 8 is the default), a class whose instance data
  1866.  *  doesn't require this can indicate otherwise. If A is the next memory
  1867.  *  address available for holding instance data, the address that will be
  1868.  *  used is A + (A mod byte-alignment).
  1869.  * 
  1870.  *  <maxStaticMethods> is the maximum number of static methods that will be
  1871.  *  added to the initialized class using addStaticMethod.
  1872.  * 
  1873.  *  <majorVersion> indicates the major version number for this
  1874.  *  implementation of the class definition, and <minorVersion>
  1875.  *  indicates the minor version number.
  1876.  */
  1877.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somInitMIClass)
  1878.     (this,inherit_vars,className,parentClasses,dataSize,dataAlignment,maxStaticMethods,majorVersion,minorVersion);
  1879. }
  1880.  
  1881.  
  1882. /* method: somAddStaticMethod */
  1883. somMToken   somAddStaticMethod(somId methodId, 
  1884.         somId methodDescriptor, 
  1885.         somMethodPtr method, 
  1886.         somMethodPtr redispatchStub, 
  1887.         somMethodPtr applyStub)
  1888. {
  1889. /*
  1890.  *  Adds the indicated method, creating and returning a new method token.
  1891.  * 
  1892.  *  <methodDescriptor> is the somId for an identifier that can be used
  1893.  *  to access signature information about the method from an interface
  1894.  *  repository.
  1895.  * 
  1896.  *  <method> is the actual method procedure for this method
  1897.  * 
  1898.  *  <redispatchStub> is a procedure with the same calling sequence as
  1899.  *  <method> that invokes somDispatch for the method.
  1900.  * 
  1901.  *  <applyStub> is a procedure used to support somApply.
  1902.  */
  1903.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somAddStaticMethod)
  1904.     (this,methodId,methodDescriptor,method,redispatchStub,applyStub);
  1905. }
  1906.  
  1907.  
  1908. /* method: somAddDynamicMethod */
  1909. void   somAddDynamicMethod(somId methodId, 
  1910.         somId methodDescriptor, 
  1911.         somMethodPtr method, 
  1912.         somMethodPtr applyStub)
  1913. {
  1914. /*
  1915.  *  Adds the indicated method to the class's name lookup list.
  1916.  *  If this happens to override a static method then this operation is
  1917.  *  equivalent to <somOverrideSMethod> and the <methodDescriptor> and
  1918.  *  <applyStub> arguments are ignored (the overridden method's values
  1919.  *  will be used).
  1920.  * 
  1921.  *  <methodDescriptor> is the somId for an identifier that can be used
  1922.  *  to access signature information about the method from an interface
  1923.  *  repository.
  1924.  * 
  1925.  *  <method> is the actual method procedure for this method
  1926.  * 
  1927.  *  <applyStub> is a procedure that takes a standard variable argument
  1928.  *  list data structure applies it to its target object by calling
  1929.  *  <method> with arguments derived from the data structure.  Its
  1930.  *  calling sequence is the same as the calling sequence of the
  1931.  *  dispatch methods defined in SOMObject.  This stub is used in the
  1932.  *  support of the dispatch methods used in some classes.  In classes
  1933.  *  where the dispatch functions do not need such a function this
  1934.  *  parameter may be null.
  1935.  */
  1936.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somAddDynamicMethod)
  1937.     (this,methodId,methodDescriptor,method,applyStub);
  1938. }
  1939.  
  1940.  
  1941. /* method: somOverrideSMethod */
  1942. void   somOverrideSMethod(somId methodId, 
  1943.         somMethodPtr method)
  1944. {
  1945. /*
  1946.  *  This method can be used instead of <somAddStaticMethod> or
  1947.  *  <somAddDynamicMethod> when it is known that the class' parent
  1948.  *  class already supports this method.  This call does not require the
  1949.  *  method descriptor and stub methods that the others do.
  1950.  */
  1951.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somOverrideSMethod)
  1952.     (this,methodId,method);
  1953. }
  1954.  
  1955.  
  1956. /* method: somClassReady */
  1957. void   somClassReady()
  1958. {
  1959. /*
  1960.  *  This method is invoked when all of the static initialization for
  1961.  *  the class has been finished.  The default implementation simply
  1962.  *  registers the newly constructed class with the SOMClassMgr.
  1963.  */
  1964.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somClassReady)
  1965.     (this);
  1966. }
  1967.  
  1968.  
  1969. /* method: somGetApplyStub */
  1970. somMethodPtr   somGetApplyStub(somId methodId)
  1971. {
  1972. /*
  1973.  *  Returns the apply stub associated with the specified method,
  1974.  *  if one exists; otherwise NULL is returned. This method is obsolete,
  1975.  *  and retained for binary compatability. In SOMr2, users never access
  1976.  *  apply stubs directly; The function somApply is used to invoke apply
  1977.  *  stubs. See somApply documentation for further information on apply
  1978.  *  stubs, and see somAddStaticMethod documentation for information
  1979.  *  on how apply stubs are registered by class implementations.
  1980.  */
  1981.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetApplyStub)
  1982.     (this,methodId);
  1983. }
  1984.  
  1985.  
  1986. /* method: somGetClassData */
  1987. somClassDataStructure*   somGetClassData()
  1988. {
  1989.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetClassData)
  1990.     (this);
  1991. }
  1992.  
  1993.  
  1994. /* method: somSetClassData */
  1995. void   somSetClassData(somClassDataStructure* cds)
  1996. {
  1997. /*
  1998.  *  The class' pointer to the static <className>ClassData structure.
  1999.  */
  2000.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somSetClassData)
  2001.     (this,cds);
  2002. }
  2003.  
  2004.  
  2005. /* method: somGetClassMtab */
  2006. somMethodTab*   somGetClassMtab()
  2007. {
  2008. /*
  2009.  *  A pointer to the method table used by instances of this class. This
  2010.  *  method was misnamed; it should have been called somGetInstanceMtab.
  2011.  */
  2012.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetClassMtab)
  2013.     (this);
  2014. }
  2015.  
  2016.  
  2017. /* method: somGetInstanceOffset */
  2018. long   somGetInstanceOffset()
  2019. {
  2020. /*
  2021.  *  Returns the offset of instance data introduced by the receiver in
  2022.  *  an instance of the receiver. This method is obsolete and not useful in
  2023.  *  multiple-inheritance situations. The attribute somInstanceDataOffsets
  2024.  *  replaces this method.
  2025.  */
  2026.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetInstanceOffset)
  2027.     (this);
  2028. }
  2029.  
  2030.  
  2031. /* method: somGetInstancePartSize */
  2032. long   somGetInstancePartSize()
  2033. {
  2034. /*
  2035.  *  The size in bytes of the instance data introduced by the receiving
  2036.  *  class.
  2037.  */
  2038.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetInstancePartSize)
  2039.     (this);
  2040. }
  2041.  
  2042.  
  2043. /* method: somGetInstanceSize */
  2044. long   somGetInstanceSize()
  2045. {
  2046. /*
  2047.  *  The total size of an instance of the receiving class.
  2048.  */
  2049.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetInstanceSize)
  2050.     (this);
  2051. }
  2052.  
  2053.  
  2054. /* method: somGetInstanceToken */
  2055. somDToken   somGetInstanceToken()
  2056. {
  2057. /*
  2058.  *  A data token that identifies the introduced portion of this class
  2059.  *  within itself or any derived class.  This token can be subsequently
  2060.  *  passed to the run-time somDataResolve function to locate the instance
  2061.  *  data introduced by this class in any object derived from this class.
  2062.  */
  2063.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetInstanceToken)
  2064.     (this);
  2065. }
  2066.  
  2067.  
  2068. /* method: somGetMemberToken */
  2069. somDToken   somGetMemberToken(long memberOffset, 
  2070.         somDToken instanceToken)
  2071. {
  2072. /*
  2073.  *  Returns a data token that for the data member at offset
  2074.  *  "memberOffset" within the introduced portion of the class identified
  2075.  *  by instanceToken.  The instance token must have been obtained from a
  2076.  *  previous invocation of somGetInstanceToken.  The returned member
  2077.  *  token can be subsequently passed to the run-time somDataResolve
  2078.  *  function to locate the data member.
  2079.  */
  2080.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetMemberToken)
  2081.     (this,memberOffset,instanceToken);
  2082. }
  2083.  
  2084.  
  2085. /* method: somGetMethodData */
  2086. boolean   somGetMethodData(somId methodId, 
  2087.         somMethodData* md)
  2088. {
  2089. /*
  2090.  *  If a method with id <methodId> is supported by the target class,
  2091.  *  the structure pointed to by <md> is loaded with method information
  2092.  *  and the value 1 is returned. In this case, if the method is not
  2093.  *  dynamic, md->method is loaded with the result of somClassResolve on
  2094.  *  the target class for the method. If the method is not supported,
  2095.  *  md->id is loaded with 0, and the value 0 is returned.
  2096.  */
  2097.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetMethodData)
  2098.     (this,methodId,md);
  2099. }
  2100.  
  2101.  
  2102. /* method: somGetRdStub */
  2103. somMethodProc*   somGetRdStub(somId methodId)
  2104. {
  2105. /*
  2106.  *  Returns a redispatch stub for the indicated method, if possible.
  2107.  *  If not possible (because a valid redispatch stub has not been
  2108.  *  registered, and there is insufficient information to dynamically
  2109.  *  construct one), then a NULL is returned.
  2110.  */
  2111.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetRdStub)
  2112.     (this,methodId);
  2113. }
  2114.  
  2115.  
  2116. /* method: somGetMethodDescriptor */
  2117. somId   somGetMethodDescriptor(somId methodId)
  2118. {
  2119. /*
  2120.  *  Returns the method descriptor for the indicated method.    If
  2121.  *  this object does not support the indicated method then NULL is
  2122.  *  returned.
  2123.  */
  2124.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetMethodDescriptor)
  2125.     (this,methodId);
  2126. }
  2127.  
  2128.  
  2129. /* method: somGetMethodIndex */
  2130. long   somGetMethodIndex(somId id)
  2131. {
  2132. /*
  2133.  *  Returns the index for the specified method. (A number that may
  2134.  *  change if any methods are added or deleted to this class object or
  2135.  *  any of its ancestors).  This number is the basis for other calls to
  2136.  *  get info about the method. Indexes start at 0. A -1 is returned if
  2137.  *  the method cannot be found.
  2138.  */
  2139.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetMethodIndex)
  2140.     (this,id);
  2141. }
  2142.  
  2143.  
  2144. /* method: somGetMethodToken */
  2145. somMToken   somGetMethodToken(somId methodId)
  2146. {
  2147. /*
  2148.  *  Returns the specified method's access token. This token can then
  2149.  *  be passed to method resolution routines, which use the token
  2150.  *  to select a method pointer from a method table.
  2151.  */
  2152.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetMethodToken)
  2153.     (this,methodId);
  2154. }
  2155.  
  2156.  
  2157. /* method: somGetName */
  2158. string   somGetName()
  2159. {
  2160. /*
  2161.  *  This object's class name as a NULL terminated string.
  2162.  */
  2163.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetName)
  2164.     (this);
  2165. }
  2166.  
  2167.  
  2168. /* method: somGetNthMethodData */
  2169. boolean   somGetNthMethodData(long n, 
  2170.         somMethodData* md)
  2171. {
  2172. /*
  2173.  *  loads *md with the method data associated with the the nth method,
  2174.  *  or NULL if there is no such method. Returns true is successful;
  2175.  *  false otherwise.
  2176.  */
  2177.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetNthMethodData)
  2178.     (this,n,md);
  2179. }
  2180.  
  2181.  
  2182. /* method: somGetNthMethodInfo */
  2183. somId   somGetNthMethodInfo(long n, 
  2184.         somId* descriptor)
  2185. {
  2186. /*
  2187.  *  Returns the id of the <n>th method if one exists and NULL
  2188.  *  otherwise.
  2189.  * 
  2190.  *  The ordering of the methods is unpredictable, but will not change
  2191.  *  unless some change is made to the class or one of its ancestor classes.
  2192.  * 
  2193.  *  See CORBA documentation for info on method descriptors.
  2194.  */
  2195.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetNthMethodInfo)
  2196.     (this,n,descriptor);
  2197. }
  2198.  
  2199.  
  2200. /* method: somGetNumMethods */
  2201. long   somGetNumMethods()
  2202. {
  2203. /*
  2204.  *  The number of methods currently supported by this class,
  2205.  *  including inherited methods (both static and dynamic).
  2206.  */
  2207.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetNumMethods)
  2208.     (this);
  2209. }
  2210.  
  2211.  
  2212. /* method: somGetNumStaticMethods */
  2213. long   somGetNumStaticMethods()
  2214. {
  2215. /*
  2216.  *  The number of static methods that this class has.  Can
  2217.  *  be used by a child class when initializing its method table.
  2218.  */
  2219.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetNumStaticMethods)
  2220.     (this);
  2221. }
  2222.  
  2223.  
  2224. /* method: somGetParent */
  2225. SOMClass*   somGetParent()
  2226. {
  2227. /*
  2228.  *  Returns the parent class of self (along its "left-hand" derivation
  2229.  *  path), if one exists and NULL otherwise.
  2230.  */
  2231.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetParent)
  2232.     (this);
  2233. }
  2234.  
  2235.  
  2236. /* method: somGetParents */
  2237. SOMClass_SOMClassSequence   somGetParents()
  2238. {
  2239. /*
  2240.  *  The parent classes of self.
  2241.  */
  2242.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetParents)
  2243.     (this);
  2244. }
  2245.  
  2246.  
  2247. /* method: somGetVersionNumbers */
  2248. void   somGetVersionNumbers(long* majorVersion, 
  2249.         long* minorVersion)
  2250. {
  2251. /*
  2252.  *  Returns the class' major and minor version numbers in the corresponding
  2253.  *  output parameters.
  2254.  */
  2255.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somGetVersionNumbers)
  2256.     (this,majorVersion,minorVersion);
  2257. }
  2258.  
  2259.  
  2260. /* method: somFindMethod */
  2261. boolean   somFindMethod(somId methodId, 
  2262.         somMethodPtr* m)
  2263. {
  2264. /*
  2265.  *  Finds the method procedure associated with <methodId> for this
  2266.  *  class and sets <m> to it.  1 (true) is returned when the
  2267.  *  method procedure is a static method and 0 (false) is returned
  2268.  *  when the method procedure is dynamic method.
  2269.  * 
  2270.  *  If the class does not support the specified method then
  2271.  *  <m> is set to NULL and the return value is meaningless.
  2272.  * 
  2273.  */
  2274.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somFindMethod)
  2275.     (this,methodId,m);
  2276. }
  2277.  
  2278.  
  2279. /* method: somFindMethodOk */
  2280. boolean   somFindMethodOk(somId methodId, 
  2281.         somMethodPtr* m)
  2282. {
  2283. /*
  2284.  *  Just like <somFindMethod> except that if the method is not
  2285.  *  supported then an error is raised and execution is halted.
  2286.  */
  2287.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somFindMethodOk)
  2288.     (this,methodId,m);
  2289. }
  2290.  
  2291.  
  2292. /* method: somFindSMethod */
  2293. somMethodPtr   somFindSMethod(somId methodId)
  2294. {
  2295. /*
  2296.  *  Finds the indicated method, which must be a static method supported
  2297.  *  by this class, and returns a pointer to its method procedure.
  2298.  *  If the method is not supported by the receiver (as a static method
  2299.  *  or at all) then a NULL pointer is returned.
  2300.  */
  2301.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somFindSMethod)
  2302.     (this,methodId);
  2303. }
  2304.  
  2305.  
  2306. /* method: somFindSMethodOk */
  2307. somMethodPtr   somFindSMethodOk(somId methodId)
  2308. {
  2309. /*
  2310.  *  Uses <somFindSMethod>, and raises an error if the result is NULL.
  2311.  */
  2312.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somFindSMethodOk)
  2313.     (this,methodId);
  2314. }
  2315.  
  2316.  
  2317. /* method: somLookupMethod */
  2318. somMethodPtr   somLookupMethod(somId methodId)
  2319. {
  2320. /*
  2321.  *  Like <somFindSMethodOK>, but without restriction to static methods.
  2322.  */
  2323.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somLookupMethod)
  2324.     (this,methodId);
  2325. }
  2326.  
  2327.  
  2328. /* method: somCheckVersion */
  2329. boolean   somCheckVersion(long majorVersion, 
  2330.         long minorVersion)
  2331. {
  2332. /*
  2333.  *  Returns 1 (true) if the implementation of this class is
  2334.  *  compatible with the specified major and minor version number and
  2335.  *  false (0) otherwise.  An implementation is compatible with the
  2336.  *  specified version numbers if it has the same major version number
  2337.  *  and a minor version number that is equal to or greater than
  2338.  *  <minorVersion>.    The major, minor version number pair (0,0) is
  2339.  *  considered to match any version.  This method is usually called
  2340.  *  immediately after creating the class object to verify that a
  2341.  *  dynamically loaded class definition is compatible with a using
  2342.  *  application.
  2343.  */
  2344.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somCheckVersion)
  2345.     (this,majorVersion,minorVersion);
  2346. }
  2347.  
  2348.  
  2349. /* method: somDescendedFrom */
  2350. boolean   somDescendedFrom(SOMClass* aClassObj)
  2351. {
  2352. /*
  2353.  *  Returns 1 (true) if <self> is a descendent class of <aClassObj> and
  2354.  *  0 (false) otherwise.  Note: a class object is considered to be
  2355.  *  descended itself for the purposes of this method.
  2356.  */
  2357.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somDescendedFrom)
  2358.     (this,aClassObj);
  2359. }
  2360.  
  2361.  
  2362. /* method: somSupportsMethod */
  2363. boolean   somSupportsMethod(somId mId)
  2364. {
  2365. /*
  2366.  *  Returns 1 (true) if the indicated method is supported by this
  2367.  *  class and 0 (false) otherwise.
  2368.  */
  2369.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somSupportsMethod)
  2370.     (this,mId);
  2371. }
  2372.  
  2373.  
  2374. /* method: somDefinedMethod */
  2375. somMethodPtr   somDefinedMethod(somMToken method)
  2376. {
  2377. /*
  2378.  *  if the receiving class either introduces or overrides the
  2379.  *  indicated method, then its somMethodPtr is returned, otherwise
  2380.  *  NULL is returned.
  2381.  */
  2382.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somDefinedMethod)
  2383.     (this,method);
  2384. }
  2385.  
  2386.  
  2387. /* method: somOverrideMtab */
  2388. void   somOverrideMtab()
  2389. {
  2390. /*
  2391.  *  Overrides the method table pointers to point to the redispatch stubs.
  2392.  *  All the methods except somDispatch methods are overriden.
  2393.  */
  2394.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMClass,somOverrideMtab)
  2395.     (this);
  2396. }
  2397.  
  2398.  
  2399. /* initializer method: somDefaultInit */
  2400. void   somDefaultInit(som3InitCtrl* ctrl)
  2401. {
  2402. /*
  2403.  *  A default initializer for a SOM object. Passing a null ctrl
  2404.  *  indicates to the receiver that its class is the class of the
  2405.  *  object being initialized, whereby the initializer will determine
  2406.  *  an appropriate control structure.
  2407.  */
  2408.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultInit)
  2409.     (this,ctrl);
  2410. }
  2411.  
  2412.  
  2413. /* method: somDestruct */
  2414. void   somDestruct(octet doFree, 
  2415.         som3DestructCtrl* ctrl)
  2416. {
  2417. /*
  2418.  *  The default destructor for a SOM object. A nonzero <doFree>
  2419.  *  indicates that the object storage should be freed by the
  2420.  *  object's class (via somDeallocate) after uninitialization.
  2421.  *  As with somDefaultInit, a null ctrl can be passed.
  2422.  */
  2423.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDestruct)
  2424.     (this,doFree,ctrl);
  2425. }
  2426.  
  2427.  
  2428. /* initializer method: somDefaultCopyInit */
  2429. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  2430.         SOMObject* fromObj)
  2431. {
  2432. /*
  2433.  *  A default copy constructor. Use this to make copies of objects for
  2434.  *  calling methods with "by-value" argument semantics.
  2435.  */
  2436.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultCopyInit)
  2437.     (this,ctrl,fromObj);
  2438. }
  2439.  
  2440.  
  2441. /* method: somDefaultAssign */
  2442. M_SOMPPersistentObject*  somDefaultAssign(som3AssignCtrl* ctrl, 
  2443.         SOMObject* fromObj)
  2444. {
  2445. /*
  2446.  *  A default assignment operator. Use this to "assign" the state of one
  2447.  *  object to another.
  2448.  */
  2449.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultAssign)
  2450.     (this,ctrl,fromObj);
  2451. }
  2452.  
  2453.  
  2454. /* initializer method: somDefaultConstCopyInit */
  2455. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  2456.         SOMObject* fromObj)
  2457. {
  2458. /*
  2459.  *  A default copy constructor that uses a const fromObj.
  2460.  */
  2461.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultConstCopyInit)
  2462.     (this,ctrl,fromObj);
  2463. }
  2464.  
  2465.  
  2466. /* initializer method: somDefaultVCopyInit */
  2467. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  2468.         SOMObject* fromObj)
  2469. {
  2470. /*
  2471.  *  A default copy constructor that uses a volatile fromObj.
  2472.  */
  2473.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultVCopyInit)
  2474.     (this,ctrl,fromObj);
  2475. }
  2476.  
  2477.  
  2478. /* initializer method: somDefaultConstVCopyInit */
  2479. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  2480.         SOMObject* fromObj)
  2481. {
  2482. /*
  2483.  *  A default copy constructor that uses a const volatile fromObj.
  2484.  */
  2485.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultConstVCopyInit)
  2486.     (this,ctrl,fromObj);
  2487. }
  2488.  
  2489.  
  2490. /* method: somDefaultConstAssign */
  2491. M_SOMPPersistentObject*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  2492.         SOMObject* fromObj)
  2493. {
  2494. /*
  2495.  *  A default assignment operator that uses a const fromObj.
  2496.  */
  2497.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultConstAssign)
  2498.     (this,ctrl,fromObj);
  2499. }
  2500.  
  2501.  
  2502. /* method: somDefaultVAssign */
  2503. M_SOMPPersistentObject*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  2504.         SOMObject* fromObj)
  2505. {
  2506. /*
  2507.  *  A default assignment operator that uses a volatile fromObj.
  2508.  */
  2509.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultVAssign)
  2510.     (this,ctrl,fromObj);
  2511. }
  2512.  
  2513.  
  2514. /* method: somDefaultConstVAssign */
  2515. M_SOMPPersistentObject*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  2516.         SOMObject* fromObj)
  2517. {
  2518. /*
  2519.  *  A default assignment operator that uses a const volatile fromObj.
  2520.  */
  2521.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDefaultConstVAssign)
  2522.     (this,ctrl,fromObj);
  2523. }
  2524.  
  2525.  
  2526. /* method: somInit */
  2527. void   somInit()
  2528. {
  2529. /*
  2530.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  2531.  */
  2532.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somInit)
  2533.     (this);
  2534. }
  2535.  
  2536.  
  2537. /* method: somFree */
  2538. void   somFree()
  2539. {
  2540. /*
  2541.  *  Use as directed by framework implementations.
  2542.  */
  2543.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somFree)
  2544.     (this);
  2545. }
  2546.  
  2547.  
  2548. /* method: somUninit */
  2549. void   somUninit()
  2550. {
  2551. /*
  2552.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  2553.  */
  2554.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somUninit)
  2555.     (this);
  2556. }
  2557.  
  2558.  
  2559. /* method: somGetClass */
  2560. SOMClass*   somGetClass()
  2561. {
  2562. /*
  2563.  *  Return the receiver's class.
  2564.  */
  2565.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somGetClass)
  2566.     (this);
  2567. }
  2568.  
  2569.  
  2570. /* method: somGetClassName */
  2571. string   somGetClassName()
  2572. {
  2573. /*
  2574.  *  Return the name of the receiver's class.
  2575.  */
  2576.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somGetClassName)
  2577.     (this);
  2578. }
  2579.  
  2580.  
  2581. /* method: somGetSize */
  2582. long   somGetSize()
  2583. {
  2584. /*
  2585.  *  Return the size of the receiver.
  2586.  */
  2587.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somGetSize)
  2588.     (this);
  2589. }
  2590.  
  2591.  
  2592. /* method: somIsA */
  2593. boolean   somIsA(SOMClass* aClassObj)
  2594. {
  2595. /*
  2596.  *  Returns 1 (true) if the receiver responds to methods
  2597.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  2598.  */
  2599.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somIsA)
  2600.     (this,aClassObj);
  2601. }
  2602.  
  2603.  
  2604. /* method: somIsInstanceOf */
  2605. boolean   somIsInstanceOf(SOMClass* aClassObj)
  2606. {
  2607. /*
  2608.  *  Returns 1 (true) if the receiver is an instance of
  2609.  *  <aClassObj> and 0 (false) otherwise.
  2610.  */
  2611.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somIsInstanceOf)
  2612.     (this,aClassObj);
  2613. }
  2614.  
  2615.  
  2616. /* method: somRespondsTo */
  2617. boolean   somRespondsTo(somId mId)
  2618. {
  2619. /*
  2620.  *  Returns 1 (true) if the indicated method can be invoked
  2621.  *  on the receiver and 0 (false) otherwise.
  2622.  */
  2623.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somRespondsTo)
  2624.     (this,mId);
  2625. }
  2626.  
  2627.  
  2628. /* va_list method: somDispatch */
  2629.  
  2630. /*
  2631.  *  This method provides a generic, class-specific dispatch mechanism.
  2632.  *  It accepts as input <retValue> a pointer to the memory area to be
  2633.  *  loaded with the result of dispatching the method indicated by
  2634.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  2635.  *  on which the method is to be invoked as the first argument.
  2636.  */
  2637. /* the va_list invocation form */
  2638. boolean   M_SOMPPersistentObject_somDispatch(somToken* retValue, 
  2639.         somId methodId, 
  2640.         va_list ap)
  2641. {return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatch)
  2642.     (this,retValue,methodId,ap);
  2643. }
  2644.  
  2645. /* the varargs invocation form */
  2646. boolean   somDispatch(somToken* retValue, 
  2647.         somId methodId, 
  2648.         ...)
  2649. {
  2650. /*
  2651.  *  This method provides a generic, class-specific dispatch mechanism.
  2652.  *  It accepts as input <retValue> a pointer to the memory area to be
  2653.  *  loaded with the result of dispatching the method indicated by
  2654.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  2655.  *  on which the method is to be invoked as the first argument.
  2656.  */
  2657.    va_list ap;
  2658.    va_start(ap, methodId);
  2659.    boolean __somResult = 
  2660.       SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatch)
  2661.     (this,retValue,methodId,ap);
  2662.    va_end(ap);
  2663.    return __somResult;
  2664. }
  2665.  
  2666.  
  2667. /* va_list method: somClassDispatch */
  2668.  
  2669. /*
  2670.  *  Like somDispatch, but method resolution for static methods is done
  2671.  *  according to the clsObj instance method table.
  2672.  */
  2673. /* the va_list invocation form */
  2674. boolean   M_SOMPPersistentObject_somClassDispatch(SOMClass* clsObj, 
  2675.         somToken* retValue, 
  2676.         somId methodId, 
  2677.         va_list ap)
  2678. {return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somClassDispatch)
  2679.     (this,clsObj,retValue,methodId,ap);
  2680. }
  2681.  
  2682. /* the varargs invocation form */
  2683. boolean   somClassDispatch(SOMClass* clsObj, 
  2684.         somToken* retValue, 
  2685.         somId methodId, 
  2686.         ...)
  2687. {
  2688. /*
  2689.  *  Like somDispatch, but method resolution for static methods is done
  2690.  *  according to the clsObj instance method table.
  2691.  */
  2692.    va_list ap;
  2693.    va_start(ap, methodId);
  2694.    boolean __somResult = 
  2695.       SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somClassDispatch)
  2696.     (this,clsObj,retValue,methodId,ap);
  2697.    va_end(ap);
  2698.    return __somResult;
  2699. }
  2700.  
  2701.  
  2702. /* method: somCastObj */
  2703. boolean   somCastObj(SOMClass* cls)
  2704. {
  2705. /*
  2706.  *  cast the receiving object to cls (which must be an ancestor of the
  2707.  *  objects true class. Returns true on success.
  2708.  */
  2709.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somCastObj)
  2710.     (this,cls);
  2711. }
  2712.  
  2713.  
  2714. /* method: somResetObj */
  2715. boolean   somResetObj()
  2716. {
  2717. /*
  2718.  *  reset an object to its true class. Returns true always.
  2719.  */
  2720.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somResetObj)
  2721.     (this);
  2722. }
  2723.  
  2724.  
  2725. /* va_list method: somDispatchV */
  2726.  
  2727. /*
  2728.  *  Obsolete. Use somDispatch instead.
  2729.  */
  2730. /* the va_list invocation form */
  2731. void   M_SOMPPersistentObject_somDispatchV(somId methodId, 
  2732.         somId descriptor, 
  2733.         va_list ap)
  2734. {   SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchV)
  2735.     (this,methodId,descriptor,ap);
  2736. }
  2737.  
  2738. /* the varargs invocation form */
  2739. void   somDispatchV(somId methodId, 
  2740.         somId descriptor, 
  2741.         ...)
  2742. {
  2743. /*
  2744.  *  Obsolete. Use somDispatch instead.
  2745.  */
  2746.    va_list ap;
  2747.    va_start(ap, descriptor);
  2748.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchV)
  2749.     (this,methodId,descriptor,ap);
  2750.    va_end(ap);
  2751. }
  2752.  
  2753.  
  2754. /* va_list method: somDispatchL */
  2755.  
  2756. /*
  2757.  *  Obsolete. Use somDispatch instead.
  2758.  */
  2759. /* the va_list invocation form */
  2760. long   M_SOMPPersistentObject_somDispatchL(somId methodId, 
  2761.         somId descriptor, 
  2762.         va_list ap)
  2763. {return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchL)
  2764.     (this,methodId,descriptor,ap);
  2765. }
  2766.  
  2767. /* the varargs invocation form */
  2768. long   somDispatchL(somId methodId, 
  2769.         somId descriptor, 
  2770.         ...)
  2771. {
  2772. /*
  2773.  *  Obsolete. Use somDispatch instead.
  2774.  */
  2775.    va_list ap;
  2776.    va_start(ap, descriptor);
  2777.    long __somResult = 
  2778.       SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchL)
  2779.     (this,methodId,descriptor,ap);
  2780.    va_end(ap);
  2781.    return __somResult;
  2782. }
  2783.  
  2784.  
  2785. /* va_list method: somDispatchA */
  2786.  
  2787. /*
  2788.  *  Obsolete. Use somDispatch instead.
  2789.  */
  2790. /* the va_list invocation form */
  2791. void*   M_SOMPPersistentObject_somDispatchA(somId methodId, 
  2792.         somId descriptor, 
  2793.         va_list ap)
  2794. {return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchA)
  2795.     (this,methodId,descriptor,ap);
  2796. }
  2797.  
  2798. /* the varargs invocation form */
  2799. void*   somDispatchA(somId methodId, 
  2800.         somId descriptor, 
  2801.         ...)
  2802. {
  2803. /*
  2804.  *  Obsolete. Use somDispatch instead.
  2805.  */
  2806.    va_list ap;
  2807.    va_start(ap, descriptor);
  2808.    void* __somResult = 
  2809.       SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchA)
  2810.     (this,methodId,descriptor,ap);
  2811.    va_end(ap);
  2812.    return __somResult;
  2813. }
  2814.  
  2815.  
  2816. /* va_list method: somDispatchD */
  2817.  
  2818. /*
  2819.  *  Obsolete. Use somDispatch instead.
  2820.  */
  2821. /* the va_list invocation form */
  2822. double   M_SOMPPersistentObject_somDispatchD(somId methodId, 
  2823.         somId descriptor, 
  2824.         va_list ap)
  2825. {return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchD)
  2826.     (this,methodId,descriptor,ap);
  2827. }
  2828.  
  2829. /* the varargs invocation form */
  2830. double   somDispatchD(somId methodId, 
  2831.         somId descriptor, 
  2832.         ...)
  2833. {
  2834. /*
  2835.  *  Obsolete. Use somDispatch instead.
  2836.  */
  2837.    va_list ap;
  2838.    va_start(ap, descriptor);
  2839.    double __somResult = 
  2840.       SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDispatchD)
  2841.     (this,methodId,descriptor,ap);
  2842.    va_end(ap);
  2843.    return __somResult;
  2844. }
  2845.  
  2846.  
  2847. /* method: somPrintSelf */
  2848. SOMObject*   somPrintSelf()
  2849. {
  2850. /*
  2851.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  2852.  *  information about this object.  The default implementation just gives
  2853.  *  the object's class name and its address in memory.
  2854.  *  <self> is returned.
  2855.  */
  2856.    return SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somPrintSelf)
  2857.     (this);
  2858. }
  2859.  
  2860.  
  2861. /* method: somDumpSelf */
  2862. void   somDumpSelf(long level)
  2863. {
  2864. /*
  2865.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  2866.  *  and its current state.
  2867.  * 
  2868.  *  <level> indicates the nesting level for describing compound objects
  2869.  *  it must be greater than or equal to zero.  All lines in the
  2870.  *  description will be preceeded by <2*level> spaces.
  2871.  * 
  2872.  *  This routine only actually writes the data that concerns the object
  2873.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  2874.  *  the object's current state.  This approach allows readable
  2875.  *  descriptions of compound objects to be constructed.
  2876.  * 
  2877.  *  Generally it is not necessary to override this method, if it is
  2878.  *  overriden it generally must be completely replaced.
  2879.  */
  2880.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDumpSelf)
  2881.     (this,level);
  2882. }
  2883.  
  2884.  
  2885. /* method: somDumpSelfInt */
  2886. void   somDumpSelfInt(long level)
  2887. {
  2888. /*
  2889.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  2890.  *  Generally this method will need to be overridden.  When overriding
  2891.  *  it, begin by calling the parent class form of this method and then
  2892.  *  write in a description of your class's instance data. This will
  2893.  *  result in a description of all the object's instance data going
  2894.  *  from its root ancestor class to its specific class.
  2895.  */
  2896.    SOM_ResolveD(this,M_SOMPPersistentObject,SOMObject,somDumpSelfInt)
  2897.     (this,level);
  2898. }
  2899.  
  2900.  
  2901.  
  2902. };   /* M_SOMPPersistentObject */
  2903.  
  2904.  
  2905.  
  2906. #endif       /* SOM_M_SOMPPersistentObject_xh */
  2907.