Lucene++ - a full-featured, c++ search engine
API Documentation
An "open" BitSet implementation that allows direct access to the array of words storing the bits. More...
#include <OpenBitSet.h>
Public Member Functions | |
OpenBitSet (int64_t numBits=64) | |
Constructs an OpenBitSet large enough to hold numBits. More... | |
OpenBitSet (LongArray bits, int32_t numWords) | |
Constructs an OpenBitSet from an existing LongArray. More... | |
virtual | ~OpenBitSet () |
virtual String | getClassName () |
boost::shared_ptr< OpenBitSet > | shared_from_this () |
virtual DocIdSetIteratorPtr | iterator () |
Provides a DocIdSetIterator to access the set. This implementation can return null or EmptyDocIdSet.iterator() if there are no docs that match. More... | |
virtual bool | isCacheable () |
This DocIdSet implementation is cacheable. More... | |
int64_t | capacity () |
Returns the current capacity in bits (1 greater than the index of the last bit) More... | |
int64_t | size () |
Returns the current capacity of this set. Included for compatibility. This is not equal to cardinality. More... | |
bool | isEmpty () |
Returns true if there are no set bits. More... | |
LongArray | getBits () |
Returns the long[] storing the bits. More... | |
void | setBits (LongArray bits) |
Sets a new long[] to use as the bit storage. More... | |
int32_t | getNumWords () |
Gets the number of longs in the array that are in use. More... | |
void | setNumWords (int32_t numWords) |
Sets the number of longs in the array that are in use. More... | |
bool | get (int32_t index) |
Returns true or false for the specified bit index. More... | |
bool | fastGet (int32_t index) |
Returns true or false for the specified bit index. The index should be less than the OpenBitSet size. More... | |
bool | get (int64_t index) |
Returns true or false for the specified bit index. More... | |
bool | fastGet (int64_t index) |
Returns true or false for the specified bit index. The index should be less than the OpenBitSet size. More... | |
int32_t | getBit (int32_t index) |
Returns 1 if the bit is set, 0 if not. The index should be less than the OpenBitSet size. More... | |
void | set (int64_t index) |
Sets a bit, expanding the set size if necessary. More... | |
void | fastSet (int32_t index) |
Sets the bit at the specified index. The index should be less than the OpenBitSet size. More... | |
void | fastSet (int64_t index) |
Sets the bit at the specified index. The index should be less than the OpenBitSet size. More... | |
void | set (int64_t startIndex, int64_t endIndex) |
Sets a range of bits, expanding the set size if necessary. More... | |
void | fastClear (int32_t index) |
Clears a bit. The index should be less than the OpenBitSet size. More... | |
void | fastClear (int64_t index) |
Clears a bit. The index should be less than the OpenBitSet size. More... | |
void | clear (int64_t index) |
Clears a bit, allowing access beyond the current set size without changing the size. More... | |
void | clear (int32_t startIndex, int32_t endIndex) |
Clears a range of bits. Clearing past the end does not change the size of the set. More... | |
void | clear (int64_t startIndex, int64_t endIndex) |
Clears a range of bits. Clearing past the end does not change the size of the set. More... | |
bool | getAndSet (int32_t index) |
Sets a bit and returns the previous value. The index should be less than the OpenBitSet size. More... | |
bool | getAndSet (int64_t index) |
Sets a bit and returns the previous value. The index should be less than the OpenBitSet size. More... | |
void | fastFlip (int32_t index) |
Flips a bit. The index should be less than the OpenBitSet size. More... | |
void | fastFlip (int64_t index) |
Flips a bit. The index should be less than the OpenBitSet size. More... | |
void | flip (int64_t index) |
Flips a bit, expanding the set size if necessary. More... | |
bool | flipAndGet (int32_t index) |
Flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size. More... | |
bool | flipAndGet (int64_t index) |
Flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size. More... | |
void | flip (int64_t startIndex, int64_t endIndex) |
Flips a range of bits, expanding the set size if necessary. More... | |
int64_t | cardinality () |
int32_t | nextSetBit (int32_t index) |
Returns the index of the first set bit starting at the index specified. -1 is returned if there are no more set bits. More... | |
int64_t | nextSetBit (int64_t index) |
Returns the index of the first set bit starting at the index specified. -1 is returned if there are no more set bits. More... | |
virtual LuceneObjectPtr | clone (LuceneObjectPtr other=LuceneObjectPtr()) |
Return clone of this object. More... | |
void | intersect (OpenBitSetPtr other) |
this = this AND other More... | |
void | _union (OpenBitSetPtr other) |
this = this OR other More... | |
void | remove (OpenBitSetPtr other) |
Remove all elements set in other. this = this AND_NOT other. More... | |
void | _xor (OpenBitSetPtr other) |
this = this XOR other More... | |
void | _and (OpenBitSetPtr other) |
see intersect More... | |
void | _or (OpenBitSetPtr other) |
see union More... | |
void | andNot (OpenBitSetPtr other) |
see remove More... | |
bool | intersects (OpenBitSetPtr other) |
Returns true if the sets have any elements in common. More... | |
void | ensureCapacityWords (int32_t numWords) |
Expand the LongArray with the size given as a number of words (64 bit longs). getNumWords() is unchanged by this call. More... | |
void | ensureCapacity (int64_t numBits) |
Ensure that the LongArray is big enough to hold numBits, expanding it if necessary. getNumWords() is unchanged by this call. More... | |
void | trimTrailingZeros () |
Lowers numWords, the number of words in use, by checking for trailing zero words. More... | |
virtual bool | equals (LuceneObjectPtr other) |
Returns true if both sets have the same bits set. More... | |
virtual int32_t | hashCode () |
Return hash code for this object. More... | |
![]() | |
virtual | ~DocIdSet () |
boost::shared_ptr< DocIdSet > | shared_from_this () |
![]() | |
virtual | ~LuceneObject () |
virtual void | initialize () |
Called directly after instantiation to create objects that depend on this object being fully constructed. More... | |
virtual int32_t | compareTo (LuceneObjectPtr other) |
Compare two objects. More... | |
virtual String | toString () |
Returns a string representation of the object. More... | |
![]() | |
virtual | ~LuceneSync () |
virtual SynchronizePtr | getSync () |
Return this object synchronize lock. More... | |
virtual LuceneSignalPtr | getSignal () |
Return this object signal. More... | |
virtual void | lock (int32_t timeout=0) |
Lock this object using an optional timeout. More... | |
virtual void | unlock () |
Unlock this object. More... | |
virtual bool | holdsLock () |
Returns true if this object is currently locked by current thread. More... | |
virtual void | wait (int32_t timeout=0) |
Wait for signal using an optional timeout. More... | |
virtual void | notifyAll () |
Notify all threads waiting for signal. More... | |
Static Public Member Functions | |
static String | _getClassName () |
static int64_t | intersectionCount (OpenBitSetPtr a, OpenBitSetPtr b) |
Returns the popcount or cardinality of the intersection of the two sets. Neither set is modified. More... | |
static int64_t | unionCount (OpenBitSetPtr a, OpenBitSetPtr b) |
Returns the popcount or cardinality of the union of the two sets. Neither set is modified. More... | |
static int64_t | andNotCount (OpenBitSetPtr a, OpenBitSetPtr b) |
Returns the popcount or cardinality of "a and not b" or "intersection(a, not(b))". Neither set is modified. More... | |
static int64_t | xorCount (OpenBitSetPtr a, OpenBitSetPtr b) |
Returns the popcount or cardinality of the exclusive-or of the two sets. Neither set is modified. More... | |
static int32_t | bits2words (int64_t numBits) |
Returns the number of 64 bit words it would take to hold numBits. More... | |
![]() | |
static String | _getClassName () |
static DocIdSetPtr | EMPTY_DOCIDSET () |
An empty {. More... | |
Protected Member Functions | |
int32_t | expandingWordNum (int64_t index) |
Protected Attributes | |
LongArray | bits |
int32_t | wlen |
An "open" BitSet implementation that allows direct access to the array of words storing the bits.
The goals of OpenBitSet are the fastest implementation possible, and maximum code reuse. Extra safety and encapsulation may always be built on top, but if that's built in, the cost can never be removed (and hence people re-implement their own version in order to get better performance).
Lucene::OpenBitSet::OpenBitSet | ( | int64_t | numBits = 64 ) |
Constructs an OpenBitSet large enough to hold numBits.
Lucene::OpenBitSet::OpenBitSet | ( | LongArray | bits, |
int32_t | numWords | ||
) |
Constructs an OpenBitSet from an existing LongArray.
The first 64 bits are in long[0], with bit index 0 at the least significant bit, and bit index 63 at the most significant. Given a bit index, the word containing it is long[index/64], and it is at bit number index%64 within that word.
numWords are the number of elements in the array that contain set bits (non-zero longs). numWords should be <= bits.length(), and any existing words in the array at position >= numWords should be zero.
|
virtual |
void Lucene::OpenBitSet::_and | ( | OpenBitSetPtr | other) |
see intersect
|
inlinestatic |
void Lucene::OpenBitSet::_or | ( | OpenBitSetPtr | other) |
see union
void Lucene::OpenBitSet::_union | ( | OpenBitSetPtr | other) |
this = this OR other
void Lucene::OpenBitSet::_xor | ( | OpenBitSetPtr | other) |
this = this XOR other
void Lucene::OpenBitSet::andNot | ( | OpenBitSetPtr | other) |
see remove
|
static |
Returns the popcount or cardinality of "a and not b" or "intersection(a, not(b))". Neither set is modified.
|
static |
Returns the number of 64 bit words it would take to hold numBits.
int64_t Lucene::OpenBitSet::capacity | ( | ) |
Returns the current capacity in bits (1 greater than the index of the last bit)
int64_t Lucene::OpenBitSet::cardinality | ( | ) |
void Lucene::OpenBitSet::clear | ( | int64_t | index) |
Clears a bit, allowing access beyond the current set size without changing the size.
void Lucene::OpenBitSet::clear | ( | int32_t | startIndex, |
int32_t | endIndex | ||
) |
Clears a range of bits. Clearing past the end does not change the size of the set.
startIndex | lower index |
endIndex | one-past the last bit to clear |
void Lucene::OpenBitSet::clear | ( | int64_t | startIndex, |
int64_t | endIndex | ||
) |
Clears a range of bits. Clearing past the end does not change the size of the set.
startIndex | lower index |
endIndex | one-past the last bit to clear |
|
virtual |
Return clone of this object.
other | clone reference - null when called initially, then set in top virtual override. |
Reimplemented from Lucene::LuceneObject.
void Lucene::OpenBitSet::ensureCapacity | ( | int64_t | numBits) |
Ensure that the LongArray is big enough to hold numBits, expanding it if necessary. getNumWords() is unchanged by this call.
void Lucene::OpenBitSet::ensureCapacityWords | ( | int32_t | numWords) |
Expand the LongArray with the size given as a number of words (64 bit longs). getNumWords() is unchanged by this call.
|
virtual |
Returns true if both sets have the same bits set.
Reimplemented from Lucene::LuceneObject.
|
protected |
void Lucene::OpenBitSet::fastClear | ( | int32_t | index) |
Clears a bit. The index should be less than the OpenBitSet size.
void Lucene::OpenBitSet::fastClear | ( | int64_t | index) |
Clears a bit. The index should be less than the OpenBitSet size.
void Lucene::OpenBitSet::fastFlip | ( | int32_t | index) |
Flips a bit. The index should be less than the OpenBitSet size.
void Lucene::OpenBitSet::fastFlip | ( | int64_t | index) |
Flips a bit. The index should be less than the OpenBitSet size.
bool Lucene::OpenBitSet::fastGet | ( | int32_t | index) |
Returns true or false for the specified bit index. The index should be less than the OpenBitSet size.
bool Lucene::OpenBitSet::fastGet | ( | int64_t | index) |
Returns true or false for the specified bit index. The index should be less than the OpenBitSet size.
void Lucene::OpenBitSet::fastSet | ( | int32_t | index) |
Sets the bit at the specified index. The index should be less than the OpenBitSet size.
void Lucene::OpenBitSet::fastSet | ( | int64_t | index) |
Sets the bit at the specified index. The index should be less than the OpenBitSet size.
void Lucene::OpenBitSet::flip | ( | int64_t | index) |
Flips a bit, expanding the set size if necessary.
void Lucene::OpenBitSet::flip | ( | int64_t | startIndex, |
int64_t | endIndex | ||
) |
Flips a range of bits, expanding the set size if necessary.
startIndex | lower index |
endIndex | one-past the last bit to flip |
bool Lucene::OpenBitSet::flipAndGet | ( | int32_t | index) |
Flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size.
bool Lucene::OpenBitSet::flipAndGet | ( | int64_t | index) |
Flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size.
bool Lucene::OpenBitSet::get | ( | int32_t | index) |
Returns true or false for the specified bit index.
bool Lucene::OpenBitSet::get | ( | int64_t | index) |
Returns true or false for the specified bit index.
bool Lucene::OpenBitSet::getAndSet | ( | int32_t | index) |
Sets a bit and returns the previous value. The index should be less than the OpenBitSet size.
bool Lucene::OpenBitSet::getAndSet | ( | int64_t | index) |
Sets a bit and returns the previous value. The index should be less than the OpenBitSet size.
int32_t Lucene::OpenBitSet::getBit | ( | int32_t | index) |
Returns 1 if the bit is set, 0 if not. The index should be less than the OpenBitSet size.
LongArray Lucene::OpenBitSet::getBits | ( | ) |
Returns the long[] storing the bits.
|
inlinevirtual |
Reimplemented from Lucene::DocIdSet.
Reimplemented in Lucene::OpenBitSetDISI.
int32_t Lucene::OpenBitSet::getNumWords | ( | ) |
Gets the number of longs in the array that are in use.
|
virtual |
Return hash code for this object.
Reimplemented from Lucene::LuceneObject.
void Lucene::OpenBitSet::intersect | ( | OpenBitSetPtr | other) |
this = this AND other
|
static |
Returns the popcount or cardinality of the intersection of the two sets. Neither set is modified.
bool Lucene::OpenBitSet::intersects | ( | OpenBitSetPtr | other) |
Returns true if the sets have any elements in common.
|
virtual |
This DocIdSet implementation is cacheable.
Reimplemented from Lucene::DocIdSet.
bool Lucene::OpenBitSet::isEmpty | ( | ) |
Returns true if there are no set bits.
|
virtual |
Provides a DocIdSetIterator to access the set. This implementation can return null or EmptyDocIdSet.iterator() if there are no docs that match.
Implements Lucene::DocIdSet.
int32_t Lucene::OpenBitSet::nextSetBit | ( | int32_t | index) |
Returns the index of the first set bit starting at the index specified. -1 is returned if there are no more set bits.
int64_t Lucene::OpenBitSet::nextSetBit | ( | int64_t | index) |
Returns the index of the first set bit starting at the index specified. -1 is returned if there are no more set bits.
void Lucene::OpenBitSet::remove | ( | OpenBitSetPtr | other) |
Remove all elements set in other. this = this AND_NOT other.
void Lucene::OpenBitSet::set | ( | int64_t | index) |
Sets a bit, expanding the set size if necessary.
void Lucene::OpenBitSet::set | ( | int64_t | startIndex, |
int64_t | endIndex | ||
) |
Sets a range of bits, expanding the set size if necessary.
startIndex | lower index |
endIndex | one-past the last bit to set |
void Lucene::OpenBitSet::setBits | ( | LongArray | bits) |
Sets a new long[] to use as the bit storage.
void Lucene::OpenBitSet::setNumWords | ( | int32_t | numWords) |
Sets the number of longs in the array that are in use.
|
inline |
int64_t Lucene::OpenBitSet::size | ( | ) |
Returns the current capacity of this set. Included for compatibility. This is not equal to cardinality.
void Lucene::OpenBitSet::trimTrailingZeros | ( | ) |
Lowers numWords, the number of words in use, by checking for trailing zero words.
|
static |
Returns the popcount or cardinality of the union of the two sets. Neither set is modified.
|
static |
Returns the popcount or cardinality of the exclusive-or of the two sets. Neither set is modified.
|
protected |
|
protected |