Branch data Line data Source code
1 : : /** @file const_database_wrapper.h
2 : : * @brief Wrapper which exposes only the const methods of database internals.
3 : : */
4 : : /* Copyright (C) 2009 Lemur Consulting Ltd
5 : : * Copyright (C) 2009 Olly Betts
6 : : *
7 : : * This program is free software; you can redistribute it and/or
8 : : * modify it under the terms of the GNU General Public License as
9 : : * published by the Free Software Foundation; either version 2 of the
10 : : * License, or (at your option) any later version.
11 : : *
12 : : * This program is distributed in the hope that it will be useful,
13 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : : * GNU General Public License for more details.
16 : : *
17 : : * You should have received a copy of the GNU General Public License
18 : : * along with this program; if not, write to the Free Software
19 : : * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
20 : : * USA
21 : : */
22 : :
23 : : #ifndef XAPIAN_INCLUDED_CONST_DATABASE_WRAPPER_H
24 : : #define XAPIAN_INCLUDED_CONST_DATABASE_WRAPPER_H
25 : :
26 : : #include "xapian/base.h"
27 : : #include "database.h"
28 : : #include "noreturn.h"
29 : :
30 : : using namespace std;
31 : :
32 : : /** Base class for databases.
33 : : */
34 [ + - ][ # # ]: 754 : class ConstDatabaseWrapper : public Xapian::Database::Internal {
35 : : /// Copies are not allowed.
36 : : ConstDatabaseWrapper(const ConstDatabaseWrapper &);
37 : :
38 : : /// Assignment is not allowed.
39 : : void operator=(const ConstDatabaseWrapper &);
40 : :
41 : : /// The const database which this wrapper wraps.
42 : : Xapian::Internal::RefCntPtr<const Xapian::Database::Internal> realdb;
43 : :
44 : : /// Raise an exception complaining about access to a non-const method.
45 : : XAPIAN_NORETURN(void nonconst_access() const);
46 : :
47 : : public:
48 : : ConstDatabaseWrapper(Xapian::Internal::RefCntPtr<const Xapian::Database::Internal> realdb_);
49 : :
50 : : // Const methods: these are proxied to realdb.
51 : : Xapian::doccount get_doccount() const;
52 : : Xapian::docid get_lastdocid() const;
53 : : totlen_t get_total_length() const;
54 : : Xapian::doclength get_avlength() const;
55 : : Xapian::termcount get_doclength(Xapian::docid did) const;
56 : : Xapian::doccount get_termfreq(const string & tname) const;
57 : : Xapian::termcount get_collection_freq(const string & tname) const;
58 : : Xapian::doccount get_value_freq(Xapian::valueno valno) const;
59 : : std::string get_value_lower_bound(Xapian::valueno valno) const;
60 : : std::string get_value_upper_bound(Xapian::valueno valno) const;
61 : : bool term_exists(const string & tname) const;
62 : : bool has_positions() const;
63 : : LeafPostList * open_post_list(const string & tname) const;
64 : : ValueList * open_value_list(Xapian::valueno slot) const;
65 : : TermList * open_term_list(Xapian::docid did) const;
66 : : TermList * open_allterms(const string & prefix) const;
67 : : PositionList * open_position_list(Xapian::docid did,
68 : : const string & tname) const;
69 : : Xapian::Document::Internal *
70 : : open_document(Xapian::docid did, bool lazy) const;
71 : : TermList * open_spelling_termlist(const string & word) const;
72 : : TermList * open_spelling_wordlist() const;
73 : : Xapian::doccount get_spelling_frequency(const string & word) const;
74 : : TermList * open_synonym_termlist(const string & term) const;
75 : : TermList * open_synonym_keylist(const string & prefix) const;
76 : : string get_metadata(const string & key) const;
77 : : TermList * open_metadata_keylist(const std::string &prefix) const;
78 : : void request_document(Xapian::docid did) const;
79 : : Xapian::Document::Internal * collect_document(Xapian::docid did) const;
80 : : string get_revision_info() const;
81 : : string get_uuid() const;
82 : : void invalidate_doc_object(Xapian::Document::Internal * obj) const;
83 : :
84 : : // Non-const methods: these raise Xapian::InvalidOperationError
85 : : void add_spelling(const string & word, Xapian::termcount freqinc) const;
86 : : void remove_spelling(const string & word, Xapian::termcount freqdec) const;
87 : : void add_synonym(const string & term, const string & synonym) const;
88 : : void remove_synonym(const string & term, const string & synonym) const;
89 : : void clear_synonyms(const string & term) const;
90 : : void set_metadata(const string &, const string &);
91 : : void reopen();
92 : : void close();
93 : : void commit();
94 : : void cancel();
95 : : void begin_transaction(bool);
96 : : void commit_transaction();
97 : : void cancel_transaction();
98 : : Xapian::docid add_document(const Xapian::Document &);
99 : : void delete_document(Xapian::docid);
100 : : void delete_document(const string &);
101 : : void replace_document(Xapian::docid, const Xapian::Document &);
102 : : Xapian::docid replace_document(const string &, const Xapian::Document &);
103 : : void write_changesets_to_fd(int, const std::string &, bool,
104 : : Xapian::ReplicationInfo *);
105 : : RemoteDatabase * as_remotedatabase();
106 : : };
107 : :
108 : : #endif /* XAPIAN_INCLUDED_CONST_DATABASE_WRAPPER_H */
|