/* @(#)Z 1.4 com/src/storage/idl/SUView.idl, odstorage, od96nt, odnt9712d 97/03/21 16:48:53 (96/10/29 09:33:11) */


#ifndef _SUVIEW_
#define _SUVIEW_

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

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

interface   ODStorageUnitView;

//==============================================================================
// Classes used by this interface
//==============================================================================
interface	ODStorageUnit;
interface   ODStorageUnitCursor;
interface	ODDraft;
interface	ODStorageUnitRefIterator;
interface	ODPart;

//==============================================================================
// ODStorageUnitView
//==============================================================================

interface ODStorageUnitView :  ODObject
{

	ODStorageUnit  GetStorageUnit();

	ODStorageUnitCursor  GetCursor();

	ODStorageUnitView   Externalize();  

	ODStorageUnitView   Internalize();  

	ODID GetID();      

	ODStorageUnitName GetName();    

	void SetName(in ODStorageUnitName name);

	ODStorageUnitView  AddProperty(in ODPropertyName propertyName);      

	ODStorageUnitView  AddValue(in ODValueType type);

	ODStorageUnitView  Remove();

	void CloneInto(in ODDraftKey key,
					in ODStorageUnit destStorageUnit, 
					in ODID scopeID);

	ODPropertyName  GetProperty();

	ODValueType  GetType();

	void      SetType(in ODValueType valueType);

	void      SetOffset(in ODULong offset);

	ODULong    GetOffset();

	ODULong    GetValue(in ODULong length, out ODByteArray value);

	void      SetValue(in ODByteArray value);

	void      InsertValue(in ODByteArray value);

	void      DeleteValue(in ODULong length);

	ODULong    GetSize();

	ODBoolean    IsValidStorageUnitRef(in ODStorageUnitRef ref);

	void GetStrongStorageUnitRef(in ODStorageUnitID embeddedSUID, out ODStorageUnitRef strongRef);

	void GetWeakStorageUnitRef(in ODStorageUnitID embeddedSUID, out ODStorageUnitRef weakRef);

	ODBoolean      IsStrongStorageUnitRef(in ODStorageUnitRef ref);

	ODBoolean      IsWeakStorageUnitRef(in ODStorageUnitRef ref);

	ODStorageUnitView   RemoveStorageUnitRef(in ODStorageUnitRef aRef);

	ODStorageUnitID  GetIDFromStorageUnitRef(in ODStorageUnitRef aRef);

	ODStorageUnitRefIterator  CreateStorageUnitRefIterator();

	ODULong  GetGenerationNumber();

	ODULong  IncrementGenerationNumber();

	ODBoolean  IsPromiseValue();

	void    SetPromiseValue(in ODValueType valueType,
							in ODULong offset,
							in ODByteArray value,
							in ODPart sourcePart);

	ODULong  GetPromiseValue(in ODValueType valueType,
								in ODULong offset,
								in ODULong length,
								out ODByteArray value,
								out ODPart sourcePart);


#ifdef __SOMIDL__
	implementation
	{
		majorversion = 1; minorversion = 0;
	  	functionprefix = ODStorageUnitView;
		override:
			somUninit,
			Purge;
		releaseorder:
			reserved1,
			reserved2,
			reserved3,
			GetStorageUnit,
			GetCursor,
			Externalize,
			Internalize,
			GetID,
			GetName,
			SetName,
			AddProperty,
			AddValue,
			Remove,
			CloneInto,
			GetProperty,
			GetType,
			SetType,
			SetOffset,
			GetOffset,
			GetValue,
			SetValue,
			InsertValue,
			DeleteValue,
			GetSize,
			IsValidStorageUnitRef,
			GetStrongStorageUnitRef,
			GetWeakStorageUnitRef,
			IsStrongStorageUnitRef,
			IsWeakStorageUnitRef,
			RemoveStorageUnitRef,
			GetIDFromStorageUnitRef,
			CreateStorageUnitRefIterator,
			GetGenerationNumber,
			IncrementGenerationNumber,
			IsPromiseValue,
			SetPromiseValue,
			GetPromiseValue;


  };

#endif
};

#endif  // _SUVIEW_

