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

/*
 * 
 *  Classes defined in this interface
 * 
 */


#ifndef SOM_ODTypeList_h
#define SOM_ODTypeList_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 ODTypeListClassData (*resolve_ODTypeListClassData())
#define ODTypeListCClassData (*resolve_ODTypeListCClassData())

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

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef ODObject
    #define ODObject SOMObject
#endif /* ODObject */
#ifndef ODExtension
    #define ODExtension SOMObject
#endif /* ODExtension */
#ifndef ODTypeList
    #define ODTypeList SOMObject
#endif /* ODTypeList */
#ifndef ODTypeListIterator
    #define ODTypeListIterator SOMObject
#endif /* ODTypeListIterator */

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

#define ODTypeList_MajorVersion 0
#define ODTypeList_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODTypeListNewClass c
#define ODTypeListClassData d
#define ODTypeListCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODTypeList_classObj ODTypeListClassData.classObject
#define _ODTypeList ODTypeList_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODTypeListClassDataStructure {
	SOMClass *classObject;
	somMToken InitTypeList;
	somMToken AddLast;
	somMToken Remove;
	somMToken Contains;
	somMToken Count;
	somMToken CreateTypeListIterator;
	somMToken GetImplementation;
}  _ODTypeListClassData;
SOMEXTERN struct ODTypeListClassDataStructure * SOMLINK resolve_ODTypeListClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODTypeListCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODTypeListCClassData;
SOMEXTERN struct ODTypeListCClassDataStructure * SOMLINK resolve_ODTypeListCClassData(void);

/*
 * New and Renew macros for ODTypeList
 */
#define ODTypeListNew() \
   (_somNew(_ODTypeList ? _ODTypeList : ODTypeListNewClass(ODTypeList_MajorVersion, ODTypeList_MinorVersion)))
#define ODTypeListRenew(buf) \
   (_somRenew(_ODTypeList ? _ODTypeList : ODTypeListNewClass(ODTypeList_MajorVersion, ODTypeList_MinorVersion), buf))

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

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

/*
 * New Method: InitTypeList
 */
typedef void   (SOMLINK * somTD_ODTypeList_InitTypeList)(ODTypeList *somSelf, Environment *ev,
		ODTypeList* typeList);
#define somMD_ODTypeList_InitTypeList "::ODTypeList::InitTypeList"
#define ODTypeList_InitTypeList(somSelf,ev,typeList) \
    (SOM_Resolve(somSelf, ODTypeList, InitTypeList) \
	(somSelf,ev,typeList))
#ifndef SOMGD_InitTypeList
    #if (defined(_InitTypeList) || defined(__InitTypeList))
        #undef _InitTypeList
        #undef __InitTypeList
        #define SOMGD_InitTypeList 1
    #else
        #define _InitTypeList ODTypeList_InitTypeList
    #endif /* _InitTypeList */
#endif /* SOMGD_InitTypeList */

/*
 * New Method: AddLast
 */
typedef void   (SOMLINK * somTD_ODTypeList_AddLast)(ODTypeList *somSelf, Environment *ev,
		ODType type);
#define somMD_ODTypeList_AddLast "::ODTypeList::AddLast"
#define ODTypeList_AddLast(somSelf,ev,type) \
    (SOM_Resolve(somSelf, ODTypeList, AddLast) \
	(somSelf,ev,type))
#ifndef SOMGD_AddLast
    #if (defined(_AddLast) || defined(__AddLast))
        #undef _AddLast
        #undef __AddLast
        #define SOMGD_AddLast 1
    #else
        #define _AddLast ODTypeList_AddLast
    #endif /* _AddLast */
#endif /* SOMGD_AddLast */

/*
 * New Method: Remove
 */
typedef void   (SOMLINK * somTD_ODTypeList_Remove)(ODTypeList *somSelf, Environment *ev,
		ODType type);
#define somMD_ODTypeList_Remove "::ODTypeList::Remove"
#define ODTypeList_Remove(somSelf,ev,type) \
    (SOM_Resolve(somSelf, ODTypeList, Remove) \
	(somSelf,ev,type))
#ifndef SOMGD_Remove
    #if (defined(_Remove) || defined(__Remove))
        #undef _Remove
        #undef __Remove
        #define SOMGD_Remove 1
    #else
        #define _Remove ODTypeList_Remove
    #endif /* _Remove */
#endif /* SOMGD_Remove */

/*
 * New Method: Contains
 */
typedef ODBoolean   (SOMLINK * somTD_ODTypeList_Contains)(ODTypeList *somSelf, Environment *ev,
		ODType type);
#define somMD_ODTypeList_Contains "::ODTypeList::Contains"
#define ODTypeList_Contains(somSelf,ev,type) \
    (SOM_Resolve(somSelf, ODTypeList, Contains) \
	(somSelf,ev,type))
#ifndef SOMGD_Contains
    #if (defined(_Contains) || defined(__Contains))
        #undef _Contains
        #undef __Contains
        #define SOMGD_Contains 1
    #else
        #define _Contains ODTypeList_Contains
    #endif /* _Contains */
#endif /* SOMGD_Contains */

/*
 * New Method: Count
 */
typedef ODULong   (SOMLINK * somTD_ODTypeList_Count)(ODTypeList *somSelf, Environment *ev);
#define somMD_ODTypeList_Count "::ODTypeList::Count"
#define ODTypeList_Count(somSelf,ev) \
    (SOM_Resolve(somSelf, ODTypeList, Count) \
	(somSelf,ev))
#ifndef SOMGD_Count
    #if (defined(_Count) || defined(__Count))
        #undef _Count
        #undef __Count
        #define SOMGD_Count 1
    #else
        #define _Count ODTypeList_Count
    #endif /* _Count */
#endif /* SOMGD_Count */

/*
 * New Method: CreateTypeListIterator
 */
typedef ODTypeListIterator*   (SOMLINK * somTD_ODTypeList_CreateTypeListIterator)(ODTypeList *somSelf, Environment *ev);
#define somMD_ODTypeList_CreateTypeListIterator "::ODTypeList::CreateTypeListIterator"
#define ODTypeList_CreateTypeListIterator(somSelf,ev) \
    (SOM_Resolve(somSelf, ODTypeList, CreateTypeListIterator) \
	(somSelf,ev))
#ifndef SOMGD_CreateTypeListIterator
    #if (defined(_CreateTypeListIterator) || defined(__CreateTypeListIterator))
        #undef _CreateTypeListIterator
        #undef __CreateTypeListIterator
        #define SOMGD_CreateTypeListIterator 1
    #else
        #define _CreateTypeListIterator ODTypeList_CreateTypeListIterator
    #endif /* _CreateTypeListIterator */
#endif /* SOMGD_CreateTypeListIterator */

/*
 * New Method: GetImplementation
 */
typedef OrderedCollection*   (SOMLINK * somTD_ODTypeList_GetImplementation)(ODTypeList *somSelf, Environment *ev);
#define somMD_ODTypeList_GetImplementation "::ODTypeList::GetImplementation"
#define ODTypeList_GetImplementation(somSelf,ev) \
    (SOM_Resolve(somSelf, ODTypeList, GetImplementation) \
	(somSelf,ev))
#ifndef SOMGD_GetImplementation
    #if (defined(_GetImplementation) || defined(__GetImplementation))
        #undef _GetImplementation
        #undef __GetImplementation
        #define SOMGD_GetImplementation 1
    #else
        #define _GetImplementation ODTypeList_GetImplementation
    #endif /* _GetImplementation */
#endif /* SOMGD_GetImplementation */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODTypeList_InitObject ODObject_InitObject
#define ODTypeList_IsInitialized ODObject_IsInitialized
#define ODTypeList_HasExtension ODObject_HasExtension
#define ODTypeList_GetExtension ODObject_GetExtension
#define ODTypeList_ReleaseExtension ODObject_ReleaseExtension
#define ODTypeList_Purge ODObject_Purge
#define ODTypeList_IsEqualTo ODObject_IsEqualTo
#define ODTypeList_SubClassResponsibility ODObject_SubClassResponsibility
#define ODTypeList_somDefaultInit SOMObject_somDefaultInit
#define ODTypeList_somDestruct SOMObject_somDestruct
#define ODTypeList_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODTypeList_somDefaultAssign SOMObject_somDefaultAssign
#define ODTypeList_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODTypeList_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODTypeList_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODTypeList_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODTypeList_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODTypeList_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODTypeList_somFree SOMObject_somFree
#define ODTypeList_somGetClass SOMObject_somGetClass
#define ODTypeList_somGetClassName SOMObject_somGetClassName
#define ODTypeList_somGetSize SOMObject_somGetSize
#define ODTypeList_somIsA SOMObject_somIsA
#define ODTypeList_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODTypeList_somRespondsTo SOMObject_somRespondsTo
#define ODTypeList_somDispatch SOMObject_somDispatch
#define ODTypeList_somClassDispatch SOMObject_somClassDispatch
#define ODTypeList_somCastObj SOMObject_somCastObj
#define ODTypeList_somResetObj SOMObject_somResetObj
#define ODTypeList_somDispatchV SOMObject_somDispatchV
#define ODTypeList_somDispatchL SOMObject_somDispatchL
#define ODTypeList_somDispatchA SOMObject_somDispatchA
#define ODTypeList_somDispatchD SOMObject_somDispatchD
#define ODTypeList_somPrintSelf SOMObject_somPrintSelf
#define ODTypeList_somDumpSelf SOMObject_somDumpSelf
#define ODTypeList_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODTypeList_h */
