# BitSet

`class BitSet`

A vector of bits growing if necessary and allowing one to set/clear/read bits from it by a bit index.

### Constructors

#### <init>

Creates a bit set of given length filling elements using initializer

`BitSet(length: Int, initializer: (Int) -> Boolean)`

creates an empty bit set with the specified size

`BitSet(size: Int = ELEMENT_SIZE)`

### Properties

#### isEmpty

True if this BitSet contains no bits set to true.

`val isEmpty: Boolean`

#### lastTrueIndex

Returns an index of the last bit that has `true`

value. Returns -1 if the set is empty.

`val lastTrueIndex: Int`

#### size

Actual number of bits available in the set. All bits with indices >= size assumed to be 0

`var size: Int`

### Functions

#### clear

Clears the bits with indices between from (inclusive) and to (exclusive) to the specified value.

`fun clear(from: Int, to: Int)`

Sets all bits in the BitSet to `false`

.

`fun clear()`

#### equals

Indicates whether some other object is "equal to" this one. Implementations must fulfil the following requirements:

`fun equals(other: Any?): Boolean`

#### flip

Reverses the bit specified.

`fun flip(index: Int)`

Reverses the bits with indices between from (inclusive) and to (exclusive).

`fun flip(from: Int, to: Int)`

Reverses the bits from the range specified.

`fun flip(range: IntRange)`

#### hashCode

Returns a hash code value for the object. The general contract of hashCode is:

`fun hashCode(): Int`

#### intersects

Returns true if the specified BitSet has any bits set to true that are also set to true in this BitSet.

`fun intersects(another: BitSet): Boolean`

#### nextClearBit

Returns an index of a next bit which value is `false`

after startIndex (inclusive).
Returns size if there is no such bits between startIndex and size - 1 assuming that the set has an infinite
sequence of `false`

bits after (size - 1)-th.

`fun nextClearBit(startIndex: Int = 0): Int`

#### nextSetBit

Returns an index of a next bit which value is `true`

after startIndex (inclusive).
Returns -1 if there is no such bits after startIndex.

`fun nextSetBit(startIndex: Int = 0): Int`

#### previousBit

Returns the biggest index of a bit which value is lookFor before startIndex (inclusive). Returns -1 if there is no such bits before startIndex. If startIndex >= size returns -1

`fun previousBit(startIndex: Int, lookFor: Boolean): Int`

#### previousClearBit

Returns the biggest index of a bit which value is `false`

before startIndex (inclusive).
Returns -1 if there is no such bits before startIndex or if startIndex == -1.
If startIndex >= size will return startIndex assuming that the set has an infinite
sequence of `false`

bits after (size - 1)-th.

`fun previousClearBit(startIndex: Int): Int`

#### previousSetBit

Returns the biggest index of a bit which value is `true`

before startIndex (inclusive).
Returns -1 if there is no such bits before startIndex or if startIndex == -1.
If startIndex >= size will search from (size - 1)-th bit.

`fun previousSetBit(startIndex: Int): Int`

#### set

Set the bit specified to the specified value.

`fun set(index: Int, value: Boolean = true)`

Sets the bits with indices between from (inclusive) and to (exclusive) to the specified value.

`fun set(from: Int, to: Int, value: Boolean = true)`

Sets the bits from the range specified to the specified value.

`fun set(range: IntRange, value: Boolean = true)`

#### toString

Returns a string representation of the object.

`fun toString(): String`