//Copyright (c) 1998 - 1999 Microsoft Corporation /********************************************************************************************* * * * Module Name: * * Ptrarray.h * * Abstract: * This is file has declaration of CPtrArray class borrowed from MFC * * Author: * * * Revision: * * ************************************************************************************************/ #ifndef PTRARRAY_H_ #define PTRARRAY_H_ 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(); protected: // local typedefs for class templates // typedef void* BASE_TYPE; // typedef void* BASE_ARG_TYPE; }; #endif