home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / som / include / somdserv.h < prev    next >
C/C++ Source or Header  |  1999-02-22  |  17KB  |  468 lines

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: somdserv.h.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emith: 2.47
  8.  */
  9.  
  10. /*
  11.  *    Interface for DSOM Server Objects
  12.  * 
  13.  *    This class defines and implements the behavior of DSOM Server objects
  14.  *    used with the DSOM Object Manager (SOMDObjectMgr).
  15.  * 
  16.  *    Each DSOM server process is defined to have a (single instance of a)
  17.  *    SOMDServer object.  The SOMDServer object performs three kinds of
  18.  *    functions:
  19.  * 
  20.  *        1) creation of SOM objects
  21.  *        2) mapping of application-defined object ids into DSOM object
  22.  *           "references" (SOMDObjects), and back again
  23.  *        3) any application-specific server methods (e.g., for initialization,
  24.  *           server control, etc.)
  25.  * 
  26.  *    The SOMDServer class defines methods for the basic creation of SOM
  27.  *    objects in the server process (somdCreateObj), for deletion of SOM
  28.  *    objects (somdDeleteObj), and for finding the SOM  class object for a
  29.  *    specified class (somdGetClassObj).
  30.  *    With somdGetClassObj, a client can get a proxy to a class object on the
  31.  *    server, so that methods introduced in the metaclass (e.g., class-specific
  32.  *    constructors, etc.) may be invoked directly.
  33.  * 
  34.  *    This class also defines methods for the mappings to and from SOMDObjects
  35.  *    and back again.  (Note: SOMDObject implements a CORBA "object reference"
  36.  *    in DSOM.  An object reference is something that is used to describe and
  37.  *    locate an actual target object.)  These methods are used by the SOM
  38.  *    Object Adapter (SOMOA) when converting messages into method calls
  39.  *    and results into messages.
  40.  * 
  41.  *    Application-specific server methods should be defined in subclasses
  42.  *    of this SOMDServer subclass.
  43.  * 
  44.  *    A particular SOMDServer subclass is specified in the ImplementationDef
  45.  *    for each server process.  The SOMOA will instantiate one instance
  46.  *    of the specified SOMDServer subclass during server process initialization
  47.  *    (in SOMOA::impl_is_ready).
  48.  * 
  49.  */
  50.  
  51.  
  52. #ifndef SOM_SOMDServer_h
  53. #define SOM_SOMDServer_h
  54.  
  55.  
  56. #include <som.h>
  57.  
  58. /*
  59.  * -- This emitter treats Method Tokens as Thunks by default.
  60.  * -- Use the sc modifier "nothunks" to change this default
  61.  */
  62. #undef somresolve_
  63. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  64.  
  65. /*
  66.  * Define the class name as an object type
  67.  */
  68. #ifndef SOMDServer
  69. #define SOMDServer SOMObject
  70. #endif
  71. #include <somobj.h>
  72.  
  73. /*
  74.  * Start of bindings for IDL types
  75.  */
  76.  
  77. #ifndef SOMClass
  78.     #define SOMClass SOMObject
  79. #endif /* SOMClass */
  80. #ifndef Container
  81.     #define Container SOMObject
  82. #endif /* Container */
  83. #ifndef SOMDObject
  84.     #define SOMDObject SOMObject
  85. #endif /* SOMDObject */
  86.  
  87. /*
  88.  * End of bindings for IDL types.
  89.  */
  90.  
  91. /*
  92.  * Passthru lines: File: "C.h", "after"
  93.  */
  94.  
  95. #ifdef SOM_STRICT_IDL
  96. SOMEXTERN SOMDServer  SOMDLINK SOMD_ServerObject;  /* global variable */
  97. #else
  98. SOMEXTERN SOMDServer * SOMDLINK SOMD_ServerObject;
  99. #endif /* SOM_STRICT_IDL */
  100.  
  101.  
  102. #define SOMDServer_MajorVersion 2
  103. #define SOMDServer_MinorVersion 1
  104.  
  105. /*
  106.  * External name shortening if required
  107.  */
  108. #ifdef SOM_USE_SHORT_EXTERNAL_NAMES
  109. #define SOMDServerNewClass c
  110. #pragma linkage(c, system)
  111. #define SOMDServerClassData d
  112. #define SOMDServerCClassData x
  113. #endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
  114.  
  115. /*
  116.  * Include the metaclass file
  117.  */
  118. #ifndef SOM_SOMMSingleInstance_h
  119. #include <snglicls.h>
  120. #endif
  121. /*--------------Migration------------*/
  122. #define SOMDServer_classObj SOMDServerClassData.classObject
  123. #define _SOMDServer SOMDServer_classObj
  124.  
  125. /*
  126.  * Declare the class creation procedure
  127.  */
  128. SOMEXTERN SOMClass * SOMLINK SOMDServerNewClass(integer4 somtmajorVersion,
  129.         integer4 somtminorVersion);
  130. #pragma linkage(SOMDServerNewClass, system)
  131.  
  132. /*
  133.  * Declare the class data structure
  134.  */
  135. SOMEXTERN struct SOMDServerClassDataStructure {
  136.     SOMClass *classObject;
  137.     somMToken somdSOMObjFromRef;
  138.     somMToken somdRefFromSOMObj;
  139.     somMToken somdCreateObj;
  140.     somMToken somdDeleteObj;
  141.     somMToken somdGetClassObj;
  142.     somMToken somdDispatchMethod;
  143.     somMToken somdObjReferencesCached;
  144. } SOMDLINK SOMDServerClassData;
  145.  
  146. /*
  147.  * Declare the C specific class data structure
  148.  */
  149. SOMEXTERN struct SOMDServerCClassDataStructure {
  150.     somMethodTabs parentMtab;
  151.     somDToken instanceDataToken;
  152.     somMethodProc *somdDispatchMethod;
  153. } SOMDLINK SOMDServerCClassData;
  154.  
  155. /*
  156.  * New and Renew macros for SOMDServer
  157.  */
  158. #define SOMDServerNew() \
  159.    ( _SOMDServer ? \
  160.     _somNew(_SOMDServer) \
  161.     : ( SOMDServerNewClass(\
  162.         SOMDServer_MajorVersion, \
  163.         SOMDServer_MinorVersion),\
  164.        _somNew(_SOMDServer)))
  165. #define SOMDServerRenew(buf) \
  166.    ( _SOMDServer ? \
  167.     _somRenew(_SOMDServer, buf) \
  168.     : ( SOMDServerNewClass(\
  169.         SOMDServer_MajorVersion, \
  170.         SOMDServer_MinorVersion),\
  171.        _somRenew(_SOMDServer, buf)))
  172.  
  173. /*
  174.  * New Method: somdRefFromSOMObj
  175.  */
  176. typedef SOMDObject*   SOMLINK somTP_SOMDServer_somdRefFromSOMObj(SOMDServer *somSelf, Environment *ev, 
  177.         SOMObject* somobj);
  178. #pragma linkage(somTP_SOMDServer_somdRefFromSOMObj, system)
  179. typedef somTP_SOMDServer_somdRefFromSOMObj *somTD_SOMDServer_somdRefFromSOMObj;
  180. /*
  181.  *  This method returns a DSOM object reference for a SOM object
  182.  *  instance in this server process.  SOMOA will call this method
  183.  *  whenever it returns a result from a method call which includes
  184.  *  a pointer to a SOMObject (versus a pointer to a SOMDObject).
  185.  *  Ownership of the returned object reference is given to the
  186.  *  caller EXCEPT when the somdObjReferencesCached method returns TRUE.
  187.  *  When the input (somobj) is already an object reference, the default
  188.  *  implementation simply returns somobj, rather than creating a new reference.
  189.  *  (Subclasses might override this method to duplicate the input reference, however.)
  190.  *  Hence, callers should note when the returned value is the same as
  191.  *  the input (somobj) when determining whether or not to free the result.
  192.  */
  193. #define somMD_SOMDServer_somdRefFromSOMObj "::SOMDServer::somdRefFromSOMObj"
  194. #define SOMDServer_somdRefFromSOMObj(somSelf,ev,somobj) \
  195.     (SOM_Resolve(somSelf, SOMDServer, somdRefFromSOMObj) \
  196.     (somSelf,ev,somobj))
  197. #ifndef SOMGD_somdRefFromSOMObj
  198.     #if (defined(_somdRefFromSOMObj) || defined(__somdRefFromSOMObj))
  199.         #undef _somdRefFromSOMObj
  200.         #undef __somdRefFromSOMObj
  201.         #define SOMGD_somdRefFromSOMObj 1
  202.     #else
  203.         #define _somdRefFromSOMObj SOMDServer_somdRefFromSOMObj
  204.     #endif /* _somdRefFromSOMObj */
  205. #endif /* SOMGD_somdRefFromSOMObj */
  206.  
  207. /*
  208.  * New Method: somdSOMObjFromRef
  209.  */
  210. typedef SOMObject*   SOMLINK somTP_SOMDServer_somdSOMObjFromRef(SOMDServer *somSelf, Environment *ev, 
  211.         SOMDObject* objref);
  212. #pragma linkage(somTP_SOMDServer_somdSOMObjFromRef, system)
  213. typedef somTP_SOMDServer_somdSOMObjFromRef *somTD_SOMDServer_somdSOMObjFromRef;
  214. /*
  215.  *  This method maps a DSOM object reference into a SOM object.
  216.  *  This can be done in whatever way is appropriate for the application.
  217.  *  This method is called by SOMOA in order to translate any method call
  218.  *  parameters which are object references (created from somdRefFromSOMObj
  219.  *  above) into SOM objects.
  220.  */
  221. #define somMD_SOMDServer_somdSOMObjFromRef "::SOMDServer::somdSOMObjFromRef"
  222. #define SOMDServer_somdSOMObjFromRef(somSelf,ev,objref) \
  223.     (SOM_Resolve(somSelf, SOMDServer, somdSOMObjFromRef) \
  224.     (somSelf,ev,objref))
  225. #ifndef SOMGD_somdSOMObjFromRef
  226.     #if (defined(_somdSOMObjFromRef) || defined(__somdSOMObjFromRef))
  227.         #undef _somdSOMObjFromRef
  228.         #undef __somdSOMObjFromRef
  229.         #define SOMGD_somdSOMObjFromRef 1
  230.     #else
  231.         #define _somdSOMObjFromRef SOMDServer_somdSOMObjFromRef
  232.     #endif /* _somdSOMObjFromRef */
  233. #endif /* SOMGD_somdSOMObjFromRef */
  234.  
  235. /*
  236.  * New Method: somdDispatchMethod
  237.  */
  238. typedef void   SOMLINK somTP_SOMDServer_somdDispatchMethod(SOMDServer *somSelf, Environment *ev, 
  239.         SOMObject* somobj, 
  240.         somToken* retValue, 
  241.         somId methodId, 
  242.         va_list ap);
  243. #pragma linkage(somTP_SOMDServer_somdDispatchMethod, system)
  244. typedef somTP_SOMDServer_somdDispatchMethod *somTD_SOMDServer_somdDispatchMethod;
  245. /*
  246.  *  This method is called by SOMOA to dispatch a method on a SOM object.
  247.  *  The intention is to give the Server object an opportunity to intercept
  248.  *  method calls, if desired.  The parameters to this method are the same
  249.  *  as the parameters passed to SOMObject::somDispatch.
  250.  * 
  251.  *  The default implementation invokes SOMObject::somDispatch on the
  252.  *  specified target object, "somobj", with the supplied arguments.
  253.  */
  254. #define somMD_SOMDServer_somdDispatchMethod "::SOMDServer::somdDispatchMethod"
  255. #define SOMDServer_somdDispatchMethod(somSelf,ev,somobj,retValue,methodId,ap) \
  256.     (SOM_Resolve(somSelf, SOMDServer, somdDispatchMethod) \
  257.     (somSelf,ev,somobj,retValue,methodId,ap))
  258.  
  259. /*
  260.  * legacy support for non-system-linkage vararg stub
  261.  * use -mnolegacy to avoid generating this stub.
  262.  */
  263. #ifdef SOMDServer_VA_EXTERN
  264.     SOMEXTERN
  265. #else
  266.     static
  267. #endif
  268. void   va_SOMDServer_somdDispatchMethod(SOMDServer *somSelf, Environment *ev,
  269.         SOMObject* somobj,
  270.         somToken* retValue,
  271.         somId methodId,
  272.         ...)
  273. #if (defined(SOMDServer_VA_STUBS)||!defined(SOMDServer_VA_EXTERN))
  274. {
  275.     va_list ap;
  276.     va_start(ap, methodId);
  277.     SOMDServer_somdDispatchMethod(somSelf,ev,somobj,retValue,methodId,ap);
  278.     va_end(ap);
  279. }    
  280. #else
  281.     ;
  282. #endif
  283.  
  284. /*
  285.  * normal vararg stubs
  286.  */
  287. #ifndef SOMGD_va_somdDispatchMethod
  288.    #ifdef va_somdDispatchMethod
  289.       #undef va_somdDispatchMethod
  290.       #define SOMGD_va_somdDispatchMethod 1
  291.    #else
  292.       #define va_somdDispatchMethod somva_SOMDServer_somdDispatchMethod
  293.    #endif /* va_somdDispatchMethod */
  294. #endif /* SOMGD_va_somdDispatchMethod */
  295. #ifndef SOMGD_somdDispatchMethod
  296.     #if (defined(_somdDispatchMethod) || defined(__somdDispatchMethod))
  297.         #undef _somdDispatchMethod
  298.         #undef __somdDispatchMethod
  299.         #define SOMGD_somdDispatchMethod 1
  300.     #else
  301.         #define _somdDispatchMethod somva_SOMDServer_somdDispatchMethod
  302.     #endif /* _somdDispatchMethod */
  303. #endif /* SOMGD_somdDispatchMethod */
  304. #ifdef SOMDServer_VA_EXTERN
  305. #pragma linkage(somva_SOMDServer_somdDispatchMethod, system)
  306.     SOMEXTERN
  307. #else
  308.     static
  309. #endif
  310. void  SOMLINK somva_SOMDServer_somdDispatchMethod(SOMDServer *somSelf, Environment *ev,
  311.         SOMObject* somobj,
  312.         somToken* retValue,
  313.         somId methodId,
  314.         ...)
  315. #if (defined(SOMDServer_VA_STUBS)||!defined(SOMDServer_VA_EXTERN))
  316. {
  317.     va_list ap;
  318.     va_start(ap, methodId);
  319.     SOMDServer_somdDispatchMethod(somSelf,ev,somobj,retValue,methodId,ap);
  320.     va_end(ap);
  321. }    
  322. #else
  323.     ;
  324. #endif
  325.  
  326. /*
  327.  * New Method: somdCreateObj
  328.  */
  329. typedef SOMObject*   SOMLINK somTP_SOMDServer_somdCreateObj(SOMDServer *somSelf, Environment *ev, 
  330.         Identifier objclass, 
  331.         string hints);
  332. #pragma linkage(somTP_SOMDServer_somdCreateObj, system)
  333. typedef somTP_SOMDServer_somdCreateObj *somTD_SOMDServer_somdCreateObj;
  334. /*
  335.  *  Creates an object of the specified class.  This method (if overridden)
  336.  *  may optionally define creation "hints" which the client may specify in
  337.  *  this call.
  338.  * 
  339.  *  Called indirectly by SOMDObjectMgr::somdNewObject.
  340.  * 
  341.  *  The default implementation calls somdGetClassObj to get the specified
  342.  *  SOMClass object, and invokes "somNew".  The "hints" argument is ignored
  343.  *  in the default implementation.
  344.  */
  345. #define somMD_SOMDServer_somdCreateObj "::SOMDServer::somdCreateObj"
  346. #define SOMDServer_somdCreateObj(somSelf,ev,objclass,hints) \
  347.     (SOM_Resolve(somSelf, SOMDServer, somdCreateObj) \
  348.     (somSelf,ev,objclass,hints))
  349. #ifndef SOMGD_somdCreateObj
  350.     #if (defined(_somdCreateObj) || defined(__somdCreateObj))
  351.         #undef _somdCreateObj
  352.         #undef __somdCreateObj
  353.         #define SOMGD_somdCreateObj 1
  354.     #else
  355.         #define _somdCreateObj SOMDServer_somdCreateObj
  356.     #endif /* _somdCreateObj */
  357. #endif /* SOMGD_somdCreateObj */
  358.  
  359. /*
  360.  * New Method: somdDeleteObj
  361.  */
  362. typedef void   SOMLINK somTP_SOMDServer_somdDeleteObj(SOMDServer *somSelf, Environment *ev, 
  363.         SOMObject* somobj);
  364. #pragma linkage(somTP_SOMDServer_somdDeleteObj, system)
  365. typedef somTP_SOMDServer_somdDeleteObj *somTD_SOMDServer_somdDeleteObj;
  366. /*
  367.  *  Deletes a SOM object.  By default, simply calls somFree on the object.
  368.  *  Can be overridden by the application.
  369.  * 
  370.  *  Called indirectly by SOMDObjectMgr::somdDestroyObject.
  371.  */
  372. #define somMD_SOMDServer_somdDeleteObj "::SOMDServer::somdDeleteObj"
  373. #define SOMDServer_somdDeleteObj(somSelf,ev,somobj) \
  374.     (SOM_Resolve(somSelf, SOMDServer, somdDeleteObj) \
  375.     (somSelf,ev,somobj))
  376. #ifndef SOMGD_somdDeleteObj
  377.     #if (defined(_somdDeleteObj) || defined(__somdDeleteObj))
  378.         #undef _somdDeleteObj
  379.         #undef __somdDeleteObj
  380.         #define SOMGD_somdDeleteObj 1
  381.     #else
  382.         #define _somdDeleteObj SOMDServer_somdDeleteObj
  383.     #endif /* _somdDeleteObj */
  384. #endif /* SOMGD_somdDeleteObj */
  385.  
  386. /*
  387.  * New Method: somdGetClassObj
  388.  */
  389. typedef SOMClass*   SOMLINK somTP_SOMDServer_somdGetClassObj(SOMDServer *somSelf, Environment *ev, 
  390.         Identifier objclass);
  391. #pragma linkage(somTP_SOMDServer_somdGetClassObj, system)
  392. typedef somTP_SOMDServer_somdGetClassObj *somTD_SOMDServer_somdGetClassObj;
  393. /*
  394.  *  Creates/returns a class object for the specified class.
  395.  *  (May result in the loading of a DLL for the class.)
  396.  */
  397. #define somMD_SOMDServer_somdGetClassObj "::SOMDServer::somdGetClassObj"
  398. #define SOMDServer_somdGetClassObj(somSelf,ev,objclass) \
  399.     (SOM_Resolve(somSelf, SOMDServer, somdGetClassObj) \
  400.     (somSelf,ev,objclass))
  401. #ifndef SOMGD_somdGetClassObj
  402.     #if (defined(_somdGetClassObj) || defined(__somdGetClassObj))
  403.         #undef _somdGetClassObj
  404.         #undef __somdGetClassObj
  405.         #define SOMGD_somdGetClassObj 1
  406.     #else
  407.         #define _somdGetClassObj SOMDServer_somdGetClassObj
  408.     #endif /* _somdGetClassObj */
  409. #endif /* SOMGD_somdGetClassObj */
  410.  
  411. /*
  412.  * New Method: somdObjReferencesCached
  413.  */
  414. typedef boolean   SOMLINK somTP_SOMDServer_somdObjReferencesCached(SOMDServer *somSelf, Environment *ev);
  415. #pragma linkage(somTP_SOMDServer_somdObjReferencesCached, system)
  416. typedef somTP_SOMDServer_somdObjReferencesCached *somTD_SOMDServer_somdObjReferencesCached;
  417. /*
  418.  *  Whether the server retains ownership of the object references
  419.  *  it creates via the somdRefFromSOMObj method.
  420.  */
  421. #define somMD_SOMDServer_somdObjReferencesCached "::SOMDServer::somdObjReferencesCached"
  422. #define SOMDServer_somdObjReferencesCached(somSelf,ev) \
  423.     (SOM_Resolve(somSelf, SOMDServer, somdObjReferencesCached) \
  424.     (somSelf,ev))
  425. #ifndef SOMGD_somdObjReferencesCached
  426.     #if (defined(_somdObjReferencesCached) || defined(__somdObjReferencesCached))
  427.         #undef _somdObjReferencesCached
  428.         #undef __somdObjReferencesCached
  429.         #define SOMGD_somdObjReferencesCached 1
  430.     #else
  431.         #define _somdObjReferencesCached SOMDServer_somdObjReferencesCached
  432.     #endif /* _somdObjReferencesCached */
  433. #endif /* SOMGD_somdObjReferencesCached */
  434. #ifndef SOM_DONT_USE_INHERITED_MACROS
  435. #define SOMDServer_somDefaultInit SOMObject_somDefaultInit
  436. #define SOMDServer_somDestruct SOMObject_somDestruct
  437. #define SOMDServer_somDefaultCopyInit SOMObject_somDefaultCopyInit
  438. #define SOMDServer_somDefaultAssign SOMObject_somDefaultAssign
  439. #define SOMDServer_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
  440. #define SOMDServer_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
  441. #define SOMDServer_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
  442. #define SOMDServer_somDefaultConstAssign SOMObject_somDefaultConstAssign
  443. #define SOMDServer_somDefaultVAssign SOMObject_somDefaultVAssign
  444. #define SOMDServer_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
  445. #define SOMDServer_somInit SOMObject_somInit
  446. #define SOMDServer_somFree SOMObject_somFree
  447. #define SOMDServer_somUninit SOMObject_somUninit
  448. #define SOMDServer_somGetClass SOMObject_somGetClass
  449. #define SOMDServer_somGetClassName SOMObject_somGetClassName
  450. #define SOMDServer_somGetSize SOMObject_somGetSize
  451. #define SOMDServer_somIsA SOMObject_somIsA
  452. #define SOMDServer_somIsInstanceOf SOMObject_somIsInstanceOf
  453. #define SOMDServer_somRespondsTo SOMObject_somRespondsTo
  454. #define SOMDServer_somDispatch SOMObject_somDispatch
  455. #define SOMDServer_somClassDispatch SOMObject_somClassDispatch
  456. #define SOMDServer_somCastObj SOMObject_somCastObj
  457. #define SOMDServer_somResetObj SOMObject_somResetObj
  458. #define SOMDServer_somDispatchV SOMObject_somDispatchV
  459. #define SOMDServer_somDispatchL SOMObject_somDispatchL
  460. #define SOMDServer_somDispatchA SOMObject_somDispatchA
  461. #define SOMDServer_somDispatchD SOMObject_somDispatchD
  462. #define SOMDServer_somPrintSelf SOMObject_somPrintSelf
  463. #define SOMDServer_somDumpSelf SOMObject_somDumpSelf
  464. #define SOMDServer_somDumpSelfInt SOMObject_somDumpSelfInt
  465. #endif /* SOM_DONT_USE_INHERITED_MACROS */
  466.  
  467. #endif       /* SOM_SOMDServer_h */
  468.