
/*
 * This file was generated by the SOM Compiler.
 * FileName: OM.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.3
 *     SOM Emitter emith.dll: 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.
 * 
 * 
 *    IDL interface spec for generic Object Manager.
 * 
 *    The Object Manager (abstract) class provides a uniform abstraction
 *    for various sorts of object managers.  Object Request Brokers, persistent
 *    storage managers, and OODBMSs are examples of object managers.
 * 
 *    This is an abstract base class, which defines the "core" interface for
 *    an object manager.  The basic groups of methods are:
 * 
 *  	- object creation (basic)
 *  	- object identification & location/activation
 *  	- object release & destruction
 * 
 *    If a desired object cannot be mapped into the client's address space, the
 *    object manager is responsible for building a local "proxy" for the remote
 *    object.  The client invokes methods on the proxy, and the proxy should
 *    redispatch the requests to the remote object in an appropriate and
 *    transparent way.
 * 
 *    NOTE: Since this is only intended to be an abstract base class, there
 *    is no underlying implementation, and ObjectMgr objects should not actually
 *    be instantiated.
 * 
 */


#ifndef SOM_ObjectMgr_h
#define SOM_ObjectMgr_h


#include <som.h>

/*
 * -- 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))



/*
 * Define class data structures as resolution macros
 */
#define ObjectMgrClassData (*resolve_ObjectMgrClassData())
#define ObjectMgrCClassData (*resolve_ObjectMgrCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ObjectMgr
#define ObjectMgr SOMObject
#endif
#include <somobj.h>

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef Container
    #define Container SOMObject
#endif /* Container */

/*
 * End of user-defined types.
 */

#define ObjectMgr_MajorVersion 2
#define ObjectMgr_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ObjectMgrNewClass c
#define ObjectMgrClassData d
#define ObjectMgrCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */

/*
 * Include the meta class file
 */
#include <snglicls.h>
/*--------------Migration------------*/
#define ObjectMgr_classObj ObjectMgrClassData.classObject
#define _ObjectMgr ObjectMgr_classObj

/*
 * Declare the class creation procedure
 */
SOMEXTERN SOMClass * SOMLINK ObjectMgrNewClass(integer4 somntmajorVersion,
		integer4 somntminorVersion);

/*
 * Declare the class data structure
 */
SOMEXTERN struct ObjectMgrClassDataStructure {
	SOMClass *classObject;
	somMToken somdNewObject;
	somMToken somdGetIdFromObject;
	somMToken somdGetObjectFromId;
	somMToken somdReleaseObject;
	somMToken somdDestroyObject;
}  _ObjectMgrClassData;
SOMEXTERN struct ObjectMgrClassDataStructure * SOMLINK resolve_ObjectMgrClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ObjectMgrCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ObjectMgrCClassData;
SOMEXTERN struct ObjectMgrCClassDataStructure * SOMLINK resolve_ObjectMgrCClassData(void);

/*
 * New and Renew macros for ObjectMgr
 */
#define ObjectMgrNew() \
   (_somNew(_ObjectMgr ? _ObjectMgr : ObjectMgrNewClass(ObjectMgr_MajorVersion, ObjectMgr_MinorVersion)))
#define ObjectMgrRenew(buf) \
   (_somRenew(_ObjectMgr ? _ObjectMgr : ObjectMgrNewClass(ObjectMgr_MajorVersion, ObjectMgr_MinorVersion), buf))

/*
 * New Method: somdNewObject
 */
typedef SOMObject*   (SOMLINK * somTD_ObjectMgr_somdNewObject)(ObjectMgr *somSelf, Environment *ev,
		Identifier objclass,
		string hints);
#define somMD_ObjectMgr_somdNewObject "::ObjectMgr::somdNewObject"
#define ObjectMgr_somdNewObject(somSelf,ev,objclass,hints) \
    (SOM_Resolve(somSelf, ObjectMgr, somdNewObject) \
	(somSelf,ev,objclass,hints))
#ifndef SOMGD_somdNewObject
    #if (defined(_somdNewObject) || defined(__somdNewObject))
        #undef _somdNewObject
        #undef __somdNewObject
        #define SOMGD_somdNewObject 1
    #else
        #define _somdNewObject ObjectMgr_somdNewObject
    #endif /* _somdNewObject */
#endif /* SOMGD_somdNewObject */

/*
 * New Method: somdGetIdFromObject
 */
typedef string   (SOMLINK * somTD_ObjectMgr_somdGetIdFromObject)(ObjectMgr *somSelf, Environment *ev,
		SOMObject* obj);
#define somMD_ObjectMgr_somdGetIdFromObject "::ObjectMgr::somdGetIdFromObject"
#define ObjectMgr_somdGetIdFromObject(somSelf,ev,obj) \
    (SOM_Resolve(somSelf, ObjectMgr, somdGetIdFromObject) \
	(somSelf,ev,obj))
#ifndef SOMGD_somdGetIdFromObject
    #if (defined(_somdGetIdFromObject) || defined(__somdGetIdFromObject))
        #undef _somdGetIdFromObject
        #undef __somdGetIdFromObject
        #define SOMGD_somdGetIdFromObject 1
    #else
        #define _somdGetIdFromObject ObjectMgr_somdGetIdFromObject
    #endif /* _somdGetIdFromObject */
#endif /* SOMGD_somdGetIdFromObject */

/*
 * New Method: somdGetObjectFromId
 */
typedef SOMObject*   (SOMLINK * somTD_ObjectMgr_somdGetObjectFromId)(ObjectMgr *somSelf, Environment *ev,
		string id);
#define somMD_ObjectMgr_somdGetObjectFromId "::ObjectMgr::somdGetObjectFromId"
#define ObjectMgr_somdGetObjectFromId(somSelf,ev,id) \
    (SOM_Resolve(somSelf, ObjectMgr, somdGetObjectFromId) \
	(somSelf,ev,id))
#ifndef SOMGD_somdGetObjectFromId
    #if (defined(_somdGetObjectFromId) || defined(__somdGetObjectFromId))
        #undef _somdGetObjectFromId
        #undef __somdGetObjectFromId
        #define SOMGD_somdGetObjectFromId 1
    #else
        #define _somdGetObjectFromId ObjectMgr_somdGetObjectFromId
    #endif /* _somdGetObjectFromId */
#endif /* SOMGD_somdGetObjectFromId */

/*
 * New Method: somdReleaseObject
 */
typedef void   (SOMLINK * somTD_ObjectMgr_somdReleaseObject)(ObjectMgr *somSelf, Environment *ev,
		SOMObject* obj);
#define somMD_ObjectMgr_somdReleaseObject "::ObjectMgr::somdReleaseObject"
#define ObjectMgr_somdReleaseObject(somSelf,ev,obj) \
    (SOM_Resolve(somSelf, ObjectMgr, somdReleaseObject) \
	(somSelf,ev,obj))
#ifndef SOMGD_somdReleaseObject
    #if (defined(_somdReleaseObject) || defined(__somdReleaseObject))
        #undef _somdReleaseObject
        #undef __somdReleaseObject
        #define SOMGD_somdReleaseObject 1
    #else
        #define _somdReleaseObject ObjectMgr_somdReleaseObject
    #endif /* _somdReleaseObject */
#endif /* SOMGD_somdReleaseObject */

/*
 * New Method: somdDestroyObject
 */
typedef void   (SOMLINK * somTD_ObjectMgr_somdDestroyObject)(ObjectMgr *somSelf, Environment *ev,
		SOMObject* obj);
#define somMD_ObjectMgr_somdDestroyObject "::ObjectMgr::somdDestroyObject"
#define ObjectMgr_somdDestroyObject(somSelf,ev,obj) \
    (SOM_Resolve(somSelf, ObjectMgr, somdDestroyObject) \
	(somSelf,ev,obj))
#ifndef SOMGD_somdDestroyObject
    #if (defined(_somdDestroyObject) || defined(__somdDestroyObject))
        #undef _somdDestroyObject
        #undef __somdDestroyObject
        #define SOMGD_somdDestroyObject 1
    #else
        #define _somdDestroyObject ObjectMgr_somdDestroyObject
    #endif /* _somdDestroyObject */
#endif /* SOMGD_somdDestroyObject */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ObjectMgr_somDefaultInit SOMObject_somDefaultInit
#define ObjectMgr_somDestruct SOMObject_somDestruct
#define ObjectMgr_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ObjectMgr_somDefaultAssign SOMObject_somDefaultAssign
#define ObjectMgr_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ObjectMgr_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ObjectMgr_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ObjectMgr_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ObjectMgr_somDefaultVAssign SOMObject_somDefaultVAssign
#define ObjectMgr_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ObjectMgr_somInit SOMObject_somInit
#define ObjectMgr_somFree SOMObject_somFree
#define ObjectMgr_somUninit SOMObject_somUninit
#define ObjectMgr_somGetClass SOMObject_somGetClass
#define ObjectMgr_somGetClassName SOMObject_somGetClassName
#define ObjectMgr_somGetSize SOMObject_somGetSize
#define ObjectMgr_somIsA SOMObject_somIsA
#define ObjectMgr_somIsInstanceOf SOMObject_somIsInstanceOf
#define ObjectMgr_somRespondsTo SOMObject_somRespondsTo
#define ObjectMgr_somDispatch SOMObject_somDispatch
#define ObjectMgr_somClassDispatch SOMObject_somClassDispatch
#define ObjectMgr_somCastObj SOMObject_somCastObj
#define ObjectMgr_somResetObj SOMObject_somResetObj
#define ObjectMgr_somDispatchV SOMObject_somDispatchV
#define ObjectMgr_somDispatchL SOMObject_somDispatchL
#define ObjectMgr_somDispatchA SOMObject_somDispatchA
#define ObjectMgr_somDispatchD SOMObject_somDispatchD
#define ObjectMgr_somPrintSelf SOMObject_somPrintSelf
#define ObjectMgr_somDumpSelf SOMObject_somDumpSelf
#define ObjectMgr_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ObjectMgr_h */
