home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / CList.hxx < prev    next >
Text File  |  1996-05-31  |  1KB  |  56 lines

  1. /*---------------------------------------------------------------------------
  2.  *
  3.  *      (c)     Westmount Technology    1994
  4.  *
  5.  *      File:        @(#)CList.hxx    1.1
  6.  *      Author:        peku
  7.  *      Description:    Compact Lists
  8.  *---------------------------------------------------------------------------
  9.  SccsId = @(#)CList.hxx    1.1   18 Oct 1994 Copyright 1994 Westmount Technology */
  10.  
  11. #ifndef CLIST_HXX
  12. #define CLIST_HXX
  13.  
  14. #ifndef FLEXARRAY_HXX
  15. #include "FlexArray.hxx"
  16. #endif
  17.  
  18. class GenCList: public GenFlexArray {
  19. public:
  20.     GenCList(unsigned size = DEFAULT_ARRAY_SIZE, int grow_factor = +1);
  21.     GenCList(const GenCList&);
  22.     GenCList& operator=(const GenCList&);
  23.  
  24.     void** as_void_array()
  25.         { if ( idx < sz || grow (sz+1) ) v[idx] = 0; return v; }
  26.  
  27.     void reset();
  28.     void reset(unsigned new_size);
  29.  
  30.     GenCList& append(void*);
  31.     GenCList& append(const GenCList&);
  32.     GenCList& insert_at(int i, void*);
  33.     GenCList& insert_at(int i, const GenCList&);
  34.  
  35.     GenCList& remove_last();
  36.     GenCList& remove_at(int i);
  37.     GenCList& remove(int i, int j);
  38.     GenCList& remove(void*);
  39.  
  40.     unsigned size() const { return idx; }
  41.  
  42.     void*& operator[](int i) const { return v[i]; }
  43.  
  44.     void operator&= (void* elem)        { append(elem); }
  45.     void operator&= (const GenCList& lst)    { append(lst); }
  46.  
  47. protected:
  48.     int idx;
  49.  
  50. private:
  51.     int        grow_factor;
  52.     int        grow(unsigned min_size);
  53. };
  54.  
  55. #endif /* CLIST_HXX */
  56.