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