/*TITLE Persistent array class declarations */

/****keyword-flag*** "%v %f %n" */
/* "3 28-Mar-98,21:21:24 PERSIST.H" */

#include "blocki.h"

const ArrayIndex UlongEntriesPerBlock = MaxItemSize / sizeof(Ulong) - 1;

class PersistentArrayUlong;

class PersistentArrayUlongRef
{
private:
	PersistentArrayUlong &m_PAU;
	Ulong m_Index;

private: //prevent compiler warnings
	PersistentArrayUlongRef& operator=(const PersistentArrayUlongRef&);

public:
	PersistentArrayUlongRef(PersistentArrayUlong &p_PAU, Ulong p_Index);
	PersistentArrayUlongRef& operator=(Ulong p_Element);
	operator Ulong();
};

class PersistentArrayUlong
{
protected:
	ModifiableElement m_ArrayName;
	QuantumFile *m_QF;
	MainObjectArrayPtr m_MOA;
	ObjectNumber m_ObjectNumber;
public:
	PersistentArrayUlong();
	~PersistentArrayUlong();
	PersistentArrayUlong(QuantumFile *p_QF, ModifiableElement p_ArrayName);
	void StoreElement(Ulong p_Index, Ulong p_Element);
	Ulong GetElement(Ulong p_Index);
	PersistentArrayUlongRef operator[](Ulong p_Index);
};

