/* @(#)Z 1.4 com/src/storage/idl/Document.idl, odstorage, od96nt, odnt9712d 97/03/21 16:48:46 (96/10/29 09:32:18) */
//#====START_GENERATED_PROLOG======================================
//#
//#
//#   COMPONENT_NAME: odstorage
//#
//#   CLASSES: none
//#
//#   ORIGINS: 82,27
//#
//#
//#   (C) COPYRIGHT International Business Machines Corp. 1995,1996
//#   All Rights Reserved
//#   Licensed Materials - Property of IBM
//#   US Government Users Restricted Rights - Use, duplication or
//#   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//#   	
//#   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
//#   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//#   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
//#   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
//#   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
//#   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
//#   OR PERFORMANCE OF THIS SOFTWARE.
//#
//#====END_GENERATED_PROLOG========================================
//#

#ifdef __PRIVATE__
//#
//#	File:		Document.idl
//#
//#	Contains:	Class definition for ODDocument
//#
//#	Owned by:	Vincent Lo
//#
//#	Copyright:	(r) 1994-1995 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <9>	 8/16/95	VL		1275241: Cleaned up IDL file.
//#		 <8>	  8/3/95	RR		#1257260: Collapse B classes. Remove
//#									somInit methods. Don't call IsInitialized
//#									or SubclassResponsibility
//#		 <7>	 5/25/95	VL		1251403: Multithreading naming support.
//#		 <6>	 5/17/95	VL		1249181: Made Init method private.
//#		 <5>	  9/6/94	VL		1184154: Removed Document Properties.
//#		 <4>	 7/11/94	VL		Added Exists.
//#		 <3>	  7/5/94	VL		Fixed in/out.
//#		 <2>	 6/21/94	VL		Added functionprefix.
//#		 <1>	  6/8/94	VL		first checked in
//#
//#	To Do:
//#
#else
//#	Copyright:	(r) 1993 - 1995 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _DOCUMENT_
#define _DOCUMENT_

#ifndef _REFCTOBJ_
#include "RefCtObj.idl"
#endif

//==============================================================================
// Classes defined in this interface
//==============================================================================
interface   ODDocument;

//==============================================================================
// Classes used by this interface
//==============================================================================
interface   ODContainer;
interface	ODDraft;
interface	ODStorageUnit;

//==============================================================================
// ODDocument
//==============================================================================

interface ODDocument :  ODRefCntObject 
{
	ODContainer  GetContainer();
	
	ODDocumentID GetID();
	  
	ODDocumentName GetName();
	  
	void SetName(in ODDocumentName name);
		
	ODDocument CollapseDrafts(in ODDraft from,
								in ODDraft to);
	
	ODDraft  AcquireDraft(in ODDraftPermissions perms, 
						in	ODDraftID id,
						in	ODDraft draft, 
						in	ODPositionCode posCode, 
						in	ODBoolean release);

	ODBoolean  Exists(in ODDraftID id,
						in	ODDraft draft, 
						in	ODPositionCode posCode);
	  
	ODDraft  AcquireBaseDraft( in ODDraftPermissions perms);
	
	ODDraft  CreateDraft(in ODDraft below,
						in ODBoolean releaseBelow);
	  
	void SaveToAPrevDraft(in ODDraft from,
						in ODDraft to);
	
	void SetBaseDraftFromForeignDraft(in ODDraft draft);
  
#ifdef __PRIVATE__

	void InitDocument(in ODContainer container,
						in  ODDocumentID id);

	ODDocument ReleaseDraft( in ODDraft draft);

#endif

#ifdef __SOMIDL__
  implementation
  {
	majorversion = 1; minorversion = 0;
  	functionprefix = ODDocument;
    override:
		somUninit,
		Acquire,
        Release;
    releaseorder:
        GetContainer,
        GetID,
        GetName,
        SetName,
        CollapseDrafts,
        AcquireDraft,
		Exists,
		AcquireBaseDraft,
        CreateDraft,
        SaveToAPrevDraft,
        SetBaseDraftFromForeignDraft,
#ifdef __PRIVATE__
        InitDocument,
        ReleaseDraft;
#else
		reserved1,
		reserved2;
#endif
  };
#endif
};

#endif  // _DOCUMENT_

