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

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: somoa.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 SOM Object Adapter (derived from BOA)
  12.  * 
  13.  *    This is DSOM's primary Object Adapter.  It implements the BOA interface.
  14.  */
  15.  
  16.  
  17. #ifndef SOM_SOMOA_xh
  18. #define SOM_SOMOA_xh
  19.  
  20. class SOMOA;
  21.  
  22. #define SOMOA_MajorVersion 2
  23. #define SOMOA_MinorVersion 1
  24.  
  25. /* C++ SOM defs */
  26. #include <somcls.xh>
  27. #include <somcm.xh>
  28.  
  29. /* C++ parent defs */
  30. #ifndef SOM_BOA_xh
  31. #include <boa.xh>
  32. #endif
  33.  
  34. #ifndef SOMOA_API
  35. #define SOMOA_API
  36. /*
  37.  * -- The Class API
  38.  */
  39.  
  40. /*
  41.  * Start of bindings for IDL types
  42.  */
  43.  
  44. class SOMClass;
  45. class SOMObject;
  46. class Container;
  47. class SOMDObject;
  48. class Principal;
  49. class ImplementationDef;
  50. class InterfaceDef;
  51. class Context;
  52.  
  53. /*
  54.  * End of bindings for IDL types.
  55.  */
  56.  
  57. /*
  58.  * Passthru lines: File: "C.xh", "after"
  59.  */
  60.  
  61. #define SOMD_WAIT     1
  62. #define SOMD_NO_WAIT  0
  63. #define SOMD_IMPL_NOT_INITIALIZED          0
  64. #define SOMD_IMPL_NOT_ACTIVE               1
  65. #define SOMD_IMPL_ACTIVE                   2
  66.  
  67. class SOMOA;
  68. SOMEXTERN SOMOA * SOMDLINK SOMD_SOMOAObject;
  69.  
  70.  
  71. /* A procedure to create the SOMOA Class */
  72. SOMEXTERN SOMClass * SOMLINK SOMOANewClass(
  73.         integer4 majorVersion,
  74.         integer4 minorVersion);
  75.  
  76. /* The API to the SOMOA class object, and the methods it introduces. */
  77. SOMEXTERN struct SOMOAClassDataStructure {
  78.     SOMClass *classObject;
  79.     somMToken execute_next_request;
  80.     somMToken execute_request_loop;
  81.     somMToken create_constant;
  82.     somMToken change_id;
  83.     somMToken create_SOM_ref;
  84.     somMToken get_SOM_object;
  85.     somMToken activate_impl_failed;
  86.     somMToken interrupt_server;
  87. } SOMDLINK SOMOAClassData;
  88. #define _SOMOA SOMOAClassData.classObject
  89.  
  90. /* The API to parentMtabs for SOMOA, and the instance data it introduces. */
  91. SOMEXTERN struct SOMOACClassDataStructure {
  92.     somMethodTabs parentMtab;
  93.     somDToken              instanceDataToken;
  94. } SOMDLINK SOMOACClassData;
  95.  
  96. /*
  97.  * -- Typedefs for SOMOA Method Procedures
  98.  */
  99. SOMEXTERN {
  100. typedef ORBStatus   SOMLINK somTP_SOMOA_execute_next_request(SOMOA *somSelf, Environment *ev, 
  101.         Flags waitFlag);
  102. typedef somTP_SOMOA_execute_next_request *somTD_SOMOA_execute_next_request;
  103. typedef ORBStatus   SOMLINK somTP_SOMOA_execute_request_loop(SOMOA *somSelf, Environment *ev, 
  104.         Flags waitFlag);
  105. typedef somTP_SOMOA_execute_request_loop *somTD_SOMOA_execute_request_loop;
  106. typedef void   SOMLINK somTP_SOMOA_change_id(SOMOA *somSelf, Environment *ev, 
  107.         SOMDObject* objref, 
  108.         ReferenceData* id);
  109. typedef somTP_SOMOA_change_id *somTD_SOMOA_change_id;
  110. typedef SOMDObject*   SOMLINK somTP_SOMOA_create_constant(SOMOA *somSelf, Environment *ev, 
  111.         ReferenceData* id, 
  112.         InterfaceDef* intf, 
  113.         ImplementationDef* impl);
  114. typedef somTP_SOMOA_create_constant *somTD_SOMOA_create_constant;
  115. typedef SOMDObject*   SOMLINK somTP_SOMOA_create_SOM_ref(SOMOA *somSelf, Environment *ev, 
  116.         SOMObject* somobj, 
  117.         ImplementationDef* impl);
  118. typedef somTP_SOMOA_create_SOM_ref *somTD_SOMOA_create_SOM_ref;
  119. typedef SOMObject*   SOMLINK somTP_SOMOA_get_SOM_object(SOMOA *somSelf, Environment *ev, 
  120.         SOMDObject* somref);
  121. typedef somTP_SOMOA_get_SOM_object *somTD_SOMOA_get_SOM_object;
  122. typedef void   SOMLINK somTP_SOMOA_activate_impl_failed(SOMOA *somSelf, Environment *ev, 
  123.         ImplementationDef* impl, 
  124.         ORBStatus rc);
  125. typedef somTP_SOMOA_activate_impl_failed *somTD_SOMOA_activate_impl_failed;
  126. typedef void   SOMLINK somTP_SOMOA_interrupt_server(SOMOA *somSelf, Environment *ev);
  127. typedef somTP_SOMOA_interrupt_server *somTD_SOMOA_interrupt_server;
  128.  
  129. /*
  130.  * -- Typedefs for Reintroduced Wrapper Methods
  131.  */
  132. typedef SOMDObject*   SOMLINK somTP_SOMOA_create(SOMOA *somSelf, Environment *ev, 
  133.         ReferenceData* id, 
  134.         InterfaceDef* intf, 
  135.         ImplementationDef* impl);
  136. typedef somTP_SOMOA_create *somTD_SOMOA_create;
  137. typedef void   SOMLINK somTP_SOMOA_dispose(SOMOA *somSelf, Environment *ev, 
  138.         SOMDObject* obj);
  139. typedef somTP_SOMOA_dispose *somTD_SOMOA_dispose;
  140. typedef ReferenceData   SOMLINK somTP_SOMOA_get_id(SOMOA *somSelf, Environment *ev, 
  141.         SOMDObject* obj);
  142. typedef somTP_SOMOA_get_id *somTD_SOMOA_get_id;
  143. typedef Principal*   SOMLINK somTP_SOMOA_get_principal(SOMOA *somSelf, Environment *ev, 
  144.         SOMDObject* obj, 
  145.         Environment* req_ev);
  146. typedef somTP_SOMOA_get_principal *somTD_SOMOA_get_principal;
  147. typedef void   SOMLINK somTP_SOMOA_set_exception(SOMOA *somSelf, Environment *ev, 
  148.         exception_type major, 
  149.         string userid, 
  150.         void* param);
  151. typedef somTP_SOMOA_set_exception *somTD_SOMOA_set_exception;
  152. typedef void   SOMLINK somTP_SOMOA_impl_is_ready(SOMOA *somSelf, Environment *ev, 
  153.         ImplementationDef* impl);
  154. typedef somTP_SOMOA_impl_is_ready *somTD_SOMOA_impl_is_ready;
  155. typedef void   SOMLINK somTP_SOMOA_deactivate_impl(SOMOA *somSelf, Environment *ev, 
  156.         ImplementationDef* impl);
  157. typedef somTP_SOMOA_deactivate_impl *somTD_SOMOA_deactivate_impl;
  158. typedef void   SOMLINK somTP_SOMOA_change_implementation(SOMOA *somSelf, Environment *ev, 
  159.         SOMDObject* obj, 
  160.         ImplementationDef* impl);
  161. typedef somTP_SOMOA_change_implementation *somTD_SOMOA_change_implementation;
  162. typedef void   SOMLINK somTP_SOMOA_obj_is_ready(SOMOA *somSelf, Environment *ev, 
  163.         SOMDObject* obj, 
  164.         ImplementationDef* impl);
  165. typedef somTP_SOMOA_obj_is_ready *somTD_SOMOA_obj_is_ready;
  166. typedef void   SOMLINK somTP_SOMOA_deactivate_obj(SOMOA *somSelf, Environment *ev, 
  167.         SOMDObject* obj);
  168. typedef somTP_SOMOA_deactivate_obj *somTD_SOMOA_deactivate_obj;
  169. typedef void   SOMLINK somTP_SOMOA_somDefaultInit(SOMOA *somSelf, 
  170.         som3InitCtrl* ctrl);
  171. typedef somTP_SOMOA_somDefaultInit *somTD_SOMOA_somDefaultInit;
  172. typedef void   SOMLINK somTP_SOMOA_somDestruct(SOMOA *somSelf, 
  173.         octet doFree, 
  174.         som3DestructCtrl* ctrl);
  175. typedef somTP_SOMOA_somDestruct *somTD_SOMOA_somDestruct;
  176. typedef void   SOMLINK somTP_SOMOA_somDefaultCopyInit(SOMOA *somSelf, 
  177.         som3InitCtrl* ctrl, 
  178.         SOMObject* fromObj);
  179. typedef somTP_SOMOA_somDefaultCopyInit *somTD_SOMOA_somDefaultCopyInit;
  180. typedef SOMOA*   SOMLINK somTP_SOMOA_somDefaultAssign(SOMOA *somSelf, 
  181.         som3AssignCtrl* ctrl, 
  182.         SOMObject* fromObj);
  183. typedef somTP_SOMOA_somDefaultAssign *somTD_SOMOA_somDefaultAssign;
  184. typedef void   SOMLINK somTP_SOMOA_somDefaultConstCopyInit(SOMOA *somSelf, 
  185.         som3InitCtrl* ctrl, 
  186.         SOMObject* fromObj);
  187. typedef somTP_SOMOA_somDefaultConstCopyInit *somTD_SOMOA_somDefaultConstCopyInit;
  188. typedef void   SOMLINK somTP_SOMOA_somDefaultVCopyInit(SOMOA *somSelf, 
  189.         som3InitCtrl* ctrl, 
  190.         SOMObject* fromObj);
  191. typedef somTP_SOMOA_somDefaultVCopyInit *somTD_SOMOA_somDefaultVCopyInit;
  192. typedef void   SOMLINK somTP_SOMOA_somDefaultConstVCopyInit(SOMOA *somSelf, 
  193.         som3InitCtrl* ctrl, 
  194.         SOMObject* fromObj);
  195. typedef somTP_SOMOA_somDefaultConstVCopyInit *somTD_SOMOA_somDefaultConstVCopyInit;
  196. typedef SOMOA*   SOMLINK somTP_SOMOA_somDefaultConstAssign(SOMOA *somSelf, 
  197.         som3AssignCtrl* ctrl, 
  198.         SOMObject* fromObj);
  199. typedef somTP_SOMOA_somDefaultConstAssign *somTD_SOMOA_somDefaultConstAssign;
  200. typedef SOMOA*   SOMLINK somTP_SOMOA_somDefaultVAssign(SOMOA *somSelf, 
  201.         som3AssignCtrl* ctrl, 
  202.         SOMObject* fromObj);
  203. typedef somTP_SOMOA_somDefaultVAssign *somTD_SOMOA_somDefaultVAssign;
  204. typedef SOMOA*   SOMLINK somTP_SOMOA_somDefaultConstVAssign(SOMOA *somSelf, 
  205.         som3AssignCtrl* ctrl, 
  206.         SOMObject* fromObj);
  207. typedef somTP_SOMOA_somDefaultConstVAssign *somTD_SOMOA_somDefaultConstVAssign;
  208. typedef void   SOMLINK somTP_SOMOA_somInit(SOMOA *somSelf);
  209. typedef somTP_SOMOA_somInit *somTD_SOMOA_somInit;
  210. typedef void   SOMLINK somTP_SOMOA_somFree(SOMOA *somSelf);
  211. typedef somTP_SOMOA_somFree *somTD_SOMOA_somFree;
  212. typedef void   SOMLINK somTP_SOMOA_somUninit(SOMOA *somSelf);
  213. typedef somTP_SOMOA_somUninit *somTD_SOMOA_somUninit;
  214. typedef SOMClass*   SOMLINK somTP_SOMOA_somGetClass(SOMOA *somSelf);
  215. typedef somTP_SOMOA_somGetClass *somTD_SOMOA_somGetClass;
  216. typedef string   SOMLINK somTP_SOMOA_somGetClassName(SOMOA *somSelf);
  217. typedef somTP_SOMOA_somGetClassName *somTD_SOMOA_somGetClassName;
  218. typedef long   SOMLINK somTP_SOMOA_somGetSize(SOMOA *somSelf);
  219. typedef somTP_SOMOA_somGetSize *somTD_SOMOA_somGetSize;
  220. typedef boolean   SOMLINK somTP_SOMOA_somIsA(SOMOA *somSelf, 
  221.         SOMClass* aClassObj);
  222. typedef somTP_SOMOA_somIsA *somTD_SOMOA_somIsA;
  223. typedef boolean   SOMLINK somTP_SOMOA_somIsInstanceOf(SOMOA *somSelf, 
  224.         SOMClass* aClassObj);
  225. typedef somTP_SOMOA_somIsInstanceOf *somTD_SOMOA_somIsInstanceOf;
  226. typedef boolean   SOMLINK somTP_SOMOA_somRespondsTo(SOMOA *somSelf, 
  227.         somId mId);
  228. typedef somTP_SOMOA_somRespondsTo *somTD_SOMOA_somRespondsTo;
  229. typedef boolean   SOMLINK somTP_SOMOA_somDispatch(SOMOA *somSelf, 
  230.         somToken* retValue, 
  231.         somId methodId, 
  232.         va_list ap);
  233. typedef somTP_SOMOA_somDispatch *somTD_SOMOA_somDispatch;
  234. typedef boolean   SOMLINK somTP_SOMOA_somClassDispatch(SOMOA *somSelf, 
  235.         SOMClass* clsObj, 
  236.         somToken* retValue, 
  237.         somId methodId, 
  238.         va_list ap);
  239. typedef somTP_SOMOA_somClassDispatch *somTD_SOMOA_somClassDispatch;
  240. typedef boolean   SOMLINK somTP_SOMOA_somCastObj(SOMOA *somSelf, 
  241.         SOMClass* cls);
  242. typedef somTP_SOMOA_somCastObj *somTD_SOMOA_somCastObj;
  243. typedef boolean   SOMLINK somTP_SOMOA_somResetObj(SOMOA *somSelf);
  244. typedef somTP_SOMOA_somResetObj *somTD_SOMOA_somResetObj;
  245. typedef void   SOMLINK somTP_SOMOA_somDispatchV(SOMOA *somSelf, 
  246.         somId methodId, 
  247.         somId descriptor, 
  248.         va_list ap);
  249. typedef somTP_SOMOA_somDispatchV *somTD_SOMOA_somDispatchV;
  250. typedef long   SOMLINK somTP_SOMOA_somDispatchL(SOMOA *somSelf, 
  251.         somId methodId, 
  252.         somId descriptor, 
  253.         va_list ap);
  254. typedef somTP_SOMOA_somDispatchL *somTD_SOMOA_somDispatchL;
  255. typedef void*   SOMLINK somTP_SOMOA_somDispatchA(SOMOA *somSelf, 
  256.         somId methodId, 
  257.         somId descriptor, 
  258.         va_list ap);
  259. typedef somTP_SOMOA_somDispatchA *somTD_SOMOA_somDispatchA;
  260. typedef double   SOMLINK somTP_SOMOA_somDispatchD(SOMOA *somSelf, 
  261.         somId methodId, 
  262.         somId descriptor, 
  263.         va_list ap);
  264. typedef somTP_SOMOA_somDispatchD *somTD_SOMOA_somDispatchD;
  265. typedef SOMObject*   SOMLINK somTP_SOMOA_somPrintSelf(SOMOA *somSelf);
  266. typedef somTP_SOMOA_somPrintSelf *somTD_SOMOA_somPrintSelf;
  267. typedef void   SOMLINK somTP_SOMOA_somDumpSelf(SOMOA *somSelf, 
  268.         long level);
  269. typedef somTP_SOMOA_somDumpSelf *somTD_SOMOA_somDumpSelf;
  270. typedef void   SOMLINK somTP_SOMOA_somDumpSelfInt(SOMOA *somSelf, 
  271.         long level);
  272. typedef somTP_SOMOA_somDumpSelfInt *somTD_SOMOA_somDumpSelfInt;
  273. }
  274.  
  275. #endif /* SOMOA_API */
  276.  
  277.  
  278. /*
  279.  * -- This emitter treats Method Tokens as Thunks by default.
  280.  * -- Use the sc modifier "nothunks" to change this default
  281.  */
  282. #undef somresolve_
  283. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  284.  
  285. /*
  286.  * -- The C++ Wrapper Class for SOMOA
  287.  */
  288. class SOMOA : public BOA
  289. {
  290. public:
  291.  
  292. // SOMOA::new creates the class object if necessary, and then uses somNewNoInit
  293. // to allocate memory and create the object. Initialization is in ctors.
  294. void *operator new(size_t)
  295. {
  296.    if (!_SOMOA) SOMOANewClass(SOMOA_MajorVersion,SOMOA_MinorVersion);
  297.    return (void*)
  298.       SOM_Resolve(_SOMOA,SOMClass,somNewNoInit)
  299.          ((SOMClass *)((void*)_SOMOA));
  300. }
  301.  
  302. // SOMOA::delete uses somDestruct.
  303. void operator delete(void * obj)
  304. {
  305.    if (obj && *(void**)obj) {
  306.       SOM_Resolve(obj,SOMObject,somFree)
  307.          ((SOMObject*)obj);
  308.    }
  309. }
  310.  
  311. SOMOA& operator=(SOMOA& fromObj)
  312. {
  313.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  314.    return *this;
  315. }
  316.  
  317. SOMOA()
  318. {
  319.    if (*(void**)this != 
  320.        ((somParentMtabStructPtr)
  321.         (SOMOACClassData.parentMtab))->mtab)
  322.       return;
  323.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  324. }
  325.  
  326. SOMOA(SOMOA* fromObj)
  327. {
  328.    if (*(void**)this != 
  329.        ((somParentMtabStructPtr)
  330.         (SOMOACClassData.parentMtab))->mtab)
  331.       return;
  332.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  333. }
  334.  
  335. #ifdef __IBMCPP__
  336. #pragma info(nocnv,nopar)
  337. #endif
  338. SOMOA(const SOMOA* fromObj)
  339. {
  340.    if (*(void**)this != 
  341.        ((somParentMtabStructPtr)
  342.         (SOMOACClassData.parentMtab))->mtab)
  343.       return;
  344.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  345. }
  346. #ifdef __IBMCPP__
  347. #pragma info(restore)
  348. #endif
  349.  
  350.  
  351. /* method: execute_next_request */
  352. ORBStatus   execute_next_request(Environment *ev, 
  353.         Flags waitFlag)
  354. {
  355. /*
  356.  *  This method receives a single request message, executes it, and
  357.  *  sends the result to the calling client.  If waitFlag is SOMD_WAIT,
  358.  *  the call will block if there is no message pending.  If waitFlag
  359.  *  is SOMD_NO_WAIT, the call will immediately return "SOMDERROR_NoMessages"
  360.  *  if there is no message pending.
  361.  * 
  362.  *  ("SOMDERROR_NoMessage" is only returned as a status code, not as an
  363.  *  exception structure.)
  364.  */
  365.    return SOM_ResolveD(this,SOMOA,SOMOA,execute_next_request)
  366.     (this, ev,waitFlag);
  367. }
  368.  
  369.  
  370. /* method: execute_request_loop */
  371. ORBStatus   execute_request_loop(Environment *ev, 
  372.         Flags waitFlag)
  373. {
  374. /*
  375.  *  Repeatedly calls execute_next_request.  If waitFlag is SOMD_WAIT,
  376.  *  the call will continue to wait for messages when there is no message
  377.  *  pending.  If waitFlag is SOMD_NO_WAIT, the call will process any
  378.  *  messages that are present, and return "SOMD_NoMessages" as soon as there
  379.  *  are no more messages pending.
  380.  * 
  381.  *  ("SOMDERROR_NoMessage" is only returned as a status code, not as an
  382.  *  exception structure.)
  383.  */
  384.    return SOM_ResolveD(this,SOMOA,SOMOA,execute_request_loop)
  385.     (this, ev,waitFlag);
  386. }
  387.  
  388.  
  389. /* method: change_id */
  390. void   change_id(Environment *ev, 
  391.         SOMDObject* objref, 
  392.         ReferenceData* id)
  393. {
  394. /*
  395.  *  This method changes the ReferenceData associated with the object
  396.  *  identified by "objref".  The ReferenceData previously stored in the
  397.  *  SOMOA's reference data table is replaced with the value of "id".
  398.  *  The new id value cannot be larger than the maximum size of the
  399.  *  original ReferenceData (usually specified as 1024 bytes).
  400.  */
  401.    SOM_ResolveD(this,SOMOA,SOMOA,change_id)
  402.     (this, ev,objref,id);
  403. }
  404.  
  405.  
  406. /* method: create_constant */
  407. SOMDObject*   create_constant(Environment *ev, 
  408.         ReferenceData* id, 
  409.         InterfaceDef* intf, 
  410.         ImplementationDef* impl)
  411. {
  412. /*
  413.  *  This method is a variant of the "create" method.  Like "create", it
  414.  *  creates an object reference for an object (with the specified interface)
  415.  *  and associates the supplied ReferenceData with the object reference.
  416.  *  The ReferenceData can later be retrieved using the "get_id" method.
  417.  *  Unlike "create", this method creates a "contant" reference whose id
  418.  *  value cannot be changed.  (See "change_id" below.)  This is because
  419.  *  the id is part of the object reference state, versus stored in the
  420.  *  SOMOA reference data table.
  421.  * 
  422.  *  This method would be used whenever the application prefers not to
  423.  *  maintain an object's ReferenceData in the SOMOA reference data table.
  424.  */
  425.    return SOM_ResolveD(this,SOMOA,SOMOA,create_constant)
  426.     (this, ev,id,intf,impl);
  427. }
  428.  
  429.  
  430. /* method: create_SOM_ref */
  431. SOMDObject*   create_SOM_ref(Environment *ev, 
  432.         SOMObject* somobj, 
  433.         ImplementationDef* impl)
  434. {
  435. /*
  436.  *  This methods creates a simple DSOM reference (SOMDObject) for a local
  437.  *  SOM object.  The reference is "special" in that there is no explicit
  438.  *  ReferenceData associated with the object.  Also, the reference is
  439.  *  only valid while the SOM object exists.
  440.  * 
  441.  *  The SOMObject can be retrieved via the get_SOM_object method.
  442.  *  The SOMDObject::is_SOM_ref method can be used to tell if the
  443.  *  reference was created using create_SOM_ref or not.
  444.  */
  445.    return SOM_ResolveD(this,SOMOA,SOMOA,create_SOM_ref)
  446.     (this, ev,somobj,impl);
  447. }
  448.  
  449.  
  450. /* method: get_SOM_object */
  451. SOMObject*   get_SOM_object(Environment *ev, 
  452.         SOMDObject* somref)
  453. {
  454. /*
  455.  *  This method returns the SOM object associated with a SOMDObject
  456.  *  reference created by the create_SOM_ref method.
  457.  */
  458.    return SOM_ResolveD(this,SOMOA,SOMOA,get_SOM_object)
  459.     (this, ev,somref);
  460. }
  461.  
  462.  
  463. /* method: activate_impl_failed */
  464. void   activate_impl_failed(Environment *ev, 
  465.         ImplementationDef* impl, 
  466.         ORBStatus rc)
  467. {
  468. /*
  469.  *  Indicates there was an error when activating this implementation.
  470.  *  Called by a server program.  ORBStatus code is returned to the client
  471.  *  in an exception.
  472.  */
  473.    SOM_ResolveD(this,SOMOA,SOMOA,activate_impl_failed)
  474.     (this, ev,impl,rc);
  475. }
  476.  
  477.  
  478. /* method: interrupt_server */
  479. void   interrupt_server(Environment *ev)
  480. {
  481. /*
  482.  *  Wakes up a server waiting for a request message.
  483.  */
  484.    SOM_ResolveD(this,SOMOA,SOMOA,interrupt_server)
  485.     (this, ev);
  486. }
  487.  
  488.  
  489. /*
  490.  * Reintroduce inherited methods
  491.  */
  492.  
  493. /* method: create */
  494. SOMDObject*   create(Environment *ev, 
  495.         ReferenceData* id, 
  496.         InterfaceDef* intf, 
  497.         ImplementationDef* impl)
  498. {
  499. /*
  500.  *  Create an object reference.
  501.  */
  502.    return SOM_ResolveD(this,SOMOA,BOA,create)
  503.     (this, ev,id,intf,impl);
  504. }
  505.  
  506.  
  507. /* method: dispose */
  508. void   dispose(Environment *ev, 
  509.         SOMDObject* obj)
  510. {
  511. /*
  512.  *  Destroy an object reference.
  513.  */
  514.    SOM_ResolveD(this,SOMOA,BOA,dispose)
  515.     (this, ev,obj);
  516. }
  517.  
  518.  
  519. /* method: get_id */
  520. ReferenceData   get_id(Environment *ev, 
  521.         SOMDObject* obj)
  522. {
  523. /*
  524.  *  Return ReferenceData associated with referenced object.
  525.  */
  526.    return SOM_ResolveD(this,SOMOA,BOA,get_id)
  527.     (this, ev,obj);
  528. }
  529.  
  530.  
  531. /* method: get_principal */
  532. Principal*   get_principal(Environment *ev, 
  533.         SOMDObject* obj, 
  534.         Environment* req_ev)
  535. {
  536. /*
  537.  *  Return a Principal object, which describes who issued a request on
  538.  *  the specified object.  The "req_ev" parameter is the Environment
  539.  *  which was passed as part of the request.
  540.  */
  541.    return SOM_ResolveD(this,SOMOA,BOA,get_principal)
  542.     (this, ev,obj,req_ev);
  543. }
  544.  
  545.  
  546. /* method: set_exception */
  547. void   set_exception(Environment *ev, 
  548.         exception_type major, 
  549.         string userid, 
  550.         void* param)
  551. {
  552. /*
  553.  *  Return an exception to the client.
  554.  */
  555.    SOM_ResolveD(this,SOMOA,BOA,set_exception)
  556.     (this, ev,major,userid,param);
  557. }
  558.  
  559.  
  560. /* method: impl_is_ready */
  561. void   impl_is_ready(Environment *ev, 
  562.         ImplementationDef* impl)
  563. {
  564. /*
  565.  *  Indicate that the implementation is now ready to process requests.
  566.  */
  567.    SOM_ResolveD(this,SOMOA,BOA,impl_is_ready)
  568.     (this, ev,impl);
  569. }
  570.  
  571.  
  572. /* method: deactivate_impl */
  573. void   deactivate_impl(Environment *ev, 
  574.         ImplementationDef* impl)
  575. {
  576. /*
  577.  *  Indicate that the implementation is no longer ready to process reqs.
  578.  */
  579.    SOM_ResolveD(this,SOMOA,BOA,deactivate_impl)
  580.     (this, ev,impl);
  581. }
  582.  
  583.  
  584. /* method: change_implementation */
  585. void   change_implementation(Environment *ev, 
  586.         SOMDObject* obj, 
  587.         ImplementationDef* impl)
  588. {
  589. /*
  590.  *  Change the implementation associated with the referenced object.
  591.  *  (NOTE: Null implementation in this release of DSOM.)
  592.  */
  593.    SOM_ResolveD(this,SOMOA,BOA,change_implementation)
  594.     (this, ev,obj,impl);
  595. }
  596.  
  597.  
  598. /* method: obj_is_ready */
  599. void   obj_is_ready(Environment *ev, 
  600.         SOMDObject* obj, 
  601.         ImplementationDef* impl)
  602. {
  603. /*
  604.  *  Indicate that the object is ready to process requests.
  605.  *  (NOTE: Null implementation in this release of DSOM.)
  606.  */
  607.    SOM_ResolveD(this,SOMOA,BOA,obj_is_ready)
  608.     (this, ev,obj,impl);
  609. }
  610.  
  611.  
  612. /* method: deactivate_obj */
  613. void   deactivate_obj(Environment *ev, 
  614.         SOMDObject* obj)
  615. {
  616. /*
  617.  *  Indicate that the object is no longer ready to process requests.
  618.  *  (NOTE: Null implementation in this release of DSOM.)
  619.  */
  620.    SOM_ResolveD(this,SOMOA,BOA,deactivate_obj)
  621.     (this, ev,obj);
  622. }
  623.  
  624.  
  625. /* initializer method: somDefaultInit */
  626. void   somDefaultInit(som3InitCtrl* ctrl)
  627. {
  628. /*
  629.  *  A default initializer for a SOM object. Passing a null ctrl
  630.  *  indicates to the receiver that its class is the class of the
  631.  *  object being initialized, whereby the initializer will determine
  632.  *  an appropriate control structure.
  633.  */
  634.    SOM_ResolveD(this,SOMOA,SOMObject,somDefaultInit)
  635.     (this,ctrl);
  636. }
  637.  
  638.  
  639. /* method: somDestruct */
  640. void   somDestruct(octet doFree, 
  641.         som3DestructCtrl* ctrl)
  642. {
  643. /*
  644.  *  The default destructor for a SOM object. A nonzero <doFree>
  645.  *  indicates that the object storage should be freed by the
  646.  *  object's class (via somDeallocate) after uninitialization.
  647.  *  As with somDefaultInit, a null ctrl can be passed.
  648.  */
  649.    SOM_ResolveD(this,SOMOA,SOMObject,somDestruct)
  650.     (this,doFree,ctrl);
  651. }
  652.  
  653.  
  654. /* initializer method: somDefaultCopyInit */
  655. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  656.         SOMObject* fromObj)
  657. {
  658. /*
  659.  *  A default copy constructor. Use this to make copies of objects for
  660.  *  calling methods with "by-value" argument semantics.
  661.  */
  662.    SOM_ResolveD(this,SOMOA,SOMObject,somDefaultCopyInit)
  663.     (this,ctrl,fromObj);
  664. }
  665.  
  666.  
  667. /* method: somDefaultAssign */
  668. SOMOA*  somDefaultAssign(som3AssignCtrl* ctrl, 
  669.         SOMObject* fromObj)
  670. {
  671. /*
  672.  *  A default assignment operator. Use this to "assign" the state of one
  673.  *  object to another.
  674.  */
  675.    return SOM_ResolveD(this,SOMOA,SOMObject,somDefaultAssign)
  676.     (this,ctrl,fromObj);
  677. }
  678.  
  679.  
  680. /* initializer method: somDefaultConstCopyInit */
  681. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  682.         SOMObject* fromObj)
  683. {
  684. /*
  685.  *  A default copy constructor that uses a const fromObj.
  686.  */
  687.    SOM_ResolveD(this,SOMOA,SOMObject,somDefaultConstCopyInit)
  688.     (this,ctrl,fromObj);
  689. }
  690.  
  691.  
  692. /* initializer method: somDefaultVCopyInit */
  693. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  694.         SOMObject* fromObj)
  695. {
  696. /*
  697.  *  A default copy constructor that uses a volatile fromObj.
  698.  */
  699.    SOM_ResolveD(this,SOMOA,SOMObject,somDefaultVCopyInit)
  700.     (this,ctrl,fromObj);
  701. }
  702.  
  703.  
  704. /* initializer method: somDefaultConstVCopyInit */
  705. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  706.         SOMObject* fromObj)
  707. {
  708. /*
  709.  *  A default copy constructor that uses a const volatile fromObj.
  710.  */
  711.    SOM_ResolveD(this,SOMOA,SOMObject,somDefaultConstVCopyInit)
  712.     (this,ctrl,fromObj);
  713. }
  714.  
  715.  
  716. /* method: somDefaultConstAssign */
  717. SOMOA*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  718.         SOMObject* fromObj)
  719. {
  720. /*
  721.  *  A default assignment operator that uses a const fromObj.
  722.  */
  723.    return SOM_ResolveD(this,SOMOA,SOMObject,somDefaultConstAssign)
  724.     (this,ctrl,fromObj);
  725. }
  726.  
  727.  
  728. /* method: somDefaultVAssign */
  729. SOMOA*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  730.         SOMObject* fromObj)
  731. {
  732. /*
  733.  *  A default assignment operator that uses a volatile fromObj.
  734.  */
  735.    return SOM_ResolveD(this,SOMOA,SOMObject,somDefaultVAssign)
  736.     (this,ctrl,fromObj);
  737. }
  738.  
  739.  
  740. /* method: somDefaultConstVAssign */
  741. SOMOA*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  742.         SOMObject* fromObj)
  743. {
  744. /*
  745.  *  A default assignment operator that uses a const volatile fromObj.
  746.  */
  747.    return SOM_ResolveD(this,SOMOA,SOMObject,somDefaultConstVAssign)
  748.     (this,ctrl,fromObj);
  749. }
  750.  
  751.  
  752. /* method: somInit */
  753. void   somInit()
  754. {
  755. /*
  756.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  757.  */
  758.    SOM_ResolveD(this,SOMOA,SOMObject,somInit)
  759.     (this);
  760. }
  761.  
  762.  
  763. /* method: somFree */
  764. void   somFree()
  765. {
  766. /*
  767.  *  Use as directed by framework implementations.
  768.  */
  769.    SOM_ResolveD(this,SOMOA,SOMObject,somFree)
  770.     (this);
  771. }
  772.  
  773.  
  774. /* method: somUninit */
  775. void   somUninit()
  776. {
  777. /*
  778.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  779.  */
  780.    SOM_ResolveD(this,SOMOA,SOMObject,somUninit)
  781.     (this);
  782. }
  783.  
  784.  
  785. /* method: somGetClass */
  786. SOMClass*   somGetClass()
  787. {
  788. /*
  789.  *  Return the receiver's class.
  790.  */
  791.    return SOM_ResolveD(this,SOMOA,SOMObject,somGetClass)
  792.     (this);
  793. }
  794.  
  795.  
  796. /* method: somGetClassName */
  797. string   somGetClassName()
  798. {
  799. /*
  800.  *  Return the name of the receiver's class.
  801.  */
  802.    return SOM_ResolveD(this,SOMOA,SOMObject,somGetClassName)
  803.     (this);
  804. }
  805.  
  806.  
  807. /* method: somGetSize */
  808. long   somGetSize()
  809. {
  810. /*
  811.  *  Return the size of the receiver.
  812.  */
  813.    return SOM_ResolveD(this,SOMOA,SOMObject,somGetSize)
  814.     (this);
  815. }
  816.  
  817.  
  818. /* method: somIsA */
  819. boolean   somIsA(SOMClass* aClassObj)
  820. {
  821. /*
  822.  *  Returns 1 (true) if the receiver responds to methods
  823.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  824.  */
  825.    return SOM_ResolveD(this,SOMOA,SOMObject,somIsA)
  826.     (this,aClassObj);
  827. }
  828.  
  829.  
  830. /* method: somIsInstanceOf */
  831. boolean   somIsInstanceOf(SOMClass* aClassObj)
  832. {
  833. /*
  834.  *  Returns 1 (true) if the receiver is an instance of
  835.  *  <aClassObj> and 0 (false) otherwise.
  836.  */
  837.    return SOM_ResolveD(this,SOMOA,SOMObject,somIsInstanceOf)
  838.     (this,aClassObj);
  839. }
  840.  
  841.  
  842. /* method: somRespondsTo */
  843. boolean   somRespondsTo(somId mId)
  844. {
  845. /*
  846.  *  Returns 1 (true) if the indicated method can be invoked
  847.  *  on the receiver and 0 (false) otherwise.
  848.  */
  849.    return SOM_ResolveD(this,SOMOA,SOMObject,somRespondsTo)
  850.     (this,mId);
  851. }
  852.  
  853.  
  854. /* va_list method: somDispatch */
  855.  
  856. /*
  857.  *  This method provides a generic, class-specific dispatch mechanism.
  858.  *  It accepts as input <retValue> a pointer to the memory area to be
  859.  *  loaded with the result of dispatching the method indicated by
  860.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  861.  *  on which the method is to be invoked as the first argument.
  862.  */
  863. /* the va_list invocation form */
  864. boolean   SOMOA_somDispatch(somToken* retValue, 
  865.         somId methodId, 
  866.         va_list ap)
  867. {return SOM_ResolveD(this,SOMOA,SOMObject,somDispatch)
  868.     (this,retValue,methodId,ap);
  869. }
  870.  
  871. /* the varargs invocation form */
  872. boolean   somDispatch(somToken* retValue, 
  873.         somId methodId, 
  874.         ...)
  875. {
  876. /*
  877.  *  This method provides a generic, class-specific dispatch mechanism.
  878.  *  It accepts as input <retValue> a pointer to the memory area to be
  879.  *  loaded with the result of dispatching the method indicated by
  880.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  881.  *  on which the method is to be invoked as the first argument.
  882.  */
  883.    va_list ap;
  884.    va_start(ap, methodId);
  885.    boolean __somResult = 
  886.       SOM_ResolveD(this,SOMOA,SOMObject,somDispatch)
  887.     (this,retValue,methodId,ap);
  888.    va_end(ap);
  889.    return __somResult;
  890. }
  891.  
  892.  
  893. /* va_list method: somClassDispatch */
  894.  
  895. /*
  896.  *  Like somDispatch, but method resolution for static methods is done
  897.  *  according to the clsObj instance method table.
  898.  */
  899. /* the va_list invocation form */
  900. boolean   SOMOA_somClassDispatch(SOMClass* clsObj, 
  901.         somToken* retValue, 
  902.         somId methodId, 
  903.         va_list ap)
  904. {return SOM_ResolveD(this,SOMOA,SOMObject,somClassDispatch)
  905.     (this,clsObj,retValue,methodId,ap);
  906. }
  907.  
  908. /* the varargs invocation form */
  909. boolean   somClassDispatch(SOMClass* clsObj, 
  910.         somToken* retValue, 
  911.         somId methodId, 
  912.         ...)
  913. {
  914. /*
  915.  *  Like somDispatch, but method resolution for static methods is done
  916.  *  according to the clsObj instance method table.
  917.  */
  918.    va_list ap;
  919.    va_start(ap, methodId);
  920.    boolean __somResult = 
  921.       SOM_ResolveD(this,SOMOA,SOMObject,somClassDispatch)
  922.     (this,clsObj,retValue,methodId,ap);
  923.    va_end(ap);
  924.    return __somResult;
  925. }
  926.  
  927.  
  928. /* method: somCastObj */
  929. boolean   somCastObj(SOMClass* cls)
  930. {
  931. /*
  932.  *  cast the receiving object to cls (which must be an ancestor of the
  933.  *  objects true class. Returns true on success.
  934.  */
  935.    return SOM_ResolveD(this,SOMOA,SOMObject,somCastObj)
  936.     (this,cls);
  937. }
  938.  
  939.  
  940. /* method: somResetObj */
  941. boolean   somResetObj()
  942. {
  943. /*
  944.  *  reset an object to its true class. Returns true always.
  945.  */
  946.    return SOM_ResolveD(this,SOMOA,SOMObject,somResetObj)
  947.     (this);
  948. }
  949.  
  950.  
  951. /* va_list method: somDispatchV */
  952.  
  953. /*
  954.  *  Obsolete. Use somDispatch instead.
  955.  */
  956. /* the va_list invocation form */
  957. void   SOMOA_somDispatchV(somId methodId, 
  958.         somId descriptor, 
  959.         va_list ap)
  960. {   SOM_ResolveD(this,SOMOA,SOMObject,somDispatchV)
  961.     (this,methodId,descriptor,ap);
  962. }
  963.  
  964. /* the varargs invocation form */
  965. void   somDispatchV(somId methodId, 
  966.         somId descriptor, 
  967.         ...)
  968. {
  969. /*
  970.  *  Obsolete. Use somDispatch instead.
  971.  */
  972.    va_list ap;
  973.    va_start(ap, descriptor);
  974.    SOM_ResolveD(this,SOMOA,SOMObject,somDispatchV)
  975.     (this,methodId,descriptor,ap);
  976.    va_end(ap);
  977. }
  978.  
  979.  
  980. /* va_list method: somDispatchL */
  981.  
  982. /*
  983.  *  Obsolete. Use somDispatch instead.
  984.  */
  985. /* the va_list invocation form */
  986. long   SOMOA_somDispatchL(somId methodId, 
  987.         somId descriptor, 
  988.         va_list ap)
  989. {return SOM_ResolveD(this,SOMOA,SOMObject,somDispatchL)
  990.     (this,methodId,descriptor,ap);
  991. }
  992.  
  993. /* the varargs invocation form */
  994. long   somDispatchL(somId methodId, 
  995.         somId descriptor, 
  996.         ...)
  997. {
  998. /*
  999.  *  Obsolete. Use somDispatch instead.
  1000.  */
  1001.    va_list ap;
  1002.    va_start(ap, descriptor);
  1003.    long __somResult = 
  1004.       SOM_ResolveD(this,SOMOA,SOMObject,somDispatchL)
  1005.     (this,methodId,descriptor,ap);
  1006.    va_end(ap);
  1007.    return __somResult;
  1008. }
  1009.  
  1010.  
  1011. /* va_list method: somDispatchA */
  1012.  
  1013. /*
  1014.  *  Obsolete. Use somDispatch instead.
  1015.  */
  1016. /* the va_list invocation form */
  1017. void*   SOMOA_somDispatchA(somId methodId, 
  1018.         somId descriptor, 
  1019.         va_list ap)
  1020. {return SOM_ResolveD(this,SOMOA,SOMObject,somDispatchA)
  1021.     (this,methodId,descriptor,ap);
  1022. }
  1023.  
  1024. /* the varargs invocation form */
  1025. void*   somDispatchA(somId methodId, 
  1026.         somId descriptor, 
  1027.         ...)
  1028. {
  1029. /*
  1030.  *  Obsolete. Use somDispatch instead.
  1031.  */
  1032.    va_list ap;
  1033.    va_start(ap, descriptor);
  1034.    void* __somResult = 
  1035.       SOM_ResolveD(this,SOMOA,SOMObject,somDispatchA)
  1036.     (this,methodId,descriptor,ap);
  1037.    va_end(ap);
  1038.    return __somResult;
  1039. }
  1040.  
  1041.  
  1042. /* va_list method: somDispatchD */
  1043.  
  1044. /*
  1045.  *  Obsolete. Use somDispatch instead.
  1046.  */
  1047. /* the va_list invocation form */
  1048. double   SOMOA_somDispatchD(somId methodId, 
  1049.         somId descriptor, 
  1050.         va_list ap)
  1051. {return SOM_ResolveD(this,SOMOA,SOMObject,somDispatchD)
  1052.     (this,methodId,descriptor,ap);
  1053. }
  1054.  
  1055. /* the varargs invocation form */
  1056. double   somDispatchD(somId methodId, 
  1057.         somId descriptor, 
  1058.         ...)
  1059. {
  1060. /*
  1061.  *  Obsolete. Use somDispatch instead.
  1062.  */
  1063.    va_list ap;
  1064.    va_start(ap, descriptor);
  1065.    double __somResult = 
  1066.       SOM_ResolveD(this,SOMOA,SOMObject,somDispatchD)
  1067.     (this,methodId,descriptor,ap);
  1068.    va_end(ap);
  1069.    return __somResult;
  1070. }
  1071.  
  1072.  
  1073. /* method: somPrintSelf */
  1074. SOMObject*   somPrintSelf()
  1075. {
  1076. /*
  1077.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  1078.  *  information about this object.  The default implementation just gives
  1079.  *  the object's class name and its address in memory.
  1080.  *  <self> is returned.
  1081.  */
  1082.    return SOM_ResolveD(this,SOMOA,SOMObject,somPrintSelf)
  1083.     (this);
  1084. }
  1085.  
  1086.  
  1087. /* method: somDumpSelf */
  1088. void   somDumpSelf(long level)
  1089. {
  1090. /*
  1091.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  1092.  *  and its current state.
  1093.  * 
  1094.  *  <level> indicates the nesting level for describing compound objects
  1095.  *  it must be greater than or equal to zero.  All lines in the
  1096.  *  description will be preceeded by <2*level> spaces.
  1097.  * 
  1098.  *  This routine only actually writes the data that concerns the object
  1099.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  1100.  *  the object's current state.  This approach allows readable
  1101.  *  descriptions of compound objects to be constructed.
  1102.  * 
  1103.  *  Generally it is not necessary to override this method, if it is
  1104.  *  overriden it generally must be completely replaced.
  1105.  */
  1106.    SOM_ResolveD(this,SOMOA,SOMObject,somDumpSelf)
  1107.     (this,level);
  1108. }
  1109.  
  1110.  
  1111. /* method: somDumpSelfInt */
  1112. void   somDumpSelfInt(long level)
  1113. {
  1114. /*
  1115.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  1116.  *  Generally this method will need to be overridden.  When overriding
  1117.  *  it, begin by calling the parent class form of this method and then
  1118.  *  write in a description of your class's instance data. This will
  1119.  *  result in a description of all the object's instance data going
  1120.  *  from its root ancestor class to its specific class.
  1121.  */
  1122.    SOM_ResolveD(this,SOMOA,SOMObject,somDumpSelfInt)
  1123.     (this,level);
  1124. }
  1125.  
  1126.  
  1127.  
  1128. };   /* SOMOA */
  1129.  
  1130.  
  1131.  
  1132. #endif       /* SOM_SOMOA_xh */
  1133.