00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <config.h>
00024 #include "selectpostlist.h"
00025
00026 #include "debuglog.h"
00027 #include "omassert.h"
00028
00029 PostList *
00030 SelectPostList::next(Xapian::weight w_min)
00031 {
00032 LOGCALL(MATCH, PostList *, "SelectPostList::next", w_min);
00033 do {
00034 PostList *p = source->next(w_min);
00035 (void)p;
00036 Assert(p == NULL);
00037 } while (!source->at_end() && !test_doc());
00038 RETURN(NULL);
00039 }
00040
00041 PostList *
00042 SelectPostList::skip_to(Xapian::docid did, Xapian::weight w_min)
00043 {
00044 LOGCALL(MATCH, PostList *, "SelectPostList::skip_to", did | w_min);
00045 if (did > get_docid()) {
00046 PostList *p = source->skip_to(did, w_min);
00047 (void)p;
00048 Assert(p == NULL);
00049 if (!source->at_end() && !test_doc())
00050 RETURN(SelectPostList::next(w_min));
00051 }
00052 RETURN(NULL);
00053 }
00054
00055 PostList *
00056 SelectPostList::check(Xapian::docid did, Xapian::weight w_min, bool &valid)
00057 {
00058 LOGCALL(MATCH, PostList *, "SelectPostList::check", did | w_min | valid);
00059 PostList *p = source->check(did, w_min, valid);
00060 (void)p;
00061 Assert(p == NULL);
00062 if (valid && !source->at_end() && !test_doc())
00063 valid = false;
00064 RETURN(NULL);
00065 }