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


#ifndef _LINKSRCB_
#define _LINKSRCB_

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

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

interface  ODBaseLinkSource;

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

interface ODStorageUnit;
interface ODPart;
interface ODPartList;
interface ODLink;
interface ODDraft;
interface ODFacet;


//==============================================================================
// ODBaseLinkSource
//==============================================================================

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

        void Unlock(in ODLinkKey key);

        void Clear(in ODUpdateID id, in ODLinkKey key);

        ODStorageUnit GetContentStorageUnit(in ODLinkKey key);

        void ContentUpdated(in ODUpdateID id, in ODLinkKey key);

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

        ODBoolean ShowLinkSourceInfo(
                                        in ODFacet facet,
                                        in ODUpdateID change,
                                        in ODBoolean changesAllowed,
                                        out ODLinkInfoResult infoResult);

#endif 

        ODUpdateID GetUpdateID();
        ODTime GetChangeTime();
        ODBoolean IsAutoUpdate();

        void SetAutoUpdate(in ODBoolean automatic);
        void SetSourcePart(in ODStorageUnit sourcePartSU);


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

                functionprefix = ODBaseLinkSource;

                override:
                        somInit,
                        somUninit,
                        Externalize,
                        ReleaseAll,
                        CloneInto;

                releaseorder:
                        Lock,
                        Unlock,
                        Clear,
                        GetContentStorageUnit,
                        ContentUpdated,
                        GetUpdateID,
                        SetAutoUpdate,
                        IsAutoUpdate,
                        SetSourcePart,
                        GetChangeTime,
                        ShowLinkSourceInfo,
                        reserved1,
                        reserved2,
                        reserved3,
                        reserved4,
                        reserved5,
                        reserved6,
                        reserved7,
                        reserved8,
                        reserved9,
                        reserved10,
                        reserved11;

        };
#endif 
#endif 
};

#endif 
