00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef XAPIAN_INCLUDED_FLINT_MODIFIEDPOSTLIST_H
00022 #define XAPIAN_INCLUDED_FLINT_MODIFIEDPOSTLIST_H
00023
00024 #include <map>
00025 #include <string>
00026
00027 using namespace std;
00028
00029 #include "flint_database.h"
00030 #include "flint_postlist.h"
00031
00032 class FlintModifiedPostList : public FlintPostList {
00034
00035 map<Xapian::docid, pair<char, Xapian::termcount> > mods;
00036 map<Xapian::docid, pair<char, Xapian::termcount> >::const_iterator it;
00038
00040 PositionList * poslist;
00041
00043 void skip_deletes(Xapian::weight w_min);
00044
00045 public:
00047 FlintModifiedPostList(Xapian::Internal::RefCntPtr<const FlintDatabase> this_db_,
00048 const string & tname_,
00049 const map<Xapian::docid, pair<char, Xapian::termcount> > & mods_)
00050 : FlintPostList(this_db_, tname_),
00051 mods(mods_), it(mods.begin()), poslist(0)
00052 { }
00053
00054 ~FlintModifiedPostList();
00055
00056 Xapian::doccount get_termfreq() const;
00057
00058 Xapian::docid get_docid() const;
00059
00060 Xapian::termcount get_doclength() const;
00061
00062 Xapian::termcount get_wdf() const;
00063
00064 PositionList *read_position_list();
00065
00066 PositionList *open_position_list() const;
00067
00068 PostList * next(Xapian::weight w_min);
00069
00070 PostList * skip_to(Xapian::docid desired_did, Xapian::weight w_min);
00071
00072 bool at_end() const;
00073
00074 std::string get_description() const;
00075 };
00076
00077 #endif // XAPIAN_INCLUDED_FLINT_MODIFIEDPOSTLIST_H