windows-nt/Source/XPSP1/NT/termsrv/admtools/tscc/cfgcomp/ptrarray.h

80 lines
1.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//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