home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 …ember: Reference Library / Dev.CD Dec 00 RL Disk 1.toast / pc / technical documentation / develop / develop issue 26 / develop issue 26 code / truffles - display mgr. / sprocket / interfaces / dynamicarray.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-02  |  2.0 KB  |  89 lines

  1. /*
  2.     File:        DynamicArray.h
  3.  
  4.     Contains:    A handle-based dynamic array class
  5.                 
  6.     Written by: Dave Falkenburg
  7.     
  8.     Copyright:    © 1994-95 by Dave Falkenburg, all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.      
  12.          <1>      1/3/95    DRF        First checked in.
  13.  */
  14.  
  15. #ifndef        _DYNAMICARRAY_
  16. #define        _DYNAMICARRAY_
  17.  
  18. #ifndef        __TYPES__
  19. #include    <Types.h>
  20. #endif
  21.  
  22. typedef    void            ArrayElement, *ArrayElementPtr;
  23. typedef    unsigned long    ArrayElementCount;
  24. typedef    unsigned long    ArrayElementIndex;
  25.  
  26. class    TDynamicArray
  27.     {
  28. protected:
  29.     ArrayElementCount    fElementCount;
  30.     ArrayElementPtr **    fStorage;
  31.  
  32. public:
  33.                         TDynamicArray();
  34.     virtual                ~TDynamicArray();
  35.  
  36.  
  37.     //    insertion & deletion
  38.  
  39.     OSErr                InsertFirst(ArrayElementPtr elementToInsert);
  40.     OSErr                InsertLast(ArrayElementPtr elementToInsert);
  41.     OSErr                Insert(ArrayElementPtr elementToInsert, ArrayElementIndex beforeElement);
  42.  
  43.     OSErr                DeleteFirst();
  44.     OSErr                DeleteLast();
  45.     OSErr                Delete(ArrayElementPtr elementToDelete);
  46.     OSErr                DeleteElementGivenIndex(ArrayElementIndex whichElement);
  47.  
  48.     OSErr                MoveToFront(ArrayElementPtr elementToMove);
  49.  
  50.     //    element accessors
  51.  
  52.     ArrayElementPtr        First()
  53.         {
  54.         return (fElementCount ? (*fStorage)[0] : NULL);
  55.         };
  56.         
  57.     ArrayElementPtr        Last()
  58.         {
  59.         return (fElementCount ? (*fStorage)[fElementCount-1] : NULL);
  60.         };
  61.  
  62.     ArrayElementPtr        GetElementPtr(ArrayElementIndex whichElement)
  63.         {
  64.         return (*fStorage)[whichElement];
  65.         };
  66.         
  67.     void                SetElementPtr(ArrayElementIndex whichElement, ArrayElementPtr element)
  68.         {
  69.         (*fStorage)[whichElement] = element;
  70.         }
  71.  
  72.     ArrayElementCount    GetElementCount()
  73.         {
  74.         return fElementCount;
  75.         };
  76.  
  77.  
  78.     //    iterators
  79.     
  80.     typedef void        (*EachArrayElementProc)(ArrayElementPtr element, void * param);
  81.     typedef Boolean        (*EachArrayElementTestProc)(ArrayElementPtr element, void * param);
  82.  
  83.     void                ForEachElement(EachArrayElementProc proc, void * param);
  84.     ArrayElementPtr        FirstElementThat(EachArrayElementTestProc proc, void * param);
  85.     ArrayElementPtr        LastElementThat(EachArrayElementTestProc proc, void * param);
  86.     };
  87.  
  88. #endif
  89.