
/*
 * This file was generated by the SOM Compiler.
 * FileName: IMPLREP.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.3
 *     SOM Emitter emith.dll: 2.41
 */

/*
 * 
 *    COMPONENT_NAME: somd
 * 
 *    ORIGINS: 27
 * 
 * 
 *    10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
 *    All Rights Reserved
 *    Licensed Materials - Property of IBM
 *    US Government Users Restricted Rights - Use, duplication or
 *    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 * 
 *   CLASS SPECIFICATION FOR IMPLEMENTATION REPOSITORY
 */


#ifndef SOM_ImplRepository_h
#define SOM_ImplRepository_h


#include <som.h>

/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))



/*
 * Define class data structures as resolution macros
 */
#define ImplRepositoryClassData (*resolve_ImplRepositoryClassData())
#define ImplRepositoryCClassData (*resolve_ImplRepositoryCClassData())

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

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef Container
    #define Container SOMObject
#endif /* Container */
#ifndef ImplementationDef
    #define ImplementationDef SOMObject
#endif /* ImplementationDef */
#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 _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 SOM_DONT_USE_SHORT_NAMES
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

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

#include <impldef.h>

#ifdef SOM_STRICT_IDL
#define SOMD_ImplRepObject (*resolve_SOMD_ImplRepObject())
SOMEXTERN ImplRepository * resolve_SOMLINK SOMD_ImplRepObject(void);
#else
#define SOMD_ImplRepObject (*resolve_SOMD_ImplRepObject())
SOMEXTERN ImplRepository ** SOMLINK resolve_SOMD_ImplRepObject(void);
#endif /* SOM_STRICT_IDL */


#define ImplRepository_MajorVersion 2
#define ImplRepository_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ImplRepositoryNewClass c
#define ImplRepositoryClassData d
#define ImplRepositoryCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */

/*
 * Include the meta class file
 */
#include <snglicls.h>
/*--------------Migration------------*/
#define ImplRepository_classObj ImplRepositoryClassData.classObject
#define _ImplRepository ImplRepository_classObj

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

/*
 * Declare the class data 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;
}  _ImplRepositoryClassData;
SOMEXTERN struct ImplRepositoryClassDataStructure * SOMLINK resolve_ImplRepositoryClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ImplRepositoryCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ImplRepositoryCClassData;
SOMEXTERN struct ImplRepositoryCClassDataStructure * SOMLINK resolve_ImplRepositoryCClassData(void);

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

/*
 * Override method: somInit
 */
#define ImplRepository_somInit(somSelf) \
	SOMObject_somInit(somSelf)

/*
 * Override method: somUninit
 */
#define ImplRepository_somUninit(somSelf) \
	SOMObject_somUninit(somSelf)

/*
 * New Method: find_impldef
 */
typedef ImplementationDef*   (SOMLINK * somTD_ImplRepository_find_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplId implid);
#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 * somTD_ImplRepository_find_impldef_by_alias)(ImplRepository *somSelf, Environment *ev,
		string alias_name);
#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_impldefs
 */
typedef ORBStatus   (SOMLINK * somTD_ImplRepository_find_all_impldefs)(ImplRepository *somSelf, Environment *ev,
		_IDL_SEQUENCE_ImplementationDef* outimpldefs);
#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: find_impldef_by_class
 */
typedef _IDL_SEQUENCE_ImplementationDef   (SOMLINK * somTD_ImplRepository_find_impldef_by_class)(ImplRepository *somSelf, Environment *ev,
		string classname);
#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_impldef
 */
typedef void   (SOMLINK * somTD_ImplRepository_add_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplementationDef* impldef);
#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 void   (SOMLINK * somTD_ImplRepository_update_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplementationDef* impldef);
#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 void   (SOMLINK * somTD_ImplRepository_delete_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplId implid);
#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: add_class_to_impldef
 */
typedef void   (SOMLINK * somTD_ImplRepository_add_class_to_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplId implid,
		string classname);
#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 * somTD_ImplRepository_remove_class_from_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplId implid,
		string classname);
#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 * somTD_ImplRepository_remove_class_from_all)(ImplRepository *somSelf, Environment *ev,
		string classname);
#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 * somTD_ImplRepository_find_classes_by_impldef)(ImplRepository *somSelf, Environment *ev,
		ImplId implid);
#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 */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ImplRepository_somDefaultInit SOMObject_somDefaultInit
#define ImplRepository_somDestruct SOMObject_somDestruct
#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_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_somDispatchV SOMObject_somDispatchV
#define ImplRepository_somDispatchL SOMObject_somDispatchL
#define ImplRepository_somDispatchA SOMObject_somDispatchA
#define ImplRepository_somDispatchD SOMObject_somDispatchD
#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 */
