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. | |
OpenBitSet (LongArray bits, int32_t numWords) | |
Constructs an OpenBitSet from an existing LongArray. | |
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. | |
virtual bool | isCacheable () |
This DocIdSet implementation is cacheable. | |
int64_t | capacity () |
Returns the current capacity in bits (1 greater than the index of the last bit) | |
int64_t | size () |
Returns the current capacity of this set. Included for compatibility. This is not equal to cardinality . | |
bool | isEmpty () |
Returns true if there are no set bits. | |
LongArray | getBits () |
Returns the long[] storing the bits. | |
void | setBits (LongArray bits) |
Sets a new long[] to use as the bit storage. | |
int32_t | getNumWords () |
Gets the number of longs in the array that are in use. | |
void | setNumWords (int32_t numWords) |
Sets the number of longs in the array that are in use. | |
bool | get (int32_t index) |
Returns true or false for the specified bit index. | |
bool | fastGet (int32_t index) |
Returns true or false for the specified bit index. The index should be less than the OpenBitSet size. | |
bool | get (int64_t index) |
Returns true or false for the specified bit index. | |
bool | fastGet (int64_t index) |
Returns true or false for the specified bit index. The index should be less than the OpenBitSet size. | |
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. | |
void | set (int64_t index) |
Sets a bit, expanding the set size if necessary. | |
void | fastSet (int32_t index) |
Sets the bit at the specified index. The index should be less than the OpenBitSet size. | |
void | fastSet (int64_t index) |
Sets the bit at the specified index. The index should be less than the OpenBitSet size. | |
void | set (int64_t startIndex, int64_t endIndex) |
Sets a range of bits, expanding the set size if necessary. | |
void | fastClear (int32_t index) |
Clears a bit. The index should be less than the OpenBitSet size. | |
void | fastClear (int64_t index) |
Clears a bit. The index should be less than the OpenBitSet size. | |
void | clear (int64_t index) |
Clears a bit, allowing access beyond the current set size without changing the size. | |
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. | |
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. | |
bool | getAndSet (int32_t index) |
Sets a bit and returns the previous value. The index should be less than the OpenBitSet size. | |
bool | getAndSet (int64_t index) |
Sets a bit and returns the previous value. The index should be less than the OpenBitSet size. | |
void | fastFlip (int32_t index) |
Flips a bit. The index should be less than the OpenBitSet size. | |
void | fastFlip (int64_t index) |
Flips a bit. The index should be less than the OpenBitSet size. | |
void | flip (int64_t index) |
Flips a bit, expanding the set size if necessary. | |
bool | flipAndGet (int32_t index) |
Flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size. | |
bool | flipAndGet (int64_t index) |
Flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size. | |
void | flip (int64_t startIndex, int64_t endIndex) |
Flips a range of bits, expanding the set size if necessary. | |
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. | |
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. | |
virtual LuceneObjectPtr | clone (const LuceneObjectPtr &other=LuceneObjectPtr()) |
Return clone of this object. | |
void | intersect (const OpenBitSetPtr &other) |
this = this AND other | |
void | _union (const OpenBitSetPtr &other) |
this = this OR other | |
void | remove (const OpenBitSetPtr &other) |
Remove all elements set in other. this = this AND_NOT other. | |
void | _xor (const OpenBitSetPtr &other) |
this = this XOR other | |
void | _and (const OpenBitSetPtr &other) |
see intersect | |
void | _or (const OpenBitSetPtr &other) |
see union | |
void | andNot (const OpenBitSetPtr &other) |
see remove | |
bool | intersects (const OpenBitSetPtr &other) |
Returns true if the sets have any elements in common. | |
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. | |
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. | |
void | trimTrailingZeros () |
Lowers numWords, the number of words in use, by checking for trailing zero words. | |
virtual bool | equals (const LuceneObjectPtr &other) |
Returns true if both sets have the same bits set. | |
virtual int32_t | hashCode () |
Return hash code for this object. | |
![]() | |
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. | |
virtual int32_t | compareTo (const LuceneObjectPtr &other) |
Compare two objects. | |
virtual String | toString () |
Returns a string representation of the object. | |
![]() | |
virtual | ~LuceneSync () |
virtual SynchronizePtr | getSync () |
Return this object synchronize lock. | |
virtual LuceneSignalPtr | getSignal () |
Return this object signal. | |
virtual void | lock (int32_t timeout=0) |
Lock this object using an optional timeout. | |
virtual void | unlock () |
Unlock this object. | |
virtual bool | holdsLock () |
Returns true if this object is currently locked by current thread. | |
virtual void | wait (int32_t timeout=0) |
Wait for signal using an optional timeout. | |
virtual void | notifyAll () |
Notify all threads waiting for signal. | |
Static Public Member Functions | |
static String | _getClassName () |
static int64_t | intersectionCount (const OpenBitSetPtr &a, const OpenBitSetPtr &b) |
Returns the popcount or cardinality of the intersection of the two sets. Neither set is modified. | |
static int64_t | unionCount (const OpenBitSetPtr &a, const OpenBitSetPtr &b) |
Returns the popcount or cardinality of the union of the two sets. Neither set is modified. | |
static int64_t | andNotCount (const OpenBitSetPtr &a, const OpenBitSetPtr &b) |
Returns the popcount or cardinality of "a and not b" or "intersection(a, not(b))". Neither set is modified. | |
static int64_t | xorCount (const OpenBitSetPtr &a, const OpenBitSetPtr &b) |
Returns the popcount or cardinality of the exclusive-or of the two sets. Neither set is modified. | |
static int32_t | bits2words (int64_t numBits) |
Returns the number of 64 bit words it would take to hold numBits. | |
![]() | |
static String | _getClassName () |
static DocIdSetPtr | EMPTY_DOCIDSET () |
An empty {. | |
Protected Member Functions | |
int32_t | expandingWordNum (int64_t index) |
![]() | |
LuceneObject () | |
Protected Attributes | |
LongArray | bits |
int32_t | wlen |
![]() | |
SynchronizePtr | objectLock |
LuceneSignalPtr | objectSignal |
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 | ( | const OpenBitSetPtr & | other | ) |
see intersect
|
inlinestatic |
void Lucene::OpenBitSet::_or | ( | const OpenBitSetPtr & | other | ) |
see union
void Lucene::OpenBitSet::_union | ( | const OpenBitSetPtr & | other | ) |
this = this OR other
void Lucene::OpenBitSet::_xor | ( | const OpenBitSetPtr & | other | ) |
this = this XOR other
void Lucene::OpenBitSet::andNot | ( | const 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 | ( | 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 | index | ) |
Clears a bit, allowing access beyond the current set size without changing the size.
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 | ( | const 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 | ( | const 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 | ( | const 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 |