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

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: somdom.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emitxh: 2.47
  8.  */
  9.  
  10. /*
  11.  *    IDL interface spec for DSOM Distributed Object Manager.
  12.  * 
  13.  * 
  14.  *    This is a subclass of the abstract ObjectMgr class.
  15.  *    All ObjectMgr methods are implemented with DSOM calls.
  16.  */
  17.  
  18.  
  19. #ifndef SOM_SOMDObjectMgr_xh
  20. #define SOM_SOMDObjectMgr_xh
  21.  
  22. class SOMDObjectMgr;
  23.  
  24. /*
  25.  *  In addition to the basic ObjectMgr interface, the DSOM ObjectMgr
  26.  *  defines the following methods to find remote server objects:
  27.  */
  28.  
  29. #define SOMDObjectMgr_MajorVersion 2
  30. #define SOMDObjectMgr_MinorVersion 1
  31.  
  32. /* C++ SOM defs */
  33. #include <somcls.xh>
  34. #include <somcm.xh>
  35.  
  36. /* C++ parent defs */
  37. #ifndef SOM_ObjectMgr_xh
  38. #include <om.xh>
  39. #endif
  40.  
  41. #ifndef SOMDObjectMgr_API
  42. #define SOMDObjectMgr_API
  43. /*
  44.  * -- The Class API
  45.  */
  46.  
  47. /*
  48.  * Start of bindings for IDL types
  49.  */
  50.  
  51. class SOMClass;
  52. class SOMObject;
  53. class Container;
  54. class SOMDServer;
  55. #ifndef _IDL_SEQUENCE_SOMDServer_defined
  56. #define _IDL_SEQUENCE_SOMDServer_defined
  57. typedef struct {
  58.     unsigned long _maximum;
  59.     unsigned long _length;
  60.     SOMDServer **_buffer;
  61. } _IDL_SEQUENCE_SOMDServer;
  62. #endif /* _IDL_SEQUENCE_SOMDServer_defined */ 
  63.  
  64. #ifndef SOM_DONT_USE_SHORT_NAMES
  65. #endif /* SOM_DONT_USE_SHORT_NAMES */
  66.  
  67. /*
  68.  * End of bindings for IDL types.
  69.  */
  70.  
  71. /*
  72.  * Passthru lines: File: "C.xh", "after"
  73.  */
  74.  
  75. class SOMDObjectMgr;
  76. SOMEXTERN SOMDObjectMgr * SOMDLINK SOMD_ObjectMgr;
  77.  
  78. #include <somdserv.xh>
  79.  
  80.  
  81. /* A procedure to create the SOMDObjectMgr Class */
  82. SOMEXTERN SOMClass * SOMLINK SOMDObjectMgrNewClass(
  83.         integer4 majorVersion,
  84.         integer4 minorVersion);
  85.  
  86. /* The API to the SOMDObjectMgr class object, and the methods it introduces. */
  87. SOMEXTERN struct SOMDObjectMgrClassDataStructure {
  88.     SOMClass *classObject;
  89.     somMToken somdFindServer;
  90.     somMToken somdFindServerByName;
  91.     somMToken somdFindServersByClass;
  92.     somMToken somdFindAnyServerByClass;
  93.     somMToken _get_somd21somFree;
  94.     somMToken _set_somd21somFree;
  95. } SOMDLINK SOMDObjectMgrClassData;
  96. #define _SOMDObjectMgr SOMDObjectMgrClassData.classObject
  97.  
  98. /* The API to parentMtabs for SOMDObjectMgr, and the instance data it introduces. */
  99. SOMEXTERN struct SOMDObjectMgrCClassDataStructure {
  100.     somMethodTabs parentMtab;
  101.     somDToken              instanceDataToken;
  102. } SOMDLINK SOMDObjectMgrCClassData;
  103.  
  104. /*
  105.  * -- Typedefs for SOMDObjectMgr Method Procedures
  106.  */
  107. SOMEXTERN {
  108. typedef SOMDServer*   SOMLINK somTP_SOMDObjectMgr_somdFindServer(SOMDObjectMgr *somSelf, Environment *ev, 
  109.         ImplId serverid);
  110. typedef somTP_SOMDObjectMgr_somdFindServer *somTD_SOMDObjectMgr_somdFindServer;
  111. typedef SOMDServer*   SOMLINK somTP_SOMDObjectMgr_somdFindServerByName(SOMDObjectMgr *somSelf, Environment *ev, 
  112.         string servername);
  113. typedef somTP_SOMDObjectMgr_somdFindServerByName *somTD_SOMDObjectMgr_somdFindServerByName;
  114. typedef _IDL_SEQUENCE_SOMDServer   SOMLINK somTP_SOMDObjectMgr_somdFindServersByClass(SOMDObjectMgr *somSelf, Environment *ev, 
  115.         Identifier objclass);
  116. typedef somTP_SOMDObjectMgr_somdFindServersByClass *somTD_SOMDObjectMgr_somdFindServersByClass;
  117. typedef SOMDServer*   SOMLINK somTP_SOMDObjectMgr_somdFindAnyServerByClass(SOMDObjectMgr *somSelf, Environment *ev, 
  118.         Identifier objclass);
  119. typedef somTP_SOMDObjectMgr_somdFindAnyServerByClass *somTD_SOMDObjectMgr_somdFindAnyServerByClass;
  120. typedef boolean   SOMLINK somTP_SOMDObjectMgr__get_somd21somFree(SOMDObjectMgr *somSelf, Environment *ev);
  121. typedef somTP_SOMDObjectMgr__get_somd21somFree *somTD_SOMDObjectMgr__get_somd21somFree;
  122. typedef void   SOMLINK somTP_SOMDObjectMgr__set_somd21somFree(SOMDObjectMgr *somSelf, Environment *ev, 
  123.         boolean somd21somFree);
  124. typedef somTP_SOMDObjectMgr__set_somd21somFree *somTD_SOMDObjectMgr__set_somd21somFree;
  125.  
  126. /*
  127.  * -- Typedefs for Reintroduced Wrapper Methods
  128.  */
  129. typedef SOMObject*   SOMLINK somTP_SOMDObjectMgr_somdNewObject(SOMDObjectMgr *somSelf, Environment *ev, 
  130.         Identifier objclass, 
  131.         string hints);
  132. typedef somTP_SOMDObjectMgr_somdNewObject *somTD_SOMDObjectMgr_somdNewObject;
  133. typedef string   SOMLINK somTP_SOMDObjectMgr_somdGetIdFromObject(SOMDObjectMgr *somSelf, Environment *ev, 
  134.         SOMObject* obj);
  135. typedef somTP_SOMDObjectMgr_somdGetIdFromObject *somTD_SOMDObjectMgr_somdGetIdFromObject;
  136. typedef SOMObject*   SOMLINK somTP_SOMDObjectMgr_somdGetObjectFromId(SOMDObjectMgr *somSelf, Environment *ev, 
  137.         string id);
  138. typedef somTP_SOMDObjectMgr_somdGetObjectFromId *somTD_SOMDObjectMgr_somdGetObjectFromId;
  139. typedef void   SOMLINK somTP_SOMDObjectMgr_somdReleaseObject(SOMDObjectMgr *somSelf, Environment *ev, 
  140.         SOMObject* obj);
  141. typedef somTP_SOMDObjectMgr_somdReleaseObject *somTD_SOMDObjectMgr_somdReleaseObject;
  142. typedef void   SOMLINK somTP_SOMDObjectMgr_somdDestroyObject(SOMDObjectMgr *somSelf, Environment *ev, 
  143.         SOMObject* obj);
  144. typedef somTP_SOMDObjectMgr_somdDestroyObject *somTD_SOMDObjectMgr_somdDestroyObject;
  145. typedef void   SOMLINK somTP_SOMDObjectMgr_somDefaultInit(SOMDObjectMgr *somSelf, 
  146.         som3InitCtrl* ctrl);
  147. typedef somTP_SOMDObjectMgr_somDefaultInit *somTD_SOMDObjectMgr_somDefaultInit;
  148. typedef void   SOMLINK somTP_SOMDObjectMgr_somDestruct(SOMDObjectMgr *somSelf, 
  149.         octet doFree, 
  150.         som3DestructCtrl* ctrl);
  151. typedef somTP_SOMDObjectMgr_somDestruct *somTD_SOMDObjectMgr_somDestruct;
  152. typedef void   SOMLINK somTP_SOMDObjectMgr_somDefaultCopyInit(SOMDObjectMgr *somSelf, 
  153.         som3InitCtrl* ctrl, 
  154.         SOMObject* fromObj);
  155. typedef somTP_SOMDObjectMgr_somDefaultCopyInit *somTD_SOMDObjectMgr_somDefaultCopyInit;
  156. typedef SOMDObjectMgr*   SOMLINK somTP_SOMDObjectMgr_somDefaultAssign(SOMDObjectMgr *somSelf, 
  157.         som3AssignCtrl* ctrl, 
  158.         SOMObject* fromObj);
  159. typedef somTP_SOMDObjectMgr_somDefaultAssign *somTD_SOMDObjectMgr_somDefaultAssign;
  160. typedef void   SOMLINK somTP_SOMDObjectMgr_somDefaultConstCopyInit(SOMDObjectMgr *somSelf, 
  161.         som3InitCtrl* ctrl, 
  162.         SOMObject* fromObj);
  163. typedef somTP_SOMDObjectMgr_somDefaultConstCopyInit *somTD_SOMDObjectMgr_somDefaultConstCopyInit;
  164. typedef void   SOMLINK somTP_SOMDObjectMgr_somDefaultVCopyInit(SOMDObjectMgr *somSelf, 
  165.         som3InitCtrl* ctrl, 
  166.         SOMObject* fromObj);
  167. typedef somTP_SOMDObjectMgr_somDefaultVCopyInit *somTD_SOMDObjectMgr_somDefaultVCopyInit;
  168. typedef void   SOMLINK somTP_SOMDObjectMgr_somDefaultConstVCopyInit(SOMDObjectMgr *somSelf, 
  169.         som3InitCtrl* ctrl, 
  170.         SOMObject* fromObj);
  171. typedef somTP_SOMDObjectMgr_somDefaultConstVCopyInit *somTD_SOMDObjectMgr_somDefaultConstVCopyInit;
  172. typedef SOMDObjectMgr*   SOMLINK somTP_SOMDObjectMgr_somDefaultConstAssign(SOMDObjectMgr *somSelf, 
  173.         som3AssignCtrl* ctrl, 
  174.         SOMObject* fromObj);
  175. typedef somTP_SOMDObjectMgr_somDefaultConstAssign *somTD_SOMDObjectMgr_somDefaultConstAssign;
  176. typedef SOMDObjectMgr*   SOMLINK somTP_SOMDObjectMgr_somDefaultVAssign(SOMDObjectMgr *somSelf, 
  177.         som3AssignCtrl* ctrl, 
  178.         SOMObject* fromObj);
  179. typedef somTP_SOMDObjectMgr_somDefaultVAssign *somTD_SOMDObjectMgr_somDefaultVAssign;
  180. typedef SOMDObjectMgr*   SOMLINK somTP_SOMDObjectMgr_somDefaultConstVAssign(SOMDObjectMgr *somSelf, 
  181.         som3AssignCtrl* ctrl, 
  182.         SOMObject* fromObj);
  183. typedef somTP_SOMDObjectMgr_somDefaultConstVAssign *somTD_SOMDObjectMgr_somDefaultConstVAssign;
  184. typedef void   SOMLINK somTP_SOMDObjectMgr_somInit(SOMDObjectMgr *somSelf);
  185. typedef somTP_SOMDObjectMgr_somInit *somTD_SOMDObjectMgr_somInit;
  186. typedef void   SOMLINK somTP_SOMDObjectMgr_somFree(SOMDObjectMgr *somSelf);
  187. typedef somTP_SOMDObjectMgr_somFree *somTD_SOMDObjectMgr_somFree;
  188. typedef void   SOMLINK somTP_SOMDObjectMgr_somUninit(SOMDObjectMgr *somSelf);
  189. typedef somTP_SOMDObjectMgr_somUninit *somTD_SOMDObjectMgr_somUninit;
  190. typedef SOMClass*   SOMLINK somTP_SOMDObjectMgr_somGetClass(SOMDObjectMgr *somSelf);
  191. typedef somTP_SOMDObjectMgr_somGetClass *somTD_SOMDObjectMgr_somGetClass;
  192. typedef string   SOMLINK somTP_SOMDObjectMgr_somGetClassName(SOMDObjectMgr *somSelf);
  193. typedef somTP_SOMDObjectMgr_somGetClassName *somTD_SOMDObjectMgr_somGetClassName;
  194. typedef long   SOMLINK somTP_SOMDObjectMgr_somGetSize(SOMDObjectMgr *somSelf);
  195. typedef somTP_SOMDObjectMgr_somGetSize *somTD_SOMDObjectMgr_somGetSize;
  196. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somIsA(SOMDObjectMgr *somSelf, 
  197.         SOMClass* aClassObj);
  198. typedef somTP_SOMDObjectMgr_somIsA *somTD_SOMDObjectMgr_somIsA;
  199. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somIsInstanceOf(SOMDObjectMgr *somSelf, 
  200.         SOMClass* aClassObj);
  201. typedef somTP_SOMDObjectMgr_somIsInstanceOf *somTD_SOMDObjectMgr_somIsInstanceOf;
  202. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somRespondsTo(SOMDObjectMgr *somSelf, 
  203.         somId mId);
  204. typedef somTP_SOMDObjectMgr_somRespondsTo *somTD_SOMDObjectMgr_somRespondsTo;
  205. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somDispatch(SOMDObjectMgr *somSelf, 
  206.         somToken* retValue, 
  207.         somId methodId, 
  208.         va_list ap);
  209. typedef somTP_SOMDObjectMgr_somDispatch *somTD_SOMDObjectMgr_somDispatch;
  210. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somClassDispatch(SOMDObjectMgr *somSelf, 
  211.         SOMClass* clsObj, 
  212.         somToken* retValue, 
  213.         somId methodId, 
  214.         va_list ap);
  215. typedef somTP_SOMDObjectMgr_somClassDispatch *somTD_SOMDObjectMgr_somClassDispatch;
  216. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somCastObj(SOMDObjectMgr *somSelf, 
  217.         SOMClass* cls);
  218. typedef somTP_SOMDObjectMgr_somCastObj *somTD_SOMDObjectMgr_somCastObj;
  219. typedef boolean   SOMLINK somTP_SOMDObjectMgr_somResetObj(SOMDObjectMgr *somSelf);
  220. typedef somTP_SOMDObjectMgr_somResetObj *somTD_SOMDObjectMgr_somResetObj;
  221. typedef void   SOMLINK somTP_SOMDObjectMgr_somDispatchV(SOMDObjectMgr *somSelf, 
  222.         somId methodId, 
  223.         somId descriptor, 
  224.         va_list ap);
  225. typedef somTP_SOMDObjectMgr_somDispatchV *somTD_SOMDObjectMgr_somDispatchV;
  226. typedef long   SOMLINK somTP_SOMDObjectMgr_somDispatchL(SOMDObjectMgr *somSelf, 
  227.         somId methodId, 
  228.         somId descriptor, 
  229.         va_list ap);
  230. typedef somTP_SOMDObjectMgr_somDispatchL *somTD_SOMDObjectMgr_somDispatchL;
  231. typedef void*   SOMLINK somTP_SOMDObjectMgr_somDispatchA(SOMDObjectMgr *somSelf, 
  232.         somId methodId, 
  233.         somId descriptor, 
  234.         va_list ap);
  235. typedef somTP_SOMDObjectMgr_somDispatchA *somTD_SOMDObjectMgr_somDispatchA;
  236. typedef double   SOMLINK somTP_SOMDObjectMgr_somDispatchD(SOMDObjectMgr *somSelf, 
  237.         somId methodId, 
  238.         somId descriptor, 
  239.         va_list ap);
  240. typedef somTP_SOMDObjectMgr_somDispatchD *somTD_SOMDObjectMgr_somDispatchD;
  241. typedef SOMObject*   SOMLINK somTP_SOMDObjectMgr_somPrintSelf(SOMDObjectMgr *somSelf);
  242. typedef somTP_SOMDObjectMgr_somPrintSelf *somTD_SOMDObjectMgr_somPrintSelf;
  243. typedef void   SOMLINK somTP_SOMDObjectMgr_somDumpSelf(SOMDObjectMgr *somSelf, 
  244.         long level);
  245. typedef somTP_SOMDObjectMgr_somDumpSelf *somTD_SOMDObjectMgr_somDumpSelf;
  246. typedef void   SOMLINK somTP_SOMDObjectMgr_somDumpSelfInt(SOMDObjectMgr *somSelf, 
  247.         long level);
  248. typedef somTP_SOMDObjectMgr_somDumpSelfInt *somTD_SOMDObjectMgr_somDumpSelfInt;
  249. }
  250.  
  251. #endif /* SOMDObjectMgr_API */
  252.  
  253.  
  254. /*
  255.  * -- This emitter treats Method Tokens as Thunks by default.
  256.  * -- Use the sc modifier "nothunks" to change this default
  257.  */
  258. #undef somresolve_
  259. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  260.  
  261. /*
  262.  * -- The C++ Wrapper Class for SOMDObjectMgr
  263.  */
  264. class SOMDObjectMgr : public ObjectMgr
  265. {
  266. /*
  267.  *  In addition to the basic ObjectMgr interface, the DSOM ObjectMgr
  268.  *  defines the following methods to find remote server objects:
  269.  */
  270. public:
  271.  
  272. // SOMDObjectMgr::new creates the class object if necessary, and then uses somNewNoInit
  273. // to allocate memory and create the object. Initialization is in ctors.
  274. void *operator new(size_t)
  275. {
  276.    if (!_SOMDObjectMgr) SOMDObjectMgrNewClass(SOMDObjectMgr_MajorVersion,SOMDObjectMgr_MinorVersion);
  277.    return (void*)
  278.       SOM_Resolve(_SOMDObjectMgr,SOMClass,somNewNoInit)
  279.          ((SOMClass *)((void*)_SOMDObjectMgr));
  280. }
  281.  
  282. // SOMDObjectMgr::delete uses somDestruct.
  283. void operator delete(void * obj)
  284. {
  285.    if (obj && *(void**)obj) {
  286.       SOM_Resolve(obj,SOMObject,somFree)
  287.          ((SOMObject*)obj);
  288.    }
  289. }
  290.  
  291. SOMDObjectMgr& operator=(SOMDObjectMgr& fromObj)
  292. {
  293.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  294.    return *this;
  295. }
  296.  
  297. SOMDObjectMgr()
  298. {
  299.    if (*(void**)this != 
  300.        ((somParentMtabStructPtr)
  301.         (SOMDObjectMgrCClassData.parentMtab))->mtab)
  302.       return;
  303.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  304. }
  305.  
  306. SOMDObjectMgr(SOMDObjectMgr* fromObj)
  307. {
  308.    if (*(void**)this != 
  309.        ((somParentMtabStructPtr)
  310.         (SOMDObjectMgrCClassData.parentMtab))->mtab)
  311.       return;
  312.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  313. }
  314.  
  315. #ifdef __IBMCPP__
  316. #pragma info(nocnv,nopar)
  317. #endif
  318. SOMDObjectMgr(const SOMDObjectMgr* fromObj)
  319. {
  320.    if (*(void**)this != 
  321.        ((somParentMtabStructPtr)
  322.         (SOMDObjectMgrCClassData.parentMtab))->mtab)
  323.       return;
  324.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  325. }
  326. #ifdef __IBMCPP__
  327. #pragma info(restore)
  328. #endif
  329.  
  330.  
  331. /* method: somdFindServer */
  332. SOMDServer*   somdFindServer(Environment *ev, 
  333.         ImplId serverid)
  334. {
  335. /*
  336.  *  Finds and returns a proxy to the Server object which is identified by the
  337.  *  ImplId.  (ImplId is defined at server registration time, and can be
  338.  *  obtained from the ImplDef.)
  339.  * 
  340.  *  OWNERSHIP of returned SOMDServer object is transferred to the caller.
  341.  */
  342.    return SOM_ResolveD(this,SOMDObjectMgr,SOMDObjectMgr,somdFindServer)
  343.     (this, ev,serverid);
  344. }
  345.  
  346.  
  347. /* method: somdFindServerByName */
  348. SOMDServer*   somdFindServerByName(Environment *ev, 
  349.         string servername)
  350. {
  351. /*
  352.  *  Finds and returns a proxy to the Server object with the specified name.
  353.  *  (The name is defined at server registration time, and can be obtained
  354.  *  from the ImplDef.)
  355.  * 
  356.  *  OWNERSHIP of returned SOMDServer object is transferred to the caller.
  357.  */
  358.    return SOM_ResolveD(this,SOMDObjectMgr,SOMDObjectMgr,somdFindServerByName)
  359.     (this, ev,servername);
  360. }
  361.  
  362.  
  363. /* method: somdFindServersByClass */
  364. _IDL_SEQUENCE_SOMDServer   somdFindServersByClass(Environment *ev, 
  365.         Identifier objclass)
  366. {
  367. /*
  368.  *  Finds all Server objects which can create an object of the named class.
  369.  * 
  370.  *  OWNERSHIP of returned SOMDServer objects is transferred to the caller.
  371.  */
  372.    return SOM_ResolveD(this,SOMDObjectMgr,SOMDObjectMgr,somdFindServersByClass)
  373.     (this, ev,objclass);
  374. }
  375.  
  376.  
  377. /* method: somdFindAnyServerByClass */
  378. SOMDServer*   somdFindAnyServerByClass(Environment *ev, 
  379.         Identifier objclass)
  380. {
  381. /*
  382.  *  Finds (any) Server object which can create an object of the named class.
  383.  *  (This is a specialization of the somdFindServerByClass method.)
  384.  * 
  385.  *  OWNERSHIP of returned SOMDServer object is transferred to the caller.
  386.  */
  387.    return SOM_ResolveD(this,SOMDObjectMgr,SOMDObjectMgr,somdFindAnyServerByClass)
  388.     (this, ev,objclass);
  389. }
  390.  
  391.  
  392. /* method: _get_somd21somFree */
  393. boolean   _get_somd21somFree(Environment *ev)
  394. {
  395. /*
  396.  * Method from the IDL attribute statement:
  397.  * "attribute boolean somd21somFree"
  398.  */
  399.    return SOM_ResolveD(this,SOMDObjectMgr,SOMDObjectMgr,_get_somd21somFree)
  400.     (this, ev);
  401. }
  402.  
  403.  
  404. /* method: _set_somd21somFree */
  405. void   _set_somd21somFree(Environment *ev, 
  406.         boolean somd21somFree)
  407. {
  408. /*
  409.  * Method from the IDL attribute statement:
  410.  * "attribute boolean somd21somFree"
  411.  */
  412.    SOM_ResolveD(this,SOMDObjectMgr,SOMDObjectMgr,_set_somd21somFree)
  413.     (this, ev,somd21somFree);
  414. }
  415.  
  416.  
  417. /*
  418.  * Reintroduce inherited methods
  419.  */
  420.  
  421. /* method: somdNewObject */
  422. SOMObject*   somdNewObject(Environment *ev, 
  423.         Identifier objclass, 
  424.         string hints)
  425. {
  426. /*
  427.  *  Returns a new object of the named class.  This is a "basic" creation
  428.  *  method, where the decisions about where and how to create the object
  429.  *  are mostly left up to the Object Manager.  However, the Object Manager
  430.  *  may optionally define creation "hints" which the client may specify in
  431.  *  this call.
  432.  * 
  433.  *  OWNERSHIP of returned object is transferred to the caller.
  434.  *  methods for identification & location/activation
  435.  */
  436.    return SOM_ResolveD(this,SOMDObjectMgr,ObjectMgr,somdNewObject)
  437.     (this, ev,objclass,hints);
  438. }
  439.  
  440.  
  441. /* method: somdGetIdFromObject */
  442. string   somdGetIdFromObject(Environment *ev, 
  443.         SOMObject* obj)
  444. {
  445. /*
  446.  *  Returns a external id for an object managed by this Object Manager.
  447.  *  The id is unambiguous -- it always refers to the same object (as long
  448.  *  as the object exists).
  449.  * 
  450.  *  OWNERSHIP of returned id string is transferred to the caller.
  451.  */
  452.    return SOM_ResolveD(this,SOMDObjectMgr,ObjectMgr,somdGetIdFromObject)
  453.     (this, ev,obj);
  454. }
  455.  
  456.  
  457. /* method: somdGetObjectFromId */
  458. SOMObject*   somdGetObjectFromId(Environment *ev, 
  459.         string id)
  460. {
  461. /*
  462.  *  Finds and/or activates an object implemented by this Object Manager,
  463.  *  given its id.
  464.  * 
  465.  *  OWNERSHIP of returned object is transferred to the caller.
  466.  *  methods for releasing / destroying objects
  467.  */
  468.    return SOM_ResolveD(this,SOMDObjectMgr,ObjectMgr,somdGetObjectFromId)
  469.     (this, ev,id);
  470. }
  471.  
  472.  
  473. /* method: somdReleaseObject */
  474. void   somdReleaseObject(Environment *ev, 
  475.         SOMObject* obj)
  476. {
  477. /*
  478.  *  Indicates that the client has finished using the object, and the
  479.  *  "connection" to the object, if any, can be released.
  480.  */
  481.    SOM_ResolveD(this,SOMDObjectMgr,ObjectMgr,somdReleaseObject)
  482.     (this, ev,obj);
  483. }
  484.  
  485.  
  486. /* method: somdDestroyObject */
  487. void   somdDestroyObject(Environment *ev, 
  488.         SOMObject* obj)
  489. {
  490. /*
  491.  *  Causes the specified object to be destroyed.  (There is an implicit
  492.  *  somoReleaseObject call made.)
  493.  */
  494.    SOM_ResolveD(this,SOMDObjectMgr,ObjectMgr,somdDestroyObject)
  495.     (this, ev,obj);
  496. }
  497.  
  498.  
  499. /* initializer method: somDefaultInit */
  500. void   somDefaultInit(som3InitCtrl* ctrl)
  501. {
  502. /*
  503.  *  A default initializer for a SOM object. Passing a null ctrl
  504.  *  indicates to the receiver that its class is the class of the
  505.  *  object being initialized, whereby the initializer will determine
  506.  *  an appropriate control structure.
  507.  */
  508.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultInit)
  509.     (this,ctrl);
  510. }
  511.  
  512.  
  513. /* method: somDestruct */
  514. void   somDestruct(octet doFree, 
  515.         som3DestructCtrl* ctrl)
  516. {
  517. /*
  518.  *  The default destructor for a SOM object. A nonzero <doFree>
  519.  *  indicates that the object storage should be freed by the
  520.  *  object's class (via somDeallocate) after uninitialization.
  521.  *  As with somDefaultInit, a null ctrl can be passed.
  522.  */
  523.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDestruct)
  524.     (this,doFree,ctrl);
  525. }
  526.  
  527.  
  528. /* initializer method: somDefaultCopyInit */
  529. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  530.         SOMObject* fromObj)
  531. {
  532. /*
  533.  *  A default copy constructor. Use this to make copies of objects for
  534.  *  calling methods with "by-value" argument semantics.
  535.  */
  536.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultCopyInit)
  537.     (this,ctrl,fromObj);
  538. }
  539.  
  540.  
  541. /* method: somDefaultAssign */
  542. SOMDObjectMgr*  somDefaultAssign(som3AssignCtrl* ctrl, 
  543.         SOMObject* fromObj)
  544. {
  545. /*
  546.  *  A default assignment operator. Use this to "assign" the state of one
  547.  *  object to another.
  548.  */
  549.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultAssign)
  550.     (this,ctrl,fromObj);
  551. }
  552.  
  553.  
  554. /* initializer method: somDefaultConstCopyInit */
  555. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  556.         SOMObject* fromObj)
  557. {
  558. /*
  559.  *  A default copy constructor that uses a const fromObj.
  560.  */
  561.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultConstCopyInit)
  562.     (this,ctrl,fromObj);
  563. }
  564.  
  565.  
  566. /* initializer method: somDefaultVCopyInit */
  567. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  568.         SOMObject* fromObj)
  569. {
  570. /*
  571.  *  A default copy constructor that uses a volatile fromObj.
  572.  */
  573.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultVCopyInit)
  574.     (this,ctrl,fromObj);
  575. }
  576.  
  577.  
  578. /* initializer method: somDefaultConstVCopyInit */
  579. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  580.         SOMObject* fromObj)
  581. {
  582. /*
  583.  *  A default copy constructor that uses a const volatile fromObj.
  584.  */
  585.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultConstVCopyInit)
  586.     (this,ctrl,fromObj);
  587. }
  588.  
  589.  
  590. /* method: somDefaultConstAssign */
  591. SOMDObjectMgr*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  592.         SOMObject* fromObj)
  593. {
  594. /*
  595.  *  A default assignment operator that uses a const fromObj.
  596.  */
  597.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultConstAssign)
  598.     (this,ctrl,fromObj);
  599. }
  600.  
  601.  
  602. /* method: somDefaultVAssign */
  603. SOMDObjectMgr*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  604.         SOMObject* fromObj)
  605. {
  606. /*
  607.  *  A default assignment operator that uses a volatile fromObj.
  608.  */
  609.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultVAssign)
  610.     (this,ctrl,fromObj);
  611. }
  612.  
  613.  
  614. /* method: somDefaultConstVAssign */
  615. SOMDObjectMgr*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  616.         SOMObject* fromObj)
  617. {
  618. /*
  619.  *  A default assignment operator that uses a const volatile fromObj.
  620.  */
  621.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDefaultConstVAssign)
  622.     (this,ctrl,fromObj);
  623. }
  624.  
  625.  
  626. /* method: somInit */
  627. void   somInit()
  628. {
  629. /*
  630.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  631.  */
  632.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somInit)
  633.     (this);
  634. }
  635.  
  636.  
  637. /* method: somFree */
  638. void   somFree()
  639. {
  640. /*
  641.  *  Use as directed by framework implementations.
  642.  */
  643.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somFree)
  644.     (this);
  645. }
  646.  
  647.  
  648. /* method: somUninit */
  649. void   somUninit()
  650. {
  651. /*
  652.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  653.  */
  654.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somUninit)
  655.     (this);
  656. }
  657.  
  658.  
  659. /* method: somGetClass */
  660. SOMClass*   somGetClass()
  661. {
  662. /*
  663.  *  Return the receiver's class.
  664.  */
  665.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somGetClass)
  666.     (this);
  667. }
  668.  
  669.  
  670. /* method: somGetClassName */
  671. string   somGetClassName()
  672. {
  673. /*
  674.  *  Return the name of the receiver's class.
  675.  */
  676.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somGetClassName)
  677.     (this);
  678. }
  679.  
  680.  
  681. /* method: somGetSize */
  682. long   somGetSize()
  683. {
  684. /*
  685.  *  Return the size of the receiver.
  686.  */
  687.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somGetSize)
  688.     (this);
  689. }
  690.  
  691.  
  692. /* method: somIsA */
  693. boolean   somIsA(SOMClass* aClassObj)
  694. {
  695. /*
  696.  *  Returns 1 (true) if the receiver responds to methods
  697.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  698.  */
  699.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somIsA)
  700.     (this,aClassObj);
  701. }
  702.  
  703.  
  704. /* method: somIsInstanceOf */
  705. boolean   somIsInstanceOf(SOMClass* aClassObj)
  706. {
  707. /*
  708.  *  Returns 1 (true) if the receiver is an instance of
  709.  *  <aClassObj> and 0 (false) otherwise.
  710.  */
  711.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somIsInstanceOf)
  712.     (this,aClassObj);
  713. }
  714.  
  715.  
  716. /* method: somRespondsTo */
  717. boolean   somRespondsTo(somId mId)
  718. {
  719. /*
  720.  *  Returns 1 (true) if the indicated method can be invoked
  721.  *  on the receiver and 0 (false) otherwise.
  722.  */
  723.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somRespondsTo)
  724.     (this,mId);
  725. }
  726.  
  727.  
  728. /* va_list method: somDispatch */
  729.  
  730. /*
  731.  *  This method provides a generic, class-specific dispatch mechanism.
  732.  *  It accepts as input <retValue> a pointer to the memory area to be
  733.  *  loaded with the result of dispatching the method indicated by
  734.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  735.  *  on which the method is to be invoked as the first argument.
  736.  */
  737. /* the va_list invocation form */
  738. boolean   SOMDObjectMgr_somDispatch(somToken* retValue, 
  739.         somId methodId, 
  740.         va_list ap)
  741. {return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatch)
  742.     (this,retValue,methodId,ap);
  743. }
  744.  
  745. /* the varargs invocation form */
  746. boolean   somDispatch(somToken* retValue, 
  747.         somId methodId, 
  748.         ...)
  749. {
  750. /*
  751.  *  This method provides a generic, class-specific dispatch mechanism.
  752.  *  It accepts as input <retValue> a pointer to the memory area to be
  753.  *  loaded with the result of dispatching the method indicated by
  754.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  755.  *  on which the method is to be invoked as the first argument.
  756.  */
  757.    va_list ap;
  758.    va_start(ap, methodId);
  759.    boolean __somResult = 
  760.       SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatch)
  761.     (this,retValue,methodId,ap);
  762.    va_end(ap);
  763.    return __somResult;
  764. }
  765.  
  766.  
  767. /* va_list method: somClassDispatch */
  768.  
  769. /*
  770.  *  Like somDispatch, but method resolution for static methods is done
  771.  *  according to the clsObj instance method table.
  772.  */
  773. /* the va_list invocation form */
  774. boolean   SOMDObjectMgr_somClassDispatch(SOMClass* clsObj, 
  775.         somToken* retValue, 
  776.         somId methodId, 
  777.         va_list ap)
  778. {return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somClassDispatch)
  779.     (this,clsObj,retValue,methodId,ap);
  780. }
  781.  
  782. /* the varargs invocation form */
  783. boolean   somClassDispatch(SOMClass* clsObj, 
  784.         somToken* retValue, 
  785.         somId methodId, 
  786.         ...)
  787. {
  788. /*
  789.  *  Like somDispatch, but method resolution for static methods is done
  790.  *  according to the clsObj instance method table.
  791.  */
  792.    va_list ap;
  793.    va_start(ap, methodId);
  794.    boolean __somResult = 
  795.       SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somClassDispatch)
  796.     (this,clsObj,retValue,methodId,ap);
  797.    va_end(ap);
  798.    return __somResult;
  799. }
  800.  
  801.  
  802. /* method: somCastObj */
  803. boolean   somCastObj(SOMClass* cls)
  804. {
  805. /*
  806.  *  cast the receiving object to cls (which must be an ancestor of the
  807.  *  objects true class. Returns true on success.
  808.  */
  809.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somCastObj)
  810.     (this,cls);
  811. }
  812.  
  813.  
  814. /* method: somResetObj */
  815. boolean   somResetObj()
  816. {
  817. /*
  818.  *  reset an object to its true class. Returns true always.
  819.  */
  820.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somResetObj)
  821.     (this);
  822. }
  823.  
  824.  
  825. /* va_list method: somDispatchV */
  826.  
  827. /*
  828.  *  Obsolete. Use somDispatch instead.
  829.  */
  830. /* the va_list invocation form */
  831. void   SOMDObjectMgr_somDispatchV(somId methodId, 
  832.         somId descriptor, 
  833.         va_list ap)
  834. {   SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchV)
  835.     (this,methodId,descriptor,ap);
  836. }
  837.  
  838. /* the varargs invocation form */
  839. void   somDispatchV(somId methodId, 
  840.         somId descriptor, 
  841.         ...)
  842. {
  843. /*
  844.  *  Obsolete. Use somDispatch instead.
  845.  */
  846.    va_list ap;
  847.    va_start(ap, descriptor);
  848.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchV)
  849.     (this,methodId,descriptor,ap);
  850.    va_end(ap);
  851. }
  852.  
  853.  
  854. /* va_list method: somDispatchL */
  855.  
  856. /*
  857.  *  Obsolete. Use somDispatch instead.
  858.  */
  859. /* the va_list invocation form */
  860. long   SOMDObjectMgr_somDispatchL(somId methodId, 
  861.         somId descriptor, 
  862.         va_list ap)
  863. {return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchL)
  864.     (this,methodId,descriptor,ap);
  865. }
  866.  
  867. /* the varargs invocation form */
  868. long   somDispatchL(somId methodId, 
  869.         somId descriptor, 
  870.         ...)
  871. {
  872. /*
  873.  *  Obsolete. Use somDispatch instead.
  874.  */
  875.    va_list ap;
  876.    va_start(ap, descriptor);
  877.    long __somResult = 
  878.       SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchL)
  879.     (this,methodId,descriptor,ap);
  880.    va_end(ap);
  881.    return __somResult;
  882. }
  883.  
  884.  
  885. /* va_list method: somDispatchA */
  886.  
  887. /*
  888.  *  Obsolete. Use somDispatch instead.
  889.  */
  890. /* the va_list invocation form */
  891. void*   SOMDObjectMgr_somDispatchA(somId methodId, 
  892.         somId descriptor, 
  893.         va_list ap)
  894. {return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchA)
  895.     (this,methodId,descriptor,ap);
  896. }
  897.  
  898. /* the varargs invocation form */
  899. void*   somDispatchA(somId methodId, 
  900.         somId descriptor, 
  901.         ...)
  902. {
  903. /*
  904.  *  Obsolete. Use somDispatch instead.
  905.  */
  906.    va_list ap;
  907.    va_start(ap, descriptor);
  908.    void* __somResult = 
  909.       SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchA)
  910.     (this,methodId,descriptor,ap);
  911.    va_end(ap);
  912.    return __somResult;
  913. }
  914.  
  915.  
  916. /* va_list method: somDispatchD */
  917.  
  918. /*
  919.  *  Obsolete. Use somDispatch instead.
  920.  */
  921. /* the va_list invocation form */
  922. double   SOMDObjectMgr_somDispatchD(somId methodId, 
  923.         somId descriptor, 
  924.         va_list ap)
  925. {return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchD)
  926.     (this,methodId,descriptor,ap);
  927. }
  928.  
  929. /* the varargs invocation form */
  930. double   somDispatchD(somId methodId, 
  931.         somId descriptor, 
  932.         ...)
  933. {
  934. /*
  935.  *  Obsolete. Use somDispatch instead.
  936.  */
  937.    va_list ap;
  938.    va_start(ap, descriptor);
  939.    double __somResult = 
  940.       SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDispatchD)
  941.     (this,methodId,descriptor,ap);
  942.    va_end(ap);
  943.    return __somResult;
  944. }
  945.  
  946.  
  947. /* method: somPrintSelf */
  948. SOMObject*   somPrintSelf()
  949. {
  950. /*
  951.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  952.  *  information about this object.  The default implementation just gives
  953.  *  the object's class name and its address in memory.
  954.  *  <self> is returned.
  955.  */
  956.    return SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somPrintSelf)
  957.     (this);
  958. }
  959.  
  960.  
  961. /* method: somDumpSelf */
  962. void   somDumpSelf(long level)
  963. {
  964. /*
  965.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  966.  *  and its current state.
  967.  * 
  968.  *  <level> indicates the nesting level for describing compound objects
  969.  *  it must be greater than or equal to zero.  All lines in the
  970.  *  description will be preceeded by <2*level> spaces.
  971.  * 
  972.  *  This routine only actually writes the data that concerns the object
  973.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  974.  *  the object's current state.  This approach allows readable
  975.  *  descriptions of compound objects to be constructed.
  976.  * 
  977.  *  Generally it is not necessary to override this method, if it is
  978.  *  overriden it generally must be completely replaced.
  979.  */
  980.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDumpSelf)
  981.     (this,level);
  982. }
  983.  
  984.  
  985. /* method: somDumpSelfInt */
  986. void   somDumpSelfInt(long level)
  987. {
  988. /*
  989.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  990.  *  Generally this method will need to be overridden.  When overriding
  991.  *  it, begin by calling the parent class form of this method and then
  992.  *  write in a description of your class's instance data. This will
  993.  *  result in a description of all the object's instance data going
  994.  *  from its root ancestor class to its specific class.
  995.  */
  996.    SOM_ResolveD(this,SOMDObjectMgr,SOMObject,somDumpSelfInt)
  997.     (this,level);
  998. }
  999.  
  1000.  
  1001.  
  1002. };   /* SOMDObjectMgr */
  1003.  
  1004.  
  1005.  
  1006. #endif       /* SOM_SOMDObjectMgr_xh */
  1007.