/* @(#)Z 1.13 com/src/storage/idl/LinkB.idl, oddataxfer, od96nt, odnt9712d 97/03/21 16:48:48 (96/10/28 13:40:44) */


#ifndef _LINKB_
#define _LINKB_

#ifndef _PSTOBJ_
#include "PstObj.idl"
#endif

//==============================================================================
// Classes defined in this interface
//==============================================================================

interface  ODBaseLink;

//==============================================================================
// Classes used by this interface
//==============================================================================

interface       ODLinkSource;
interface       ODStorageUnit;
interface       ODPart;
interface       ODDraft;
interface       ODFacet;


//==============================================================================
// ODLink
//==============================================================================

interface ODBaseLink :  ODPersistentObject
{
        ODBoolean Lock(in ODULong wait, out ODLinkKey key);

        void Unlock(in ODLinkKey key);

        ODStorageUnit GetContentStorageUnit(in ODLinkKey key);

        void RegisterDependent(in ODPart clientPart, in ODUpdateID id);

        void UnregisterDependent(in ODPart clientPart);

        ODUpdateID GetUpdateID();

        ODTime GetChangeTime();

        void ShowSourceContent();

#if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_) || defined (_PLATFORM_OS2_)

        ODBoolean ShowLinkDestinationInfo(
                                        in ODFacet facet,
                                        in ODLinkInfo info,
                                        in ODBoolean changesAllowed,
                                        out ODLinkInfoResult infoResult);

#endif 

#ifdef _PLATFORM_OS2_
	ODLinkSource GetLinkSource();
#endif


#ifdef __SOMIDL__
#if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
        implementation
        {
                majorversion = 1; minorversion = 0;

                functionprefix = ODBaseLink;

                override:
                        somUninit,
                        Externalize,
                        ReleaseAll,
                        CloneInto;

                releaseorder:
                        Lock,
                        Unlock,
                        GetContentStorageUnit,
                        RegisterDependent,
                        UnregisterDependent,
                        GetUpdateID,
                        GetChangeTime,
                        ShowSourceContent,
                #ifdef _PLATFORM_OS2_
                        GetLinkSource,
                #endif
                #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_) || defined (_PLATFORM_OS2_)
                        ShowLinkDestinationInfo,
                #endif
                        reserved1,
                        reserved2,
                        reserved3,
                        reserved4,
                        reserved5,
                        reserved6,
                        reserved7;

        };
#endif 
#endif 
};

#endif 
