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

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: somdcprx.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emitxh: 2.47
  8.  */
  9.  
  10. /*
  11.  *    This is the class that implements DSOM proxy objects in clients.
  12.  * 
  13.  *    This class is a subclass of SOMDObject.  It inherits the basic behavior
  14.  *    (methods) of a CORBA object reference from that parent class.
  15.  *    Thus, it "is a" SOMDObject.
  16.  * 
  17.  *    This class overrides the usual somDispatch methods with versions
  18.  *    that build a DSOM Request for the invocation and dispatch it, remotely.
  19.  *    It is intended that the implementation of this "generic" proxy class
  20.  *    will be used to derive specific proxy classes via multiple inheritance.
  21.  *    The new dispatch method is inherited from this client proxy class, while
  22.  *    the desired interface--and language bindings--are inherited from the
  23.  *    target class (but no implementation).
  24.  * 
  25.  *    E.g.,
  26.  *           SOMDClientProxy      Animal
  27.  *                     \           /
  28.  *                      \         / (interface only)
  29.  *                       \       /
  30.  *                    Animal__Proxy
  31.  * 
  32.  *    Note that SOMDClientProxy is an instance of SOMDMetaProxy.
  33.  */
  34.  
  35.  
  36. #ifndef SOM_SOMDClientProxy_xh
  37. #define SOM_SOMDClientProxy_xh
  38.  
  39. class SOMDClientProxy;
  40.  
  41. /*
  42.  *  To aid in distribution transparency, the following SOMObject methods
  43.  *  are FORWARDED to the remote object:
  44.  *      somFree
  45.  *      somGetClass
  46.  *      somGetClassName
  47.  *      somDestruct    (unless the remote connection is no longer valid)
  48.  *      somDefaultInit (when the proxy has already been initialized)
  49.  *      all assignment operator and copy constructor methods
  50.  *         (requires that the "fromObj" parameter also be a proxy
  51.  *          that refers to an object in the same address space.
  52.  * 
  53.  *  The following additional methods are provided to explicitly direct
  54.  *  method calls to the local proxy or to the remote object.
  55.  */
  56.  
  57. #define SOMDClientProxy_MajorVersion 2
  58. #define SOMDClientProxy_MinorVersion 1
  59.  
  60. /* C++ SOM defs */
  61. #include <somcls.xh>
  62. #include <somcm.xh>
  63.  
  64. /* C++ parent defs */
  65. #ifndef SOM_SOMDObject_xh
  66. #include <somdobj.xh>
  67. #endif
  68.  
  69. #ifndef SOMDClientProxy_API
  70. #define SOMDClientProxy_API
  71. /*
  72.  * -- The Class API
  73.  */
  74.  
  75. /*
  76.  * Start of bindings for IDL types
  77.  */
  78.  
  79. class SOMClass;
  80. class SOMObject;
  81. class Container;
  82. class ImplementationDef;
  83. class InterfaceDef;
  84. class NVList;
  85. class Context;
  86. class Request;
  87. class CommBinding;
  88. class somdMemoryMgr;
  89.  
  90. /*
  91.  * End of bindings for IDL types.
  92.  */
  93.  
  94. /* A procedure to create the SOMDClientProxy Class */
  95. SOMEXTERN SOMClass * SOMLINK SOMDClientProxyNewClass(
  96.         integer4 majorVersion,
  97.         integer4 minorVersion);
  98.  
  99. /* The API to the SOMDClientProxy class object, and the methods it introduces. */
  100. SOMEXTERN struct SOMDClientProxyClassDataStructure {
  101.     SOMClass *classObject;
  102.     somMToken somdTargetFree;
  103.     somMToken somdTargetGetClass;
  104.     somMToken somdTargetGetClassName;
  105.     somMToken somdProxyFree;
  106.     somMToken somdProxyGetClass;
  107.     somMToken somdProxyGetClassName;
  108.     somMToken set_binding;
  109.     somMToken get_binding;
  110.     somMToken reset_binding;
  111.     somMToken _get_ctx_seq;
  112.     somMToken _set_ctx_seq;
  113.     somMToken somdReleaseResources;
  114.     somMToken _get_memoryMgr;
  115. } SOMDLINK SOMDClientProxyClassData;
  116. #define _SOMDClientProxy SOMDClientProxyClassData.classObject
  117.  
  118. /* The API to parentMtabs for SOMDClientProxy, and the instance data it introduces. */
  119. SOMEXTERN struct SOMDClientProxyCClassDataStructure {
  120.     somMethodTabs parentMtab;
  121.     somDToken              instanceDataToken;
  122. } SOMDLINK SOMDClientProxyCClassData;
  123.  
  124. /*
  125.  * -- Typedefs for SOMDClientProxy Method Procedures
  126.  */
  127. SOMEXTERN {
  128. typedef void   SOMLINK somTP_SOMDClientProxy_somdTargetFree(SOMDClientProxy *somSelf, Environment *ev);
  129. typedef somTP_SOMDClientProxy_somdTargetFree *somTD_SOMDClientProxy_somdTargetFree;
  130. typedef SOMClass*   SOMLINK somTP_SOMDClientProxy_somdTargetGetClass(SOMDClientProxy *somSelf, Environment *ev);
  131. typedef somTP_SOMDClientProxy_somdTargetGetClass *somTD_SOMDClientProxy_somdTargetGetClass;
  132. typedef string   SOMLINK somTP_SOMDClientProxy_somdTargetGetClassName(SOMDClientProxy *somSelf, Environment *ev);
  133. typedef somTP_SOMDClientProxy_somdTargetGetClassName *somTD_SOMDClientProxy_somdTargetGetClassName;
  134. typedef void   SOMLINK somTP_SOMDClientProxy_somdProxyFree(SOMDClientProxy *somSelf, Environment *ev);
  135. typedef somTP_SOMDClientProxy_somdProxyFree *somTD_SOMDClientProxy_somdProxyFree;
  136. typedef SOMClass*   SOMLINK somTP_SOMDClientProxy_somdProxyGetClass(SOMDClientProxy *somSelf, Environment *ev);
  137. typedef somTP_SOMDClientProxy_somdProxyGetClass *somTD_SOMDClientProxy_somdProxyGetClass;
  138. typedef string   SOMLINK somTP_SOMDClientProxy_somdProxyGetClassName(SOMDClientProxy *somSelf, Environment *ev);
  139. typedef somTP_SOMDClientProxy_somdProxyGetClassName *somTD_SOMDClientProxy_somdProxyGetClassName;
  140. typedef void   SOMLINK somTP_SOMDClientProxy_somdReleaseResources(SOMDClientProxy *somSelf, Environment *ev);
  141. typedef somTP_SOMDClientProxy_somdReleaseResources *somTD_SOMDClientProxy_somdReleaseResources;
  142.  
  143. /*
  144.  * -- Typedefs for Reintroduced Wrapper Methods
  145.  */
  146. typedef ImplementationDef*   SOMLINK somTP_SOMDClientProxy_get_implementation(SOMDClientProxy *somSelf, Environment *ev);
  147. typedef somTP_SOMDClientProxy_get_implementation *somTD_SOMDClientProxy_get_implementation;
  148. typedef InterfaceDef*   SOMLINK somTP_SOMDClientProxy_get_interface(SOMDClientProxy *somSelf, Environment *ev);
  149. typedef somTP_SOMDClientProxy_get_interface *somTD_SOMDClientProxy_get_interface;
  150. typedef boolean   SOMLINK somTP_SOMDClientProxy_is_nil(SOMDClientProxy *somSelf, Environment *ev);
  151. typedef somTP_SOMDClientProxy_is_nil *somTD_SOMDClientProxy_is_nil;
  152. typedef boolean   SOMLINK somTP_SOMDClientProxy_is_SOM_ref(SOMDClientProxy *somSelf, Environment *ev);
  153. typedef somTP_SOMDClientProxy_is_SOM_ref *somTD_SOMDClientProxy_is_SOM_ref;
  154. typedef boolean   SOMLINK somTP_SOMDClientProxy_is_constant(SOMDClientProxy *somSelf, Environment *ev);
  155. typedef somTP_SOMDClientProxy_is_constant *somTD_SOMDClientProxy_is_constant;
  156. typedef boolean   SOMLINK somTP_SOMDClientProxy_is_proxy(SOMDClientProxy *somSelf, Environment *ev);
  157. typedef somTP_SOMDClientProxy_is_proxy *somTD_SOMDClientProxy_is_proxy;
  158. typedef SOMDObject*   SOMLINK somTP_SOMDClientProxy_duplicate(SOMDClientProxy *somSelf, Environment *ev);
  159. typedef somTP_SOMDClientProxy_duplicate *somTD_SOMDClientProxy_duplicate;
  160. typedef void   SOMLINK somTP_SOMDClientProxy_release(SOMDClientProxy *somSelf, Environment *ev);
  161. typedef somTP_SOMDClientProxy_release *somTD_SOMDClientProxy_release;
  162. typedef ORBStatus   SOMLINK somTP_SOMDClientProxy_create_request(SOMDClientProxy *somSelf, Environment *ev, 
  163.         Context* ctx, 
  164.         Identifier operation, 
  165.         NVList* arg_list, 
  166.         NamedValue* result, 
  167.         Request** request, 
  168.         Flags req_flags);
  169. typedef somTP_SOMDClientProxy_create_request *somTD_SOMDClientProxy_create_request;
  170. typedef ORBStatus   SOMLINK somTP_SOMDClientProxy_create_request_args(SOMDClientProxy *somSelf, Environment *ev, 
  171.         Identifier operation, 
  172.         NVList** arg_list, 
  173.         NamedValue* result);
  174. typedef somTP_SOMDClientProxy_create_request_args *somTD_SOMDClientProxy_create_request_args;
  175. typedef void   SOMLINK somTP_SOMDClientProxy_somDefaultInit(SOMDClientProxy *somSelf, 
  176.         som3InitCtrl* ctrl);
  177. typedef somTP_SOMDClientProxy_somDefaultInit *somTD_SOMDClientProxy_somDefaultInit;
  178. typedef void   SOMLINK somTP_SOMDClientProxy_somDestruct(SOMDClientProxy *somSelf, 
  179.         octet doFree, 
  180.         som3DestructCtrl* ctrl);
  181. typedef somTP_SOMDClientProxy_somDestruct *somTD_SOMDClientProxy_somDestruct;
  182. typedef void   SOMLINK somTP_SOMDClientProxy_somDumpSelfInt(SOMDClientProxy *somSelf, 
  183.         long level);
  184. typedef somTP_SOMDClientProxy_somDumpSelfInt *somTD_SOMDClientProxy_somDumpSelfInt;
  185. typedef void   SOMLINK somTP_SOMDClientProxy_somDefaultCopyInit(SOMDClientProxy *somSelf, 
  186.         som3InitCtrl* ctrl, 
  187.         SOMObject* fromObj);
  188. typedef somTP_SOMDClientProxy_somDefaultCopyInit *somTD_SOMDClientProxy_somDefaultCopyInit;
  189. typedef SOMDClientProxy*   SOMLINK somTP_SOMDClientProxy_somDefaultAssign(SOMDClientProxy *somSelf, 
  190.         som3AssignCtrl* ctrl, 
  191.         SOMObject* fromObj);
  192. typedef somTP_SOMDClientProxy_somDefaultAssign *somTD_SOMDClientProxy_somDefaultAssign;
  193. typedef void   SOMLINK somTP_SOMDClientProxy_somDefaultConstCopyInit(SOMDClientProxy *somSelf, 
  194.         som3InitCtrl* ctrl, 
  195.         SOMObject* fromObj);
  196. typedef somTP_SOMDClientProxy_somDefaultConstCopyInit *somTD_SOMDClientProxy_somDefaultConstCopyInit;
  197. typedef void   SOMLINK somTP_SOMDClientProxy_somDefaultVCopyInit(SOMDClientProxy *somSelf, 
  198.         som3InitCtrl* ctrl, 
  199.         SOMObject* fromObj);
  200. typedef somTP_SOMDClientProxy_somDefaultVCopyInit *somTD_SOMDClientProxy_somDefaultVCopyInit;
  201. typedef void   SOMLINK somTP_SOMDClientProxy_somDefaultConstVCopyInit(SOMDClientProxy *somSelf, 
  202.         som3InitCtrl* ctrl, 
  203.         SOMObject* fromObj);
  204. typedef somTP_SOMDClientProxy_somDefaultConstVCopyInit *somTD_SOMDClientProxy_somDefaultConstVCopyInit;
  205. typedef SOMDClientProxy*   SOMLINK somTP_SOMDClientProxy_somDefaultConstAssign(SOMDClientProxy *somSelf, 
  206.         som3AssignCtrl* ctrl, 
  207.         SOMObject* fromObj);
  208. typedef somTP_SOMDClientProxy_somDefaultConstAssign *somTD_SOMDClientProxy_somDefaultConstAssign;
  209. typedef SOMDClientProxy*   SOMLINK somTP_SOMDClientProxy_somDefaultVAssign(SOMDClientProxy *somSelf, 
  210.         som3AssignCtrl* ctrl, 
  211.         SOMObject* fromObj);
  212. typedef somTP_SOMDClientProxy_somDefaultVAssign *somTD_SOMDClientProxy_somDefaultVAssign;
  213. typedef SOMDClientProxy*   SOMLINK somTP_SOMDClientProxy_somDefaultConstVAssign(SOMDClientProxy *somSelf, 
  214.         som3AssignCtrl* ctrl, 
  215.         SOMObject* fromObj);
  216. typedef somTP_SOMDClientProxy_somDefaultConstVAssign *somTD_SOMDClientProxy_somDefaultConstVAssign;
  217. typedef void   SOMLINK somTP_SOMDClientProxy_somInit(SOMDClientProxy *somSelf);
  218. typedef somTP_SOMDClientProxy_somInit *somTD_SOMDClientProxy_somInit;
  219. typedef void   SOMLINK somTP_SOMDClientProxy_somFree(SOMDClientProxy *somSelf);
  220. typedef somTP_SOMDClientProxy_somFree *somTD_SOMDClientProxy_somFree;
  221. typedef void   SOMLINK somTP_SOMDClientProxy_somUninit(SOMDClientProxy *somSelf);
  222. typedef somTP_SOMDClientProxy_somUninit *somTD_SOMDClientProxy_somUninit;
  223. typedef SOMClass*   SOMLINK somTP_SOMDClientProxy_somGetClass(SOMDClientProxy *somSelf);
  224. typedef somTP_SOMDClientProxy_somGetClass *somTD_SOMDClientProxy_somGetClass;
  225. typedef string   SOMLINK somTP_SOMDClientProxy_somGetClassName(SOMDClientProxy *somSelf);
  226. typedef somTP_SOMDClientProxy_somGetClassName *somTD_SOMDClientProxy_somGetClassName;
  227. typedef long   SOMLINK somTP_SOMDClientProxy_somGetSize(SOMDClientProxy *somSelf);
  228. typedef somTP_SOMDClientProxy_somGetSize *somTD_SOMDClientProxy_somGetSize;
  229. typedef boolean   SOMLINK somTP_SOMDClientProxy_somIsA(SOMDClientProxy *somSelf, 
  230.         SOMClass* aClassObj);
  231. typedef somTP_SOMDClientProxy_somIsA *somTD_SOMDClientProxy_somIsA;
  232. typedef boolean   SOMLINK somTP_SOMDClientProxy_somIsInstanceOf(SOMDClientProxy *somSelf, 
  233.         SOMClass* aClassObj);
  234. typedef somTP_SOMDClientProxy_somIsInstanceOf *somTD_SOMDClientProxy_somIsInstanceOf;
  235. typedef boolean   SOMLINK somTP_SOMDClientProxy_somRespondsTo(SOMDClientProxy *somSelf, 
  236.         somId mId);
  237. typedef somTP_SOMDClientProxy_somRespondsTo *somTD_SOMDClientProxy_somRespondsTo;
  238. typedef boolean   SOMLINK somTP_SOMDClientProxy_somDispatch(SOMDClientProxy *somSelf, 
  239.         somToken* retValue, 
  240.         somId methodId, 
  241.         va_list ap);
  242. typedef somTP_SOMDClientProxy_somDispatch *somTD_SOMDClientProxy_somDispatch;
  243. typedef boolean   SOMLINK somTP_SOMDClientProxy_somClassDispatch(SOMDClientProxy *somSelf, 
  244.         SOMClass* clsObj, 
  245.         somToken* retValue, 
  246.         somId methodId, 
  247.         va_list ap);
  248. typedef somTP_SOMDClientProxy_somClassDispatch *somTD_SOMDClientProxy_somClassDispatch;
  249. typedef boolean   SOMLINK somTP_SOMDClientProxy_somCastObj(SOMDClientProxy *somSelf, 
  250.         SOMClass* cls);
  251. typedef somTP_SOMDClientProxy_somCastObj *somTD_SOMDClientProxy_somCastObj;
  252. typedef boolean   SOMLINK somTP_SOMDClientProxy_somResetObj(SOMDClientProxy *somSelf);
  253. typedef somTP_SOMDClientProxy_somResetObj *somTD_SOMDClientProxy_somResetObj;
  254. typedef void   SOMLINK somTP_SOMDClientProxy_somDispatchV(SOMDClientProxy *somSelf, 
  255.         somId methodId, 
  256.         somId descriptor, 
  257.         va_list ap);
  258. typedef somTP_SOMDClientProxy_somDispatchV *somTD_SOMDClientProxy_somDispatchV;
  259. typedef long   SOMLINK somTP_SOMDClientProxy_somDispatchL(SOMDClientProxy *somSelf, 
  260.         somId methodId, 
  261.         somId descriptor, 
  262.         va_list ap);
  263. typedef somTP_SOMDClientProxy_somDispatchL *somTD_SOMDClientProxy_somDispatchL;
  264. typedef void*   SOMLINK somTP_SOMDClientProxy_somDispatchA(SOMDClientProxy *somSelf, 
  265.         somId methodId, 
  266.         somId descriptor, 
  267.         va_list ap);
  268. typedef somTP_SOMDClientProxy_somDispatchA *somTD_SOMDClientProxy_somDispatchA;
  269. typedef double   SOMLINK somTP_SOMDClientProxy_somDispatchD(SOMDClientProxy *somSelf, 
  270.         somId methodId, 
  271.         somId descriptor, 
  272.         va_list ap);
  273. typedef somTP_SOMDClientProxy_somDispatchD *somTD_SOMDClientProxy_somDispatchD;
  274. typedef SOMObject*   SOMLINK somTP_SOMDClientProxy_somPrintSelf(SOMDClientProxy *somSelf);
  275. typedef somTP_SOMDClientProxy_somPrintSelf *somTD_SOMDClientProxy_somPrintSelf;
  276. typedef void   SOMLINK somTP_SOMDClientProxy_somDumpSelf(SOMDClientProxy *somSelf, 
  277.         long level);
  278. typedef somTP_SOMDClientProxy_somDumpSelf *somTD_SOMDClientProxy_somDumpSelf;
  279. }
  280.  
  281. #endif /* SOMDClientProxy_API */
  282.  
  283.  
  284. /*
  285.  * -- This emitter treats Method Tokens as Thunks by default.
  286.  * -- Use the sc modifier "nothunks" to change this default
  287.  */
  288. #undef somresolve_
  289. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  290.  
  291. /*
  292.  * -- The C++ Wrapper Class for SOMDClientProxy
  293.  */
  294. class SOMDClientProxy : public SOMDObject
  295. {
  296. /*
  297.  *  To aid in distribution transparency, the following SOMObject methods
  298.  *  are FORWARDED to the remote object:
  299.  *      somFree
  300.  *      somGetClass
  301.  *      somGetClassName
  302.  *      somDestruct    (unless the remote connection is no longer valid)
  303.  *      somDefaultInit (when the proxy has already been initialized)
  304.  *      all assignment operator and copy constructor methods
  305.  *         (requires that the "fromObj" parameter also be a proxy
  306.  *          that refers to an object in the same address space.
  307.  * 
  308.  *  The following additional methods are provided to explicitly direct
  309.  *  method calls to the local proxy or to the remote object.
  310.  */
  311. public:
  312.  
  313. // SOMDClientProxy::new creates the class object if necessary, and then uses somNewNoInit
  314. // to allocate memory and create the object. Initialization is in ctors.
  315. void *operator new(size_t)
  316. {
  317.    if (!_SOMDClientProxy) SOMDClientProxyNewClass(SOMDClientProxy_MajorVersion,SOMDClientProxy_MinorVersion);
  318.    return (void*)
  319.       SOM_Resolve(_SOMDClientProxy,SOMClass,somNewNoInit)
  320.          ((SOMClass *)((void*)_SOMDClientProxy));
  321. }
  322.  
  323. // SOMDClientProxy::delete uses somDestruct.
  324. void operator delete(void * obj)
  325. {
  326.    if (obj && *(void**)obj) {
  327.       SOM_Resolve(obj,SOMObject,somFree)
  328.          ((SOMObject*)obj);
  329.    }
  330. }
  331.  
  332. SOMDClientProxy& operator=(SOMDClientProxy& fromObj)
  333. {
  334.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  335.    return *this;
  336. }
  337.  
  338. SOMDClientProxy()
  339. {
  340.    if (*(void**)this != 
  341.        ((somParentMtabStructPtr)
  342.         (SOMDClientProxyCClassData.parentMtab))->mtab)
  343.       return;
  344.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  345. }
  346.  
  347. SOMDClientProxy(SOMDClientProxy* fromObj)
  348. {
  349.    if (*(void**)this != 
  350.        ((somParentMtabStructPtr)
  351.         (SOMDClientProxyCClassData.parentMtab))->mtab)
  352.       return;
  353.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  354. }
  355.  
  356. #ifdef __IBMCPP__
  357. #pragma info(nocnv,nopar)
  358. #endif
  359. SOMDClientProxy(const SOMDClientProxy* fromObj)
  360. {
  361.    if (*(void**)this != 
  362.        ((somParentMtabStructPtr)
  363.         (SOMDClientProxyCClassData.parentMtab))->mtab)
  364.       return;
  365.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  366. }
  367. #ifdef __IBMCPP__
  368. #pragma info(restore)
  369. #endif
  370.  
  371.  
  372. /* method: somdTargetFree */
  373. void   somdTargetFree(Environment *ev)
  374. {
  375. /*
  376.  *  Forwards _somFree method call to the remote target object.
  377.  */
  378.    SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdTargetFree)
  379.     (this, ev);
  380. }
  381.  
  382.  
  383. /* method: somdTargetGetClass */
  384. SOMClass*   somdTargetGetClass(Environment *ev)
  385. {
  386. /*
  387.  *  Forwards _somGetClass method call to the remote target object.
  388.  */
  389.    return SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdTargetGetClass)
  390.     (this, ev);
  391. }
  392.  
  393.  
  394. /* method: somdTargetGetClassName */
  395. string   somdTargetGetClassName(Environment *ev)
  396. {
  397. /*
  398.  *  Forwards _somGetClassName method call to the remote target object.
  399.  */
  400.    return SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdTargetGetClassName)
  401.     (this, ev);
  402. }
  403.  
  404.  
  405. /* method: somdProxyFree */
  406. void   somdProxyFree(Environment *ev)
  407. {
  408. /*
  409.  *  Performs _somFree method call on the local proxy object.
  410.  */
  411.    SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdProxyFree)
  412.     (this, ev);
  413. }
  414.  
  415.  
  416. /* method: somdProxyGetClass */
  417. SOMClass*   somdProxyGetClass(Environment *ev)
  418. {
  419. /*
  420.  *  Performs _somGetClass method call on the local proxy object.
  421.  */
  422.    return SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdProxyGetClass)
  423.     (this, ev);
  424. }
  425.  
  426.  
  427. /* method: somdProxyGetClassName */
  428. string   somdProxyGetClassName(Environment *ev)
  429. {
  430. /*
  431.  *  Performs _somGetClassName method call on the local proxy object.
  432.  */
  433.    return SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdProxyGetClassName)
  434.     (this, ev);
  435. }
  436.  
  437.  
  438. /* method: somdReleaseResources */
  439. void   somdReleaseResources(Environment *ev)
  440. {
  441. /*
  442.  *  Instructs the proxy to free any memory it owns for use by the client.
  443.  */
  444.    SOM_ResolveD(this,SOMDClientProxy,SOMDClientProxy,somdReleaseResources)
  445.     (this, ev);
  446. }
  447.  
  448.  
  449. /*
  450.  * Reintroduce inherited methods
  451.  */
  452.  
  453. /* method: get_implementation */
  454. ImplementationDef*   get_implementation(Environment *ev)
  455. {
  456. /*
  457.  *  Returns the implementation definition for the referenced object.
  458.  */
  459.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,get_implementation)
  460.     (this, ev);
  461. }
  462.  
  463.  
  464. /* method: get_interface */
  465. InterfaceDef*   get_interface(Environment *ev)
  466. {
  467. /*
  468.  *  Returns the interface definition for the referenced object.
  469.  */
  470.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,get_interface)
  471.     (this, ev);
  472. }
  473.  
  474.  
  475. /* procedure: is_nil */
  476. static boolean   is_nil(SOMDClientProxy *somSelf, Environment *ev)
  477. {
  478. /*
  479.  *  Tests to see if the object reference is nil.
  480.  *  This is a procedure method.  Therefore, it can be invoked on OBJECT_NIL
  481.  *  (a null pointer), but it cannot be overridden.
  482.  */
  483.    return ((somTD_SOMDClientProxy_is_nil)SOMDObjectClassData.is_nil)
  484.     (somSelf, ev);
  485. }
  486.  
  487.  
  488. /* method: is_SOM_ref */
  489. boolean   is_SOM_ref(Environment *ev)
  490. {
  491. /*
  492.  *  Returns TRUE if object reference was created by SOMOA::create_SOM_ref
  493.  *  else returns FALSE.
  494.  */
  495.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,is_SOM_ref)
  496.     (this, ev);
  497. }
  498.  
  499.  
  500. /* method: is_constant */
  501. boolean   is_constant(Environment *ev)
  502. {
  503. /*
  504.  *  Returns TRUE if object reference was created by SOMOA::create_constant
  505.  *  else returns FALSE.
  506.  */
  507.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,is_constant)
  508.     (this, ev);
  509. }
  510.  
  511.  
  512. /* method: is_proxy */
  513. boolean   is_proxy(Environment *ev)
  514. {
  515. /*
  516.  *  Returns TRUE if object reference (self) is a DSOM client proxy object
  517.  *  (i.e., the target object is remote).  Returns FALSE if the referenced
  518.  *  object is in the same process as the reference.
  519.  * 
  520.  *  The default implementation returns FALSE.  Proxy classes which are
  521.  *  subclasses of SOMDObject (like SOMDClientProxy) should override this
  522.  *  method to return TRUE.
  523.  */
  524.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,is_proxy)
  525.     (this, ev);
  526. }
  527.  
  528.  
  529. /* method: duplicate */
  530. SOMDObject*   duplicate(Environment *ev)
  531. {
  532. /*
  533.  *  Makes a duplicate of the object reference.
  534.  *  OWNERSHIP of returned object is transferred to the caller.
  535.  *  Call release to free the object.
  536.  */
  537.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,duplicate)
  538.     (this, ev);
  539. }
  540.  
  541.  
  542. /* method: release */
  543. void   release(Environment *ev)
  544. {
  545. /*
  546.  *  Releases the memory associated with the object reference.
  547.  */
  548.    SOM_ResolveD(this,SOMDClientProxy,SOMDObject,release)
  549.     (this, ev);
  550. }
  551.  
  552.  
  553. /* method: create_request */
  554. ORBStatus   create_request(Environment *ev, 
  555.         Context* ctx, 
  556.         Identifier operation, 
  557.         NVList* arg_list, 
  558.         NamedValue* result, 
  559.         Request** request, 
  560.         Flags req_flags)
  561. {
  562. /*
  563.  *  Creates a request to execute a particular operation on the
  564.  *  referenced object.
  565.  * 
  566.  *  CORBA 1.1 introduces this method in this class, but DSOM actually
  567.  *  implements this method in the SOMDClientProxy subclass.
  568.  */
  569.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,create_request)
  570.     (this, ev,ctx,operation,arg_list,result,request,req_flags);
  571. }
  572.  
  573.  
  574. /* method: create_request_args */
  575. ORBStatus   create_request_args(Environment *ev, 
  576.         Identifier operation, 
  577.         NVList** arg_list, 
  578.         NamedValue* result)
  579. {
  580. /*
  581.  *  Creates the appropriate arg_list (NVList) for the specified operation.
  582.  *  Also creates a NamedValue to hold the result.
  583.  *  (Similar in function to ORB_create_operation_list.)
  584.  * 
  585.  *  This method is defined in this class, as a companion to the
  586.  *  "create_request" method, but DSOM implements this method in the
  587.  *  SOMDClientProxy subclass.
  588.  */
  589.    return SOM_ResolveD(this,SOMDClientProxy,SOMDObject,create_request_args)
  590.     (this, ev,operation,arg_list,result);
  591. }
  592.  
  593.  
  594. /* method: somDefaultInit */
  595. void   somDefaultInit(som3InitCtrl* ctrl)
  596. {
  597.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultInit)
  598.     (this,ctrl);
  599. }
  600.  
  601.  
  602. /* method: somDestruct */
  603. void   somDestruct(octet doFree, 
  604.         som3DestructCtrl* ctrl)
  605. {
  606.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDestruct)
  607.     (this,doFree,ctrl);
  608. }
  609.  
  610.  
  611. /* method: somDumpSelfInt */
  612. void   somDumpSelfInt(long level)
  613. {
  614.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDumpSelfInt)
  615.     (this,level);
  616. }
  617.  
  618.  
  619. /* initializer method: somDefaultCopyInit */
  620. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  621.         SOMObject* fromObj)
  622. {
  623. /*
  624.  *  A default copy constructor. Use this to make copies of objects for
  625.  *  calling methods with "by-value" argument semantics.
  626.  */
  627.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultCopyInit)
  628.     (this,ctrl,fromObj);
  629. }
  630.  
  631.  
  632. /* method: somDefaultAssign */
  633. SOMDClientProxy*  somDefaultAssign(som3AssignCtrl* ctrl, 
  634.         SOMObject* fromObj)
  635. {
  636. /*
  637.  *  A default assignment operator. Use this to "assign" the state of one
  638.  *  object to another.
  639.  */
  640.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultAssign)
  641.     (this,ctrl,fromObj);
  642. }
  643.  
  644.  
  645. /* initializer method: somDefaultConstCopyInit */
  646. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  647.         SOMObject* fromObj)
  648. {
  649. /*
  650.  *  A default copy constructor that uses a const fromObj.
  651.  */
  652.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultConstCopyInit)
  653.     (this,ctrl,fromObj);
  654. }
  655.  
  656.  
  657. /* initializer method: somDefaultVCopyInit */
  658. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  659.         SOMObject* fromObj)
  660. {
  661. /*
  662.  *  A default copy constructor that uses a volatile fromObj.
  663.  */
  664.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultVCopyInit)
  665.     (this,ctrl,fromObj);
  666. }
  667.  
  668.  
  669. /* initializer method: somDefaultConstVCopyInit */
  670. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  671.         SOMObject* fromObj)
  672. {
  673. /*
  674.  *  A default copy constructor that uses a const volatile fromObj.
  675.  */
  676.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultConstVCopyInit)
  677.     (this,ctrl,fromObj);
  678. }
  679.  
  680.  
  681. /* method: somDefaultConstAssign */
  682. SOMDClientProxy*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  683.         SOMObject* fromObj)
  684. {
  685. /*
  686.  *  A default assignment operator that uses a const fromObj.
  687.  */
  688.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultConstAssign)
  689.     (this,ctrl,fromObj);
  690. }
  691.  
  692.  
  693. /* method: somDefaultVAssign */
  694. SOMDClientProxy*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  695.         SOMObject* fromObj)
  696. {
  697. /*
  698.  *  A default assignment operator that uses a volatile fromObj.
  699.  */
  700.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultVAssign)
  701.     (this,ctrl,fromObj);
  702. }
  703.  
  704.  
  705. /* method: somDefaultConstVAssign */
  706. SOMDClientProxy*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  707.         SOMObject* fromObj)
  708. {
  709. /*
  710.  *  A default assignment operator that uses a const volatile fromObj.
  711.  */
  712.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDefaultConstVAssign)
  713.     (this,ctrl,fromObj);
  714. }
  715.  
  716.  
  717. /* method: somInit */
  718. void   somInit()
  719. {
  720. /*
  721.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  722.  */
  723.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somInit)
  724.     (this);
  725. }
  726.  
  727.  
  728. /* method: somFree */
  729. void   somFree()
  730. {
  731. /*
  732.  *  Use as directed by framework implementations.
  733.  */
  734.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somFree)
  735.     (this);
  736. }
  737.  
  738.  
  739. /* method: somUninit */
  740. void   somUninit()
  741. {
  742. /*
  743.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  744.  */
  745.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somUninit)
  746.     (this);
  747. }
  748.  
  749.  
  750. /* method: somGetClass */
  751. SOMClass*   somGetClass()
  752. {
  753. /*
  754.  *  Return the receiver's class.
  755.  */
  756.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somGetClass)
  757.     (this);
  758. }
  759.  
  760.  
  761. /* method: somGetClassName */
  762. string   somGetClassName()
  763. {
  764. /*
  765.  *  Return the name of the receiver's class.
  766.  */
  767.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somGetClassName)
  768.     (this);
  769. }
  770.  
  771.  
  772. /* method: somGetSize */
  773. long   somGetSize()
  774. {
  775. /*
  776.  *  Return the size of the receiver.
  777.  */
  778.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somGetSize)
  779.     (this);
  780. }
  781.  
  782.  
  783. /* method: somIsA */
  784. boolean   somIsA(SOMClass* aClassObj)
  785. {
  786. /*
  787.  *  Returns 1 (true) if the receiver responds to methods
  788.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  789.  */
  790.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somIsA)
  791.     (this,aClassObj);
  792. }
  793.  
  794.  
  795. /* method: somIsInstanceOf */
  796. boolean   somIsInstanceOf(SOMClass* aClassObj)
  797. {
  798. /*
  799.  *  Returns 1 (true) if the receiver is an instance of
  800.  *  <aClassObj> and 0 (false) otherwise.
  801.  */
  802.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somIsInstanceOf)
  803.     (this,aClassObj);
  804. }
  805.  
  806.  
  807. /* method: somRespondsTo */
  808. boolean   somRespondsTo(somId mId)
  809. {
  810. /*
  811.  *  Returns 1 (true) if the indicated method can be invoked
  812.  *  on the receiver and 0 (false) otherwise.
  813.  */
  814.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somRespondsTo)
  815.     (this,mId);
  816. }
  817.  
  818.  
  819. /* va_list method: somDispatch */
  820.  
  821. /*
  822.  *  This method provides a generic, class-specific dispatch mechanism.
  823.  *  It accepts as input <retValue> a pointer to the memory area to be
  824.  *  loaded with the result of dispatching the method indicated by
  825.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  826.  *  on which the method is to be invoked as the first argument.
  827.  */
  828. /* the va_list invocation form */
  829. boolean   SOMDClientProxy_somDispatch(somToken* retValue, 
  830.         somId methodId, 
  831.         va_list ap)
  832. {return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatch)
  833.     (this,retValue,methodId,ap);
  834. }
  835.  
  836. /* the varargs invocation form */
  837. boolean   somDispatch(somToken* retValue, 
  838.         somId methodId, 
  839.         ...)
  840. {
  841. /*
  842.  *  This method provides a generic, class-specific dispatch mechanism.
  843.  *  It accepts as input <retValue> a pointer to the memory area to be
  844.  *  loaded with the result of dispatching the method indicated by
  845.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  846.  *  on which the method is to be invoked as the first argument.
  847.  */
  848.    va_list ap;
  849.    va_start(ap, methodId);
  850.    boolean __somResult = 
  851.       SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatch)
  852.     (this,retValue,methodId,ap);
  853.    va_end(ap);
  854.    return __somResult;
  855. }
  856.  
  857.  
  858. /* va_list method: somClassDispatch */
  859.  
  860. /*
  861.  *  Like somDispatch, but method resolution for static methods is done
  862.  *  according to the clsObj instance method table.
  863.  */
  864. /* the va_list invocation form */
  865. boolean   SOMDClientProxy_somClassDispatch(SOMClass* clsObj, 
  866.         somToken* retValue, 
  867.         somId methodId, 
  868.         va_list ap)
  869. {return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somClassDispatch)
  870.     (this,clsObj,retValue,methodId,ap);
  871. }
  872.  
  873. /* the varargs invocation form */
  874. boolean   somClassDispatch(SOMClass* clsObj, 
  875.         somToken* retValue, 
  876.         somId methodId, 
  877.         ...)
  878. {
  879. /*
  880.  *  Like somDispatch, but method resolution for static methods is done
  881.  *  according to the clsObj instance method table.
  882.  */
  883.    va_list ap;
  884.    va_start(ap, methodId);
  885.    boolean __somResult = 
  886.       SOM_ResolveD(this,SOMDClientProxy,SOMObject,somClassDispatch)
  887.     (this,clsObj,retValue,methodId,ap);
  888.    va_end(ap);
  889.    return __somResult;
  890. }
  891.  
  892.  
  893. /* method: somCastObj */
  894. boolean   somCastObj(SOMClass* cls)
  895. {
  896. /*
  897.  *  cast the receiving object to cls (which must be an ancestor of the
  898.  *  objects true class. Returns true on success.
  899.  */
  900.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somCastObj)
  901.     (this,cls);
  902. }
  903.  
  904.  
  905. /* method: somResetObj */
  906. boolean   somResetObj()
  907. {
  908. /*
  909.  *  reset an object to its true class. Returns true always.
  910.  */
  911.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somResetObj)
  912.     (this);
  913. }
  914.  
  915.  
  916. /* va_list method: somDispatchV */
  917.  
  918. /*
  919.  *  Obsolete. Use somDispatch instead.
  920.  */
  921. /* the va_list invocation form */
  922. void   SOMDClientProxy_somDispatchV(somId methodId, 
  923.         somId descriptor, 
  924.         va_list ap)
  925. {   SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchV)
  926.     (this,methodId,descriptor,ap);
  927. }
  928.  
  929. /* the varargs invocation form */
  930. void   somDispatchV(somId methodId, 
  931.         somId descriptor, 
  932.         ...)
  933. {
  934. /*
  935.  *  Obsolete. Use somDispatch instead.
  936.  */
  937.    va_list ap;
  938.    va_start(ap, descriptor);
  939.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchV)
  940.     (this,methodId,descriptor,ap);
  941.    va_end(ap);
  942. }
  943.  
  944.  
  945. /* va_list method: somDispatchL */
  946.  
  947. /*
  948.  *  Obsolete. Use somDispatch instead.
  949.  */
  950. /* the va_list invocation form */
  951. long   SOMDClientProxy_somDispatchL(somId methodId, 
  952.         somId descriptor, 
  953.         va_list ap)
  954. {return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchL)
  955.     (this,methodId,descriptor,ap);
  956. }
  957.  
  958. /* the varargs invocation form */
  959. long   somDispatchL(somId methodId, 
  960.         somId descriptor, 
  961.         ...)
  962. {
  963. /*
  964.  *  Obsolete. Use somDispatch instead.
  965.  */
  966.    va_list ap;
  967.    va_start(ap, descriptor);
  968.    long __somResult = 
  969.       SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchL)
  970.     (this,methodId,descriptor,ap);
  971.    va_end(ap);
  972.    return __somResult;
  973. }
  974.  
  975.  
  976. /* va_list method: somDispatchA */
  977.  
  978. /*
  979.  *  Obsolete. Use somDispatch instead.
  980.  */
  981. /* the va_list invocation form */
  982. void*   SOMDClientProxy_somDispatchA(somId methodId, 
  983.         somId descriptor, 
  984.         va_list ap)
  985. {return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchA)
  986.     (this,methodId,descriptor,ap);
  987. }
  988.  
  989. /* the varargs invocation form */
  990. void*   somDispatchA(somId methodId, 
  991.         somId descriptor, 
  992.         ...)
  993. {
  994. /*
  995.  *  Obsolete. Use somDispatch instead.
  996.  */
  997.    va_list ap;
  998.    va_start(ap, descriptor);
  999.    void* __somResult = 
  1000.       SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchA)
  1001.     (this,methodId,descriptor,ap);
  1002.    va_end(ap);
  1003.    return __somResult;
  1004. }
  1005.  
  1006.  
  1007. /* va_list method: somDispatchD */
  1008.  
  1009. /*
  1010.  *  Obsolete. Use somDispatch instead.
  1011.  */
  1012. /* the va_list invocation form */
  1013. double   SOMDClientProxy_somDispatchD(somId methodId, 
  1014.         somId descriptor, 
  1015.         va_list ap)
  1016. {return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchD)
  1017.     (this,methodId,descriptor,ap);
  1018. }
  1019.  
  1020. /* the varargs invocation form */
  1021. double   somDispatchD(somId methodId, 
  1022.         somId descriptor, 
  1023.         ...)
  1024. {
  1025. /*
  1026.  *  Obsolete. Use somDispatch instead.
  1027.  */
  1028.    va_list ap;
  1029.    va_start(ap, descriptor);
  1030.    double __somResult = 
  1031.       SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDispatchD)
  1032.     (this,methodId,descriptor,ap);
  1033.    va_end(ap);
  1034.    return __somResult;
  1035. }
  1036.  
  1037.  
  1038. /* method: somPrintSelf */
  1039. SOMObject*   somPrintSelf()
  1040. {
  1041. /*
  1042.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  1043.  *  information about this object.  The default implementation just gives
  1044.  *  the object's class name and its address in memory.
  1045.  *  <self> is returned.
  1046.  */
  1047.    return SOM_ResolveD(this,SOMDClientProxy,SOMObject,somPrintSelf)
  1048.     (this);
  1049. }
  1050.  
  1051.  
  1052. /* method: somDumpSelf */
  1053. void   somDumpSelf(long level)
  1054. {
  1055. /*
  1056.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  1057.  *  and its current state.
  1058.  * 
  1059.  *  <level> indicates the nesting level for describing compound objects
  1060.  *  it must be greater than or equal to zero.  All lines in the
  1061.  *  description will be preceeded by <2*level> spaces.
  1062.  * 
  1063.  *  This routine only actually writes the data that concerns the object
  1064.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  1065.  *  the object's current state.  This approach allows readable
  1066.  *  descriptions of compound objects to be constructed.
  1067.  * 
  1068.  *  Generally it is not necessary to override this method, if it is
  1069.  *  overriden it generally must be completely replaced.
  1070.  */
  1071.    SOM_ResolveD(this,SOMDClientProxy,SOMObject,somDumpSelf)
  1072.     (this,level);
  1073. }
  1074.  
  1075.  
  1076.  
  1077. };   /* SOMDClientProxy */
  1078.  
  1079.  
  1080.  
  1081. #endif       /* SOM_SOMDClientProxy_xh */
  1082.