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

/*
 * 
 *  Classes defined in this interface
 * 
 * 
 *  Classes used by this interface
 * 
 */


#ifndef SOM_ODBinding_h
#define SOM_ODBinding_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 ODBindingClassData (*resolve_ODBindingClassData())
#define ODBindingCClassData (*resolve_ODBindingCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODBinding
#define ODBinding 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 ODSession
    #define ODSession SOMObject
#endif /* ODSession */
#ifndef ODStorageUnit
    #define ODStorageUnit SOMObject
#endif /* ODStorageUnit */
#ifndef ODPartRegistry
    #define ODPartRegistry SOMObject
#endif /* ODPartRegistry */

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

#define ODBinding_MajorVersion 1
#define ODBinding_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODBindingNewClass c
#define ODBindingClassData d
#define ODBindingCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODBinding_classObj ODBindingClassData.classObject
#define _ODBinding ODBinding_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODBindingClassDataStructure {
	SOMClass *classObject;
	somMToken InitBinding;
	somMToken ChooseEditorForPart;
	somMToken GetContainerSuite;
	somMToken GetPreferredEditorForPart;
	somMToken ChooseDirectEditorForPart;
}  _ODBindingClassData;
SOMEXTERN struct ODBindingClassDataStructure * SOMLINK resolve_ODBindingClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODBindingCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODBindingCClassData;
SOMEXTERN struct ODBindingCClassDataStructure * SOMLINK resolve_ODBindingCClassData(void);

/*
 * New and Renew macros for ODBinding
 */
#define ODBindingNew() \
   (_somNew(_ODBinding ? _ODBinding : ODBindingNewClass(ODBinding_MajorVersion, ODBinding_MinorVersion)))
#define ODBindingRenew(buf) \
   (_somRenew(_ODBinding ? _ODBinding : ODBindingNewClass(ODBinding_MajorVersion, ODBinding_MinorVersion), buf))

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

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

/*
 * New Method: InitBinding
 */
typedef void   (SOMLINK * somTD_ODBinding_InitBinding)(ODBinding *somSelf, Environment *ev,
		ODSession* session);
#define somMD_ODBinding_InitBinding "::ODBinding::InitBinding"
#define ODBinding_InitBinding(somSelf,ev,session) \
    (SOM_Resolve(somSelf, ODBinding, InitBinding) \
	(somSelf,ev,session))
#ifndef SOMGD_InitBinding
    #if (defined(_InitBinding) || defined(__InitBinding))
        #undef _InitBinding
        #undef __InitBinding
        #define SOMGD_InitBinding 1
    #else
        #define _InitBinding ODBinding_InitBinding
    #endif /* _InitBinding */
#endif /* SOMGD_InitBinding */

/*
 * New Method: ChooseEditorForPart
 */
typedef ODEditor   (SOMLINK * somTD_ODBinding_ChooseEditorForPart)(ODBinding *somSelf, Environment *ev,
		ODStorageUnit* thePartSU,
		ODType newKind);
#define somMD_ODBinding_ChooseEditorForPart "::ODBinding::ChooseEditorForPart"
#define ODBinding_ChooseEditorForPart(somSelf,ev,thePartSU,newKind) \
    (SOM_Resolve(somSelf, ODBinding, ChooseEditorForPart) \
	(somSelf,ev,thePartSU,newKind))
#ifndef SOMGD_ChooseEditorForPart
    #if (defined(_ChooseEditorForPart) || defined(__ChooseEditorForPart))
        #undef _ChooseEditorForPart
        #undef __ChooseEditorForPart
        #define SOMGD_ChooseEditorForPart 1
    #else
        #define _ChooseEditorForPart ODBinding_ChooseEditorForPart
    #endif /* _ChooseEditorForPart */
#endif /* SOMGD_ChooseEditorForPart */

/*
 * New Method: GetContainerSuite
 */
typedef ODContainerSuite   (SOMLINK * somTD_ODBinding_GetContainerSuite)(ODBinding *somSelf, Environment *ev,
		ODContainerType containerType);
#define somMD_ODBinding_GetContainerSuite "::ODBinding::GetContainerSuite"
#define ODBinding_GetContainerSuite(somSelf,ev,containerType) \
    (SOM_Resolve(somSelf, ODBinding, GetContainerSuite) \
	(somSelf,ev,containerType))
#ifndef SOMGD_GetContainerSuite
    #if (defined(_GetContainerSuite) || defined(__GetContainerSuite))
        #undef _GetContainerSuite
        #undef __GetContainerSuite
        #define SOMGD_GetContainerSuite 1
    #else
        #define _GetContainerSuite ODBinding_GetContainerSuite
    #endif /* _GetContainerSuite */
#endif /* SOMGD_GetContainerSuite */

/*
 * New Method: GetPreferredEditorForPart
 */
typedef ODEditor   (SOMLINK * somTD_ODBinding_GetPreferredEditorForPart)(ODBinding *somSelf, Environment *ev,
		ODStorageUnit* thePartSU);
#define somMD_ODBinding_GetPreferredEditorForPart "::ODBinding::GetPreferredEditorForPart"
#define ODBinding_GetPreferredEditorForPart(somSelf,ev,thePartSU) \
    (SOM_Resolve(somSelf, ODBinding, GetPreferredEditorForPart) \
	(somSelf,ev,thePartSU))
#ifndef SOMGD_GetPreferredEditorForPart
    #if (defined(_GetPreferredEditorForPart) || defined(__GetPreferredEditorForPart))
        #undef _GetPreferredEditorForPart
        #undef __GetPreferredEditorForPart
        #define SOMGD_GetPreferredEditorForPart 1
    #else
        #define _GetPreferredEditorForPart ODBinding_GetPreferredEditorForPart
    #endif /* _GetPreferredEditorForPart */
#endif /* SOMGD_GetPreferredEditorForPart */

/*
 * New Method: ChooseDirectEditorForPart
 */
typedef ODEditor   (SOMLINK * somTD_ODBinding_ChooseDirectEditorForPart)(ODBinding *somSelf, Environment *ev,
		ODStorageUnit* thePartSU,
		ODType newKind);
#define somMD_ODBinding_ChooseDirectEditorForPart "::ODBinding::ChooseDirectEditorForPart"
#define ODBinding_ChooseDirectEditorForPart(somSelf,ev,thePartSU,newKind) \
    (SOM_Resolve(somSelf, ODBinding, ChooseDirectEditorForPart) \
	(somSelf,ev,thePartSU,newKind))
#ifndef SOMGD_ChooseDirectEditorForPart
    #if (defined(_ChooseDirectEditorForPart) || defined(__ChooseDirectEditorForPart))
        #undef _ChooseDirectEditorForPart
        #undef __ChooseDirectEditorForPart
        #define SOMGD_ChooseDirectEditorForPart 1
    #else
        #define _ChooseDirectEditorForPart ODBinding_ChooseDirectEditorForPart
    #endif /* _ChooseDirectEditorForPart */
#endif /* SOMGD_ChooseDirectEditorForPart */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODBinding_InitObject ODObject_InitObject
#define ODBinding_IsInitialized ODObject_IsInitialized
#define ODBinding_HasExtension ODObject_HasExtension
#define ODBinding_GetExtension ODObject_GetExtension
#define ODBinding_ReleaseExtension ODObject_ReleaseExtension
#define ODBinding_Purge ODObject_Purge
#define ODBinding_IsEqualTo ODObject_IsEqualTo
#define ODBinding_SubClassResponsibility ODObject_SubClassResponsibility
#define ODBinding_somDefaultInit SOMObject_somDefaultInit
#define ODBinding_somDestruct SOMObject_somDestruct
#define ODBinding_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODBinding_somDefaultAssign SOMObject_somDefaultAssign
#define ODBinding_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODBinding_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODBinding_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODBinding_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODBinding_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODBinding_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODBinding_somFree SOMObject_somFree
#define ODBinding_somGetClass SOMObject_somGetClass
#define ODBinding_somGetClassName SOMObject_somGetClassName
#define ODBinding_somGetSize SOMObject_somGetSize
#define ODBinding_somIsA SOMObject_somIsA
#define ODBinding_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODBinding_somRespondsTo SOMObject_somRespondsTo
#define ODBinding_somDispatch SOMObject_somDispatch
#define ODBinding_somClassDispatch SOMObject_somClassDispatch
#define ODBinding_somCastObj SOMObject_somCastObj
#define ODBinding_somResetObj SOMObject_somResetObj
#define ODBinding_somDispatchV SOMObject_somDispatchV
#define ODBinding_somDispatchL SOMObject_somDispatchL
#define ODBinding_somDispatchA SOMObject_somDispatchA
#define ODBinding_somDispatchD SOMObject_somDispatchD
#define ODBinding_somPrintSelf SOMObject_somPrintSelf
#define ODBinding_somDumpSelf SOMObject_somDumpSelf
#define ODBinding_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODBinding_h */
