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