00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef XAPIAN_INCLUDED_TERMITERATOR_H
00027 #define XAPIAN_INCLUDED_TERMITERATOR_H
00028
00029 #include <iterator>
00030 #include <string>
00031
00032 #include <xapian/base.h>
00033 #include <xapian/types.h>
00034
00035 namespace Xapian {
00036
00037 class Database;
00038 class PositionIterator;
00039
00042 class TermIterator {
00043 private:
00044
00045 friend class Database;
00046 friend class Document;
00047
00048 public:
00049 class Internal;
00051 Xapian::Internal::RefCntPtr<Internal> internal;
00052
00053 friend bool operator==(const TermIterator &a, const TermIterator &b);
00054
00055 public:
00056
00057 TermIterator(Internal *internal_);
00058
00060
00061
00063 ~TermIterator();
00064
00068 TermIterator(const TermIterator &other);
00069
00073 void operator=(const TermIterator &other);
00074
00075 std::string operator *() const;
00076
00077 TermIterator & operator++();
00078
00079 void operator++(int);
00080
00081
00082 void skip_to(const std::string & tname);
00083
00084 Xapian::termcount get_wdf() const;
00085 Xapian::doccount get_termfreq() const;
00086
00087
00088 PositionIterator positionlist_begin();
00089 PositionIterator positionlist_end();
00090
00094 std::string get_description() const;
00095
00097
00098 typedef std::input_iterator_tag iterator_category;
00099 typedef std::string value_type;
00100 typedef Xapian::termcount_diff difference_type;
00101 typedef std::string * pointer;
00102 typedef std::string & reference;
00104 };
00105
00106 inline bool
00107 operator==(const TermIterator &a, const TermIterator &b)
00108 {
00109 return (a.internal.get() == b.internal.get());
00110 }
00111
00112 inline bool
00113 operator!=(const TermIterator &a, const TermIterator &b)
00114 {
00115 return !(a == b);
00116 }
00117
00118 }
00119
00120 #endif