00001 #ifndef StRecordITERATOR_H
00002 #define StRecordITERATOR_H
00003
00004 #include <iterator>
00005 #include "RecordList.h"
00006
00007 namespace TxLogging {
00008 class Iterator : public std::iterator<std::input_iterator_tag, RecordIterator>
00009 {
00010 RecordIterator fField;
00011 RecordIterator fFieldEnd;
00012 public:
00013 Iterator(RecordList &fields) : fField(fields.begin()), fFieldEnd(fields.end()) {}
00014 Iterator(RecordList *fields) : fField(fields->begin()), fFieldEnd(fields->end()) {}
00015 Iterator(const Iterator& mit) : fField(mit.fField), fFieldEnd(mit.fFieldEnd) { }
00016 Iterator(const RecordIterator &first,const RecordIterator &last) :fField(first), fFieldEnd(last) {}
00017 Iterator& operator++();
00018 Iterator& operator++(int);
00019 bool operator==(const Iterator& rhs) {return fField==rhs.fField;}
00020 bool operator!=(const Iterator& rhs) {return fField!=rhs.fField;}
00021 StRecord* operator*();
00022 const StRecord* operator*() const;
00023 bool hasNext() const { return fField != fFieldEnd; }
00024 StRecord* next();
00025 };
00026 }
00027
00028 #endif