Package org.chocosolver.memory.structure
Class S64BitSet
- java.lang.Object
-
- org.chocosolver.memory.structure.S64BitSet
-
- All Implemented Interfaces:
IStateBitSet
public class S64BitSet extends Object implements IStateBitSet
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
BITS_PER_WORD
protected static long
WORD_MASK
protected IStateLong[]
words
The internal field corresponding to the serialField "bits".protected IStateInt
wordsInUse
The number of words in the logical size of this BitSet.
-
Constructor Summary
Constructors Constructor Description S64BitSet(IEnvironment environment)
Creates a new bit set.S64BitSet(IEnvironment environment, int nbits)
Creates a bit set whose initial size is large enough to explicitly represent bits with indices in the range0
throughnbits-1
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
cardinality()
Returns the number of bits set to true in thisBitSet
.void
clear()
Sets all of the bits in this BitSet tofalse
.void
clear(int bitIndex)
Sets the bit specified by the index tofalse
.void
clear(int fromIndex, int toIndex)
Sets the bits from the specified fromIndex (inclusive) to the specified toIndex (exclusive) tofalse
.static <T> T[]
copyOf(T[] original, int newLength)
static <T,U>
T[]copyOf(U[] original, int newLength, Class<? extends T[]> newType)
void
ensureCapacity(int wordsRequired)
Ensures that the BitSet can hold enough words.boolean
equals(Object obj)
boolean
get(int bitIndex)
Returns the value of the bit with the specified index.int
hashCode()
boolean
isEmpty()
Returns true if thisBitSet
contains no bits that are set totrue
.int
length()
Returns the "logical size" of thisBitSet
: the index of the highest set bit in theBitSet
plus one.int
nextClearBit(int fromIndex)
Returns the index of the first bit that is set tofalse
that occurs on or after the specified starting index.int
nextSetBit(int fromIndex)
Returns the index of the first bit that is set totrue
that occurs on or after the specified starting index.int
prevClearBit(int fromIndex)
Returns the index of the nearest bit that is set tofalse
that occurs on or before the specified starting index.int
prevSetBit(int fromIndex)
Returns the index of the nearest bit that is set totrue
that occurs on or before the specified starting index.void
set(int bitIndex)
Sets the bit at the specified index totrue
.void
set(int bitIndex, boolean value)
Sets the bit at the specified index to the specified value.void
set(int fromIndex, int toIndex)
Sets the bits from the specified fromIndex (inclusive) to the specified toIndex (exclusive) totrue
.int
size()
Returns the number of bits of space actually in use by thisBitSet
to represent bit values.String
toString()
protected static int
wordIndex(int bitIndex)
Given a bit index, return word index containing it.
-
-
-
Field Detail
-
BITS_PER_WORD
protected static final int BITS_PER_WORD
- See Also:
- Constant Field Values
-
WORD_MASK
protected static final long WORD_MASK
- See Also:
- Constant Field Values
-
words
protected IStateLong[] words
The internal field corresponding to the serialField "bits".
-
wordsInUse
protected final IStateInt wordsInUse
The number of words in the logical size of this BitSet.
-
-
Constructor Detail
-
S64BitSet
public S64BitSet(IEnvironment environment)
Creates a new bit set. All bits are initiallyfalse
.- Parameters:
environment
- bactrackable environment
-
S64BitSet
public S64BitSet(IEnvironment environment, int nbits)
Creates a bit set whose initial size is large enough to explicitly represent bits with indices in the range0
throughnbits-1
. All bits are initiallyfalse
.- Parameters:
environment
- backtrackable environmentnbits
- the initial size of the bit set.- Throws:
NegativeArraySizeException
- if the specified initial size is negative.
-
-
Method Detail
-
wordIndex
protected static int wordIndex(int bitIndex)
Given a bit index, return word index containing it.- Parameters:
bitIndex
- bit index
-
ensureCapacity
public void ensureCapacity(int wordsRequired)
Ensures that the BitSet can hold enough words.- Parameters:
wordsRequired
- the minimum acceptable number of words.
-
copyOf
public static <T> T[] copyOf(T[] original, int newLength)
-
copyOf
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)
-
set
public void set(int bitIndex)
Sets the bit at the specified index totrue
.- Specified by:
set
in interfaceIStateBitSet
- Parameters:
bitIndex
- a bit index.- Throws:
IndexOutOfBoundsException
- if the specified index is negative.- Since:
- JDK1.0
-
set
public void set(int bitIndex, boolean value)
Sets the bit at the specified index to the specified value.- Specified by:
set
in interfaceIStateBitSet
- Parameters:
bitIndex
- a bit index.value
- a boolean value to set.- Throws:
IndexOutOfBoundsException
- if the specified index is negative.- Since:
- 1.4
-
set
public void set(int fromIndex, int toIndex)
Sets the bits from the specified fromIndex (inclusive) to the specified toIndex (exclusive) totrue
.- Specified by:
set
in interfaceIStateBitSet
- Parameters:
fromIndex
- index of the first bit to be set.toIndex
- index after the last bit to be set.- Throws:
IndexOutOfBoundsException
- if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex.- Since:
- 1.4
-
clear
public void clear(int bitIndex)
Sets the bit specified by the index tofalse
.- Specified by:
clear
in interfaceIStateBitSet
- Parameters:
bitIndex
- the index of the bit to be cleared.- Throws:
IndexOutOfBoundsException
- if the specified index is negative.- Since:
- JDK1.0
-
clear
public void clear(int fromIndex, int toIndex)
Sets the bits from the specified fromIndex (inclusive) to the specified toIndex (exclusive) tofalse
.- Specified by:
clear
in interfaceIStateBitSet
- Parameters:
fromIndex
- index of the first bit to be cleared.toIndex
- index after the last bit to be cleared.- Throws:
IndexOutOfBoundsException
- if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex.- Since:
- 1.4
-
clear
public void clear()
Sets all of the bits in this BitSet tofalse
.- Specified by:
clear
in interfaceIStateBitSet
- Since:
- 1.4
-
get
public final boolean get(int bitIndex)
Returns the value of the bit with the specified index. The value istrue
if the bit with the indexbitIndex
is currently set in thisBitSet
; otherwise, the result isfalse
.- Specified by:
get
in interfaceIStateBitSet
- Parameters:
bitIndex
- the bit index.- Returns:
- the value of the bit with the specified index.
- Throws:
IndexOutOfBoundsException
- if the specified index is negative.
-
nextSetBit
public int nextSetBit(int fromIndex)
Returns the index of the first bit that is set totrue
that occurs on or after the specified starting index. If no such bit exists then-1
is returned.To iterate over the
true
bits in aBitSet
, use the following loop:for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) { // operate on index i here }
- Specified by:
nextSetBit
in interfaceIStateBitSet
- Parameters:
fromIndex
- the index to start checking from (inclusive)- Returns:
- the index of the next set bit, or
-1
if there is no such bit - Throws:
IndexOutOfBoundsException
- if the specified index is negative- Since:
- 1.4
-
nextClearBit
public int nextClearBit(int fromIndex)
Returns the index of the first bit that is set tofalse
that occurs on or after the specified starting index.- Specified by:
nextClearBit
in interfaceIStateBitSet
- Parameters:
fromIndex
- the index to start checking from (inclusive)- Returns:
- the index of the next clear bit
- Throws:
IndexOutOfBoundsException
- if the specified index is negative- Since:
- 1.4
-
prevSetBit
public int prevSetBit(int fromIndex)
Returns the index of the nearest bit that is set totrue
that occurs on or before the specified starting index. If no such bit exists, or if-1
is given as the starting index, then-1
is returned.To iterate over the
true
bits in aBitSet
, use the following loop:for (int i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) { // operate on index i here }
- Specified by:
prevSetBit
in interfaceIStateBitSet
- Parameters:
fromIndex
- the index to start checking from (inclusive)- Returns:
- the index of the previous set bit, or
-1
if there is no such bit - Throws:
IndexOutOfBoundsException
- if the specified index is less than-1
- Since:
- 1.7
-
prevClearBit
public int prevClearBit(int fromIndex)
Returns the index of the nearest bit that is set tofalse
that occurs on or before the specified starting index. If no such bit exists, or if-1
is given as the starting index, then-1
is returned.- Specified by:
prevClearBit
in interfaceIStateBitSet
- Parameters:
fromIndex
- the index to start checking from (inclusive)- Returns:
- the index of the previous clear bit, or
-1
if there is no such bit - Throws:
IndexOutOfBoundsException
- if the specified index is less than-1
- Since:
- 1.7
-
length
public int length()
Returns the "logical size" of thisBitSet
: the index of the highest set bit in theBitSet
plus one. Returns zero if theBitSet
contains no set bits.- Returns:
- the logical size of this
BitSet
. - Since:
- 1.2
-
isEmpty
public boolean isEmpty()
Returns true if thisBitSet
contains no bits that are set totrue
.- Specified by:
isEmpty
in interfaceIStateBitSet
- Returns:
- boolean indicating whether this
BitSet
is empty. - Since:
- 1.4
-
cardinality
public int cardinality()
Returns the number of bits set to true in thisBitSet
.- Specified by:
cardinality
in interfaceIStateBitSet
- Returns:
- the number of bits set to true in this
BitSet
. - Since:
- 1.4
-
size
public int size()
Returns the number of bits of space actually in use by thisBitSet
to represent bit values. The maximum element in the set is the size - 1st element.- Specified by:
size
in interfaceIStateBitSet
- Returns:
- the number of bits currently in this bit set.
-
-