#ifdef __PRIVATE__
//#	File:		StorageB.idl
//#
//#	Contains:	Definition of ODBaseStorageSystem.
//#
//#	Written by:	Vincent Lo
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <3>	 8/11/94	VL		1180299: Added CreateTypeList and
//#									CreatePlatformTypeList.
//#		 <2>	  8/5/94	VL		1171603: Changed ODBaseSession to
//#									ODSession.
//#		 <1>	  8/3/94	VL		first checked in
//#		 <2>	 6/28/94	VL		Removed heap in InitStorageSystem.
//#		 <1>	 6/23/94	VL		first checked in
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _STORAGEB_
#define _STORAGEB_

#ifndef _ODOBJECT_
#include "ODObject.idl"
#endif

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

interface   ODBaseStorageSystem;

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

interface   ODSession;
interface   ODContainer;
interface   ODTypeList;
interface   ODPlatformTypeList;

//==============================================================================
// ODBaseStorageSystem
//==============================================================================

interface ODBaseStorageSystem :   ODObject   
{
	void InitStorageSystem(in ODSession session);
	
	ODSession GetSession();
	
	ODContainer GetContainer(in ODContainerType containerType,
								in ODContainerID id);
	
	ODContainer CreateContainer(in ODContainerType containerType,
									in ODContainerID id);
					  
	void NeedSpace(in ODSize memSize,
					in ODBoolean doPurge);
					
	ODTypeList	CreateTypeList(in ODTypeList typeList);
	
	ODPlatformTypeList	CreatePlatformTypeList(in ODPlatformTypeList typeList);

#ifdef __PRIVATE__

	void GrowHeap(in ODSize memSize);

	ODBaseStorageSystem  ReleaseContainer(in ODContainer container);

#endif
	
#ifdef __SOMIDL__
	implementation
	{
	  	functionprefix = ODBaseStorageSystem;
		
		override:
			somInit,
			somUninit,
			Purge;
		releaseorder:
			InitStorageSystem,
			GetSession,
			GetContainer,
			CreateContainer,
			NeedSpace,
			CreateTypeList,
			CreatePlatformTypeList,
		#ifdef __PRIVATE__
			GrowHeap,
			ReleaseContainer;
		#else
			reserved1,
			reserved2;
		#endif
	};
#endif
};


#endif  // _STORAGEB_
