Lucene++ - a full-featured, c++ search engine
API Documentation

- Main Page
- Related Pages
- Namespaces
- Data Structures
- Files

- File List
- Globals

OpenBitSet.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
6
7 #ifndef OPENBITSET_H
8 #define OPENBITSET_H
9
10 #include "DocIdSet.h"
11
12 namespace Lucene {
13
19 class LPPAPI OpenBitSet : public DocIdSet {
20 public:
22 OpenBitSet(int64_t numBits = 64);
23
33 OpenBitSet(LongArray bits, int32_t numWords);
34
35 virtual ~OpenBitSet();
36
37 LUCENE_CLASS(OpenBitSet);
38
39 protected:
40 LongArray bits;
41 int32_t wlen; // number of words (elements) used in the array
42
43 public:
44 virtual DocIdSetIteratorPtr iterator();
45
47 virtual bool isCacheable();
48
50 int64_t capacity();
51
54 int64_t size();
55
57 bool isEmpty();
58
60 LongArray getBits();
61
63 void setBits(LongArray bits);
64
66 int32_t getNumWords();
67
69 void setNumWords(int32_t numWords);
70
72 bool get(int32_t index);
73
76 bool fastGet(int32_t index);
77
79 bool get(int64_t index);
80
83 bool fastGet(int64_t index);
84
87 int32_t getBit(int32_t index);
88
90 void set(int64_t index);
91
94 void fastSet(int32_t index);
95
98 void fastSet(int64_t index);
99
103 void set(int64_t startIndex, int64_t endIndex);
104
107 void fastClear(int32_t index);
108
111 void fastClear(int64_t index);
112
114 void clear(int64_t index);
115
119 void clear(int32_t startIndex, int32_t endIndex);
120
124 void clear(int64_t startIndex, int64_t endIndex);
125
128 bool getAndSet(int32_t index);
129
132 bool getAndSet(int64_t index);
133
136 void fastFlip(int32_t index);
137
140 void fastFlip(int64_t index);
141
143 void flip(int64_t index);
144
147 bool flipAndGet(int32_t index);
148
151 bool flipAndGet(int64_t index);
152
156 void flip(int64_t startIndex, int64_t endIndex);
157
159 int64_t cardinality();
160
163 static int64_t intersectionCount(const OpenBitSetPtr& a, const OpenBitSetPtr& b);
164
167 static int64_t unionCount(const OpenBitSetPtr& a, const OpenBitSetPtr& b);
168
171 static int64_t andNotCount(const OpenBitSetPtr& a, const OpenBitSetPtr& b);
172
175 static int64_t xorCount(const OpenBitSetPtr& a, const OpenBitSetPtr& b);
176
179 int32_t nextSetBit(int32_t index);
180
183 int64_t nextSetBit(int64_t index);
184
185 virtual LuceneObjectPtr clone(const LuceneObjectPtr& other = LuceneObjectPtr());
186
188 void intersect(const OpenBitSetPtr& other);
189
191 void _union(const OpenBitSetPtr& other);
192
194 void remove(const OpenBitSetPtr& other);
195
197 void _xor(const OpenBitSetPtr& other);
198
200 void _and(const OpenBitSetPtr& other);
201
203 void _or(const OpenBitSetPtr& other);
204
206 void andNot(const OpenBitSetPtr& other);
207
209 bool intersects(const OpenBitSetPtr& other);
210
213 void ensureCapacityWords(int32_t numWords);
214
217 void ensureCapacity(int64_t numBits);
218
220 void trimTrailingZeros();
221
223 static int32_t bits2words(int64_t numBits);
224
226 virtual bool equals(const LuceneObjectPtr& other);
227
228 virtual int32_t hashCode();
229
230 protected:
231 int32_t expandingWordNum(int64_t index);
232 };
233
234 }
235
236 #endif
Lucene::LuceneObjectPtr
boost::shared_ptr< LuceneObject > LuceneObjectPtr
Definition: LuceneTypes.h:539
Lucene::OpenBitSet
An "open" BitSet implementation that allows direct access to the array of words storing the bits...
Definition: OpenBitSet.h:19
Lucene::OpenBitSetPtr
boost::shared_ptr< OpenBitSet > OpenBitSetPtr
Definition: LuceneTypes.h:543
DocIdSet.h
Lucene::DocIdSetIteratorPtr
boost::shared_ptr< DocIdSetIterator > DocIdSetIteratorPtr
Definition: LuceneTypes.h:324
LUCENE_CLASS
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Lucene
Definition: AbstractAllTermDocs.h:12
Lucene::DocIdSet
A DocIdSet contains a set of doc ids. Implementing classes must only implement iterator to provide ac...
Definition: DocIdSet.h:16
Lucene::OpenBitSet::wlen
int32_t wlen
Definition: OpenBitSet.h:41

clucene.sourceforge.net