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

/*
 *    @(#) 2.36 src/somd/implrep.idl, somd, som3.0 9/26/96 14:01:57 [12/22/96 21:11:43]
 * 
 *    COMPONENT_NAME: somd
 * 
 *    ORIGINS: 27
 * 
 * 
 *     25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1995,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.
 * 
 */


#ifndef SOM_ImplRepository_h
#define SOM_ImplRepository_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_implrep
#ifdef SOM_DLL_somd
	/* export semantics */
	#if defined(SOM_DEFFILE_somd)\
	||(defined(SOM_DEFFILE_BY_DEFAULT)&&!defined(SOM_NODEFFILE_somd))\
	|| !defined(SOM_Module_implrep_Source)
	#define SOM_IMPORTEXPORT_somd_implrep
	#else
	#define SOM_IMPORTEXPORT_somd_implrep SOMDLLEXPORT
	#endif
#else
	#define SOM_IMPORTEXPORT_somd_implrep 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 ImplRepository
#define ImplRepository SOMObject
#endif
/*
 *   CLASS SPECIFICATION FOR IMPLEMENTATION REPOSITORY
 *   The ImplRepository class contains methods which add/update/list/delete
 *   information from both the Implementation repository and the Name service.
 */

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

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef Container
    #define Container SOMObject
#endif /* Container */
#ifndef ExtendedNaming_PropertyBindingIterator
    #define ExtendedNaming_PropertyBindingIterator SOMObject
#endif /* ExtendedNaming_PropertyBindingIterator */
#ifndef ExtendedNaming_PropertyIterator
    #define ExtendedNaming_PropertyIterator SOMObject
#endif /* ExtendedNaming_PropertyIterator */
#ifndef ExtendedNaming_IndexIterator
    #define ExtendedNaming_IndexIterator SOMObject
#endif /* ExtendedNaming_IndexIterator */
#ifndef SOMDObject
    #define SOMDObject SOMObject
#endif /* SOMDObject */
#ifndef Principal
    #define Principal SOMObject
#endif /* Principal */
#ifndef ImplementationDef
    #define ImplementationDef SOMObject
#endif /* ImplementationDef */
#ifndef InterfaceDef
    #define InterfaceDef SOMObject
#endif /* InterfaceDef */
#ifndef NVList
    #define NVList SOMObject
#endif /* NVList */
#ifndef Context
    #define Context SOMObject
#endif /* Context */
#ifndef Request
    #define Request SOMObject
#endif /* Request */
#ifndef CosObjectIdentity_IdentifiableObject
    #define CosObjectIdentity_IdentifiableObject SOMObject
#endif /* CosObjectIdentity_IdentifiableObject */
#ifndef CosStream_Streamable
    #define CosStream_Streamable SOMObject
#endif /* CosStream_Streamable */
#ifndef CosStream_StreamableFactory
    #define CosStream_StreamableFactory SOMObject
#endif /* CosStream_StreamableFactory */
typedef
struct ImplRepository_PV {
string  name;
string  value;
} ImplRepository_PV, ImplRepository_PropertyValue;
#ifndef _IDL_SEQUENCE_ImplRepository_PV_defined
#define _IDL_SEQUENCE_ImplRepository_PV_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    ImplRepository_PV *_buffer;
} _IDL_SEQUENCE_ImplRepository_PV;
#endif /* _IDL_SEQUENCE_ImplRepository_PV_defined */ 
typedef
_IDL_SEQUENCE_ImplRepository_PV ImplRepository_PVList;
/*
 *  This is a list of optional properties which are to be
 *  associated with a class name when registering with the Name Server.
 */

#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 */ 
#ifndef _IDL_SEQUENCE_ImplementationDef_defined
#define _IDL_SEQUENCE_ImplementationDef_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    ImplementationDef *_buffer;
} _IDL_SEQUENCE_ImplementationDef;
#endif /* _IDL_SEQUENCE_ImplementationDef_defined */ 

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_PropertyValue
    #ifdef PropertyValue
        #undef PropertyValue
        #define SOMTGD_PropertyValue 1
    #else
        #define PropertyValue ImplRepository_PropertyValue
    #endif /* PropertyValue */
#endif /* SOMTGD_PropertyValue */
#endif /* SOM_DONT_USE_SHORT_NAMES */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD__IDL_SEQUENCE_PV
    #ifdef _IDL_SEQUENCE_PV
        #undef _IDL_SEQUENCE_PV
        #define SOMTGD__IDL_SEQUENCE_PV 1
    #else
        #define _IDL_SEQUENCE_PV _IDL_SEQUENCE_ImplRepository_PV
    #endif /* _IDL_SEQUENCE_PV */
#endif /* SOMTGD__IDL_SEQUENCE_PV */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_PVList
    #ifdef PVList
        #undef PVList
        #define SOMTGD_PVList 1
    #else
        #define PVList ImplRepository_PVList
    #endif /* PVList */
#endif /* SOMTGD_PVList */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

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

#include <impldef.h>

#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 ImplRepository   SOMDLINK SOMD_ImplRepObject;
#else
SOMEXTERN SOM_IMPORTEXPORT_somd ImplRepository * SOMDLINK SOMD_ImplRepObject;
#endif /* SOM_STRICT_IDL */


#define ImplRepository_MajorVersion 2
#define ImplRepository_MinorVersion 2

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

/*
 * Declare the ABI 2 ClassData structure
 */
SOMEXTERN struct ImplRepositoryClassDataStructure {
	SOMClass classObject;
	somMToken find_impldef;
	somMToken find_impldef_by_alias;
	somMToken find_impldef2;
	somMToken find_impldef_by_alias2;
	somMToken find_impldef_by_class;
	somMToken add_impldef;
	somMToken update_impldef;
	somMToken delete_impldef;
	somMToken add_class_to_impldef;
	somMToken remove_class_from_impldef;
	somMToken remove_class_from_all;
	somMToken find_classes_by_impldef;
	somMToken implr_get_impl;
	somMToken implr_search_impl;
	somMToken implr_search_class;
	somMToken implr_update_impl;
	somMToken find_all_impldefs;
	somMToken find_all_aliases;
	somMToken add_class_to_all;
	somMToken add_class_with_properties;
} SOM_IMPORTEXPORT_somd_implrep SOMDLINK ImplRepositoryClassData;

/*
 * Declare the ABI 2 CClassData structure
 */
SOMEXTERN struct ImplRepositoryCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
} SOM_IMPORTEXPORT_somd_implrep SOMDLINK ImplRepositoryCClassData;

/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_ImplRepository (ImplRepositoryClassData.classObject)
#ifndef SOMGD_ImplRepository
    #if (defined(_ImplRepository) || defined(__ImplRepository))
        #undef _ImplRepository
        #undef __ImplRepository
        #define SOMGD_ImplRepository 1
    #else
        #define _ImplRepository _SOMCLASS_ImplRepository
    #endif /* _ImplRepository */
#endif /* SOMGD_ImplRepository */
#define ImplRepository_classObj _SOMCLASS_ImplRepository
#define _SOMMTOKEN_ImplRepository(method) ((somMToken)ImplRepositoryClassData.method)

/*
 * New and Renew macros for ImplRepository
 */
#define ImplRepositoryNew() \
   ( _ImplRepository ? \
	_somNew(_ImplRepository) \
	: ( ImplRepositoryNewClass(\
		ImplRepository_MajorVersion, \
		ImplRepository_MinorVersion),\
	   _somNew(_ImplRepository)))
#define ImplRepositoryRenew(buf) \
   ( _ImplRepository ? \
	_somRenew(_ImplRepository, buf) \
	: ( ImplRepositoryNewClass(\
		ImplRepository_MajorVersion, \
		ImplRepository_MinorVersion),\
	   _somRenew(_ImplRepository, buf)))

/*
 * New Method: find_impldef
 */
typedef ImplementationDef   SOMLINK somTP_ImplRepository_find_impldef(ImplRepository somSelf, Environment *ev, 
		ImplId implid);
typedef somTP_ImplRepository_find_impldef *somTD_ImplRepository_find_impldef;
/*
 *  This method searches the Implementation Repository and returns
 *  an ImplementationDef object with the specified implid.
 *  OWNERSHIP of the return parameter is transferred to the caller.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_ClassNotFound
 */
#define somMD_ImplRepository_find_impldef "::ImplRepository::find_impldef"
#define ImplRepository_find_impldef(somSelf,ev,implid) \
    (SOM_Resolve(somSelf, ImplRepository, find_impldef) \
	(somSelf,ev,implid))
#ifndef SOMGD_find_impldef
    #if (defined(_find_impldef) || defined(__find_impldef))
        #undef _find_impldef
        #undef __find_impldef
        #define SOMGD_find_impldef 1
    #else
        #define _find_impldef ImplRepository_find_impldef
    #endif /* _find_impldef */
#endif /* SOMGD_find_impldef */

/*
 * New Method: find_impldef_by_alias
 */
typedef ImplementationDef   SOMLINK somTP_ImplRepository_find_impldef_by_alias(ImplRepository somSelf, Environment *ev, 
		string alias_name);
typedef somTP_ImplRepository_find_impldef_by_alias *somTD_ImplRepository_find_impldef_by_alias;
/*
 *  This method searches the Implementation Repository and returns
 *  an ImplementationDef object with the specified name (alias).
 *  OWNERSHIP of the return parameter is transferred to the caller.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_ClassNotFound
 */
#define somMD_ImplRepository_find_impldef_by_alias "::ImplRepository::find_impldef_by_alias"
#define ImplRepository_find_impldef_by_alias(somSelf,ev,alias_name) \
    (SOM_Resolve(somSelf, ImplRepository, find_impldef_by_alias) \
	(somSelf,ev,alias_name))
#ifndef SOMGD_find_impldef_by_alias
    #if (defined(_find_impldef_by_alias) || defined(__find_impldef_by_alias))
        #undef _find_impldef_by_alias
        #undef __find_impldef_by_alias
        #define SOMGD_find_impldef_by_alias 1
    #else
        #define _find_impldef_by_alias ImplRepository_find_impldef_by_alias
    #endif /* _find_impldef_by_alias */
#endif /* SOMGD_find_impldef_by_alias */

/*
 * New Method: find_all_aliases
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_find_all_aliases(ImplRepository somSelf, Environment *ev, 
		_IDL_SEQUENCE_string* impl_aliases);
typedef somTP_ImplRepository_find_all_aliases *somTD_ImplRepository_find_all_aliases;
/*
 *  This method searches the Implementation Repository and returns
 *  a sequence of impl_alias associated with all the impldef objects
 *  stored in the repository.
 *  The structure representing the sequence is created by the caller.
 *  OWNERSHIP of the _buffer field and every string in the buffer is
 *  transferred to the caller.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 */
#define somMD_ImplRepository_find_all_aliases "::ImplRepository::find_all_aliases"
#define ImplRepository_find_all_aliases(somSelf,ev,impl_aliases) \
    (SOM_Resolve(somSelf, ImplRepository, find_all_aliases) \
	(somSelf,ev,impl_aliases))
#ifndef SOMGD_find_all_aliases
    #if (defined(_find_all_aliases) || defined(__find_all_aliases))
        #undef _find_all_aliases
        #undef __find_all_aliases
        #define SOMGD_find_all_aliases 1
    #else
        #define _find_all_aliases ImplRepository_find_all_aliases
    #endif /* _find_all_aliases */
#endif /* SOMGD_find_all_aliases */

/*
 * New Method: find_all_impldefs
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_find_all_impldefs(ImplRepository somSelf, Environment *ev, 
		_IDL_SEQUENCE_ImplementationDef* outimpldefs);
typedef somTP_ImplRepository_find_all_impldefs *somTD_ImplRepository_find_all_impldefs;
/*
 *  This method searches the Implementation Repository and returns
 *  all the ImplementationDef objects in it.
 *  The structure representing the sequence is created by the caller.
 *  OWNERSHIP of the _buffer field and every ImplementationDef object in
 *  the buffer is transferred to the caller.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_ClassNotFound
 */
#define somMD_ImplRepository_find_all_impldefs "::ImplRepository::find_all_impldefs"
#define ImplRepository_find_all_impldefs(somSelf,ev,outimpldefs) \
    (SOM_Resolve(somSelf, ImplRepository, find_all_impldefs) \
	(somSelf,ev,outimpldefs))
#ifndef SOMGD_find_all_impldefs
    #if (defined(_find_all_impldefs) || defined(__find_all_impldefs))
        #undef _find_all_impldefs
        #undef __find_all_impldefs
        #define SOMGD_find_all_impldefs 1
    #else
        #define _find_all_impldefs ImplRepository_find_all_impldefs
    #endif /* _find_all_impldefs */
#endif /* SOMGD_find_all_impldefs */

/*
 * New Method: add_impldef
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_add_impldef(ImplRepository somSelf, Environment *ev, 
		ImplementationDef impldef);
typedef somTP_ImplRepository_add_impldef *somTD_ImplRepository_add_impldef;
/*
 *  This method inserts an ImplementationDef object into the Implementation
 *  Repository. Also, a default class value is associated with this impl_id
 *  with the Name server if it is available.
 *  The following minor codes are returned in the Environment structure:
 *           1. SOMDERROR_NoMemory
 *           2. SOMDERROR_UnknownError
 *           3. SOMDERROR_BadParm
 *           4. SOMDERROR_NoDBInit
 *           5. SOMDERROR_NoDBAvailable
 *           6. SOMDERROR_AccessDenied
 *           7. SOMDERROR_DuplicateEntry
 *           8. SOMDERROR_CannotCreateUUID
 *           9. SOMDERROR_NullImplAlias
 *          10. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_add_impldef "::ImplRepository::add_impldef"
#define ImplRepository_add_impldef(somSelf,ev,impldef) \
    (SOM_Resolve(somSelf, ImplRepository, add_impldef) \
	(somSelf,ev,impldef))
#ifndef SOMGD_add_impldef
    #if (defined(_add_impldef) || defined(__add_impldef))
        #undef _add_impldef
        #undef __add_impldef
        #define SOMGD_add_impldef 1
    #else
        #define _add_impldef ImplRepository_add_impldef
    #endif /* _add_impldef */
#endif /* SOMGD_add_impldef */

/*
 * New Method: update_impldef
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_update_impldef(ImplRepository somSelf, Environment *ev, 
		ImplementationDef impldef);
typedef somTP_ImplRepository_update_impldef *somTD_ImplRepository_update_impldef;
/*
 *  This method replaces an ImplementationDef object in the Implementation
 *  Repository with the supplied object.  The "impl_id" attribute of the
 *  supplied object is used to find the object to replace in the Impl.
 *  Repository. Also, the default value associated with this impl_id
 *  is updated in the Name server if it is available.
 *  The following minor codes are returned in the Environment structure:
 *           1. SOMDERROR_NoMemory
 *           2. SOMDERROR_BadParm
 *           3. SOMDERROR_NoDBInit
 *           4. SOMDERROR_NoDBAvailable
 *           5. SOMDERROR_AccessDenied
 *           6. SOMDERROR_DuplicateEntry
 *           7. SOMDERROR_NullImplAlias
 *           8. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_update_impldef "::ImplRepository::update_impldef"
#define ImplRepository_update_impldef(somSelf,ev,impldef) \
    (SOM_Resolve(somSelf, ImplRepository, update_impldef) \
	(somSelf,ev,impldef))
#ifndef SOMGD_update_impldef
    #if (defined(_update_impldef) || defined(__update_impldef))
        #undef _update_impldef
        #undef __update_impldef
        #define SOMGD_update_impldef 1
    #else
        #define _update_impldef ImplRepository_update_impldef
    #endif /* _update_impldef */
#endif /* SOMGD_update_impldef */

/*
 * New Method: delete_impldef
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_delete_impldef(ImplRepository somSelf, Environment *ev, 
		ImplId implid);
typedef somTP_ImplRepository_delete_impldef *somTD_ImplRepository_delete_impldef;
/*
 *  This method deletes the ImplementationDef object with the specified
 *  implid from the Implementation Repository.  Also, the default entry
 *  associated with this impl_id is deleted from the Name server if it
 *  is available.
 *  The following minor codes are returned in the Environment structure:
 *           1. SOMDERROR_NoMemory
 *           2. SOMDERROR_EntryNotFound
 *           3. SOMDERROR_NoDBInit
 *           4. SOMDERROR_NoDBAvailable
 *           5. SOMDERROR_AccessDenied
 *           6. SOMDERROR_NullImplId
 *           7. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_delete_impldef "::ImplRepository::delete_impldef"
#define ImplRepository_delete_impldef(somSelf,ev,implid) \
    (SOM_Resolve(somSelf, ImplRepository, delete_impldef) \
	(somSelf,ev,implid))
#ifndef SOMGD_delete_impldef
    #if (defined(_delete_impldef) || defined(__delete_impldef))
        #undef _delete_impldef
        #undef __delete_impldef
        #define SOMGD_delete_impldef 1
    #else
        #define _delete_impldef ImplRepository_delete_impldef
    #endif /* _delete_impldef */
#endif /* SOMGD_delete_impldef */

/*
 * New Method: find_impldef_by_class
 */
typedef _IDL_SEQUENCE_ImplementationDef   SOMLINK somTP_ImplRepository_find_impldef_by_class(ImplRepository somSelf, Environment *ev, 
		string classname);
typedef somTP_ImplRepository_find_impldef_by_class *somTD_ImplRepository_find_impldef_by_class;
/*
 *  This method with the help of the information in the Implementation
 *  repository and the Name service returns the sequence of
 *  ImplementationDef objects of servers that implement the desired class.
 *  OWNERSHIP for the  _buffer field of the return sequence and
 *  for each element in the sequence is transferred to the caller.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_NamingNotActive
 *          7. SOMDERROR_ClassNotFound
 */
#define somMD_ImplRepository_find_impldef_by_class "::ImplRepository::find_impldef_by_class"
#define ImplRepository_find_impldef_by_class(somSelf,ev,classname) \
    (SOM_Resolve(somSelf, ImplRepository, find_impldef_by_class) \
	(somSelf,ev,classname))
#ifndef SOMGD_find_impldef_by_class
    #if (defined(_find_impldef_by_class) || defined(__find_impldef_by_class))
        #undef _find_impldef_by_class
        #undef __find_impldef_by_class
        #define SOMGD_find_impldef_by_class 1
    #else
        #define _find_impldef_by_class ImplRepository_find_impldef_by_class
    #endif /* _find_impldef_by_class */
#endif /* SOMGD_find_impldef_by_class */

/*
 * New Method: add_class_to_impldef
 */
typedef void   SOMLINK somTP_ImplRepository_add_class_to_impldef(ImplRepository somSelf, Environment *ev, 
		ImplId implid, 
		string classname);
typedef somTP_ImplRepository_add_class_to_impldef *somTD_ImplRepository_add_class_to_impldef;
/*
 *  This method associates the "classname" with the ImplementationDef
 *  whose id is "implid".  This is meant to indicate that the server
 *  (specified by the ImplementationDef) implements the named class.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_add_class_to_impldef "::ImplRepository::add_class_to_impldef"
#define ImplRepository_add_class_to_impldef(somSelf,ev,implid,classname) \
    (SOM_Resolve(somSelf, ImplRepository, add_class_to_impldef) \
	(somSelf,ev,implid,classname))
#ifndef SOMGD_add_class_to_impldef
    #if (defined(_add_class_to_impldef) || defined(__add_class_to_impldef))
        #undef _add_class_to_impldef
        #undef __add_class_to_impldef
        #define SOMGD_add_class_to_impldef 1
    #else
        #define _add_class_to_impldef ImplRepository_add_class_to_impldef
    #endif /* _add_class_to_impldef */
#endif /* SOMGD_add_class_to_impldef */

/*
 * New Method: remove_class_from_impldef
 */
typedef void   SOMLINK somTP_ImplRepository_remove_class_from_impldef(ImplRepository somSelf, Environment *ev, 
		ImplId implid, 
		string classname);
typedef somTP_ImplRepository_remove_class_from_impldef *somTD_ImplRepository_remove_class_from_impldef;
/*
 *  This method removes the classname from the list of classnames
 *  associated with the ImplementationDef whose id is "implid".
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_remove_class_from_impldef "::ImplRepository::remove_class_from_impldef"
#define ImplRepository_remove_class_from_impldef(somSelf,ev,implid,classname) \
    (SOM_Resolve(somSelf, ImplRepository, remove_class_from_impldef) \
	(somSelf,ev,implid,classname))
#ifndef SOMGD_remove_class_from_impldef
    #if (defined(_remove_class_from_impldef) || defined(__remove_class_from_impldef))
        #undef _remove_class_from_impldef
        #undef __remove_class_from_impldef
        #define SOMGD_remove_class_from_impldef 1
    #else
        #define _remove_class_from_impldef ImplRepository_remove_class_from_impldef
    #endif /* _remove_class_from_impldef */
#endif /* SOMGD_remove_class_from_impldef */

/*
 * New Method: remove_class_from_all
 */
typedef void   SOMLINK somTP_ImplRepository_remove_class_from_all(ImplRepository somSelf, Environment *ev, 
		string classname);
typedef somTP_ImplRepository_remove_class_from_all *somTD_ImplRepository_remove_class_from_all;
/*
 *  This method removes the classname from all the ImplementationDefs.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_remove_class_from_all "::ImplRepository::remove_class_from_all"
#define ImplRepository_remove_class_from_all(somSelf,ev,classname) \
    (SOM_Resolve(somSelf, ImplRepository, remove_class_from_all) \
	(somSelf,ev,classname))
#ifndef SOMGD_remove_class_from_all
    #if (defined(_remove_class_from_all) || defined(__remove_class_from_all))
        #undef _remove_class_from_all
        #undef __remove_class_from_all
        #define SOMGD_remove_class_from_all 1
    #else
        #define _remove_class_from_all ImplRepository_remove_class_from_all
    #endif /* _remove_class_from_all */
#endif /* SOMGD_remove_class_from_all */

/*
 * New Method: find_classes_by_impldef
 */
typedef _IDL_SEQUENCE_string   SOMLINK somTP_ImplRepository_find_classes_by_impldef(ImplRepository somSelf, Environment *ev, 
		ImplId implid);
typedef somTP_ImplRepository_find_classes_by_impldef *somTD_ImplRepository_find_classes_by_impldef;
/*
 *  This method queries the Name service and returns the set of
 *  class names supported by a server with specified "implid".
 *  OWNERSHIP for the _buffer field in the return sequence
 *  and for each element in the sequence is transferred to the caller.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_ClassNotFound
 *          7. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_find_classes_by_impldef "::ImplRepository::find_classes_by_impldef"
#define ImplRepository_find_classes_by_impldef(somSelf,ev,implid) \
    (SOM_Resolve(somSelf, ImplRepository, find_classes_by_impldef) \
	(somSelf,ev,implid))
#ifndef SOMGD_find_classes_by_impldef
    #if (defined(_find_classes_by_impldef) || defined(__find_classes_by_impldef))
        #undef _find_classes_by_impldef
        #undef __find_classes_by_impldef
        #define SOMGD_find_classes_by_impldef 1
    #else
        #define _find_classes_by_impldef ImplRepository_find_classes_by_impldef
    #endif /* _find_classes_by_impldef */
#endif /* SOMGD_find_classes_by_impldef */

/*
 * New Method: add_class_to_all
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_add_class_to_all(ImplRepository somSelf, Environment *ev, 
		string classname);
typedef somTP_ImplRepository_add_class_to_all *somTD_ImplRepository_add_class_to_all;
/*
 *  This method will associate the classname with all ImplementationDef
 *  objects in the repository.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_ClassNotFound
 *          7. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_add_class_to_all "::ImplRepository::add_class_to_all"
#define ImplRepository_add_class_to_all(somSelf,ev,classname) \
    (SOM_Resolve(somSelf, ImplRepository, add_class_to_all) \
	(somSelf,ev,classname))
#ifndef SOMGD_add_class_to_all
    #if (defined(_add_class_to_all) || defined(__add_class_to_all))
        #undef _add_class_to_all
        #undef __add_class_to_all
        #define SOMGD_add_class_to_all 1
    #else
        #define _add_class_to_all ImplRepository_add_class_to_all
    #endif /* _add_class_to_all */
#endif /* SOMGD_add_class_to_all */

/*
 * New Method: add_class_with_properties
 */
typedef ORBStatus   SOMLINK somTP_ImplRepository_add_class_with_properties(ImplRepository somSelf, Environment *ev, 
		ImplId implid, 
		string classname, 
		ImplRepository_PVList* pvl);
typedef somTP_ImplRepository_add_class_with_properties *somTD_ImplRepository_add_class_with_properties;
/*
 *  This method associates the classname with the ImplementationDef
 *  whose id is "implid".  This is meant to indicate that the server
 *  (specified by the ImplementationDef) implements the named class.
 *  In addition, the optional PVList sequenece will associate the
 *  specified properties and values with a class.
 *  The following minor codes are returned in the Environment structure:
 *          1. SOMDERROR_NoMemory
 *          2. SOMDERROR_BadParm
 *          3. SOMDERROR_NoDBInit
 *          4. SOMDERROR_NoDBAvailable
 *          5. SOMDERROR_AccessDenied
 *          6. SOMDERROR_ClassNotFound
 *          7. SOMDERROR_NamingNotActive
 */
#define somMD_ImplRepository_add_class_with_properties "::ImplRepository::add_class_with_properties"
#define ImplRepository_add_class_with_properties(somSelf,ev,implid,classname,pvl) \
    (SOM_Resolve(somSelf, ImplRepository, add_class_with_properties) \
	(somSelf,ev,implid,classname,pvl))
#ifndef SOMGD_add_class_with_properties
    #if (defined(_add_class_with_properties) || defined(__add_class_with_properties))
        #undef _add_class_with_properties
        #undef __add_class_with_properties
        #define SOMGD_add_class_with_properties 1
    #else
        #define _add_class_with_properties ImplRepository_add_class_with_properties
    #endif /* _add_class_with_properties */
#endif /* SOMGD_add_class_with_properties */

/*
 * Full Names for Inherited Methods
 */
/* overridden methods */
#define ImplRepository_somDefaultInit SOMObject_somDefaultInit
#define ImplRepository_somDestruct SOMObject_somDestruct

#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ImplRepository_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ImplRepository_somDefaultAssign SOMObject_somDefaultAssign
#define ImplRepository_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ImplRepository_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ImplRepository_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ImplRepository_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ImplRepository_somDefaultVAssign SOMObject_somDefaultVAssign
#define ImplRepository_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ImplRepository_somInit SOMObject_somInit
#define ImplRepository_somUninit SOMObject_somUninit
#define ImplRepository_somFree SOMObject_somFree
#define ImplRepository_somGetClass SOMObject_somGetClass
#define ImplRepository_somGetClassName SOMObject_somGetClassName
#define ImplRepository_somGetSize SOMObject_somGetSize
#define ImplRepository_somIsA SOMObject_somIsA
#define ImplRepository_somIsInstanceOf SOMObject_somIsInstanceOf
#define ImplRepository_somRespondsTo SOMObject_somRespondsTo
#define ImplRepository_somDispatch SOMObject_somDispatch
#define ImplRepository_somClassDispatch SOMObject_somClassDispatch
#define ImplRepository_somCastObj SOMObject_somCastObj
#define ImplRepository_somResetObj SOMObject_somResetObj
#define ImplRepository_somPrintSelf SOMObject_somPrintSelf
#define ImplRepository_somDumpSelf SOMObject_somDumpSelf
#define ImplRepository_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ImplRepository_h */
