class MainObjectArrayPtr { protected: class MainObjectArray { friend MainObjectArrayPtr; protected: QuantumFile *m_QuantumFile; SVector m_BlockPtr; ObjectNumber m_MainObjectCount; ArrayIndex m_MainObjectBlockCount; ArrayIndex m_CurrentLowestFreeObject; int m_ReferenceCount; public: MainObjectArray(); MainObjectArray(QuantumFile *p_QuantumFile); ~MainObjectArray(); MainObjectEntry Get(ArrayIndex p_Index); void Set(ArrayIndex p_Index, MainObjectEntry p_Entry); ObjectNumber FindAvailableObject(); ObjectNumber GetMainObjectCount() {return m_MainObjectCount;} ModifiableElement GetModifiableElement(ArrayIndex p_MainObjectNumber, ArrayIndex p_ElementIndex); AccessVector GetAccessVectorUlong( ArrayIndex p_MainObjectNumber, ArrayIndex p_ElementIndex); void SetModified(ArrayIndex p_MainObjectNumber, ArrayIndex p_ElementIndex); int PutElement(ObjectNumber p_MainObjectNumber, ArrayIndex p_ElementIndex, ModifiableElement p_Element); void CreateMainObject(ModifiableElement p_ObjectName, ObjectNumber p_ObjectNumber, ArrayIndex p_ElementCount=100, ArrayIndex p_MaxElementCount=UINT_MAX-1); ArrayIndex GetMainObjectElementCount(ArrayIndex p_MainObjectNumber); ArrayIndex GetMainObjectMaxElementCount(ArrayIndex p_MainObjectNumber); ObjectNumber FindObjectByName(ModifiableElement p_ObjectName); ArrayIndex GrowMainObject(ObjectNumber p_ObjectNumber, ArrayIndex p_NewElementCount); }; MainObjectArray *m_MOA; public: MainObjectArrayPtr(); MainObjectArrayPtr(const MainObjectArrayPtr& p_MOAP); MainObjectArrayPtr(QuantumFile *p_QuantumFile); MainObjectArray *operator->(); MainObjectArrayPtr& operator=(const MainObjectArrayPtr& p_MOAP); ~MainObjectArrayPtr(); }; // end of MainObjectArray