Main Page   Class Hierarchy   Compound List   File List   Compound Members  

skAlist.h

00001 /*
00002   Copyright 1996-2000 Simon Whiteside
00003 
00004 * $Id: skAlist.h-source.html,v 1.1 2001/03/05 16:22:45 sdw Exp $
00005 */
00006 
00007 #ifndef skALIST_H
00008 #define skALIST_H
00009 
00010 
00011 #include "skGeneral.h"
00012   
00013 class  skAList;  
00014 
00018 class  skAListIterator 
00019 {       
00020  public:
00024   void  reset();
00028   virtual ~skAListIterator();
00029  protected:
00033   skAListIterator(const skAList&);
00037   skAListIterator& operator=(const skAListIterator&);
00041   void * operator()();
00042  private:
00046   USize m_Current;
00050   const skAList& m_AList;
00051 };    
00055 
00056 class  skAList 
00057 {   
00058  public:
00062   skAList();
00068   skAList(USize initial_size,USize growth_increment);
00072   virtual ~skAList();       
00076   void clearAndDestroy();
00080   void clear();
00084   USize entries() const;
00088   void deleteElt(USize  n);
00092   void test() const;
00096   void growTo(USize size);
00097  protected:
00101   void insert(void *,USize index);
00105   void prepend(void *);
00109   void append(void *);
00113   void remove(void *);
00117   void removeAndDestroy(void *); 
00121   void * operator[](USize  n) const;
00125   int index(const void *) const;
00129   bool contains(const void *) const;
00133   virtual void deleteItem(void *)=0;
00134   friend class skAListIterator;
00138   int findElt(const void * i) const;
00142   void grow();
00146   void ** m_Array;
00150   USize m_ArraySize;
00154   USize m_Entries;
00158   USize m_GrowthIncrement;      
00159 
00160  private:
00164   static const USize    DEFAULT_SIZE;
00168   static const USize    DEFAULT_GROWTH_INCREMENT;
00172   skAList(const skAList&);
00176   skAList& operator=(const skAList&);
00177 };    
00181 template <class T> class skTAList : public skAList
00182 {
00183  public:
00187   skTAList();
00191   skTAList(const skTAList<T>&);
00195   skTAList(USize initial_size,USize growth_increment);
00199   virtual ~skTAList();
00203   void insert(T *,USize index);
00207   void prepend(T *);
00211   void append(T *);
00215   void remove(T *);
00219   void removeAndDestroy(T *);
00223   T * operator[](USize  n) const;
00227   int index(const T *) const;
00231   bool contains(const T *) const;
00235   skTAList<T>& operator=(const skTAList<T>& l);
00236  protected:
00240   void deleteItem(void *);
00241 };
00245 template <class T> class skTAListIterator : public skAListIterator
00246 {       
00247  public:
00251   skTAListIterator(const skTAList<T>&);
00255   T * operator()();
00256 };    
00257 
00258 #include "skAlist.inl"
00259 
00260 #endif
00261 
00262 
00263 
00264 

Generated at Mon Mar 5 16:00:30 2001 for Simkin by doxygen1.2.0 written by Dimitri van Heesch, © 1997-2000