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
1.7.1