Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages

citerator.h

Go to the documentation of this file.
00001 #ifndef CITERATOR_H
00002 #define CITERATOR_H
00003 
00009 #include <deque>
00010 
00011 #include <assert.h>
00012 
00022 template<class T> class CIterator {
00023 public:
00025   virtual void first() = 0;
00027   virtual void next() = 0;
00029   virtual T *current_item() = 0;
00031   virtual int is_done() = 0;
00032 };
00033 
00036 template<class T> class CDequeForwardIterator : public CIterator<T> {
00037 private:
00038   std::deque<T *> *list;
00039   unsigned int index;
00040 public:
00041   CDequeForwardIterator(std::deque<T *> &list) : index(0) { this->list = &list; }
00042   void first() { index = 0; }
00043   void next() { index++; }
00044   T *current_item() { assert(!is_done()); return (*list)[index]; }
00045   int is_done() { return (list->empty() || index >= list->size()); }
00046 };
00047 
00050 template<class T> class CDequeBackwardIterator : public CIterator<T> {
00051 private:
00052   std::deque<T *> *list;
00053   int index;
00054 
00055 public:
00056   CDequeBackwardIterator(std::deque<T *> &list) : index(0) { this->list = &list; first(); }
00057   void first() { index = (unsigned int) list->size() - 1; }
00058   void next() { index--; }
00059   T *current_item() { assert(!is_done()); return (*list)[index]; }
00060   int is_done() { return (list->empty() || index < 0); }
00061 };
00062 
00063 #endif

Generated on Wed Aug 27 11:58:41 2003 for GFW by doxygen 1.3.3