You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.0 KiB
79 lines
2.0 KiB
//---------------------------------------------------------------------------
|
|
// 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__
|