
/*
 * This file was generated by the SOM Compiler.
 * FileName: impldef.xh.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.19
 *     SOM Emitter emitxh.dll: 2.108
 */

/*
 *    @(#) 2.37 src/somd/somdobj.idl, somd, som3.0 9/26/96 14:02:18 [12/22/96 21:11:55]
 * 
 *    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.
 * 
 * 
 *    This is the class that implements the behavior of CORBA object references,
 *    e.g., get_implementation, get_interface, duplicate, release, etc.
 * 
 *    In DSOM, there is also another derivation of this class:  SOMDClientProxy.
 *    This subclass inherits the implementation of this class, but extends it
 *    by overriding sommProxyDispatch 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.
 *  96F8647, 96F8648, 96F8850 (C) Copyright IBM Corp. 1992, 1994
 *  All Rights Reserved
 *  Licensed Materials - Property of IBM
 *   SOMObject: System Object Model root class
 */


#ifndef SOM_ImplementationDef_xh
#define SOM_ImplementationDef_xh


#define ImplementationDef_MajorVersion 2
#define ImplementationDef_MinorVersion 2
class ImplementationDef;

/* Parents */
#ifndef SOM_CosStream_Streamable_xh
#ifdef SOMLOCALINCLUDES
#include "omgestio.xh"
#else
#include <omgestio.xh>
#endif
#endif

/* Useful C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

#ifndef ImplementationDef_API
#define ImplementationDef_API
/*
 * -- The Class API
 */
#ifndef SOM_IMPORTEXPORT_somd_impldef
#ifdef SOM_DLL_somd
	/* export semantics */
	#if defined(SOM_DEFFILE_somd)\
	||(defined(SOM_DEFFILE_BY_DEFAULT)&&!defined(SOM_NODEFFILE_somd))\
	|| !defined(SOM_Module_impldef_Source)
	#define SOM_IMPORTEXPORT_somd_impldef
	#else
	#define SOM_IMPORTEXPORT_somd_impldef SOMDLLEXPORT
	#endif
#else
	#define SOM_IMPORTEXPORT_somd_impldef SOMDLLIMPORT
#endif
#endif

/*
 * Start of bindings for IDL types
 */

class SOMClass;
class SOMObject;
class Container;
class ExtendedNaming_PropertyBindingIterator;
class ExtendedNaming_PropertyIterator;
class ExtendedNaming_IndexIterator;
class SOMDObject;
class Principal;
class ImplementationDef;
class InterfaceDef;
class NVList;
class Context;
class Request;
class CosObjectIdentity_IdentifiableObject;
class CosStream_Streamable;
class CosStream_StreamableFactory;
#define ImplementationDef_SOMD_MAXLEN_IMPL_ID 36 /* 36 */
#define ImplementationDef_SOMD_MAXLEN_IMPL_ALIAS 255 /* 255 */
#define ImplementationDef_SOMD_MAXLEN_IMPL_PROGRAM 255 /* 255 */
#define ImplementationDef_SOMD_MAXLEN_FILENAME 255 /* 255 */
#define ImplementationDef_SOMD_MAXLEN_HOSTNAME 32 /* 32 */
#define ImplementationDef_SOMD_MAXLEN_CLASSNAME 255 /* 255 */
#ifndef _IDL_SEQUENCE_octet_defined
#define _IDL_SEQUENCE_octet_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    octet *_buffer;
} _IDL_SEQUENCE_octet;
#endif /* _IDL_SEQUENCE_octet_defined */ 
typedef
_IDL_SEQUENCE_octet* ImplementationDef_octet_seqP;
/*
 *  pointer to an octet sequence
 */

#ifndef _IDL_SEQUENCE_string_defined
#define _IDL_SEQUENCE_string_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    string *_buffer;
} _IDL_SEQUENCE_string;
#endif /* _IDL_SEQUENCE_string_defined */ 
typedef
struct ImplementationDef_prot_response {
string  protocol;
_IDL_SEQUENCE_string* response;
} ImplementationDef_prot_response;
/*
 *  structure containing the protocol along with its responses
 *  to form a valid tagged profile.
 */

struct ImplementationDef_prot_response;
#ifndef _IDL_SEQUENCE_ImplementationDef_prot_response_defined
#define _IDL_SEQUENCE_ImplementationDef_prot_response_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    struct ImplementationDef_prot_response *_buffer;
} _IDL_SEQUENCE_ImplementationDef_prot_response;
#endif /* _IDL_SEQUENCE_ImplementationDef_prot_response_defined */ 
typedef
_IDL_SEQUENCE_ImplementationDef_prot_response ImplementationDef_seq_prot_responses;
/*
 *  ImplementationDef attributes
 */


#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_SOMD_MAXLEN_IMPL_ID
    #ifdef SOMD_MAXLEN_IMPL_ID
        #undef SOMD_MAXLEN_IMPL_ID
        #define SOMTGD_SOMD_MAXLEN_IMPL_ID 1
    #else
        #define SOMD_MAXLEN_IMPL_ID ImplementationDef_SOMD_MAXLEN_IMPL_ID
    #endif /* SOMD_MAXLEN_IMPL_ID */
#endif /* SOMTGD_SOMD_MAXLEN_IMPL_ID */
#ifndef SOMTGD_SOMD_MAXLEN_IMPL_ALIAS
    #ifdef SOMD_MAXLEN_IMPL_ALIAS
        #undef SOMD_MAXLEN_IMPL_ALIAS
        #define SOMTGD_SOMD_MAXLEN_IMPL_ALIAS 1
    #else
        #define SOMD_MAXLEN_IMPL_ALIAS ImplementationDef_SOMD_MAXLEN_IMPL_ALIAS
    #endif /* SOMD_MAXLEN_IMPL_ALIAS */
#endif /* SOMTGD_SOMD_MAXLEN_IMPL_ALIAS */
#ifndef SOMTGD_SOMD_MAXLEN_IMPL_PROGRAM
    #ifdef SOMD_MAXLEN_IMPL_PROGRAM
        #undef SOMD_MAXLEN_IMPL_PROGRAM
        #define SOMTGD_SOMD_MAXLEN_IMPL_PROGRAM 1
    #else
        #define SOMD_MAXLEN_IMPL_PROGRAM ImplementationDef_SOMD_MAXLEN_IMPL_PROGRAM
    #endif /* SOMD_MAXLEN_IMPL_PROGRAM */
#endif /* SOMTGD_SOMD_MAXLEN_IMPL_PROGRAM */
#ifndef SOMTGD_SOMD_MAXLEN_FILENAME
    #ifdef SOMD_MAXLEN_FILENAME
        #undef SOMD_MAXLEN_FILENAME
        #define SOMTGD_SOMD_MAXLEN_FILENAME 1
    #else
        #define SOMD_MAXLEN_FILENAME ImplementationDef_SOMD_MAXLEN_FILENAME
    #endif /* SOMD_MAXLEN_FILENAME */
#endif /* SOMTGD_SOMD_MAXLEN_FILENAME */
#ifndef SOMTGD_SOMD_MAXLEN_HOSTNAME
    #ifdef SOMD_MAXLEN_HOSTNAME
        #undef SOMD_MAXLEN_HOSTNAME
        #define SOMTGD_SOMD_MAXLEN_HOSTNAME 1
    #else
        #define SOMD_MAXLEN_HOSTNAME ImplementationDef_SOMD_MAXLEN_HOSTNAME
    #endif /* SOMD_MAXLEN_HOSTNAME */
#endif /* SOMTGD_SOMD_MAXLEN_HOSTNAME */
#ifndef SOMTGD_SOMD_MAXLEN_CLASSNAME
    #ifdef SOMD_MAXLEN_CLASSNAME
        #undef SOMD_MAXLEN_CLASSNAME
        #define SOMTGD_SOMD_MAXLEN_CLASSNAME 1
    #else
        #define SOMD_MAXLEN_CLASSNAME ImplementationDef_SOMD_MAXLEN_CLASSNAME
    #endif /* SOMD_MAXLEN_CLASSNAME */
#endif /* SOMTGD_SOMD_MAXLEN_CLASSNAME */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_octet_seqP
    #ifdef octet_seqP
        #undef octet_seqP
        #define SOMTGD_octet_seqP 1
    #else
        #define octet_seqP ImplementationDef_octet_seqP
    #endif /* octet_seqP */
#endif /* SOMTGD_octet_seqP */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#ifndef SOMTGD_prot_response
    #ifdef prot_response
        #undef prot_response
        #define SOMTGD_prot_response 1
    #else
        #define prot_response ImplementationDef_prot_response
    #endif /* prot_response */
#endif /* SOMTGD_prot_response */
#ifndef SOMTGD__IDL_SEQUENCE_prot_response
    #ifdef _IDL_SEQUENCE_prot_response
        #undef _IDL_SEQUENCE_prot_response
        #define SOMTGD__IDL_SEQUENCE_prot_response 1
    #else
        #define _IDL_SEQUENCE_prot_response _IDL_SEQUENCE_ImplementationDef_prot_response
    #endif /* _IDL_SEQUENCE_prot_response */
#endif /* SOMTGD__IDL_SEQUENCE_prot_response */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_seq_prot_responses
    #ifdef seq_prot_responses
        #undef seq_prot_responses
        #define SOMTGD_seq_prot_responses 1
    #else
        #define seq_prot_responses ImplementationDef_seq_prot_responses
    #endif /* seq_prot_responses */
#endif /* SOMTGD_seq_prot_responses */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

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

/* flags */
#define IMPLDEF_MULTI_THREAD  0x00000001
#define IMPLDEF_DISABLE_SVR   0x00000004
#define IMPLDEF_IMPLID_SET    0x00000008
#define IMPLDEF_SECUREMODE    0x00000020
#define IMPLDEF_MANAGED       0x00000040

#ifndef SOM_IMPORTEXPORT_somd
#if defined(_WIN32) && !defined(SOM_DLL_somd)
#define SOM_IMPORTEXPORT_somd SOMDLLIMPORT
#else
#define SOM_IMPORTEXPORT_somd
#endif
#endif
class ImplementationDef;
SOMEXTERN SOM_IMPORTEXPORT_somd ImplementationDef* SOMDLINK SOMD_ImplDefObject;


/*
 * A function to create the ImplementationDef class object...
 */
SOMEXTERN SOM_IMPORTEXPORT_somd_impldef SOMClass * SOMLINK ImplementationDefNewClass(
		integer4 majorVersion,
		integer4 minorVersion);


/*
 * The API 2 ClassData Structures...
 */
SOMEXTERN struct ImplementationDefClassDataStructure {
	SOMClass *classObject;
	somMToken _set_impl_id;
	somMToken _get_impl_id;
	somMToken _set_impl_alias;
	somMToken _get_impl_alias;
	somMToken _set_impl_program;
	somMToken _get_impl_program;
	somMToken _set_impl_flags;
	somMToken _get_impl_flags;
	somMToken _set_impl_server_class;
	somMToken _get_impl_server_class;
	somMToken _set_impl_refdata_file;
	somMToken _get_impl_refdata_file;
	somMToken _set_impl_refdata_bkup;
	somMToken _get_impl_refdata_bkup;
	somMToken _set_impl_hostname;
	somMToken _get_impl_hostname;
	somMToken _set_impl_def_struct;
	somMToken _get_impl_def_struct;
	somMToken get_impl_winserver_handle;
	somMToken _set_config_file;
	somMToken _get_config_file;
	somMToken _set_impldef_class;
	somMToken _get_impldef_class;
	somMToken _set_svr_objref;
	somMToken _get_svr_objref;
	somMToken _set_protocols;
	somMToken _get_protocols;
	somMToken _set_registrar_resp;
	somMToken _get_registrar_resp;
	somMToken _set_impl_version;
	somMToken _get_impl_version;
	somMToken _set_class_in_NS;
	somMToken _get_class_in_NS;
} SOMDLINK SOM_IMPORTEXPORT_somd_impldef ImplementationDefClassData;
SOMEXTERN struct ImplementationDefCClassDataStructure {
	som3ClassDetailsPtr    parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK SOM_IMPORTEXPORT_somd_impldef ImplementationDefCClassData;


/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_ImplementationDef (ImplementationDefClassData.classObject)
#ifndef SOMGD_ImplementationDef
    #if (defined(_ImplementationDef) || defined(__ImplementationDef))
        #undef _ImplementationDef
        #undef __ImplementationDef
        #define SOMGD_ImplementationDef 1
    #else
        #define _ImplementationDef _SOMCLASS_ImplementationDef
    #endif /* _ImplementationDef */
#endif /* SOMGD_ImplementationDef */
#define ImplementationDef_classObj _SOMCLASS_ImplementationDef
#define _SOMMTOKEN_ImplementationDef(method) ((somMToken)ImplementationDefClassData.method)

/*
 * -- Typedefs for ImplementationDef Method Procedures
 */
SOMEXTERN {
typedef string   SOMLINK somTP_ImplementationDef__get_impl_id(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_id *somTD_ImplementationDef__get_impl_id;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_id(ImplementationDef *somSelf, Environment *ev, 
		string impl_id);
typedef somTP_ImplementationDef__set_impl_id *somTD_ImplementationDef__set_impl_id;
typedef string   SOMLINK somTP_ImplementationDef__get_impl_alias(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_alias *somTD_ImplementationDef__get_impl_alias;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_alias(ImplementationDef *somSelf, Environment *ev, 
		string impl_alias);
typedef somTP_ImplementationDef__set_impl_alias *somTD_ImplementationDef__set_impl_alias;
typedef string   SOMLINK somTP_ImplementationDef__get_impl_program(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_program *somTD_ImplementationDef__get_impl_program;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_program(ImplementationDef *somSelf, Environment *ev, 
		string impl_program);
typedef somTP_ImplementationDef__set_impl_program *somTD_ImplementationDef__set_impl_program;
typedef Flags   SOMLINK somTP_ImplementationDef__get_impl_flags(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_flags *somTD_ImplementationDef__get_impl_flags;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_flags(ImplementationDef *somSelf, Environment *ev, 
		Flags impl_flags);
typedef somTP_ImplementationDef__set_impl_flags *somTD_ImplementationDef__set_impl_flags;
typedef string   SOMLINK somTP_ImplementationDef__get_impl_server_class(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_server_class *somTD_ImplementationDef__get_impl_server_class;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_server_class(ImplementationDef *somSelf, Environment *ev, 
		string impl_server_class);
typedef somTP_ImplementationDef__set_impl_server_class *somTD_ImplementationDef__set_impl_server_class;
typedef string   SOMLINK somTP_ImplementationDef__get_impl_refdata_file(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_refdata_file *somTD_ImplementationDef__get_impl_refdata_file;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_refdata_file(ImplementationDef *somSelf, Environment *ev, 
		string impl_refdata_file);
typedef somTP_ImplementationDef__set_impl_refdata_file *somTD_ImplementationDef__set_impl_refdata_file;
typedef string   SOMLINK somTP_ImplementationDef__get_impl_refdata_bkup(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_refdata_bkup *somTD_ImplementationDef__get_impl_refdata_bkup;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_refdata_bkup(ImplementationDef *somSelf, Environment *ev, 
		string impl_refdata_bkup);
typedef somTP_ImplementationDef__set_impl_refdata_bkup *somTD_ImplementationDef__set_impl_refdata_bkup;
typedef string   SOMLINK somTP_ImplementationDef__get_impl_hostname(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impl_hostname *somTD_ImplementationDef__get_impl_hostname;
typedef void   SOMLINK somTP_ImplementationDef__set_impl_hostname(ImplementationDef *somSelf, Environment *ev, 
		string impl_hostname);
typedef somTP_ImplementationDef__set_impl_hostname *somTD_ImplementationDef__set_impl_hostname;
typedef string   SOMLINK somTP_ImplementationDef__get_config_file(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_config_file *somTD_ImplementationDef__get_config_file;
typedef void   SOMLINK somTP_ImplementationDef__set_config_file(ImplementationDef *somSelf, Environment *ev, 
		string config_file);
typedef somTP_ImplementationDef__set_config_file *somTD_ImplementationDef__set_config_file;
typedef string   SOMLINK somTP_ImplementationDef__get_impldef_class(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_impldef_class *somTD_ImplementationDef__get_impldef_class;
typedef void   SOMLINK somTP_ImplementationDef__set_impldef_class(ImplementationDef *somSelf, Environment *ev, 
		string impldef_class);
typedef somTP_ImplementationDef__set_impldef_class *somTD_ImplementationDef__set_impldef_class;
typedef ImplementationDef_octet_seqP   SOMLINK somTP_ImplementationDef__get_svr_objref(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_svr_objref *somTD_ImplementationDef__get_svr_objref;
typedef void   SOMLINK somTP_ImplementationDef__set_svr_objref(ImplementationDef *somSelf, Environment *ev, 
		ImplementationDef_octet_seqP svr_objref);
typedef somTP_ImplementationDef__set_svr_objref *somTD_ImplementationDef__set_svr_objref;
typedef string   SOMLINK somTP_ImplementationDef__get_protocols(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_protocols *somTD_ImplementationDef__get_protocols;
typedef void   SOMLINK somTP_ImplementationDef__set_protocols(ImplementationDef *somSelf, Environment *ev, 
		string protocols);
typedef somTP_ImplementationDef__set_protocols *somTD_ImplementationDef__set_protocols;
typedef ImplementationDef_seq_prot_responses*   SOMLINK somTP_ImplementationDef__get_registrar_resp(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_registrar_resp *somTD_ImplementationDef__get_registrar_resp;
typedef void   SOMLINK somTP_ImplementationDef__set_registrar_resp(ImplementationDef *somSelf, Environment *ev, 
		ImplementationDef_seq_prot_responses* registrar_resp);
typedef somTP_ImplementationDef__set_registrar_resp *somTD_ImplementationDef__set_registrar_resp;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef void   SOMLINK somTP_ImplementationDef_externalize_to_stream(ImplementationDef *somSelf, Environment *ev, 
		CosStream_StreamIO* stream);
typedef somTP_ImplementationDef_externalize_to_stream *somTD_ImplementationDef_externalize_to_stream;
typedef void   SOMLINK somTP_ImplementationDef_internalize_from_stream(ImplementationDef *somSelf, Environment *ev, 
		CosStream_StreamIO* stream, 
		CosLifeCycle_FactoryFinder* ff);
typedef somTP_ImplementationDef_internalize_from_stream *somTD_ImplementationDef_internalize_from_stream;
typedef void   SOMLINK somTP_ImplementationDef_somDefaultInit(ImplementationDef *somSelf, 
		som3InitCtrl* ctrl);
typedef somTP_ImplementationDef_somDefaultInit *somTD_ImplementationDef_somDefaultInit;
typedef void   SOMLINK somTP_ImplementationDef_somDestruct(ImplementationDef *somSelf, 
		octet doFree, 
		som3DestructCtrl* ctrl);
typedef somTP_ImplementationDef_somDestruct *somTD_ImplementationDef_somDestruct;
typedef boolean   SOMLINK somTP_ImplementationDef_is_identical(ImplementationDef *somSelf, Environment *ev, 
		CosObjectIdentity_IdentifiableObject* other_object);
typedef somTP_ImplementationDef_is_identical *somTD_ImplementationDef_is_identical;
typedef CosObjectIdentity_ObjectIdentifier   SOMLINK somTP_ImplementationDef__get_constant_random_id(ImplementationDef *somSelf, Environment *ev);
typedef somTP_ImplementationDef__get_constant_random_id *somTD_ImplementationDef__get_constant_random_id;
typedef void   SOMLINK somTP_ImplementationDef_somDefaultCopyInit(ImplementationDef *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultCopyInit *somTD_ImplementationDef_somDefaultCopyInit;
typedef ImplementationDef*   SOMLINK somTP_ImplementationDef_somDefaultAssign(ImplementationDef *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultAssign *somTD_ImplementationDef_somDefaultAssign;
typedef void   SOMLINK somTP_ImplementationDef_somDefaultConstCopyInit(ImplementationDef *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultConstCopyInit *somTD_ImplementationDef_somDefaultConstCopyInit;
typedef void   SOMLINK somTP_ImplementationDef_somDefaultVCopyInit(ImplementationDef *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultVCopyInit *somTD_ImplementationDef_somDefaultVCopyInit;
typedef void   SOMLINK somTP_ImplementationDef_somDefaultConstVCopyInit(ImplementationDef *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultConstVCopyInit *somTD_ImplementationDef_somDefaultConstVCopyInit;
typedef ImplementationDef*   SOMLINK somTP_ImplementationDef_somDefaultConstAssign(ImplementationDef *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultConstAssign *somTD_ImplementationDef_somDefaultConstAssign;
typedef ImplementationDef*   SOMLINK somTP_ImplementationDef_somDefaultVAssign(ImplementationDef *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultVAssign *somTD_ImplementationDef_somDefaultVAssign;
typedef ImplementationDef*   SOMLINK somTP_ImplementationDef_somDefaultConstVAssign(ImplementationDef *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_ImplementationDef_somDefaultConstVAssign *somTD_ImplementationDef_somDefaultConstVAssign;
typedef void   SOMLINK somTP_ImplementationDef_somInit(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somInit *somTD_ImplementationDef_somInit;
typedef void   SOMLINK somTP_ImplementationDef_somUninit(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somUninit *somTD_ImplementationDef_somUninit;
typedef void   SOMLINK somTP_ImplementationDef_somFree(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somFree *somTD_ImplementationDef_somFree;
typedef SOMClass*   SOMLINK somTP_ImplementationDef_somGetClass(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somGetClass *somTD_ImplementationDef_somGetClass;
typedef string   SOMLINK somTP_ImplementationDef_somGetClassName(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somGetClassName *somTD_ImplementationDef_somGetClassName;
typedef long   SOMLINK somTP_ImplementationDef_somGetSize(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somGetSize *somTD_ImplementationDef_somGetSize;
typedef boolean   SOMLINK somTP_ImplementationDef_somIsA(ImplementationDef *somSelf, 
		SOMClass* aClassObj);
typedef somTP_ImplementationDef_somIsA *somTD_ImplementationDef_somIsA;
typedef boolean   SOMLINK somTP_ImplementationDef_somIsInstanceOf(ImplementationDef *somSelf, 
		SOMClass* aClassObj);
typedef somTP_ImplementationDef_somIsInstanceOf *somTD_ImplementationDef_somIsInstanceOf;
typedef boolean   SOMLINK somTP_ImplementationDef_somRespondsTo(ImplementationDef *somSelf, 
		somId mId);
typedef somTP_ImplementationDef_somRespondsTo *somTD_ImplementationDef_somRespondsTo;
typedef boolean   SOMLINK somTP_ImplementationDef_somDispatch(ImplementationDef *somSelf, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
typedef somTP_ImplementationDef_somDispatch *somTD_ImplementationDef_somDispatch;
typedef boolean   SOMLINK somTP_ImplementationDef_somClassDispatch(ImplementationDef *somSelf, 
		SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
typedef somTP_ImplementationDef_somClassDispatch *somTD_ImplementationDef_somClassDispatch;
typedef boolean   SOMLINK somTP_ImplementationDef_somCastObj(ImplementationDef *somSelf, 
		SOMClass* castedCls);
typedef somTP_ImplementationDef_somCastObj *somTD_ImplementationDef_somCastObj;
typedef boolean   SOMLINK somTP_ImplementationDef_somResetObj(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somResetObj *somTD_ImplementationDef_somResetObj;
typedef ImplementationDef*   SOMLINK somTP_ImplementationDef_somPrintSelf(ImplementationDef *somSelf);
typedef somTP_ImplementationDef_somPrintSelf *somTD_ImplementationDef_somPrintSelf;
typedef void   SOMLINK somTP_ImplementationDef_somDumpSelf(ImplementationDef *somSelf, 
		long level);
typedef somTP_ImplementationDef_somDumpSelf *somTD_ImplementationDef_somDumpSelf;
typedef void   SOMLINK somTP_ImplementationDef_somDumpSelfInt(ImplementationDef *somSelf, 
		long level);
typedef somTP_ImplementationDef_somDumpSelfInt *somTD_ImplementationDef_somDumpSelfInt;
}

#endif /* ImplementationDef_API */


/*
 * -- The C++ Wrapper Class for ImplementationDef
 */
class ImplementationDef : public CosStream_Streamable
{
public:

// ImplementationDef::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)
{
   if (!_ImplementationDef) ImplementationDefNewClass(ImplementationDef_MajorVersion,ImplementationDef_MinorVersion);
   return (void*)
   (((somTD_SOMClass_somNewNoInit)(SOMClassClassData.somNewNoInit))
         ((SOMClass *)((void*)_ImplementationDef)));
}

// ImplementationDef::delete uses somFree.
void operator delete(void * obj)
{
   if (obj && *(void**)obj)
      ((SOMObject*)obj)->somFree();
}

ImplementationDef& operator=(ImplementationDef& fromObj)
{
   this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
   return *this;
}

ImplementationDef()
{
   if (*(void**)this != (ImplementationDefCClassData.parentMtab)->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

ImplementationDef(ImplementationDef* fromObj)
{
   if (*(void**)this != (ImplementationDefCClassData.parentMtab)->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/* method: _get_impl_id */
string   _get_impl_id(Environment *ev)
{
/*
 *  Refers to the unique impl_id of a server.
 *  On _get_impl_id, ownership of results are transfered to the caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_id)(ImplementationDefClassData._get_impl_id))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_id */
void   _set_impl_id(Environment *ev, 
		string impl_id)
{
/*
 *  Refers to the unique impl_id of a server.
 *  On _get_impl_id, ownership of results are transfered to the caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_id)(ImplementationDefClassData._set_impl_id))(((ImplementationDef *)((void *)this)), ev,impl_id)
	);
}


/* method: _get_impl_alias */
string   _get_impl_alias(Environment *ev)
{
/*
 *  impl_alias refers to the server alias
 *  On _get_impl_alias, ownership of results are transfered to the caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_alias)(ImplementationDefClassData._get_impl_alias))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_alias */
void   _set_impl_alias(Environment *ev, 
		string impl_alias)
{
/*
 *  impl_alias refers to the server alias
 *  On _get_impl_alias, ownership of results are transfered to the caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_alias)(ImplementationDefClassData._set_impl_alias))(((ImplementationDef *)((void *)this)), ev,impl_alias)
	);
}


/* method: _get_impl_program */
string   _get_impl_program(Environment *ev)
{
/*
 *  Contains the name of the server process executable. Default is
 *  somdsvr.exe.
 *  On _get_impl_program, ownership of results are transfered to the caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_program)(ImplementationDefClassData._get_impl_program))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_program */
void   _set_impl_program(Environment *ev, 
		string impl_program)
{
/*
 *  Contains the name of the server process executable. Default is
 *  somdsvr.exe.
 *  On _get_impl_program, ownership of results are transfered to the caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_program)(ImplementationDefClassData._set_impl_program))(((ImplementationDef *)((void *)this)), ev,impl_program)
	);
}


/* method: _get_impl_flags */
Flags   _get_impl_flags(Environment *ev)
{
/*
 *  Bit vector representing the various server options.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_flags)(ImplementationDefClassData._get_impl_flags))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_flags */
void   _set_impl_flags(Environment *ev, 
		Flags impl_flags)
{
/*
 *  Bit vector representing the various server options.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_flags)(ImplementationDefClassData._set_impl_flags))(((ImplementationDef *)((void *)this)), ev,impl_flags)
	);
}


/* method: _get_impl_server_class */
string   _get_impl_server_class(Environment *ev)
{
/*
 *  Represents the class of the server object. Default is SOMDServer.
 *  On _get_impl_server_class, ownership of results are transfered to the
 *  caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_server_class)(ImplementationDefClassData._get_impl_server_class))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_server_class */
void   _set_impl_server_class(Environment *ev, 
		string impl_server_class)
{
/*
 *  Represents the class of the server object. Default is SOMDServer.
 *  On _get_impl_server_class, ownership of results are transfered to the
 *  caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_server_class)(ImplementationDefClassData._set_impl_server_class))(((ImplementationDef *)((void *)this)), ev,impl_server_class)
	);
}


/* method: _get_impl_refdata_file */
string   _get_impl_refdata_file(Environment *ev)
{
/*
 *  Contains the name of the file containing ref data.
 *  Meaningful only in 2.X environment.
 *  On _get_impl_refdata_file, ownership of results are transfered to the
 *  caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_refdata_file)(ImplementationDefClassData._get_impl_refdata_file))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_refdata_file */
void   _set_impl_refdata_file(Environment *ev, 
		string impl_refdata_file)
{
/*
 *  Contains the name of the file containing ref data.
 *  Meaningful only in 2.X environment.
 *  On _get_impl_refdata_file, ownership of results are transfered to the
 *  caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_refdata_file)(ImplementationDefClassData._set_impl_refdata_file))(((ImplementationDef *)((void *)this)), ev,impl_refdata_file)
	);
}


/* method: _get_impl_refdata_bkup */
string   _get_impl_refdata_bkup(Environment *ev)
{
/*
 *  Contains the name of the file containing ref data backup.
 *  Meaningful only in 2.X environment.
 *  On _get_impl_refdata_bkup, ownership of results are transfered to the
 *  caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_refdata_bkup)(ImplementationDefClassData._get_impl_refdata_bkup))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_refdata_bkup */
void   _set_impl_refdata_bkup(Environment *ev, 
		string impl_refdata_bkup)
{
/*
 *  Contains the name of the file containing ref data backup.
 *  Meaningful only in 2.X environment.
 *  On _get_impl_refdata_bkup, ownership of results are transfered to the
 *  caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_refdata_bkup)(ImplementationDefClassData._set_impl_refdata_bkup))(((ImplementationDef *)((void *)this)), ev,impl_refdata_bkup)
	);
}


/* method: _get_impl_hostname */
string   _get_impl_hostname(Environment *ev)
{
/*
 *  Contains the hostname on which the server process would be started.
 *  Meaningful only in 2.X environment.
 *  On _get_impl_hostname, ownership of results are transfered to the caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impl_hostname)(ImplementationDefClassData._get_impl_hostname))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impl_hostname */
void   _set_impl_hostname(Environment *ev, 
		string impl_hostname)
{
/*
 *  Contains the hostname on which the server process would be started.
 *  Meaningful only in 2.X environment.
 *  On _get_impl_hostname, ownership of results are transfered to the caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impl_hostname)(ImplementationDefClassData._set_impl_hostname))(((ImplementationDef *)((void *)this)), ev,impl_hostname)
	);
}


/* method: _get_config_file */
string   _get_config_file(Environment *ev)
{
/*
 *  Contains the path of the config file which a server process could
 *  use to override those provided by the default config file in SOMENV.
 *  On _get_config_file, ownership of results are transfered to the caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_config_file)(ImplementationDefClassData._get_config_file))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_config_file */
void   _set_config_file(Environment *ev, 
		string config_file)
{
/*
 *  Contains the path of the config file which a server process could
 *  use to override those provided by the default config file in SOMENV.
 *  On _get_config_file, ownership of results are transfered to the caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_config_file)(ImplementationDefClassData._set_config_file))(((ImplementationDef *)((void *)this)), ev,config_file)
	);
}


/* method: _get_impldef_class */
string   _get_impldef_class(Environment *ev)
{
/*
 *  Contains the class of the ImplDef object. By default it is
 *  ImplementationDef.
 *  On _get_impldef_class, ownership of results are transfered to the caller.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_impldef_class)(ImplementationDefClassData._get_impldef_class))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_impldef_class */
void   _set_impldef_class(Environment *ev, 
		string impldef_class)
{
/*
 *  Contains the class of the ImplDef object. By default it is
 *  ImplementationDef.
 *  On _get_impldef_class, ownership of results are transfered to the caller.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_impldef_class)(ImplementationDefClassData._set_impldef_class))(((ImplementationDef *)((void *)this)), ev,impldef_class)
	);
}


/* method: _get_svr_objref */
ImplementationDef_octet_seqP   _get_svr_objref(Environment *ev)
{
/*
 *  A pointer to a sequence of octets representing the binary form of the
 *  server's objref.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_svr_objref)(ImplementationDefClassData._get_svr_objref))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_svr_objref */
void   _set_svr_objref(Environment *ev, 
		ImplementationDef_octet_seqP svr_objref)
{
/*
 *  A pointer to a sequence of octets representing the binary form of the
 *  server's objref.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_svr_objref)(ImplementationDefClassData._set_svr_objref))(((ImplementationDef *)((void *)this)), ev,svr_objref)
	);
}


/* method: _get_protocols */
string   _get_protocols(Environment *ev)
{
/*
 *  This contains the set of space separated protocol names that was used
 *  in forming the objref.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_protocols)(ImplementationDefClassData._get_protocols))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_protocols */
void   _set_protocols(Environment *ev, 
		string protocols)
{
/*
 *  This contains the set of space separated protocol names that was used
 *  in forming the objref.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_protocols)(ImplementationDefClassData._set_protocols))(((ImplementationDef *)((void *)this)), ev,protocols)
	);
}


/* method: _get_registrar_resp */
ImplementationDef_seq_prot_responses*   _get_registrar_resp(Environment *ev)
{
/*
 *  Represents a sequence of structures where each structure contains the
 *  protocol name and a set of responses. This would be used to generate
 *  the tagged profile for that specific protocol through a programmatic
 *  interface.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__get_registrar_resp)(ImplementationDefClassData._get_registrar_resp))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* method: _set_registrar_resp */
void   _set_registrar_resp(Environment *ev, 
		ImplementationDef_seq_prot_responses* registrar_resp)
{
/*
 *  Represents a sequence of structures where each structure contains the
 *  protocol name and a set of responses. This would be used to generate
 *  the tagged profile for that specific protocol through a programmatic
 *  interface.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_ImplementationDef),
	 ((somTD_ImplementationDef__set_registrar_resp)(ImplementationDefClassData._set_registrar_resp))(((ImplementationDef *)((void *)this)), ev,registrar_resp)
	);
}


/*
 * Reintroduce inherited methods
 */

/* method: externalize_to_stream */
void   externalize_to_stream(Environment *ev, 
		CosStream_StreamIO* stream)
{
/*
 *  This method must be overridden.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_CosStream_Streamable),
	 ((somTD_ImplementationDef_externalize_to_stream)(CosStream_StreamableClassData.externalize_to_stream))(((ImplementationDef *)((void *)this)), ev,stream)
	);
}


/* method: internalize_from_stream */
void   internalize_from_stream(Environment *ev, 
		CosStream_StreamIO* stream, 
		CosLifeCycle_FactoryFinder* ff)
{
/*
 *  This method must be overridden.
 *  D23362
 *     readonly attribute CosLifeCycle::Key external_form_id;
 *  The write_object method puts this attribute into the stream so that
 *  read_object can create a new object.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_CosStream_Streamable),
	 ((somTD_ImplementationDef_internalize_from_stream)(CosStream_StreamableClassData.internalize_from_stream))(((ImplementationDef *)((void *)this)), ev,stream,ff)
	);
}


/* initializer method: somDefaultInit */
void   somDefaultInit(som3InitCtrl* ctrl)
{
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultInit)(SOMObjectClassData.somDefaultInit))(((ImplementationDef *)((void *)this)),ctrl)
	);
}


/* method: somDestruct */
void   somDestruct(octet doFree, 
		som3DestructCtrl* ctrl)
{
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDestruct)(SOMObjectClassData.somDestruct))(((ImplementationDef *)((void *)this)),doFree,ctrl)
	);
}


/* method: is_identical */
boolean   is_identical(Environment *ev, 
		CosObjectIdentity_IdentifiableObject* other_object)
{
   return 	(
	 SOM_TestCls(this,_SOMCLASS_CosObjectIdentity_IdentifiableObject),
	 ((somTD_ImplementationDef_is_identical)(CosObjectIdentity_IdentifiableObjectClassData.is_identical))(((ImplementationDef *)((void *)this)), ev,other_object)
	);
}


/* method: _get_constant_random_id */
CosObjectIdentity_ObjectIdentifier   _get_constant_random_id(Environment *ev)
{
   return 	(
	 SOM_TestCls(this,_SOMCLASS_CosObjectIdentity_IdentifiableObject),
	 ((somTD_ImplementationDef__get_constant_random_id)(CosObjectIdentity_IdentifiableObjectClassData._get_constant_random_id))(((ImplementationDef *)((void *)this)), ev)
	);
}


/* initializer method: somDefaultCopyInit */
void   somDefaultCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor. Use this to make copies of objects for
 *  calling methods with "by-value" argument semantics.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultCopyInit)(SOMObjectClassData.somDefaultCopyInit))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultAssign */
ImplementationDef*  somDefaultAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator. Use this to "assign" the state of one
 *  object to another.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultAssign)(SOMObjectClassData.somDefaultAssign))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* initializer method: somDefaultConstCopyInit */
void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor that uses a const fromObj.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultConstCopyInit)(SOMObjectClassData.somDefaultConstCopyInit))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* initializer method: somDefaultVCopyInit */
void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor that uses a volatile fromObj.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultVCopyInit)(SOMObjectClassData.somDefaultVCopyInit))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* initializer method: somDefaultConstVCopyInit */
void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor that uses a const volatile fromObj.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultConstVCopyInit)(SOMObjectClassData.somDefaultConstVCopyInit))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultConstAssign */
ImplementationDef*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator that uses a const fromObj.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultConstAssign)(SOMObjectClassData.somDefaultConstAssign))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultVAssign */
ImplementationDef*  somDefaultVAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator that uses a volatile fromObj.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultVAssign)(SOMObjectClassData.somDefaultVAssign))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultConstVAssign */
ImplementationDef*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator that uses a const volatile fromObj.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDefaultConstVAssign)(SOMObjectClassData.somDefaultConstVAssign))(((ImplementationDef *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somInit */
void   somInit()
{
/*
 *  Obsolete but still supported. Override somDefaultInit instead of somInit.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somInit)(SOMObjectClassData.somInit))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somUninit */
void   somUninit()
{
/*
 *  Obsolete but still supported. Override somDestruct instead of somUninit.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somUninit)(SOMObjectClassData.somUninit))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somFree */
void   somFree()
{
/*
 *  The default implementation just calls somDestruct.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somFree)(SOMObjectClassData.somFree))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somGetClass */
SOMClass*   somGetClass()
{
/*
 *  Return the receiver's class.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somGetClass)(SOMObjectClassData.somGetClass))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somGetClassName */
string   somGetClassName()
{
/*
 *  Return the name of the receiver's class.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somGetClassName)(SOMObjectClassData.somGetClassName))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somGetSize */
long   somGetSize()
{
/*
 *  Return the size of the receiver.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somGetSize)(SOMObjectClassData.somGetSize))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somIsA */
boolean   somIsA(SOMClass* aClassObj)
{
/*
 *  Returns 1 (true) if the receiver responds to methods
 *  introduced by <aClassObj>, and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somIsA)(SOMObjectClassData.somIsA))(((ImplementationDef *)((void *)this)),aClassObj)
	);
}


/* method: somIsInstanceOf */
boolean   somIsInstanceOf(SOMClass* aClassObj)
{
/*
 *  Returns 1 (true) if the receiver is an instance of
 *  <aClassObj> and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somIsInstanceOf)(SOMObjectClassData.somIsInstanceOf))(((ImplementationDef *)((void *)this)),aClassObj)
	);
}


/* method: somRespondsTo */
boolean   somRespondsTo(somId mId)
{
/*
 *  Returns 1 (true) if the indicated method can be invoked
 *  on the receiver and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somRespondsTo)(SOMObjectClassData.somRespondsTo))(((ImplementationDef *)((void *)this)),mId)
	);
}


/* va_list method: somDispatch */

/*
 *  This method provides a generic, class-specific dispatch mechanism.
 *  It accepts as input <retValue> a pointer to the memory area to be
 *  loaded with the result of dispatching the method indicated by
 *  <methodId> using the arguments in <ap>. <ap> contains the object
 *  on which the method is to be invoked as the first argument.
 * 
 *  Default redispatch stubs invoke this method.
 */
/* the va_list invocation form */
boolean   SOMObject_somDispatch(somToken* retValue, 
		somId methodId, 
		va_list ap)
{   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDispatch)(SOMObjectClassData.somDispatch))(((ImplementationDef *)((void *)this)),retValue,methodId,ap)
	);
}

/* the varargs invocation form */
boolean   somDispatch(somToken* retValue, 
		somId methodId, 
		...)
{
/*
 *  This method provides a generic, class-specific dispatch mechanism.
 *  It accepts as input <retValue> a pointer to the memory area to be
 *  loaded with the result of dispatching the method indicated by
 *  <methodId> using the arguments in <ap>. <ap> contains the object
 *  on which the method is to be invoked as the first argument.
 * 
 *  Default redispatch stubs invoke this method.
 */
   va_list ap;
   va_start(ap, methodId);
   boolean __somResult = 
      	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDispatch)(SOMObjectClassData.somDispatch))(((ImplementationDef *)((void *)this)),retValue,methodId,ap)
	);
   va_end(ap);
   return __somResult;
}


/* va_list method: somClassDispatch */

/*
 *  Like somDispatch, but method resolution for static methods is done
 *  according to the clsObj instance method table.
 */
/* the va_list invocation form */
boolean   SOMObject_somClassDispatch(SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		va_list ap)
{   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somClassDispatch)(SOMObjectClassData.somClassDispatch))(((ImplementationDef *)((void *)this)),clsObj,retValue,methodId,ap)
	);
}

/* the varargs invocation form */
boolean   somClassDispatch(SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		...)
{
/*
 *  Like somDispatch, but method resolution for static methods is done
 *  according to the clsObj instance method table.
 */
   va_list ap;
   va_start(ap, methodId);
   boolean __somResult = 
      	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somClassDispatch)(SOMObjectClassData.somClassDispatch))(((ImplementationDef *)((void *)this)),clsObj,retValue,methodId,ap)
	);
   va_end(ap);
   return __somResult;
}


/* method: somCastObj */
boolean   somCastObj(SOMClass* castedCls)
{
/*
 *  Changes the behavior of the target object to that implemented
 *  by castedCls. This is possible when all concrete data in castedCls
 *  is also concrete in the true class of the target object.
 *  Returns true (1) on success, and false (0) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somCastObj)(SOMObjectClassData.somCastObj))(((ImplementationDef *)((void *)this)),castedCls)
	);
}


/* method: somResetObj */
boolean   somResetObj()
{
/*
 *  reset an object to its true class. Returns true always.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somResetObj)(SOMObjectClassData.somResetObj))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somPrintSelf */
ImplementationDef*  somPrintSelf()
{
/*
 *  Uses <SOMOutCharRoutine> to write a brief string with identifying
 *  information about this object.  The default implementation just gives
 *  the object's class name and its address in memory.
 *  <self> is returned.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somPrintSelf)(SOMObjectClassData.somPrintSelf))(((ImplementationDef *)((void *)this)))
	);
}


/* method: somDumpSelf */
void   somDumpSelf(long level)
{
/*
 *  Uses <SOMOutCharRoutine> to write a detailed description of this object
 *  and its current state.
 * 
 *  <level> indicates the nesting level for describing compound objects
 *  it must be greater than or equal to zero.  All lines in the
 *  description will be preceeded by <2*level> spaces.
 * 
 *  This routine only actually writes the data that concerns the object
 *  as a whole, such as class, and uses <somDumpSelfInt> to describe
 *  the object's current state.  This approach allows readable
 *  descriptions of compound objects to be constructed.
 * 
 *  Generally it is not necessary to override this method, if it is
 *  overriden it generally must be completely replaced.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDumpSelf)(SOMObjectClassData.somDumpSelf))(((ImplementationDef *)((void *)this)),level)
	);
}


/* method: somDumpSelfInt */
void   somDumpSelfInt(long level)
{
/*
 *  Uses <SOMOutCharRoutine> to write in the current state of this object.
 *  Generally this method will need to be overridden.  When overriding
 *  it, begin by calling the parent class form of this method and then
 *  write in a description of your class's instance data. This will
 *  result in a description of all the object's instance data going
 *  from its root ancestor class to its specific class.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_ImplementationDef_somDumpSelfInt)(SOMObjectClassData.somDumpSelfInt))(((ImplementationDef *)((void *)this)),level)
	);
}



};   /* ImplementationDef */



#endif       /* SOM_ImplementationDef_xh */
