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

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


#ifndef SOM_ODObjectIterator_h
#define SOM_ODObjectIterator_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 ODObjectIteratorClassData (*resolve_ODObjectIteratorClassData())
#define ODObjectIteratorCClassData (*resolve_ODObjectIteratorCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODObjectIterator
#define ODObjectIterator 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 ODObjectIterator
    #define ODObjectIterator SOMObject
#endif /* ODObjectIterator */
#ifndef ODObjectNameSpace
    #define ODObjectNameSpace SOMObject
#endif /* ODObjectNameSpace */

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

#define ODObjectIterator_MajorVersion 1
#define ODObjectIterator_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODObjectIteratorNewClass c
#define ODObjectIteratorClassData d
#define ODObjectIteratorCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODObjectIterator_classObj ODObjectIteratorClassData.classObject
#define _ODObjectIterator ODObjectIterator_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODObjectIteratorClassDataStructure {
	SOMClass *classObject;
	somMToken InitObjectIterator;
	somMToken First;
	somMToken Next;
	somMToken IsNotComplete;
}  _ODObjectIteratorClassData;
SOMEXTERN struct ODObjectIteratorClassDataStructure * SOMLINK resolve_ODObjectIteratorClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODObjectIteratorCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODObjectIteratorCClassData;
SOMEXTERN struct ODObjectIteratorCClassDataStructure * SOMLINK resolve_ODObjectIteratorCClassData(void);

/*
 * New and Renew macros for ODObjectIterator
 */
#define ODObjectIteratorNew() \
   (_somNew(_ODObjectIterator ? _ODObjectIterator : ODObjectIteratorNewClass(ODObjectIterator_MajorVersion, ODObjectIterator_MinorVersion)))
#define ODObjectIteratorRenew(buf) \
   (_somRenew(_ODObjectIterator ? _ODObjectIterator : ODObjectIteratorNewClass(ODObjectIterator_MajorVersion, ODObjectIterator_MinorVersion), buf))

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

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

/*
 * New Method: InitObjectIterator
 */
typedef void   (SOMLINK * somTD_ODObjectIterator_InitObjectIterator)(ODObjectIterator *somSelf, Environment *ev,
		ODObjectNameSpace* nameSpace);
#define somMD_ODObjectIterator_InitObjectIterator "::ODObjectIterator::InitObjectIterator"
#define ODObjectIterator_InitObjectIterator(somSelf,ev,nameSpace) \
    (SOM_Resolve(somSelf, ODObjectIterator, InitObjectIterator) \
	(somSelf,ev,nameSpace))
#ifndef SOMGD_InitObjectIterator
    #if (defined(_InitObjectIterator) || defined(__InitObjectIterator))
        #undef _InitObjectIterator
        #undef __InitObjectIterator
        #define SOMGD_InitObjectIterator 1
    #else
        #define _InitObjectIterator ODObjectIterator_InitObjectIterator
    #endif /* _InitObjectIterator */
#endif /* SOMGD_InitObjectIterator */

/*
 * New Method: First
 */
typedef void   (SOMLINK * somTD_ODObjectIterator_First)(ODObjectIterator *somSelf, Environment *ev,
		ODISOStr* key,
		ODObject** object,
		ODULong* objectLength);
#define somMD_ODObjectIterator_First "::ODObjectIterator::First"
#define ODObjectIterator_First(somSelf,ev,key,object,objectLength) \
    (SOM_Resolve(somSelf, ODObjectIterator, First) \
	(somSelf,ev,key,object,objectLength))
#ifndef SOMGD_First
    #if (defined(_First) || defined(__First))
        #undef _First
        #undef __First
        #define SOMGD_First 1
    #else
        #define _First ODObjectIterator_First
    #endif /* _First */
#endif /* SOMGD_First */

/*
 * New Method: Next
 */
typedef void   (SOMLINK * somTD_ODObjectIterator_Next)(ODObjectIterator *somSelf, Environment *ev,
		ODISOStr* key,
		ODObject** object,
		ODULong* objectLength);
#define somMD_ODObjectIterator_Next "::ODObjectIterator::Next"
#define ODObjectIterator_Next(somSelf,ev,key,object,objectLength) \
    (SOM_Resolve(somSelf, ODObjectIterator, Next) \
	(somSelf,ev,key,object,objectLength))
#ifndef SOMGD_Next
    #if (defined(_Next) || defined(__Next))
        #undef _Next
        #undef __Next
        #define SOMGD_Next 1
    #else
        #define _Next ODObjectIterator_Next
    #endif /* _Next */
#endif /* SOMGD_Next */

/*
 * New Method: IsNotComplete
 */
typedef ODBoolean   (SOMLINK * somTD_ODObjectIterator_IsNotComplete)(ODObjectIterator *somSelf, Environment *ev);
#define somMD_ODObjectIterator_IsNotComplete "::ODObjectIterator::IsNotComplete"
#define ODObjectIterator_IsNotComplete(somSelf,ev) \
    (SOM_Resolve(somSelf, ODObjectIterator, IsNotComplete) \
	(somSelf,ev))
#ifndef SOMGD_IsNotComplete
    #if (defined(_IsNotComplete) || defined(__IsNotComplete))
        #undef _IsNotComplete
        #undef __IsNotComplete
        #define SOMGD_IsNotComplete 1
    #else
        #define _IsNotComplete ODObjectIterator_IsNotComplete
    #endif /* _IsNotComplete */
#endif /* SOMGD_IsNotComplete */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODObjectIterator_InitObject ODObject_InitObject
#define ODObjectIterator_IsInitialized ODObject_IsInitialized
#define ODObjectIterator_HasExtension ODObject_HasExtension
#define ODObjectIterator_GetExtension ODObject_GetExtension
#define ODObjectIterator_ReleaseExtension ODObject_ReleaseExtension
#define ODObjectIterator_Purge ODObject_Purge
#define ODObjectIterator_IsEqualTo ODObject_IsEqualTo
#define ODObjectIterator_SubClassResponsibility ODObject_SubClassResponsibility
#define ODObjectIterator_somDefaultInit SOMObject_somDefaultInit
#define ODObjectIterator_somDestruct SOMObject_somDestruct
#define ODObjectIterator_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODObjectIterator_somDefaultAssign SOMObject_somDefaultAssign
#define ODObjectIterator_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODObjectIterator_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODObjectIterator_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODObjectIterator_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODObjectIterator_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODObjectIterator_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODObjectIterator_somFree SOMObject_somFree
#define ODObjectIterator_somGetClass SOMObject_somGetClass
#define ODObjectIterator_somGetClassName SOMObject_somGetClassName
#define ODObjectIterator_somGetSize SOMObject_somGetSize
#define ODObjectIterator_somIsA SOMObject_somIsA
#define ODObjectIterator_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODObjectIterator_somRespondsTo SOMObject_somRespondsTo
#define ODObjectIterator_somDispatch SOMObject_somDispatch
#define ODObjectIterator_somClassDispatch SOMObject_somClassDispatch
#define ODObjectIterator_somCastObj SOMObject_somCastObj
#define ODObjectIterator_somResetObj SOMObject_somResetObj
#define ODObjectIterator_somDispatchV SOMObject_somDispatchV
#define ODObjectIterator_somDispatchL SOMObject_somDispatchL
#define ODObjectIterator_somDispatchA SOMObject_somDispatchA
#define ODObjectIterator_somDispatchD SOMObject_somDispatchD
#define ODObjectIterator_somPrintSelf SOMObject_somPrintSelf
#define ODObjectIterator_somDumpSelf SOMObject_somDumpSelf
#define ODObjectIterator_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODObjectIterator_h */
