00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef XAPIAN_INCLUDED_SORTER_H
00022 #define XAPIAN_INCLUDED_SORTER_H
00023
00024 #include <string>
00025 #include <vector>
00026
00027 #include <xapian/document.h>
00028 #include <xapian/visibility.h>
00029
00030 namespace Xapian {
00031
00033 class XAPIAN_VISIBILITY_DEFAULT Sorter {
00034 public:
00039 virtual std::string operator()(const Xapian::Document & doc) const = 0;
00040
00042 virtual ~Sorter();
00043 };
00044
00051 class XAPIAN_VISIBILITY_DEFAULT MultiValueSorter : public Sorter {
00052 std::vector<std::pair<Xapian::valueno, bool> > valnos;
00053
00054 public:
00055 MultiValueSorter() { }
00056
00057 template <class Iterator>
00058 MultiValueSorter(Iterator begin, Iterator end) {
00059 while (begin != end) add(*begin++);
00060 }
00061
00062 virtual std::string operator()(const Xapian::Document & doc) const;
00063
00064 void add(Xapian::valueno valno, bool forward = true) {
00065 valnos.push_back(std::make_pair(valno, forward));
00066 }
00067
00068 virtual ~MultiValueSorter();
00069 };
00070
00071 }
00072
00073 #endif // XAPIAN_INCLUDED_SORTER_H