home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / chptrarr.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  2KB  |  92 lines

  1. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  2. //***************************************************************************
  3. //
  4. //  Copyright (c) 1997-1999 Microsoft Corporation
  5. //
  6. //  chptrarr.h
  7. //
  8. //  Purpose: Non-MFC CPtrArray class definition
  9. //
  10. //***************************************************************************
  11.  
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif
  15.  
  16. #ifndef __CHPTRARRAY__
  17. #define __CHPTRARRAY__
  18.  
  19. #include <windows.h>
  20. #include <limits.h>
  21. #include <assert.h>
  22. #include <tchar.h>
  23. #include <polarity.h>
  24. #include <ProvExce.h>
  25.  
  26. class POLARITY CHPtrArray
  27. {
  28.     public :
  29.  
  30.         // Construction/destruction
  31.         //=========================
  32.  
  33.     CHPtrArray() ;
  34.  
  35. // Attributes
  36.     int GetSize() const ;
  37.     int GetUpperBound() const ;
  38.     void SetSize(int nNewSize, int nGrowBy = -1) throw ( CHeap_Exception ) ;
  39.  
  40. // Operations
  41.     // Clean up
  42.     void FreeExtra() throw ( CHeap_Exception ) ;
  43.     void RemoveAll() ;
  44.  
  45.     // Accessing elements
  46.     void* GetAt(int nIndex) const ;
  47.     void SetAt(int nIndex, void* newElement) ;
  48.     void*& ElementAt(int nIndex) ;
  49.  
  50.     // Direct Access to the element data (may return NULL)
  51.     const void** GetData() const ;
  52.     void** GetData() ;
  53.  
  54.     // Potentially growing the array
  55.     void SetAtGrow(int nIndex, void* newElement) throw ( CHeap_Exception ) ;
  56.     int Add(void* newElement) throw ( CHeap_Exception ) ;
  57.     int Append(const CHPtrArray& src) throw ( CHeap_Exception ) ;
  58.     void Copy(const CHPtrArray& src) throw ( CHeap_Exception ) ;
  59.  
  60.     // overloaded operator helpers
  61.     void* operator[](int nIndex) const ;
  62.     void*& operator[](int nIndex) ;
  63.  
  64.     // Operations that move elements around
  65.     void InsertAt(int nIndex, void* newElement, int nCount = 1) throw ( CHeap_Exception ) ;
  66.     void RemoveAt(int nIndex, int nCount = 1) ;
  67.     void InsertAt(int nStartIndex, CHPtrArray* pNewArray) throw ( CHeap_Exception ) ;
  68.  
  69. // Implementation
  70. protected:
  71.     void** m_pData ;   // the actual array of data
  72.     int m_nSize ;     // # of elements (upperBound - 1)
  73.     int m_nMaxSize ;  // max allocated
  74.     int m_nGrowBy ;   // grow amount
  75.  
  76. public:
  77.     ~CHPtrArray() ;
  78. #ifdef _DEBUG
  79. //    void Dump(CDumpContext&) const ;
  80.     void AssertValid() const ;
  81. #endif
  82.  
  83. protected:
  84.     // local typedefs for class templates
  85.     typedef void* BASE_TYPE ;
  86.     typedef void* BASE_ARG_TYPE ;
  87. } ;
  88.  
  89.  
  90. #endif
  91. #pragma option pop /*P_O_Pop*/
  92.