ListIterator.hpp

Go to the documentation of this file.
00001 
00009 #ifndef ListIterator_H
00010 #define ListIterator_H
00011 
00012 #include <list>
00013 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00014 using namespace std;
00015 
00016 namespace OA {
00017 
00018 template <class T>
00019 class ListIterator {
00020 public:
00021     ListIterator (OA_ptr<list<T> > pList) : mList(pList), mIter(pList->begin()) 
00022     {}
00023     virtual ~ListIterator () {}
00024 
00025     void operator++() { if (mIter != mList->end()) { mIter++; } }
00026     void operator++(int) { ++*this; } 
00027 
00029     bool isValid() { return (mIter != mList->end()); }
00030 
00032     T current() { return *mIter; }
00033 
00034     void reset() { mIter = mList->begin(); }
00035 
00036   private:
00037     OA_ptr<list<T> > mList;
00038     typename list<T>::iterator mIter;
00039 };
00040 
00041 
00042 
00043 
00044 } // end of OA namespace
00045 
00046 #endif