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

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