/*------------------------------------------------------------------------------ * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team * * Distributable under the terms of either the Apache License (Version 2.0) or * the GNU Lesser General Public License, as specified in the COPYING file. ------------------------------------------------------------------------------*/ #ifndef _lucene_util_BitSet_ #define _lucene_util_BitSet_ CL_CLASS_DEF(store,Directory) CL_CLASS_DEF(store,IndexInput) CL_CLASS_DEF(store,IndexOutput) CL_NS_DEF(util) /** Optimized implementation of a vector of bits. This is more-or-less like java.util.BitSet, but also includes the following:
To iterate over the {@code true} bits in a {@code BitSet}, * use the following loop: * *
{@code
* for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) {
* // operate on index i here
* }}
*
* @param fromIndex the index to start checking from (inclusive)
* @return the index of the next set bit, or {@code -1} if there
* is no such bit
* @throws IndexOutOfBounds if the specified index is negative
*
*/
int32_t nextSetBit(int32_t fromIndex) const;
///set the value of the specified bit
void set(const int32_t bit, bool val=true);
///returns the size of the bitset
int32_t size() const;
/// Returns the total number of one bits in this BitSet. This is efficiently
/// computed and cached, so that, if the BitSet is not changed, no
/// recomputation is done for repeated calls.
int32_t count();
BitSet *clone() const;
};
typedef BitSet BitVector; //Lucene now calls the BitSet a BitVector...
CL_NS_END
#endif