home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
warptlk3.zip
/
TOOLKIT
/
SOM
/
INCLUDE
/
SOMDOBJ.XH
< prev
next >
Wrap
Text File
|
1995-08-30
|
19KB
|
744 lines
/*
* This file was generated by the SOM Compiler.
* FileName: somdobj.xh.
* Generated using:
* SOM Precompiler somipc: 2.29.1.2
* SOM Emitter emitxh: 2.41
*/
/*
*
* COMPONENT_NAME: somd
*
* ORIGINS: 27
*
*
* 10H9767, 10H9769 (C) COPYRIGHT International Business Machines Corp. 1992,1994
* All Rights Reserved
* Licensed Materials - Property of IBM
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
* Interface for CORBA Object Reference.
*
* This is the class that implements the behavior of CORBA object references,
* e.g., get_implementation, get_interface, duplicate, release, etc.
*
* In addition, there are some private methods, which are exposed only to
* the ORB classes, to implement the ORB functions related to object
* references (e.g., ORB_object_to_string).
*
* In DSOM, there is also another derivation of this class: SOMDClientProxy.
* This subclass inherits the implementation of this class, but extends it
* by overriding somDispatch with a "remote dispatch" method, and caches the
* binding to the server process. Whenever a remote object is accessed, it
* is represented in the client process by a SOMDClientProxy object.
*
*
*/
#ifndef SOM_SOMDObject_xh
#define SOM_SOMDObject_xh
class SOMDObject;
#define SOMDObject_MajorVersion 2
#define SOMDObject_MinorVersion 1
/* C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>
/* C++ parent defs */
#ifndef SOM_SOMObject_xh
#include <somobj.xh>
#endif
#ifndef SOMDObject_API
#define SOMDObject_API
/*
* -- The Class API
*/
/*
* Start of user-defined types:
*/
class SOMClass;
class SOMObject;
class Container;
class ImplementationDef;
class InterfaceDef;
class NVList;
class Context;
class Request;
/*
* End of user-defined types.
*/
/* A procedure to create the SOMDObject Class */
SOMEXTERN SOMClass * SOMLINK SOMDObjectNewClass(
integer4 majorVersion,
integer4 minorVersion);
/* The API to the SOMDObject class object, and the methods it introduces. */
SOMEXTERN struct SOMDObjectClassDataStructure {
SOMClass *classObject;
somMToken get_implementation;
somMToken get_interface;
somMToken set_to_nil;
somMethodProc *is_nil;
somMToken is_SOM_ref;
somMToken is_constant;
somMToken is_proxy;
somMToken duplicate;
somMToken release;
somMToken create_request;
somMToken create_request_args;
somMToken _get_somd_tag;
somMToken _get_somd_flags;
somMToken _set_somd_flags;
somMToken _get_somd_impl;
somMToken _set_somd_impl;
somMToken _get_somd_rid;
somMToken _set_somd_rid;
somMToken _get_somd_id;
somMToken _set_somd_id;
} SOMDLINK SOMDObjectClassData;
#define _SOMDObject SOMDObjectClassData.classObject
/* The API to parentMtabs for SOMDObject, and the instance data it introduces. */
SOMEXTERN struct SOMDObjectCClassDataStructure {
somMethodTabs parentMtab;
somDToken instanceDataToken;
} SOMDLINK SOMDObjectCClassData;
/*
* -- Typedefs for SOMDObject Method Procedures
*/
SOMEXTERN {
typedef ImplementationDef* (SOMLINK * somTD_SOMDObject_get_implementation)(SOMDObject *somSelf, Environment *ev);
typedef InterfaceDef* (SOMLINK * somTD_SOMDObject_get_interface)(SOMDObject *somSelf, Environment *ev);
typedef boolean (SOMLINK * somTD_SOMDObject_is_nil)(SOMDObject *somSelf, Environment *ev);
typedef boolean (SOMLINK * somTD_SOMDObject_is_SOM_ref)(SOMDObject *somSelf, Environment *ev);
typedef boolean (SOMLINK * somTD_SOMDObject_is_constant)(SOMDObject *somSelf, Environment *ev);
typedef boolean (SOMLINK * somTD_SOMDObject_is_proxy)(SOMDObject *somSelf, Environment *ev);
typedef SOMDObject* (SOMLINK * somTD_SOMDObject_duplicate)(SOMDObject *somSelf, Environment *ev);
typedef void (SOMLINK * somTD_SOMDObject_release)(SOMDObject *somSelf, Environment *ev);
typedef ORBStatus (SOMLINK * somTD_SOMDObject_create_request)(SOMDObject *somSelf, Environment *ev,
Context* ctx,
Identifier operation,
NVList* arg_list,
NamedValue* result,
Request** request,
Flags req_flags);
typedef ORBStatus (SOMLINK * somTD_SOMDObject_create_request_args)(SOMDObject *somSelf, Environment *ev,
Identifier operation,
NVList** arg_list,
NamedValue* result);
/*
* -- Typedefs for Reintroduced Wrapper Methods
*/
typedef void (SOMLINK * somTD_SOMDObject_somDefaultInit)(SOMDObject *somSelf,
somInitCtrl* ctrl);
typedef void (SOMLINK * somTD_SOMDObject_somDestruct)(SOMDObject *somSelf,
octet doFree,
somDestructCtrl* ctrl);
typedef void (SOMLINK * somTD_SOMDObject_somDefaultCopyInit)(SOMDObject *somSelf,
somInitCtrl* ctrl,
SOMObject* fromObj);
typedef SOMDObject* (SOMLINK * somTD_SOMDObject_somDefaultAssign)(SOMDObject *somSelf,
somAssignCtrl* ctrl,
SOMObject* fromObj);
typedef void (SOMLINK * somTD_SOMDObject_somDefaultConstCopyInit)(SOMDObject *somSelf,
somInitCtrl* ctrl,
SOMObject* fromObj);
typedef void (SOMLINK * somTD_SOMDObject_somDefaultVCopyInit)(SOMDObject *somSelf,
somInitCtrl* ctrl,
SOMObject* fromObj);
typedef void (SOMLINK * somTD_SOMDObject_somDefaultConstVCopyInit)(SOMDObject *somSelf,
somInitCtrl* ctrl,
SOMObject* fromObj);
typedef SOMDObject* (SOMLINK * somTD_SOMDObject_somDefaultConstAssign)(SOMDObject *somSelf,
somAssignCtrl* ctrl,
SOMObject* fromObj);
typedef SOMDObject* (SOMLINK * somTD_SOMDObject_somDefaultVAssign)(SOMDObject *somSelf,
somAssignCtrl* ctrl,
SOMObject* fromObj);
typedef SOMDObject* (SOMLINK * somTD_SOMDObject_somDefaultConstVAssign)(SOMDObject *somSelf,
somAssignCtrl* ctrl,
SOMObject* fromObj);
typedef void (SOMLINK * somTD_SOMDObject_somInit)(SOMDObject *somSelf);
typedef void (SOMLINK * somTD_SOMDObject_somFree)(SOMDObject *somSelf);
typedef void (SOMLINK * somTD_SOMDObject_somUninit)(SOMDObject *somSelf);
typedef SOMClass* (SOMLINK * somTD_SOMDObject_somGetClass)(SOMDObject *somSelf);
typedef string (SOMLINK * somTD_SOMDObject_somGetClassName)(SOMDObject *somSelf);
typedef long (SOMLINK * somTD_SOMDObject_somGetSize)(SOMDObject *somSelf);
typedef boolean (SOMLINK * somTD_SOMDObject_somIsA)(SOMDObject *somSelf,
SOMClass* aClassObj);
typedef boolean (SOMLINK * somTD_SOMDObject_somIsInstanceOf)(SOMDObject *somSelf,
SOMClass* aClassObj);
typedef boolean (SOMLINK * somTD_SOMDObject_somRespondsTo)(SOMDObject *somSelf,
somId mId);
typedef boolean (SOMLINK * somTD_SOMDObject_somDispatch)(SOMDObject *somSelf,
somToken* retValue,
somId methodId,
va_list ap);
typedef boolean (SOMLINK * somTD_SOMDObject_somClassDispatch)(SOMDObject *somSelf,
SOMClass* clsObj,
somToken* retValue,
somId methodId,
va_list ap);
typedef boolean (SOMLINK * somTD_SOMDObject_somCastObj)(SOMDObject *somSelf,
SOMClass* cls);
typedef boolean (SOMLINK * somTD_SOMDObject_somResetObj)(SOMDObject *somSelf);
typedef void (SOMLINK * somTD_SOMDObject_somDispatchV)(SOMDObject *somSelf,
somId methodId,
somId descriptor,
va_list ap);
typedef long (SOMLINK * somTD_SOMDObject_somDispatchL)(SOMDObject *somSelf,
somId methodId,
somId descriptor,
va_list ap);
typedef void* (SOMLINK * somTD_SOMDObject_somDispatchA)(SOMDObject *somSelf,
somId methodId,
somId descriptor,
va_list ap);
typedef double (SOMLINK * somTD_SOMDObject_somDispatchD)(SOMDObject *somSelf,
somId methodId,
somId descriptor,
va_list ap);
typedef SOMObject* (SOMLINK * somTD_SOMDObject_somPrintSelf)(SOMDObject *somSelf);
typedef void (SOMLINK * somTD_SOMDObject_somDumpSelf)(SOMDObject *somSelf,
long level);
typedef void (SOMLINK * somTD_SOMDObject_somDumpSelfInt)(SOMDObject *somSelf,
long level);
}
#endif /* SOMDObject_API */
/*
* -- This emitter treats Method Tokens as Thunks by default.
* -- Use the sc modifier "nothunks" to change this default
*/
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
/*
* -- The C++ Wrapper Class for SOMDObject
*/
class SOMDObject : public SOMObject
{
public:
// SOMDObject::new creates the class object if necessary, and then uses somNewNoInit
// to allocate memory and create the object. Initialization is in ctors.
void *operator new(size_t size)
{
SOM_IgnoreWarning(size);
if (!_SOMDObject) SOMDObjectNewClass(SOMDObject_MajorVersion,SOMDObject_MinorVersion);
return (void*)
SOM_Resolve(_SOMDObject,SOMClass,somNewNoInit)
((SOMClass *)((void*)_SOMDObject));
}
// SOMDObject::delete uses the default deallocator for the object's class.
void operator delete(void * obj)
{
somToken objCls = obj ? *(void**)obj : (somToken) NULL;
if (somIsObj(objCls)) {
SOM_Resolve(objCls,SOMClass,somDeallocate)
((SOMClass*)objCls, (string)obj);
}
}
SOMDObject()
{
if (*(void**)this !=
((somParentMtabStructPtr)
(SOMDObjectCClassData.parentMtab))->mtab)
return;
somDefaultInit(0);
}
SOMDObject(SOMDObject* fromObj)
{
if (*(void**)this !=
((somParentMtabStructPtr)
(SOMDObjectCClassData.parentMtab))->mtab)
return;
somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}
SOMDObject(const SOMDObject* fromObj)
{
if (*(void**)this !=
((somParentMtabStructPtr)
(SOMDObjectCClassData.parentMtab))->mtab)
return;
somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
}
~SOMDObject()
{
if (!somIsObj(this)) return;
somDestruct(0,0);
*(void**)this = **(void***)this;
}
/* method: get_implementation */
ImplementationDef* get_implementation(Environment *ev)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,get_implementation)
(this, ev);
}
/* method: get_interface */
InterfaceDef* get_interface(Environment *ev)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,get_interface)
(this, ev);
}
/* procedure: is_nil */
static boolean is_nil(SOMDObject *somSelf, Environment *ev)
{
return ((somTD_SOMDObject_is_nil)SOMDObjectClassData.is_nil)
(somSelf, ev);
}
/* method: is_SOM_ref */
boolean is_SOM_ref(Environment *ev)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,is_SOM_ref)
(this, ev);
}
/* method: is_constant */
boolean is_constant(Environment *ev)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,is_constant)
(this, ev);
}
/* method: is_proxy */
boolean is_proxy(Environment *ev)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,is_proxy)
(this, ev);
}
/* method: duplicate */
SOMDObject* duplicate(Environment *ev)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,duplicate)
(this, ev);
}
/* method: release */
void release(Environment *ev)
{
SOM_ResolveD(this,SOMDObject,SOMDObject,release)
(this, ev);
}
/* method: create_request */
ORBStatus create_request(Environment *ev,
Context* ctx,
Identifier operation,
NVList* arg_list,
NamedValue* result,
Request** request,
Flags req_flags)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,create_request)
(this, ev,ctx,operation,arg_list,result,request,req_flags);
}
/* method: create_request_args */
ORBStatus create_request_args(Environment *ev,
Identifier operation,
NVList** arg_list,
NamedValue* result)
{
return SOM_ResolveD(this,SOMDObject,SOMDObject,create_request_args)
(this, ev,operation,arg_list,result);
}
/*
* Reintroduce inherited methods
*/
/* initializer method: somDefaultInit */
void somDefaultInit(somInitCtrl* ctrl)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultInit)
(this,ctrl);
}
/* method: somDestruct */
void somDestruct(octet doFree,
somDestructCtrl* ctrl)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDestruct)
(this,doFree,ctrl);
}
/* method: somDefaultCopyInit */
void somDefaultCopyInit(somInitCtrl* ctrl,
SOMObject* fromObj)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultCopyInit)
(this,ctrl,fromObj);
}
/* method: somDefaultAssign */
SOMDObject* somDefaultAssign(somAssignCtrl* ctrl,
SOMObject* fromObj)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultAssign)
(this,ctrl,fromObj);
}
/* method: somDefaultConstCopyInit */
void somDefaultConstCopyInit(somInitCtrl* ctrl,
SOMObject* fromObj)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultConstCopyInit)
(this,ctrl,fromObj);
}
/* method: somDefaultVCopyInit */
void somDefaultVCopyInit(somInitCtrl* ctrl,
SOMObject* fromObj)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultVCopyInit)
(this,ctrl,fromObj);
}
/* method: somDefaultConstVCopyInit */
void somDefaultConstVCopyInit(somInitCtrl* ctrl,
SOMObject* fromObj)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultConstVCopyInit)
(this,ctrl,fromObj);
}
/* method: somDefaultConstAssign */
SOMDObject* somDefaultConstAssign(somAssignCtrl* ctrl,
SOMObject* fromObj)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultConstAssign)
(this,ctrl,fromObj);
}
/* method: somDefaultVAssign */
SOMDObject* somDefaultVAssign(somAssignCtrl* ctrl,
SOMObject* fromObj)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultVAssign)
(this,ctrl,fromObj);
}
/* method: somDefaultConstVAssign */
SOMDObject* somDefaultConstVAssign(somAssignCtrl* ctrl,
SOMObject* fromObj)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDefaultConstVAssign)
(this,ctrl,fromObj);
}
/* method: somInit */
void somInit()
{
SOM_ResolveD(this,SOMDObject,SOMObject,somInit)
(this);
}
/* method: somFree */
void somFree()
{
SOM_ResolveD(this,SOMDObject,SOMObject,somFree)
(this);
}
/* method: somUninit */
void somUninit()
{
SOM_ResolveD(this,SOMDObject,SOMObject,somUninit)
(this);
}
/* method: somGetClass */
SOMClass* somGetClass()
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somGetClass)
(this);
}
/* method: somGetClassName */
string somGetClassName()
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somGetClassName)
(this);
}
/* method: somGetSize */
long somGetSize()
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somGetSize)
(this);
}
/* method: somIsA */
boolean somIsA(SOMClass* aClassObj)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somIsA)
(this,aClassObj);
}
/* method: somIsInstanceOf */
boolean somIsInstanceOf(SOMClass* aClassObj)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somIsInstanceOf)
(this,aClassObj);
}
/* method: somRespondsTo */
boolean somRespondsTo(somId mId)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somRespondsTo)
(this,mId);
}
/* va_list method: somDispatch */
/* the va_list invocation form */
boolean SOMDObject_somDispatch(somToken* retValue,
somId methodId,
va_list ap)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDispatch)
(this,retValue,methodId,ap);
}
/* the varargs invocation form */
boolean somDispatch(somToken* retValue,
somId methodId,
...)
{
va_list ap;
va_start(ap, methodId);
boolean __somResult =
SOM_ResolveD(this,SOMDObject,SOMObject,somDispatch)
(this,retValue,methodId,ap);
va_end(ap);
return __somResult;
}
/* va_list method: somClassDispatch */
/* the va_list invocation form */
boolean SOMDObject_somClassDispatch(SOMClass* clsObj,
somToken* retValue,
somId methodId,
va_list ap)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somClassDispatch)
(this,clsObj,retValue,methodId,ap);
}
/* the varargs invocation form */
boolean somClassDispatch(SOMClass* clsObj,
somToken* retValue,
somId methodId,
...)
{
va_list ap;
va_start(ap, methodId);
boolean __somResult =
SOM_ResolveD(this,SOMDObject,SOMObject,somClassDispatch)
(this,clsObj,retValue,methodId,ap);
va_end(ap);
return __somResult;
}
/* method: somCastObj */
boolean somCastObj(SOMClass* cls)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somCastObj)
(this,cls);
}
/* method: somResetObj */
boolean somResetObj()
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somResetObj)
(this);
}
/* va_list method: somDispatchV */
/* the va_list invocation form */
void SOMDObject_somDispatchV(somId methodId,
somId descriptor,
va_list ap)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchV)
(this,methodId,descriptor,ap);
}
/* the varargs invocation form */
void somDispatchV(somId methodId,
somId descriptor,
...)
{
va_list ap;
va_start(ap, descriptor);
SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchV)
(this,methodId,descriptor,ap);
va_end(ap);
}
/* va_list method: somDispatchL */
/* the va_list invocation form */
long SOMDObject_somDispatchL(somId methodId,
somId descriptor,
va_list ap)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchL)
(this,methodId,descriptor,ap);
}
/* the varargs invocation form */
long somDispatchL(somId methodId,
somId descriptor,
...)
{
va_list ap;
va_start(ap, descriptor);
long __somResult =
SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchL)
(this,methodId,descriptor,ap);
va_end(ap);
return __somResult;
}
/* va_list method: somDispatchA */
/* the va_list invocation form */
void* SOMDObject_somDispatchA(somId methodId,
somId descriptor,
va_list ap)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchA)
(this,methodId,descriptor,ap);
}
/* the varargs invocation form */
void* somDispatchA(somId methodId,
somId descriptor,
...)
{
va_list ap;
va_start(ap, descriptor);
void* __somResult =
SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchA)
(this,methodId,descriptor,ap);
va_end(ap);
return __somResult;
}
/* va_list method: somDispatchD */
/* the va_list invocation form */
double SOMDObject_somDispatchD(somId methodId,
somId descriptor,
va_list ap)
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchD)
(this,methodId,descriptor,ap);
}
/* the varargs invocation form */
double somDispatchD(somId methodId,
somId descriptor,
...)
{
va_list ap;
va_start(ap, descriptor);
double __somResult =
SOM_ResolveD(this,SOMDObject,SOMObject,somDispatchD)
(this,methodId,descriptor,ap);
va_end(ap);
return __somResult;
}
/* method: somPrintSelf */
SOMObject* somPrintSelf()
{
return SOM_ResolveD(this,SOMDObject,SOMObject,somPrintSelf)
(this);
}
/* method: somDumpSelf */
void somDumpSelf(long level)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDumpSelf)
(this,level);
}
/* method: somDumpSelfInt */
void somDumpSelfInt(long level)
{
SOM_ResolveD(this,SOMDObject,SOMObject,somDumpSelfInt)
(this,level);
}
}; /* SOMDObject */
#endif /* SOM_SOMDObject_xh */