Branch data Line data Source code
1 : : /** @file termgenerator.cc
2 : : * @brief TermGenerator class implementation
3 : : */
4 : : /* Copyright (C) 2007 Olly Betts
5 : : *
6 : : * This program is free software; you can redistribute it and/or modify
7 : : * it under the terms of the GNU General Public License as published by
8 : : * the Free Software Foundation; either version 2 of the License, or
9 : : * (at your option) any later version.
10 : : *
11 : : * This program is distributed in the hope that it will be useful,
12 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : : * GNU General Public License for more details.
15 : : *
16 : : * You should have received a copy of the GNU General Public License
17 : : * along with this program; if not, write to the Free Software
18 : : * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 : : */
20 : :
21 : : #include <config.h>
22 : :
23 : : #include <xapian/termgenerator.h>
24 : : #include <xapian/types.h>
25 : : #include <xapian/unicode.h>
26 : :
27 : : #include "termgenerator_internal.h"
28 : :
29 : : #include "str.h"
30 : :
31 : : using namespace std;
32 : : using namespace Xapian;
33 : :
34 : 1 : TermGenerator::TermGenerator(const TermGenerator & o) : internal(o.internal) { }
35 : :
36 : : TermGenerator &
37 : 1 : TermGenerator::operator=(const TermGenerator & o) {
38 : 1 : internal = o.internal;
39 : 1 : return *this;
40 : : }
41 : :
42 : 5 : TermGenerator::TermGenerator() : internal(new TermGenerator::Internal) { }
43 : :
44 : 6 : TermGenerator::~TermGenerator() { }
45 : :
46 : : void
47 : 3 : TermGenerator::set_stemmer(const Xapian::Stem & stemmer)
48 : : {
49 : 3 : internal->stemmer = stemmer;
50 : 3 : }
51 : :
52 : : void
53 : 0 : TermGenerator::set_stopper(const Xapian::Stopper * stopper)
54 : : {
55 : 0 : internal->stopper = stopper;
56 : 0 : }
57 : :
58 : : void
59 : 39 : TermGenerator::set_document(const Xapian::Document & doc)
60 : : {
61 : 39 : internal->doc = doc;
62 : 39 : internal->termpos = 0;
63 : 39 : }
64 : :
65 : : const Xapian::Document &
66 : 0 : TermGenerator::get_document() const
67 : : {
68 : 0 : return internal->doc;
69 : : }
70 : :
71 : : void
72 : 2 : TermGenerator::set_database(const Xapian::WritableDatabase &db)
73 : : {
74 : 2 : internal->db = db;
75 : 2 : }
76 : :
77 : : TermGenerator::flags
78 : 3 : TermGenerator::set_flags(flags toggle, flags mask)
79 : : {
80 : 3 : TermGenerator::flags old_flags = internal->flags;
81 : 3 : internal->flags = flags((old_flags & mask) ^ toggle);
82 : 3 : return old_flags;
83 : : }
84 : :
85 : : void
86 : 43 : TermGenerator::index_text(const Xapian::Utf8Iterator & itor,
87 : : Xapian::termcount weight,
88 : : const string & prefix)
89 : : {
90 : 43 : internal->index_text(itor, weight, prefix, true);
91 : 42 : }
92 : :
93 : : void
94 : 0 : TermGenerator::index_text_without_positions(const Xapian::Utf8Iterator & itor,
95 : : Xapian::termcount weight,
96 : : const string & prefix)
97 : : {
98 : 0 : internal->index_text(itor, weight, prefix, false);
99 : 0 : }
100 : :
101 : : void
102 : 1 : TermGenerator::increase_termpos(Xapian::termcount delta)
103 : : {
104 : 1 : internal->termpos += delta;
105 : 1 : }
106 : :
107 : : Xapian::termcount
108 : 0 : TermGenerator::get_termpos() const
109 : : {
110 : 0 : return internal->termpos;
111 : : }
112 : :
113 : : void
114 : 0 : TermGenerator::set_termpos(Xapian::termcount termpos)
115 : : {
116 : 0 : internal->termpos = termpos;
117 : 0 : }
118 : :
119 : : string
120 : 1 : TermGenerator::get_description() const
121 : : {
122 : 1 : string s("Xapian::TermGenerator(");
123 [ + - ]: 1 : if (internal.get()) {
124 : 1 : s += "stem=";
125 : 1 : s += internal->stemmer.get_description();
126 [ - + ]: 1 : if (internal->stopper) {
127 : 0 : s += ", stopper set";
128 : : }
129 : 1 : s += ", doc=";
130 : 1 : s += internal->doc.get_description();
131 : 1 : s += ", termpos=";
132 : 1 : s += str(internal->termpos);
133 : : }
134 : 1 : s += ")";
135 : 0 : return s;
136 : : }
|