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


 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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 
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
boost::shared_ptr< LuceneObject > LuceneObjectPtr
Definition: LuceneTypes.h:539
An "open" BitSet implementation that allows direct access to the array of words storing the bits...
Definition: OpenBitSet.h:19
boost::shared_ptr< OpenBitSet > OpenBitSetPtr
Definition: LuceneTypes.h:543
boost::shared_ptr< DocIdSetIterator > DocIdSetIteratorPtr
Definition: LuceneTypes.h:324
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Definition: AbstractAllTermDocs.h:12
A DocIdSet contains a set of doc ids. Implementing classes must only implement iterator to provide ac...
Definition: DocIdSet.h:16
int32_t wlen
Definition: OpenBitSet.h:41

clucene.sourceforge.net