00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef XAPIAN_INCLUDED_CONST_DATABASE_WRAPPER_H
00024 #define XAPIAN_INCLUDED_CONST_DATABASE_WRAPPER_H
00025
00026 #include "xapian/base.h"
00027 #include "database.h"
00028 #include "noreturn.h"
00029
00030 using namespace std;
00031
00034 class ConstDatabaseWrapper : public Xapian::Database::Internal {
00036 ConstDatabaseWrapper(const ConstDatabaseWrapper &);
00037
00039 void operator=(const ConstDatabaseWrapper &);
00040
00042 Xapian::Internal::RefCntPtr<const Xapian::Database::Internal> realdb;
00043
00045 XAPIAN_NORETURN(void nonconst_access() const);
00046
00047 public:
00048 ConstDatabaseWrapper(Xapian::Internal::RefCntPtr<const Xapian::Database::Internal> realdb_);
00049
00050
00051 Xapian::doccount get_doccount() const;
00052 Xapian::docid get_lastdocid() const;
00053 totlen_t get_total_length() const;
00054 Xapian::doclength get_avlength() const;
00055 Xapian::termcount get_doclength(Xapian::docid did) const;
00056 Xapian::doccount get_termfreq(const string & tname) const;
00057 Xapian::termcount get_collection_freq(const string & tname) const;
00058 Xapian::doccount get_value_freq(Xapian::valueno slot) const;
00059 std::string get_value_lower_bound(Xapian::valueno slot) const;
00060 std::string get_value_upper_bound(Xapian::valueno slot) const;
00061 bool term_exists(const string & tname) const;
00062 bool has_positions() const;
00063 LeafPostList * open_post_list(const string & tname) const;
00064 ValueList * open_value_list(Xapian::valueno slot) const;
00065 TermList * open_term_list(Xapian::docid did) const;
00066 TermList * open_allterms(const string & prefix) const;
00067 PositionList * open_position_list(Xapian::docid did,
00068 const string & tname) const;
00069 Xapian::Document::Internal *
00070 open_document(Xapian::docid did, bool lazy) const;
00071 TermList * open_spelling_termlist(const string & word) const;
00072 TermList * open_spelling_wordlist() const;
00073 Xapian::doccount get_spelling_frequency(const string & word) const;
00074 TermList * open_synonym_termlist(const string & term) const;
00075 TermList * open_synonym_keylist(const string & prefix) const;
00076 string get_metadata(const string & key) const;
00077 TermList * open_metadata_keylist(const std::string &prefix) const;
00078 void request_document(Xapian::docid did) const;
00079 Xapian::Document::Internal * collect_document(Xapian::docid did) const;
00080 string get_revision_info() const;
00081 string get_uuid() const;
00082 void invalidate_doc_object(Xapian::Document::Internal * obj) const;
00083
00084
00085 void add_spelling(const string & word, Xapian::termcount freqinc) const;
00086 void remove_spelling(const string & word, Xapian::termcount freqdec) const;
00087 void add_synonym(const string & term, const string & synonym) const;
00088 void remove_synonym(const string & term, const string & synonym) const;
00089 void clear_synonyms(const string & term) const;
00090 void set_metadata(const string &, const string &);
00091 void reopen();
00092 void close();
00093 void commit();
00094 void cancel();
00095 void begin_transaction(bool);
00096 void commit_transaction();
00097 void cancel_transaction();
00098 Xapian::docid add_document(const Xapian::Document &);
00099 void delete_document(Xapian::docid);
00100 void delete_document(const string &);
00101 void replace_document(Xapian::docid, const Xapian::Document &);
00102 Xapian::docid replace_document(const string &, const Xapian::Document &);
00103 void write_changesets_to_fd(int, const std::string &, bool,
00104 Xapian::ReplicationInfo *);
00105 RemoteDatabase * as_remotedatabase();
00106 };
00107
00108 #endif