antlr.collections.impl

Class BitSet

public class BitSet extends Object implements Cloneable

A BitSet to replace java.util.BitSet. Primary differences are that most set operators return new sets as opposed to oring and anding "in place". Further, a number of operations were added. I cannot contain a BitSet because there is no way to access the internal bits (which I need for speed) and, because it is final, I cannot subclass to add functionality. Consider defining set degree. Without access to the bits, I must call a method n times to test the ith bit...ack! Also seems like or() from util is wrong when size of incoming set is bigger than this.bits.length.

Author: Terence Parr
Pete Wells

Field Summary
protected long[]bits
The actual data bits
protected static intBITS
protected static intLOG_BITS
protected static intMOD_MASK
protected static intNIBBLE
Constructor Summary
BitSet()
Construct a bitset of size one word (64 bits)
BitSet(long[] bits_)
Construction from a static array of longs
BitSet(int nbits)
Construct a bitset given the size
Method Summary
voidadd(int el)
or this element into this set (grow as necessary to accommodate)
BitSetand(BitSet a)
voidandInPlace(BitSet a)
voidclear()
voidclear(int el)
Objectclone()
intdegree()
booleanequals(Object obj)
code "inherited" from java.util.BitSet
static VectorgetRanges(int[] elems)
Find ranges in a set element array.
voidgrowToInclude(int bit)
Grows the set to a larger number of bits.
intlengthInLongWords()
return how much space is being used by the bits array not how many actually have member bits on.
booleanmember(int el)
booleannil()
BitSetnot()
voidnotInPlace()
voidnotInPlace(int maxBit)
complement bits in the range 0..maxBit.
voidnotInPlace(int minBit, int maxBit)
complement bits in the range minBit..maxBit.
static BitSetof(int el)
BitSetor(BitSet a)
return this | a in a new set
voidorInPlace(BitSet a)
voidremove(int el)
intsize()
booleansubset(BitSet a)
Is this contained within a?
voidsubtractInPlace(BitSet a)
Subtract the elements of 'a' from 'this' in-place.
int[]toArray()
long[]toPackedArray()
StringtoString()
StringtoString(String separator)
Transform a bit set into a string by formatting each element as an integer
StringtoString(String separator, CharFormatter formatter)
Transform a bit set into a string of characters.
StringtoString(String separator, Vector vocabulary)
Create a string representation where instead of integer elements, the ith element of vocabulary is displayed instead.
StringtoStringOfHalfWords()
Dump a comma-separated list of the words making up the bit set.
StringtoStringOfWords()
Dump a comma-separated list of the words making up the bit set.
StringtoStringWithRanges(String separator, CharFormatter formatter)
Print out the bit set but collapse char ranges.

Field Detail

bits

protected long[] bits
The actual data bits

BITS

protected static final int BITS

LOG_BITS

protected static final int LOG_BITS

MOD_MASK

protected static final int MOD_MASK

NIBBLE

protected static final int NIBBLE

Constructor Detail

BitSet

public BitSet()
Construct a bitset of size one word (64 bits)

BitSet

public BitSet(long[] bits_)
Construction from a static array of longs

BitSet

public BitSet(int nbits)
Construct a bitset given the size

Parameters: nbits The size of the bitset in bits

Method Detail

add

public void add(int el)
or this element into this set (grow as necessary to accommodate)

and

public BitSet and(BitSet a)

andInPlace

public void andInPlace(BitSet a)

clear

public void clear()

clear

public void clear(int el)

clone

public Object clone()

degree

public int degree()

equals

public boolean equals(Object obj)
code "inherited" from java.util.BitSet

getRanges

public static Vector getRanges(int[] elems)
Find ranges in a set element array. @param elems The array of elements representing the set, usually from Bit Set.toArray().

Returns: Vector of ranges.

growToInclude

public void growToInclude(int bit)
Grows the set to a larger number of bits.

Parameters: bit element that must fit in set

lengthInLongWords

public int lengthInLongWords()
return how much space is being used by the bits array not how many actually have member bits on.

member

public boolean member(int el)

nil

public boolean nil()

not

public BitSet not()

notInPlace

public void notInPlace()

notInPlace

public void notInPlace(int maxBit)
complement bits in the range 0..maxBit.

notInPlace

public void notInPlace(int minBit, int maxBit)
complement bits in the range minBit..maxBit.

of

public static BitSet of(int el)

or

public BitSet or(BitSet a)
return this | a in a new set

orInPlace

public void orInPlace(BitSet a)

remove

public void remove(int el)

size

public int size()

subset

public boolean subset(BitSet a)
Is this contained within a?

subtractInPlace

public void subtractInPlace(BitSet a)
Subtract the elements of 'a' from 'this' in-place. Basically, just turn off all bits of 'this' that are in 'a'.

toArray

public int[] toArray()

toPackedArray

public long[] toPackedArray()

toString

public String toString()

toString

public String toString(String separator)
Transform a bit set into a string by formatting each element as an integer

Returns: A commma-separated list of values

UNKNOWN: The string to put in between elements

toString

public String toString(String separator, CharFormatter formatter)
Transform a bit set into a string of characters.

Parameters: formatter An object implementing the CharFormatter interface.

Returns: A commma-separated list of character constants.

UNKNOWN: The string to put in between elements

toString

public String toString(String separator, Vector vocabulary)
Create a string representation where instead of integer elements, the ith element of vocabulary is displayed instead. Vocabulary is a Vector of Strings.

Returns: A commma-separated list of character constants.

UNKNOWN: The string to put in between elements

toStringOfHalfWords

public String toStringOfHalfWords()
Dump a comma-separated list of the words making up the bit set. Split each 64 bit number into two more manageable 32 bit numbers. This generates a comma-separated list of C++-like unsigned long constants.

toStringOfWords

public String toStringOfWords()
Dump a comma-separated list of the words making up the bit set. This generates a comma-separated list of Java-like long int constants.

toStringWithRanges

public String toStringWithRanges(String separator, CharFormatter formatter)
Print out the bit set but collapse char ranges.