
/*
 * This file was generated by the SOM Compiler.
 * FileName: somdom.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.19
 *     SOM Emitter emith.dll: 2.31.1.64
 */

/*
 *    COMPONENT_NAME: somd
 * 
 *    ORIGINS: 27
 * 
 * 
 *     25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1994,1996
 *    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 DSOM Distributed Object Manager.
 * 
 *    This is a subclass of the abstract ObjectMgr class.
 *    All ObjectMgr methods are implemented with DSOM calls.
 */


#ifndef SOM_SOMDObjectMgr_h
#define SOM_SOMDObjectMgr_h


/*
 * The SOM_STRICT_IDL macro means that we can ignore stars
 * in our declarations of objects.
 */
#define SOM_STRICT_IDL 1


#include <som.h>
#ifndef SOM_IMPORTEXPORT_somd_somdom
#ifdef SOM_DLL_somd
	/* export semantics */
	#if defined(SOM_DEFFILE_somd)\
	||(defined(SOM_DEFFILE_BY_DEFAULT)&&!defined(SOM_NODEFFILE_somd))\
	|| !defined(SOM_Module_somdom_Source)
	#define SOM_IMPORTEXPORT_somd_somdom
	#else
	#define SOM_IMPORTEXPORT_somd_somdom SOMDLLEXPORT
	#endif
#else
	#define SOM_IMPORTEXPORT_somd_somdom SOMDLLIMPORT
#endif
#endif

/*
 * -- 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 the class name as an object type
 */
#ifndef SOMDObjectMgr
#define SOMDObjectMgr SOMObject
#endif
/*
 *  In addition to the basic ObjectMgr interface, the DSOM ObjectMgr
 *  defines the following methods to find remote server objects:
 */

/*
 * Include Parent Bindings
 */
#ifndef SOM_ObjectMgr_h
#ifdef SOMLOCALINCLUDES
#include "om.h"
#else
#include <om.h>
#endif
#endif

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef Container
    #define Container SOMObject
#endif /* Container */
#ifndef SOMDServer
    #define SOMDServer SOMObject
#endif /* SOMDServer */
#ifndef _IDL_SEQUENCE_SOMDServer_defined
#define _IDL_SEQUENCE_SOMDServer_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    SOMDServer *_buffer;
} _IDL_SEQUENCE_SOMDServer;
#endif /* _IDL_SEQUENCE_SOMDServer_defined */ 

#ifndef SOM_DONT_USE_SHORT_NAMES
#endif /* SOM_DONT_USE_SHORT_NAMES */

/*
 * End of bindings for IDL types.
 */

/*
 * Passthru lines: File: "C.h", "after"
 */

#ifndef SOM_IMPORTEXPORT_somd
#if defined(_WIN32) && !defined(SOM_DLL_somd)
#define SOM_IMPORTEXPORT_somd SOMDLLIMPORT
#else
#define SOM_IMPORTEXPORT_somd
#endif
#endif
#ifdef SOM_STRICT_IDL
SOMEXTERN SOM_IMPORTEXPORT_somd SOMDObjectMgr   SOMDLINK SOMD_ObjectMgr;
#else
SOMEXTERN SOM_IMPORTEXPORT_somd SOMDObjectMgr *  SOMDLINK SOMD_ObjectMgr;
#endif /* SOM_STRICT_IDL */

#include <somdserv.h>


#define SOMDObjectMgr_MajorVersion 2
#define SOMDObjectMgr_MinorVersion 2

/*
 * Declare the class creation procedure
 */
SOMEXTERN SOM_IMPORTEXPORT_somd_somdom SOMClass  SOMLINK SOMDObjectMgrNewClass(integer4 somtmajorVersion,
		integer4 somtminorVersion);

/*
 * Declare the ABI 2 ClassData structure
 */
SOMEXTERN struct SOMDObjectMgrClassDataStructure {
	SOMClass classObject;
	somMToken somdFindServer;
	somMToken somdFindServerByName;
	somMToken somdFindServersByClass;
	somMToken somdFindAnyServerByClass;
	somMToken _get_somd21somFree;
	somMToken _set_somd21somFree;
} SOM_IMPORTEXPORT_somd_somdom SOMDLINK SOMDObjectMgrClassData;

/*
 * Declare the ABI 2 CClassData structure
 */
SOMEXTERN struct SOMDObjectMgrCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
} SOM_IMPORTEXPORT_somd_somdom SOMDLINK SOMDObjectMgrCClassData;

/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_SOMDObjectMgr (SOMDObjectMgrClassData.classObject)
#ifndef SOMGD_SOMDObjectMgr
    #if (defined(_SOMDObjectMgr) || defined(__SOMDObjectMgr))
        #undef _SOMDObjectMgr
        #undef __SOMDObjectMgr
        #define SOMGD_SOMDObjectMgr 1
    #else
        #define _SOMDObjectMgr _SOMCLASS_SOMDObjectMgr
    #endif /* _SOMDObjectMgr */
#endif /* SOMGD_SOMDObjectMgr */
#define SOMDObjectMgr_classObj _SOMCLASS_SOMDObjectMgr
#define _SOMMTOKEN_SOMDObjectMgr(method) ((somMToken)SOMDObjectMgrClassData.method)

/*
 * New and Renew macros for SOMDObjectMgr
 */
#define SOMDObjectMgrNew() \
   ( _SOMDObjectMgr ? \
	_somNew(_SOMDObjectMgr) \
	: ( SOMDObjectMgrNewClass(\
		SOMDObjectMgr_MajorVersion, \
		SOMDObjectMgr_MinorVersion),\
	   _somNew(_SOMDObjectMgr)))
#define SOMDObjectMgrRenew(buf) \
   ( _SOMDObjectMgr ? \
	_somRenew(_SOMDObjectMgr, buf) \
	: ( SOMDObjectMgrNewClass(\
		SOMDObjectMgr_MajorVersion, \
		SOMDObjectMgr_MinorVersion),\
	   _somRenew(_SOMDObjectMgr, buf)))

/*
 * New Method: somdFindServer
 */
typedef SOMDServer   SOMLINK somTP_SOMDObjectMgr_somdFindServer(SOMDObjectMgr somSelf, Environment *ev, 
		ImplId serverid);
typedef somTP_SOMDObjectMgr_somdFindServer *somTD_SOMDObjectMgr_somdFindServer;
/*
 *  Finds and returns a proxy to the Server object which is identified by the
 *  ImplId.  (ImplId is defined at server registration time, and can be
 *  obtained from the ImplDef.)
 * 
 *  OWNERSHIP of returned SOMDServer object is transferred to the caller.
 */
#define somMD_SOMDObjectMgr_somdFindServer "::SOMDObjectMgr::somdFindServer"
#define SOMDObjectMgr_somdFindServer(somSelf,ev,serverid) \
    (SOM_Resolve(somSelf, SOMDObjectMgr, somdFindServer) \
	(somSelf,ev,serverid))
#ifndef SOMGD_somdFindServer
    #if (defined(_somdFindServer) || defined(__somdFindServer))
        #undef _somdFindServer
        #undef __somdFindServer
        #define SOMGD_somdFindServer 1
    #else
        #define _somdFindServer SOMDObjectMgr_somdFindServer
    #endif /* _somdFindServer */
#endif /* SOMGD_somdFindServer */

/*
 * New Method: somdFindServerByName
 */
typedef SOMDServer   SOMLINK somTP_SOMDObjectMgr_somdFindServerByName(SOMDObjectMgr somSelf, Environment *ev, 
		string servername);
typedef somTP_SOMDObjectMgr_somdFindServerByName *somTD_SOMDObjectMgr_somdFindServerByName;
/*
 *  Finds and returns a proxy to the Server object with the specified name.
 *  (The name is defined at server registration time, and can be obtained
 *  from the ImplDef.)
 * 
 *  OWNERSHIP of returned SOMDServer object is transferred to the caller.
 */
#define somMD_SOMDObjectMgr_somdFindServerByName "::SOMDObjectMgr::somdFindServerByName"
#define SOMDObjectMgr_somdFindServerByName(somSelf,ev,servername) \
    (SOM_Resolve(somSelf, SOMDObjectMgr, somdFindServerByName) \
	(somSelf,ev,servername))
#ifndef SOMGD_somdFindServerByName
    #if (defined(_somdFindServerByName) || defined(__somdFindServerByName))
        #undef _somdFindServerByName
        #undef __somdFindServerByName
        #define SOMGD_somdFindServerByName 1
    #else
        #define _somdFindServerByName SOMDObjectMgr_somdFindServerByName
    #endif /* _somdFindServerByName */
#endif /* SOMGD_somdFindServerByName */

/*
 * New Method: somdFindServersByClass
 */
typedef _IDL_SEQUENCE_SOMDServer   SOMLINK somTP_SOMDObjectMgr_somdFindServersByClass(SOMDObjectMgr somSelf, Environment *ev, 
		Identifier objclass);
typedef somTP_SOMDObjectMgr_somdFindServersByClass *somTD_SOMDObjectMgr_somdFindServersByClass;
/*
 *  Finds all Server objects which can create an object of the named class.
 * 
 *  OWNERSHIP of returned SOMDServer objects is transferred to the caller.
 */
#define somMD_SOMDObjectMgr_somdFindServersByClass "::SOMDObjectMgr::somdFindServersByClass"
#define SOMDObjectMgr_somdFindServersByClass(somSelf,ev,objclass) \
    (SOM_Resolve(somSelf, SOMDObjectMgr, somdFindServersByClass) \
	(somSelf,ev,objclass))
#ifndef SOMGD_somdFindServersByClass
    #if (defined(_somdFindServersByClass) || defined(__somdFindServersByClass))
        #undef _somdFindServersByClass
        #undef __somdFindServersByClass
        #define SOMGD_somdFindServersByClass 1
    #else
        #define _somdFindServersByClass SOMDObjectMgr_somdFindServersByClass
    #endif /* _somdFindServersByClass */
#endif /* SOMGD_somdFindServersByClass */

/*
 * New Method: somdFindAnyServerByClass
 */
typedef SOMDServer   SOMLINK somTP_SOMDObjectMgr_somdFindAnyServerByClass(SOMDObjectMgr somSelf, Environment *ev, 
		Identifier objclass);
typedef somTP_SOMDObjectMgr_somdFindAnyServerByClass *somTD_SOMDObjectMgr_somdFindAnyServerByClass;
/*
 *  Finds (any) Server object which can create an object of the named class.
 *  (This is a specialization of the somdFindServerByClass method.)
 * 
 *  OWNERSHIP of returned SOMDServer object is transferred to the caller.
 */
#define somMD_SOMDObjectMgr_somdFindAnyServerByClass "::SOMDObjectMgr::somdFindAnyServerByClass"
#define SOMDObjectMgr_somdFindAnyServerByClass(somSelf,ev,objclass) \
    (SOM_Resolve(somSelf, SOMDObjectMgr, somdFindAnyServerByClass) \
	(somSelf,ev,objclass))
#ifndef SOMGD_somdFindAnyServerByClass
    #if (defined(_somdFindAnyServerByClass) || defined(__somdFindAnyServerByClass))
        #undef _somdFindAnyServerByClass
        #undef __somdFindAnyServerByClass
        #define SOMGD_somdFindAnyServerByClass 1
    #else
        #define _somdFindAnyServerByClass SOMDObjectMgr_somdFindAnyServerByClass
    #endif /* _somdFindAnyServerByClass */
#endif /* SOMGD_somdFindAnyServerByClass */

/*
 * New Method: _get_somd21somFree
 */
typedef boolean   SOMLINK somTP_SOMDObjectMgr__get_somd21somFree(SOMDObjectMgr somSelf, Environment *ev);
typedef somTP_SOMDObjectMgr__get_somd21somFree *somTD_SOMDObjectMgr__get_somd21somFree;
/*
 * Method from the IDL attribute statement:
 * "attribute boolean somd21somFree"
 */
#define somMD_SOMDObjectMgr__get_somd21somFree "::SOMDObjectMgr::_get_somd21somFree"
#define SOMDObjectMgr__get_somd21somFree(somSelf,ev) \
    (SOM_Resolve(somSelf, SOMDObjectMgr, _get_somd21somFree) \
	(somSelf,ev))
#ifndef SOMGD_get_somd21somFree
    #if (defined(_get_somd21somFree) || defined(__get_somd21somFree))
        #undef _get_somd21somFree
        #undef __get_somd21somFree
        #define SOMGD_get_somd21somFree 1
    #else
        #define __get_somd21somFree SOMDObjectMgr__get_somd21somFree
    #endif /* __get_somd21somFree */
#endif /* SOMGD_get_somd21somFree */

/*
 * New Method: _set_somd21somFree
 */
typedef void   SOMLINK somTP_SOMDObjectMgr__set_somd21somFree(SOMDObjectMgr somSelf, Environment *ev, 
		boolean somd21somFree);
typedef somTP_SOMDObjectMgr__set_somd21somFree *somTD_SOMDObjectMgr__set_somd21somFree;
/*
 * Method from the IDL attribute statement:
 * "attribute boolean somd21somFree"
 */
#define somMD_SOMDObjectMgr__set_somd21somFree "::SOMDObjectMgr::_set_somd21somFree"
#define SOMDObjectMgr__set_somd21somFree(somSelf,ev,somd21somFree) \
    (SOM_Resolve(somSelf, SOMDObjectMgr, _set_somd21somFree) \
	(somSelf,ev,somd21somFree))
#ifndef SOMGD_set_somd21somFree
    #if (defined(_set_somd21somFree) || defined(__set_somd21somFree))
        #undef _set_somd21somFree
        #undef __set_somd21somFree
        #define SOMGD_set_somd21somFree 1
    #else
        #define __set_somd21somFree SOMDObjectMgr__set_somd21somFree
    #endif /* __set_somd21somFree */
#endif /* SOMGD_set_somd21somFree */

/*
 * Full Names for Inherited Methods
 */
/* overridden methods */
#define SOMDObjectMgr_somdNewObject ObjectMgr_somdNewObject
#define SOMDObjectMgr_somdGetIdFromObject ObjectMgr_somdGetIdFromObject
#define SOMDObjectMgr_somdGetObjectFromId ObjectMgr_somdGetObjectFromId
#define SOMDObjectMgr_somdReleaseObject ObjectMgr_somdReleaseObject
#define SOMDObjectMgr_somdDestroyObject ObjectMgr_somdDestroyObject
#define SOMDObjectMgr_somInit SOMObject_somInit

#ifndef SOM_DONT_USE_INHERITED_MACROS
#define SOMDObjectMgr_somDefaultInit SOMObject_somDefaultInit
#define SOMDObjectMgr_somDestruct SOMObject_somDestruct
#define SOMDObjectMgr_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define SOMDObjectMgr_somDefaultAssign SOMObject_somDefaultAssign
#define SOMDObjectMgr_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define SOMDObjectMgr_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define SOMDObjectMgr_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define SOMDObjectMgr_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define SOMDObjectMgr_somDefaultVAssign SOMObject_somDefaultVAssign
#define SOMDObjectMgr_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define SOMDObjectMgr_somUninit SOMObject_somUninit
#define SOMDObjectMgr_somFree SOMObject_somFree
#define SOMDObjectMgr_somGetClass SOMObject_somGetClass
#define SOMDObjectMgr_somGetClassName SOMObject_somGetClassName
#define SOMDObjectMgr_somGetSize SOMObject_somGetSize
#define SOMDObjectMgr_somIsA SOMObject_somIsA
#define SOMDObjectMgr_somIsInstanceOf SOMObject_somIsInstanceOf
#define SOMDObjectMgr_somRespondsTo SOMObject_somRespondsTo
#define SOMDObjectMgr_somDispatch SOMObject_somDispatch
#define SOMDObjectMgr_somClassDispatch SOMObject_somClassDispatch
#define SOMDObjectMgr_somCastObj SOMObject_somCastObj
#define SOMDObjectMgr_somResetObj SOMObject_somResetObj
#define SOMDObjectMgr_somPrintSelf SOMObject_somPrintSelf
#define SOMDObjectMgr_somDumpSelf SOMObject_somDumpSelf
#define SOMDObjectMgr_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMDObjectMgr_h */
