#ifdef __PRIVATE__
//#
//#	File:		LinkSpec.idl			** DO NOT REMERGE WITH APPLE CODE **
//#
//#	Contains:	Class definition for ODLinkSpec
//#
//#	Written by:	Craig Carper
//#	Ported by:	Chris Andrew
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#	          	c 1995 by Novell, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#	          	c 1995 by Novell, Inc., all rights reserved.
#endif

#ifndef _LINKSPEC_
#define _LINKSPEC_

#ifndef _LINKSPCB_
#include "LinkSpcB.idl"
#endif

//==============================================================================
// Theory of Operation
//==============================================================================

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

interface  ODLinkSpec;

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

interface  ODStorageUnit;
interface  ODDraft;
interface  ODPart;

//==============================================================================
// Implementation Types
//==============================================================================
#ifdef __PRIVATE__
struct ProcessSerialNumber
{
	unsigned long highLongOfPSN;
	unsigned long lowLongOfPSN;
};
typedef somToken LPVOID;
typedef somToken FILETIME;
#endif

//==============================================================================
// ODLinkSpec
//==============================================================================

interface ODLinkSpec :  ODBaseLinkSpec
{
#ifdef __PRIVATE__

	void UseItemName( in char *pszItemName );

	void InitLinkSpec( in ODPart part, in ODPtr	data, in ODULong size);

	ProcessSerialNumber GetProcessID();

	FILETIME GetProcessLaunchDate();

	ODPart GetPart();
		
	ODULong	GetDataSize();

	ODPtr GetDataPtr();

	char *WriteLinkSpecString();

	void ReadLinkSpecString( in char *pHexDigit );

	void *GetMoniker();

	void VoidLinkSpec();

	ODBoolean FromThisDraft();

#endif

	#ifdef __SOMIDL__
	implementation
	{
		override:
			somInit,
			somUninit,
			WriteLinkSpec,
			ReadLinkSpec;
			
		releaseorder:
			#ifdef __PRIVATE__
				UseItemName,
				InitLinkSpec,
				GetProcessID,
				GetProcessLaunchDate,
				GetPart,
				GetDataSize,
				GetDataPtr,
				WriteLinkSpecString,
				ReadLinkSpecString,
				GetMoniker,
				VoidLinkSpec,
				FromThisDraft;
			#else
				reserved1,
				reserved2,
				reserved3,
				reserved4,
				reserved5,
				reserved6,
				reserved7,
				reserved8,
				reserved9,
				reserved10,
				reserved11,
				reserved12;
			#endif
	
			majorversion = 1; minorversion = 0;
						
			#ifdef __PRIVATE__
				ProcessSerialNumber fProcessID;
				FILETIME 			fProcessLaunchDate;		
				ODPart				fPart;	
				ODULong 			fDataSize;
				ODPtr 				fData;
				LPVOID				fpmkFull;
			#endif
	};
	#endif //# __SOMIDL__
};
#endif //# _LINKSPEC_

