//--------------------------------------------------------------------------- // ARRAY_P.h : CPtrArray header file // // Copyright (c) 1996 Microsoft Corporation, All Rights Reserved // Developed by Sheridan Software Systems, Inc. //--------------------------------------------------------------------------- #ifndef __CPTRARRAY__ #define __CPTRARRAY__ //////////////////////////////////////////////////////////////////////////// class CPtrArray { public: // Construction CPtrArray(); // Attributes int GetSize() const; int GetUpperBound() const; void SetSize(int nNewSize, int nGrowBy = -1); // Operations // Clean up void FreeExtra(); void RemoveAll(); // Accessing elements void* GetAt(int nIndex) const; void SetAt(int nIndex, void* newElement); void*& ElementAt(int nIndex); // Direct Access to the element data (may return NULL) const void** GetData() const; void** GetData(); // Potentially growing the array void SetAtGrow(int nIndex, void* newElement); int Add(void* newElement); int Append(const CPtrArray& src); void Copy(const CPtrArray& src); // overloaded operator helpers void* operator[](int nIndex) const; void*& operator[](int nIndex); // Operations that move elements around void InsertAt(int nIndex, void* newElement, int nCount = 1); void RemoveAt(int nIndex, int nCount = 1); void InsertAt(int nStartIndex, CPtrArray* pNewArray); // Implementation protected: void** m_pData; // the actual array of data int m_nSize; // # of elements (upperBound - 1) int m_nMaxSize; // max allocated int m_nGrowBy; // grow amount public: ~CPtrArray(); //#ifdef _DEBUG // void Dump(CDumpContext&) const; // void AssertValid() const; //#endif protected: // local typedefs for class templates // typedef void* BASE_TYPE; // typedef void* BASE_ARG_TYPE; }; //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// #endif //__CPTRARRAY__