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

/*
 * 
 *  Theory of Operation
 * 
 * 
 *  Classes defined in this interface
 * 
 */


#ifndef SOM_ODLinkSpec_h
#define SOM_ODLinkSpec_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 ODLinkSpecClassData (*resolve_ODLinkSpecClassData())
#define ODLinkSpecCClassData (*resolve_ODLinkSpecCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODLinkSpec
#define ODLinkSpec SOMObject
#endif
#include <LinkSpcB.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 ODBaseLinkSpec
    #define ODBaseLinkSpec SOMObject
#endif /* ODBaseLinkSpec */
#ifndef ODStorageUnit
    #define ODStorageUnit SOMObject
#endif /* ODStorageUnit */
#ifndef ODDraft
    #define ODDraft SOMObject
#endif /* ODDraft */
#ifndef ODPart
    #define ODPart SOMObject
#endif /* ODPart */
#ifndef ODLinkSpec
    #define ODLinkSpec SOMObject
#endif /* ODLinkSpec */

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

#define ODLinkSpec_MajorVersion 1
#define ODLinkSpec_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODLinkSpecNewClass c
#define ODLinkSpecClassData d
#define ODLinkSpecCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODLinkSpec_classObj ODLinkSpecClassData.classObject
#define _ODLinkSpec ODLinkSpec_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODLinkSpecClassDataStructure {
	SOMClass *classObject;
	somMToken UseItemName;
	somMToken InitLinkSpec;
	somMToken GetProcessID;
	somMToken GetProcessLaunchDate;
	somMToken GetPart;
	somMToken GetDataSize;
	somMToken GetDataPtr;
	somMToken WriteLinkSpecString;
	somMToken ReadLinkSpecString;
	somMToken GetMoniker;
	somMToken VoidLinkSpec;
	somMToken FromThisDraft;
}  _ODLinkSpecClassData;
SOMEXTERN struct ODLinkSpecClassDataStructure * SOMLINK resolve_ODLinkSpecClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODLinkSpecCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODLinkSpecCClassData;
SOMEXTERN struct ODLinkSpecCClassDataStructure * SOMLINK resolve_ODLinkSpecCClassData(void);

/*
 * New and Renew macros for ODLinkSpec
 */
#define ODLinkSpecNew() \
   (_somNew(_ODLinkSpec ? _ODLinkSpec : ODLinkSpecNewClass(ODLinkSpec_MajorVersion, ODLinkSpec_MinorVersion)))
#define ODLinkSpecRenew(buf) \
   (_somRenew(_ODLinkSpec ? _ODLinkSpec : ODLinkSpecNewClass(ODLinkSpec_MajorVersion, ODLinkSpec_MinorVersion), buf))

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

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

/*
 * Override method: WriteLinkSpec
 */
#define ODLinkSpec_WriteLinkSpec(somSelf,ev,su) \
	ODBaseLinkSpec_WriteLinkSpec(somSelf,ev,su)

/*
 * Override method: ReadLinkSpec
 */
#define ODLinkSpec_ReadLinkSpec(somSelf,ev,su) \
	ODBaseLinkSpec_ReadLinkSpec(somSelf,ev,su)

/*
 * New Method: UseItemName
 */
typedef void   (SOMLINK * somTD_ODLinkSpec_UseItemName)(ODLinkSpec *somSelf, Environment *ev,
		char* pszItemName);
#define somMD_ODLinkSpec_UseItemName "::ODLinkSpec::UseItemName"
#define ODLinkSpec_UseItemName(somSelf,ev,pszItemName) \
    (SOM_Resolve(somSelf, ODLinkSpec, UseItemName) \
	(somSelf,ev,pszItemName))
#ifndef SOMGD_UseItemName
    #if (defined(_UseItemName) || defined(__UseItemName))
        #undef _UseItemName
        #undef __UseItemName
        #define SOMGD_UseItemName 1
    #else
        #define _UseItemName ODLinkSpec_UseItemName
    #endif /* _UseItemName */
#endif /* SOMGD_UseItemName */

/*
 * New Method: InitLinkSpec
 */
typedef void   (SOMLINK * somTD_ODLinkSpec_InitLinkSpec)(ODLinkSpec *somSelf, Environment *ev,
		ODPart* part,
		ODPtr data,
		ODULong size);
#define somMD_ODLinkSpec_InitLinkSpec "::ODLinkSpec::InitLinkSpec"
#define ODLinkSpec_InitLinkSpec(somSelf,ev,part,data,size) \
    (SOM_Resolve(somSelf, ODLinkSpec, InitLinkSpec) \
	(somSelf,ev,part,data,size))
#ifndef SOMGD_InitLinkSpec
    #if (defined(_InitLinkSpec) || defined(__InitLinkSpec))
        #undef _InitLinkSpec
        #undef __InitLinkSpec
        #define SOMGD_InitLinkSpec 1
    #else
        #define _InitLinkSpec ODLinkSpec_InitLinkSpec
    #endif /* _InitLinkSpec */
#endif /* SOMGD_InitLinkSpec */

/*
 * New Method: GetProcessID
 */
typedef ProcessSerialNumber   (SOMLINK * somTD_ODLinkSpec_GetProcessID)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_GetProcessID "::ODLinkSpec::GetProcessID"
#define ODLinkSpec_GetProcessID(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, GetProcessID) \
	(somSelf,ev))
#ifndef SOMGD_GetProcessID
    #if (defined(_GetProcessID) || defined(__GetProcessID))
        #undef _GetProcessID
        #undef __GetProcessID
        #define SOMGD_GetProcessID 1
    #else
        #define _GetProcessID ODLinkSpec_GetProcessID
    #endif /* _GetProcessID */
#endif /* SOMGD_GetProcessID */

/*
 * New Method: GetProcessLaunchDate
 */
typedef FILETIME   (SOMLINK * somTD_ODLinkSpec_GetProcessLaunchDate)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_GetProcessLaunchDate "::ODLinkSpec::GetProcessLaunchDate"
#define ODLinkSpec_GetProcessLaunchDate(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, GetProcessLaunchDate) \
	(somSelf,ev))
#ifndef SOMGD_GetProcessLaunchDate
    #if (defined(_GetProcessLaunchDate) || defined(__GetProcessLaunchDate))
        #undef _GetProcessLaunchDate
        #undef __GetProcessLaunchDate
        #define SOMGD_GetProcessLaunchDate 1
    #else
        #define _GetProcessLaunchDate ODLinkSpec_GetProcessLaunchDate
    #endif /* _GetProcessLaunchDate */
#endif /* SOMGD_GetProcessLaunchDate */

/*
 * New Method: GetPart
 */
typedef ODPart*   (SOMLINK * somTD_ODLinkSpec_GetPart)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_GetPart "::ODLinkSpec::GetPart"
#define ODLinkSpec_GetPart(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, GetPart) \
	(somSelf,ev))
#ifndef SOMGD_GetPart
    #if (defined(_GetPart) || defined(__GetPart))
        #undef _GetPart
        #undef __GetPart
        #define SOMGD_GetPart 1
    #else
        #define _GetPart ODLinkSpec_GetPart
    #endif /* _GetPart */
#endif /* SOMGD_GetPart */

/*
 * New Method: GetDataSize
 */
typedef ODULong   (SOMLINK * somTD_ODLinkSpec_GetDataSize)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_GetDataSize "::ODLinkSpec::GetDataSize"
#define ODLinkSpec_GetDataSize(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, GetDataSize) \
	(somSelf,ev))
#ifndef SOMGD_GetDataSize
    #if (defined(_GetDataSize) || defined(__GetDataSize))
        #undef _GetDataSize
        #undef __GetDataSize
        #define SOMGD_GetDataSize 1
    #else
        #define _GetDataSize ODLinkSpec_GetDataSize
    #endif /* _GetDataSize */
#endif /* SOMGD_GetDataSize */

/*
 * New Method: GetDataPtr
 */
typedef ODPtr   (SOMLINK * somTD_ODLinkSpec_GetDataPtr)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_GetDataPtr "::ODLinkSpec::GetDataPtr"
#define ODLinkSpec_GetDataPtr(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, GetDataPtr) \
	(somSelf,ev))
#ifndef SOMGD_GetDataPtr
    #if (defined(_GetDataPtr) || defined(__GetDataPtr))
        #undef _GetDataPtr
        #undef __GetDataPtr
        #define SOMGD_GetDataPtr 1
    #else
        #define _GetDataPtr ODLinkSpec_GetDataPtr
    #endif /* _GetDataPtr */
#endif /* SOMGD_GetDataPtr */

/*
 * New Method: WriteLinkSpecString
 */
typedef char*   (SOMLINK * somTD_ODLinkSpec_WriteLinkSpecString)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_WriteLinkSpecString "::ODLinkSpec::WriteLinkSpecString"
#define ODLinkSpec_WriteLinkSpecString(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, WriteLinkSpecString) \
	(somSelf,ev))
#ifndef SOMGD_WriteLinkSpecString
    #if (defined(_WriteLinkSpecString) || defined(__WriteLinkSpecString))
        #undef _WriteLinkSpecString
        #undef __WriteLinkSpecString
        #define SOMGD_WriteLinkSpecString 1
    #else
        #define _WriteLinkSpecString ODLinkSpec_WriteLinkSpecString
    #endif /* _WriteLinkSpecString */
#endif /* SOMGD_WriteLinkSpecString */

/*
 * New Method: ReadLinkSpecString
 */
typedef void   (SOMLINK * somTD_ODLinkSpec_ReadLinkSpecString)(ODLinkSpec *somSelf, Environment *ev,
		char* pHexDigit);
#define somMD_ODLinkSpec_ReadLinkSpecString "::ODLinkSpec::ReadLinkSpecString"
#define ODLinkSpec_ReadLinkSpecString(somSelf,ev,pHexDigit) \
    (SOM_Resolve(somSelf, ODLinkSpec, ReadLinkSpecString) \
	(somSelf,ev,pHexDigit))
#ifndef SOMGD_ReadLinkSpecString
    #if (defined(_ReadLinkSpecString) || defined(__ReadLinkSpecString))
        #undef _ReadLinkSpecString
        #undef __ReadLinkSpecString
        #define SOMGD_ReadLinkSpecString 1
    #else
        #define _ReadLinkSpecString ODLinkSpec_ReadLinkSpecString
    #endif /* _ReadLinkSpecString */
#endif /* SOMGD_ReadLinkSpecString */

/*
 * New Method: GetMoniker
 */
typedef void*   (SOMLINK * somTD_ODLinkSpec_GetMoniker)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_GetMoniker "::ODLinkSpec::GetMoniker"
#define ODLinkSpec_GetMoniker(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, GetMoniker) \
	(somSelf,ev))
#ifndef SOMGD_GetMoniker
    #if (defined(_GetMoniker) || defined(__GetMoniker))
        #undef _GetMoniker
        #undef __GetMoniker
        #define SOMGD_GetMoniker 1
    #else
        #define _GetMoniker ODLinkSpec_GetMoniker
    #endif /* _GetMoniker */
#endif /* SOMGD_GetMoniker */

/*
 * New Method: VoidLinkSpec
 */
typedef void   (SOMLINK * somTD_ODLinkSpec_VoidLinkSpec)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_VoidLinkSpec "::ODLinkSpec::VoidLinkSpec"
#define ODLinkSpec_VoidLinkSpec(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, VoidLinkSpec) \
	(somSelf,ev))
#ifndef SOMGD_VoidLinkSpec
    #if (defined(_VoidLinkSpec) || defined(__VoidLinkSpec))
        #undef _VoidLinkSpec
        #undef __VoidLinkSpec
        #define SOMGD_VoidLinkSpec 1
    #else
        #define _VoidLinkSpec ODLinkSpec_VoidLinkSpec
    #endif /* _VoidLinkSpec */
#endif /* SOMGD_VoidLinkSpec */

/*
 * New Method: FromThisDraft
 */
typedef ODBoolean   (SOMLINK * somTD_ODLinkSpec_FromThisDraft)(ODLinkSpec *somSelf, Environment *ev);
#define somMD_ODLinkSpec_FromThisDraft "::ODLinkSpec::FromThisDraft"
#define ODLinkSpec_FromThisDraft(somSelf,ev) \
    (SOM_Resolve(somSelf, ODLinkSpec, FromThisDraft) \
	(somSelf,ev))
#ifndef SOMGD_FromThisDraft
    #if (defined(_FromThisDraft) || defined(__FromThisDraft))
        #undef _FromThisDraft
        #undef __FromThisDraft
        #define SOMGD_FromThisDraft 1
    #else
        #define _FromThisDraft ODLinkSpec_FromThisDraft
    #endif /* _FromThisDraft */
#endif /* SOMGD_FromThisDraft */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODLinkSpec_InitObject ODObject_InitObject
#define ODLinkSpec_IsInitialized ODObject_IsInitialized
#define ODLinkSpec_HasExtension ODObject_HasExtension
#define ODLinkSpec_GetExtension ODObject_GetExtension
#define ODLinkSpec_ReleaseExtension ODObject_ReleaseExtension
#define ODLinkSpec_Purge ODObject_Purge
#define ODLinkSpec_IsEqualTo ODObject_IsEqualTo
#define ODLinkSpec_SubClassResponsibility ODObject_SubClassResponsibility
#define ODLinkSpec_somDefaultInit SOMObject_somDefaultInit
#define ODLinkSpec_somDestruct SOMObject_somDestruct
#define ODLinkSpec_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODLinkSpec_somDefaultAssign SOMObject_somDefaultAssign
#define ODLinkSpec_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODLinkSpec_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODLinkSpec_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODLinkSpec_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODLinkSpec_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODLinkSpec_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODLinkSpec_somFree SOMObject_somFree
#define ODLinkSpec_somGetClass SOMObject_somGetClass
#define ODLinkSpec_somGetClassName SOMObject_somGetClassName
#define ODLinkSpec_somGetSize SOMObject_somGetSize
#define ODLinkSpec_somIsA SOMObject_somIsA
#define ODLinkSpec_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODLinkSpec_somRespondsTo SOMObject_somRespondsTo
#define ODLinkSpec_somDispatch SOMObject_somDispatch
#define ODLinkSpec_somClassDispatch SOMObject_somClassDispatch
#define ODLinkSpec_somCastObj SOMObject_somCastObj
#define ODLinkSpec_somResetObj SOMObject_somResetObj
#define ODLinkSpec_somDispatchV SOMObject_somDispatchV
#define ODLinkSpec_somDispatchL SOMObject_somDispatchL
#define ODLinkSpec_somDispatchA SOMObject_somDispatchA
#define ODLinkSpec_somDispatchD SOMObject_somDispatchD
#define ODLinkSpec_somPrintSelf SOMObject_somPrintSelf
#define ODLinkSpec_somDumpSelf SOMObject_somDumpSelf
#define ODLinkSpec_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODLinkSpec_h */
