Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

skAlist.h

00001 /*
00002   Copyright 1996-2001
00003   Simon Whiteside
00004 
00005 * $Id: skAlist_h-source.html,v 1.17 2001/07/05 09:56:08 sdw Exp $
00006 */
00007 
00008 #ifndef skALIST_H
00009 #define skALIST_H
00010 
00011 
00012 #include "skGeneral.h"
00013   
00014 class  skAList;  
00015 
00019 class  skAListIterator 
00020 {       
00021  public:
00025   void  reset();
00029   virtual ~skAListIterator();
00030  protected:
00034   skAListIterator(const skAList&);
00038   skAListIterator& operator=(const skAListIterator&);
00042   void * operator()();
00043  private:
00047   USize m_Current;
00051   const skAList& m_AList;
00052 };    
00057 class  skAList 
00058 {   
00059  public:
00063   skAList();
00069   skAList(USize initial_size,USize growth_increment);
00073   virtual ~skAList();       
00077   void clearAndDestroy();
00081   void clear();
00085   USize entries() const;
00089   void deleteElt(USize  n);
00093   void test() const;
00097   void growTo(USize size);
00098  protected:
00102   void insert(void *,USize index);
00106   void prepend(void *);
00110   void append(void *);
00114   void remove(void *);
00118   void removeAndDestroy(void *); 
00122   void * operator[](USize  n) const;
00126   int index(const void *) const;
00130   bool contains(const void *) const;
00134   virtual void deleteItem(void *)=0;
00135   friend class skAListIterator;
00139   int findElt(const void * i) const;
00143   void grow();
00147   void ** m_Array;
00151   USize m_ArraySize;
00155   USize m_Entries;
00159   USize m_GrowthIncrement;      
00160 
00161  private:
00165   static const USize    DEFAULT_SIZE;
00169   static const USize    DEFAULT_GROWTH_INCREMENT;
00173   skAList(const skAList&);
00177   skAList& operator=(const skAList&);
00178 };    
00182 template <class T> class skTAList : public skAList
00183 {
00184  public:
00188   skTAList();
00192   skTAList(const skTAList<T>&);
00196   skTAList(USize initial_size,USize growth_increment);
00200   virtual ~skTAList();
00204   void insert(T *,USize index);
00208   void prepend(T *);
00212   void append(T *);
00216   void remove(T *);
00220   void removeAndDestroy(T *);
00224   T * operator[](USize  n) const;
00228   int index(const T *) const;
00232   bool contains(const T *) const;
00236   skTAList<T>& operator=(const skTAList<T>& l);
00237  protected:
00241   void deleteItem(void *);
00242 };
00246 template <class T> class skTAListIterator : public skAListIterator
00247 {       
00248  public:
00252   skTAListIterator(const skTAList<T>&);
00256   T * operator()();
00257 };    
00258 
00259 #include "skAlist.inl"
00260 
00261 #endif
00262 
00263 
00264 
00265 

Generated at Thu Jul 5 10:55:41 2001 for Simkin by doxygen1.2.1 written by Dimitri van Heesch, © 1997-2000