00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef OM_HGUARD_OMPOSITIONLISTITERATOR_H
00025 #define OM_HGUARD_OMPOSITIONLISTITERATOR_H
00026
00027 #include <iterator>
00028 #include "om/omtypes.h"
00029
00030 class OmPostListIterator;
00031 class OmTermIterator;
00032 class OmDatabase;
00033
00034 class OmPositionListIterator {
00035 private:
00036
00037 friend class OmPostListIterator;
00038 friend class OmTermIterator;
00039 friend class OmDatabase;
00040
00041 public:
00042 class Internal;
00044 Internal *internal;
00045
00046 friend bool operator==(const OmPositionListIterator &a, const OmPositionListIterator &b);
00047
00048
00049 OmPositionListIterator(Internal *internal_);
00050
00052 OmPositionListIterator();
00053
00055 ~OmPositionListIterator();
00056
00057 void operator=(OmPositionListIterator &o);
00058 OmPositionListIterator (const OmPositionListIterator &o);
00059
00060 om_termpos operator *() const;
00061
00062 OmPositionListIterator & operator++();
00063
00064 void operator++(int);
00065
00066
00067 void skip_to(om_termpos pos);
00068
00072 std::string get_description() const;
00073
00074
00075 typedef std::input_iterator_tag iterator_category;
00076 typedef om_termpos value_type;
00077 typedef om_termpos_diff difference_type;
00078 typedef om_termpos * pointer;
00079 typedef om_termpos & reference;
00080 };
00081
00082 inline bool operator!=(const OmPositionListIterator &a,
00083 const OmPositionListIterator &b)
00084 {
00085 return !(a == b);
00086 }
00087
00088 #endif