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

/*
 * 
 *  Theory of Operation
 * 
 * 
 *   This class is used to represent the destination side of OpenDoc links.
 *   ODDrafts create and own these links. The source ODPart will ask the draft
 *   to create an ODLinkSource and an ODLink pair, and return the ODLink
 *   object to the the destination part.  The destination part uses the ODLink
 *   object to extract the contents of the link.
 * 
 *  Classes defined in this interface
 * 
 */


#ifndef SOM_ODBaseLink_h
#define SOM_ODBaseLink_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 ODBaseLinkClassData (*resolve_ODBaseLinkClassData())
#define ODBaseLinkCClassData (*resolve_ODBaseLinkCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODBaseLink
#define ODBaseLink SOMObject
#endif
#include <PstObj.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 ODRefCntObject
    #define ODRefCntObject SOMObject
#endif /* ODRefCntObject */
#ifndef ODPersistentObject
    #define ODPersistentObject SOMObject
#endif /* ODPersistentObject */
#ifndef ODStorageUnit
    #define ODStorageUnit SOMObject
#endif /* ODStorageUnit */
#ifndef ODFrame
    #define ODFrame SOMObject
#endif /* ODFrame */
#ifndef ODBaseLink
    #define ODBaseLink SOMObject
#endif /* ODBaseLink */
#ifndef ODLinkSource
    #define ODLinkSource SOMObject
#endif /* ODLinkSource */
#ifndef ODPart
    #define ODPart SOMObject
#endif /* ODPart */
#ifndef ODPartList
    #define ODPartList SOMObject
#endif /* ODPartList */
#ifndef ODDraft
    #define ODDraft SOMObject
#endif /* ODDraft */
#ifndef ODFacet
    #define ODFacet SOMObject
#endif /* ODFacet */

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

#define ODBaseLink_MajorVersion 1
#define ODBaseLink_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODBaseLinkNewClass c
#define ODBaseLinkClassData d
#define ODBaseLinkCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODBaseLink_classObj ODBaseLinkClassData.classObject
#define _ODBaseLink ODBaseLink_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODBaseLinkClassDataStructure {
	SOMClass *classObject;
	somMToken Lock;
	somMToken Unlock;
	somMToken GetContentStorageUnit;
	somMToken RegisterDependent;
	somMToken UnregisterDependent;
	somMToken GetChangeID;
	somMToken GetChangeTime;
	somMToken GetStatus;
	somMToken ShowSourceContent;
	somMToken ShowLinkDestinationInfo;
	somMToken GetLinkSource;
}  _ODBaseLinkClassData;
SOMEXTERN struct ODBaseLinkClassDataStructure * SOMLINK resolve_ODBaseLinkClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODBaseLinkCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODBaseLinkCClassData;
SOMEXTERN struct ODBaseLinkCClassDataStructure * SOMLINK resolve_ODBaseLinkCClassData(void);

/*
 * New and Renew macros for ODBaseLink
 */
#define ODBaseLinkNew() \
   (_somNew(_ODBaseLink ? _ODBaseLink : ODBaseLinkNewClass(ODBaseLink_MajorVersion, ODBaseLink_MinorVersion)))
#define ODBaseLinkRenew(buf) \
   (_somRenew(_ODBaseLink ? _ODBaseLink : ODBaseLinkNewClass(ODBaseLink_MajorVersion, ODBaseLink_MinorVersion), buf))

/*
 * New Method: Lock
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseLink_Lock)(ODBaseLink *somSelf, Environment *ev,
		ODULong wait,
		ODLinkKey* key);
#define somMD_ODBaseLink_Lock "::ODBaseLink::Lock"
#define ODBaseLink_Lock(somSelf,ev,wait,key) \
    (SOM_Resolve(somSelf, ODBaseLink, Lock) \
	(somSelf,ev,wait,key))
#ifndef SOMGD_Lock
    #if (defined(_Lock) || defined(__Lock))
        #undef _Lock
        #undef __Lock
        #define SOMGD_Lock 1
    #else
        #define _Lock ODBaseLink_Lock
    #endif /* _Lock */
#endif /* SOMGD_Lock */

/*
 * New Method: Unlock
 */
typedef void   (SOMLINK * somTD_ODBaseLink_Unlock)(ODBaseLink *somSelf, Environment *ev,
		ODLinkKey key);
#define somMD_ODBaseLink_Unlock "::ODBaseLink::Unlock"
#define ODBaseLink_Unlock(somSelf,ev,key) \
    (SOM_Resolve(somSelf, ODBaseLink, Unlock) \
	(somSelf,ev,key))
#ifndef SOMGD_Unlock
    #if (defined(_Unlock) || defined(__Unlock))
        #undef _Unlock
        #undef __Unlock
        #define SOMGD_Unlock 1
    #else
        #define _Unlock ODBaseLink_Unlock
    #endif /* _Unlock */
#endif /* SOMGD_Unlock */

/*
 * New Method: GetContentStorageUnit
 */
typedef ODStorageUnit*   (SOMLINK * somTD_ODBaseLink_GetContentStorageUnit)(ODBaseLink *somSelf, Environment *ev,
		ODLinkKey key);
#define somMD_ODBaseLink_GetContentStorageUnit "::ODBaseLink::GetContentStorageUnit"
#define ODBaseLink_GetContentStorageUnit(somSelf,ev,key) \
    (SOM_Resolve(somSelf, ODBaseLink, GetContentStorageUnit) \
	(somSelf,ev,key))
#ifndef SOMGD_GetContentStorageUnit
    #if (defined(_GetContentStorageUnit) || defined(__GetContentStorageUnit))
        #undef _GetContentStorageUnit
        #undef __GetContentStorageUnit
        #define SOMGD_GetContentStorageUnit 1
    #else
        #define _GetContentStorageUnit ODBaseLink_GetContentStorageUnit
    #endif /* _GetContentStorageUnit */
#endif /* SOMGD_GetContentStorageUnit */

/*
 * New Method: RegisterDependent
 */
typedef void   (SOMLINK * somTD_ODBaseLink_RegisterDependent)(ODBaseLink *somSelf, Environment *ev,
		ODPart* clientPart,
		ODChangeID id);
#define somMD_ODBaseLink_RegisterDependent "::ODBaseLink::RegisterDependent"
#define ODBaseLink_RegisterDependent(somSelf,ev,clientPart,id) \
    (SOM_Resolve(somSelf, ODBaseLink, RegisterDependent) \
	(somSelf,ev,clientPart,id))
#ifndef SOMGD_RegisterDependent
    #if (defined(_RegisterDependent) || defined(__RegisterDependent))
        #undef _RegisterDependent
        #undef __RegisterDependent
        #define SOMGD_RegisterDependent 1
    #else
        #define _RegisterDependent ODBaseLink_RegisterDependent
    #endif /* _RegisterDependent */
#endif /* SOMGD_RegisterDependent */

/*
 * New Method: UnregisterDependent
 */
typedef void   (SOMLINK * somTD_ODBaseLink_UnregisterDependent)(ODBaseLink *somSelf, Environment *ev,
		ODPart* clientPart);
#define somMD_ODBaseLink_UnregisterDependent "::ODBaseLink::UnregisterDependent"
#define ODBaseLink_UnregisterDependent(somSelf,ev,clientPart) \
    (SOM_Resolve(somSelf, ODBaseLink, UnregisterDependent) \
	(somSelf,ev,clientPart))
#ifndef SOMGD_UnregisterDependent
    #if (defined(_UnregisterDependent) || defined(__UnregisterDependent))
        #undef _UnregisterDependent
        #undef __UnregisterDependent
        #define SOMGD_UnregisterDependent 1
    #else
        #define _UnregisterDependent ODBaseLink_UnregisterDependent
    #endif /* _UnregisterDependent */
#endif /* SOMGD_UnregisterDependent */

/*
 * New Method: GetChangeID
 */
typedef ODChangeID   (SOMLINK * somTD_ODBaseLink_GetChangeID)(ODBaseLink *somSelf, Environment *ev);
#define somMD_ODBaseLink_GetChangeID "::ODBaseLink::GetChangeID"
#define ODBaseLink_GetChangeID(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseLink, GetChangeID) \
	(somSelf,ev))
#ifndef SOMGD_GetChangeID
    #if (defined(_GetChangeID) || defined(__GetChangeID))
        #undef _GetChangeID
        #undef __GetChangeID
        #define SOMGD_GetChangeID 1
    #else
        #define _GetChangeID ODBaseLink_GetChangeID
    #endif /* _GetChangeID */
#endif /* SOMGD_GetChangeID */

/*
 * New Method: GetChangeTime
 */
typedef ODTime   (SOMLINK * somTD_ODBaseLink_GetChangeTime)(ODBaseLink *somSelf, Environment *ev);
#define somMD_ODBaseLink_GetChangeTime "::ODBaseLink::GetChangeTime"
#define ODBaseLink_GetChangeTime(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseLink, GetChangeTime) \
	(somSelf,ev))
#ifndef SOMGD_GetChangeTime
    #if (defined(_GetChangeTime) || defined(__GetChangeTime))
        #undef _GetChangeTime
        #undef __GetChangeTime
        #define SOMGD_GetChangeTime 1
    #else
        #define _GetChangeTime ODBaseLink_GetChangeTime
    #endif /* _GetChangeTime */
#endif /* SOMGD_GetChangeTime */

/*
 * New Method: GetStatus
 */
typedef ODError   (SOMLINK * somTD_ODBaseLink_GetStatus)(ODBaseLink *somSelf, Environment *ev);
#define somMD_ODBaseLink_GetStatus "::ODBaseLink::GetStatus"
#define ODBaseLink_GetStatus(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseLink, GetStatus) \
	(somSelf,ev))
#ifndef SOMGD_GetStatus
    #if (defined(_GetStatus) || defined(__GetStatus))
        #undef _GetStatus
        #undef __GetStatus
        #define SOMGD_GetStatus 1
    #else
        #define _GetStatus ODBaseLink_GetStatus
    #endif /* _GetStatus */
#endif /* SOMGD_GetStatus */

/*
 * New Method: ShowSourceContent
 */
typedef void   (SOMLINK * somTD_ODBaseLink_ShowSourceContent)(ODBaseLink *somSelf, Environment *ev);
#define somMD_ODBaseLink_ShowSourceContent "::ODBaseLink::ShowSourceContent"
#define ODBaseLink_ShowSourceContent(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseLink, ShowSourceContent) \
	(somSelf,ev))
#ifndef SOMGD_ShowSourceContent
    #if (defined(_ShowSourceContent) || defined(__ShowSourceContent))
        #undef _ShowSourceContent
        #undef __ShowSourceContent
        #define SOMGD_ShowSourceContent 1
    #else
        #define _ShowSourceContent ODBaseLink_ShowSourceContent
    #endif /* _ShowSourceContent */
#endif /* SOMGD_ShowSourceContent */

/*
 * New Method: ShowLinkDestinationInfo
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseLink_ShowLinkDestinationInfo)(ODBaseLink *somSelf, Environment *ev,
		ODFacet* facet,
		ODLinkInfo* info,
		ODLinkInfoResult* infoResult);
#define somMD_ODBaseLink_ShowLinkDestinationInfo "::ODBaseLink::ShowLinkDestinationInfo"
#define ODBaseLink_ShowLinkDestinationInfo(somSelf,ev,facet,info,infoResult) \
    (SOM_Resolve(somSelf, ODBaseLink, ShowLinkDestinationInfo) \
	(somSelf,ev,facet,info,infoResult))
#ifndef SOMGD_ShowLinkDestinationInfo
    #if (defined(_ShowLinkDestinationInfo) || defined(__ShowLinkDestinationInfo))
        #undef _ShowLinkDestinationInfo
        #undef __ShowLinkDestinationInfo
        #define SOMGD_ShowLinkDestinationInfo 1
    #else
        #define _ShowLinkDestinationInfo ODBaseLink_ShowLinkDestinationInfo
    #endif /* _ShowLinkDestinationInfo */
#endif /* SOMGD_ShowLinkDestinationInfo */

/*
 * New Method: GetLinkSource
 */
typedef ODLinkSource*   (SOMLINK * somTD_ODBaseLink_GetLinkSource)(ODBaseLink *somSelf, Environment *ev);
#define somMD_ODBaseLink_GetLinkSource "::ODBaseLink::GetLinkSource"
#define ODBaseLink_GetLinkSource(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseLink, GetLinkSource) \
	(somSelf,ev))
#ifndef SOMGD_GetLinkSource
    #if (defined(_GetLinkSource) || defined(__GetLinkSource))
        #undef _GetLinkSource
        #undef __GetLinkSource
        #define SOMGD_GetLinkSource 1
    #else
        #define _GetLinkSource ODBaseLink_GetLinkSource
    #endif /* _GetLinkSource */
#endif /* SOMGD_GetLinkSource */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODBaseLink_InitPersistentObject ODPersistentObject_InitPersistentObject
#define ODBaseLink_InitPersistentObjectFromStorage ODPersistentObject_InitPersistentObjectFromStorage
#define ODBaseLink_ReleaseAll ODPersistentObject_ReleaseAll
#define ODBaseLink_Externalize ODPersistentObject_Externalize
#define ODBaseLink_GetStorageUnit ODPersistentObject_GetStorageUnit
#define ODBaseLink_GetID ODPersistentObject_GetID
#define ODBaseLink_CloneInto ODPersistentObject_CloneInto
#define ODBaseLink_InitRefCntObject ODRefCntObject_InitRefCntObject
#define ODBaseLink_IncrementRefCount ODRefCntObject_IncrementRefCount
#define ODBaseLink_Release ODRefCntObject_Release
#define ODBaseLink_GetRefCount ODRefCntObject_GetRefCount
#define ODBaseLink_InitObject ODObject_InitObject
#define ODBaseLink_IsInitialized ODObject_IsInitialized
#define ODBaseLink_HasExtension ODObject_HasExtension
#define ODBaseLink_GetExtension ODObject_GetExtension
#define ODBaseLink_ReleaseExtension ODObject_ReleaseExtension
#define ODBaseLink_Purge ODObject_Purge
#define ODBaseLink_IsEqualTo ODObject_IsEqualTo
#define ODBaseLink_SubClassResponsibility ODObject_SubClassResponsibility
#define ODBaseLink_somDefaultInit SOMObject_somDefaultInit
#define ODBaseLink_somDestruct SOMObject_somDestruct
#define ODBaseLink_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODBaseLink_somDefaultAssign SOMObject_somDefaultAssign
#define ODBaseLink_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODBaseLink_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODBaseLink_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODBaseLink_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODBaseLink_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODBaseLink_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODBaseLink_somInit SOMObject_somInit
#define ODBaseLink_somFree SOMObject_somFree
#define ODBaseLink_somUninit SOMObject_somUninit
#define ODBaseLink_somGetClass SOMObject_somGetClass
#define ODBaseLink_somGetClassName SOMObject_somGetClassName
#define ODBaseLink_somGetSize SOMObject_somGetSize
#define ODBaseLink_somIsA SOMObject_somIsA
#define ODBaseLink_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODBaseLink_somRespondsTo SOMObject_somRespondsTo
#define ODBaseLink_somDispatch SOMObject_somDispatch
#define ODBaseLink_somClassDispatch SOMObject_somClassDispatch
#define ODBaseLink_somCastObj SOMObject_somCastObj
#define ODBaseLink_somResetObj SOMObject_somResetObj
#define ODBaseLink_somDispatchV SOMObject_somDispatchV
#define ODBaseLink_somDispatchL SOMObject_somDispatchL
#define ODBaseLink_somDispatchA SOMObject_somDispatchA
#define ODBaseLink_somDispatchD SOMObject_somDispatchD
#define ODBaseLink_somPrintSelf SOMObject_somPrintSelf
#define ODBaseLink_somDumpSelf SOMObject_somDumpSelf
#define ODBaseLink_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODBaseLink_h */
