#ifdef __PRIVATE__
//#	File:		Storage.idl
//#
//#	Contains:	Definition of ODStorageSystem.
//#
//#	Written by:	Vincent Lo
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <6>	 9/23/94	VL		1184272: ContainerID is now a sequence of
//#									octets. Also, got rid of unnecessary
//#									dependency.
//#		 <5>	  9/6/94	CC		Remove erroneous override of reserved1 and
//#									reserved2.
//#		 <4>	 8/11/94	VL		1180299: Added CreateTypeList and
//#									CreatePlatformTypeList.
//#		 <3>	  8/5/94	VL		Changed ODBaseSession to ODSession.
//#		 <2>	  8/5/94	VL		1171603: Removed Get/SetCMSession.
//#		 <1>	  8/3/94	VL		first checked in
//#		 <6>	 6/28/94	VL		Used ODMemoryHeapID.
//#		 <5>	 6/23/94	VL		Added StorageB.idl.
//#		 <4>	 6/21/94	VL		Added functionprefix.
//#		 <3>	 6/20/94	jpa		Fixed syntax error in passthru.
//#		 <2>	 6/14/94	CC		Changed ODHeap to ODMemoryHeap.
//#		 <1>	  6/8/94	VL		first checked in
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _STORAGE_
#define _STORAGE_

#ifndef _ODSTORB_
#include "ODStorB.idl"
#endif

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

interface   ODStorageSystem;

//==============================================================================
// Classes used in this interface
//==============================================================================

interface   ODSession;
interface   ODContainer;

//==============================================================================
// Implementation Types
//==============================================================================

#ifdef __PRIVATE__
typedef somToken ContainerList;
typedef somToken CMSession;
typedef somToken ODMemoryHeapID;
#endif


//==============================================================================
// ODStorageSystem
//==============================================================================

interface ODStorageSystem : ODBaseStorageSystem   
{
#ifdef __PRIVATE__
	
	ODMemoryHeapID GetHeap();
	
#endif
	
#ifdef __SOMIDL__
	implementation
	{
	  	functionprefix = ODStorageSystem;
		
		override:
		#ifdef __PRIVATE__
			GrowHeap,
			ReleaseContainer,
		#endif
			somInit,
			somUninit,
			Purge,
			InitStorageSystem,
			GetSession,
			GetContainer,
			CreateContainer,
			NeedSpace,
			CreateTypeList,
			CreatePlatformTypeList;
		
		releaseorder:
			GetHeap;
		#ifdef __PRIVATE__
			passthru C_xh = ""
							"#include <ODMemory.h>"
							"";
			passthru C_xih = ""
							"class ContainerList;"
							"";
			ODSession		fSession;
			ODMemoryHeapID	fHeap;
			ContainerList*	fContainers;
		#endif
    
  };
#endif
};


#endif  // _STORAGE_
