org.jmol.util
Class FastBitSet

java.lang.Object
  extended by org.jmol.util.FastBitSet
All Implemented Interfaces:
Cloneable

public class FastBitSet
extends Object
implements Cloneable


Field Summary
private  int[] bitmap
           
private static int[] emptyBitmap
           
static FastBitSet emptySet
           
private static int F_ADDRESS_BITS_PER_WORD
          miguel 8 Feb 2010 Below are implementations of bitmap functionality on top of arrays.
private static int F_BIT_INDEX_MASK
           
private static int F_BITS_PER_WORD
           
private static int F_INT_ALL_BITS_SET
           
 
Constructor Summary
  FastBitSet()
           
  FastBitSet(FastBitSet bitsetToCopy)
           
private FastBitSet(int bitCount)
           
 
Method Summary
static FastBitSet allocateBitmap(int bitCount)
           
 void and(FastBitSet setAnd)
           
 void andNot(FastBitSet setAndNot)
           
private static void bitmapAnd(int[] bitmap, int[] bitmapAnd)
           
private static void bitmapAndNot(int[] bitmap, int[] bitmapAndNot)
           
private static void bitmapClear(int[] bitmap)
           
private static void bitmapClearBit(int[] bitmap, int i)
           
private static void bitmapClearRange(int[] bitmap, int iStart, int bitCount)
           
private static boolean bitmapGetBit(int[] bitmap, int i)
           
private static int bitmapGetCardinality(int[] bitmap)
           
private static int bitmapGetMinimumWordCount(int[] bitmap)
           
private static int bitmapGetSizeInBits(int[] bitmap)
           
private static boolean bitmapIsEmpty(int[] bitmap)
           
private static boolean bitmapIsEqual(int[] bitmap1, int[] bitmap2)
           
private static int bitmapNextSetBit(int[] bitmap, int fromIndex)
           
private static void bitmapOr(int[] bitmap, int[] bitmapOr)
           
private static void bitmapSetBit(int[] bitmap, int i)
           
private static void bitmapSetRange(int[] bitmap, int iStart, int bitCount)
           
private static void bitmapXor(int[] bitmap, int[] bitmapXor)
           
 int cardinality()
           
 int cardinality(int max)
           
 void clear()
           
 void clear(int bitIndex)
           
 void clear(int fromIndex, int toIndex)
           
 Object clone()
           
private static int countBitsInWord(int word)
           
private static int[] ensureSufficientBits(int[] bitmap, int minimumBitCount)
           
private static int[] ensureSufficientWords(int[] bitmap, int minimumWordCount)
           
 boolean equals(Object obj)
           
 void flip(int bitIndex)
           
 void flip(int fromIndex, int toIndex)
           
 boolean get(int bitIndex)
           
static FastBitSet getEmptySet()
           
private static int getWordCountFromBitCount(int bitCount)
           
 int hashCode()
           
 boolean isEmpty()
           
 int length()
           
 int nextSetBit(int fromIndex)
           
private static int numberOfLeadingZeros(int i)
           
 void or(FastBitSet setOr)
           
 void set(int bitIndex)
           
 void set(int bitIndex, boolean value)
           
 void set(int fromIndex, int toIndex)
           
 void set(int fromIndex, int toIndex, boolean value)
           
 int size()
           
 BitSet toBitSet()
           
 String toString()
           
 void xor(FastBitSet setXor)
           
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

bitmap

private int[] bitmap

emptyBitmap

private static final int[] emptyBitmap

emptySet

public static final FastBitSet emptySet

F_ADDRESS_BITS_PER_WORD

private static final int F_ADDRESS_BITS_PER_WORD
miguel 8 Feb 2010 Below are implementations of bitmap functionality on top of arrays. Around 2002 I chose to go with int[] instead of long[] because I felt it would give better performance on contemporary hardware. I think that is probably still the case. At some point over the next few years this can be changed to long[]. Since these methods are marked private final static the compiler can make easy/good decisions about which ones to open code inline.

See Also:
Constant Field Values

F_BITS_PER_WORD

private static final int F_BITS_PER_WORD
See Also:
Constant Field Values

F_BIT_INDEX_MASK

private static final int F_BIT_INDEX_MASK
See Also:
Constant Field Values

F_INT_ALL_BITS_SET

private static final int F_INT_ALL_BITS_SET
See Also:
Constant Field Values
Constructor Detail

FastBitSet

public FastBitSet()

FastBitSet

private FastBitSet(int bitCount)

FastBitSet

public FastBitSet(FastBitSet bitsetToCopy)
Method Detail

getEmptySet

public static final FastBitSet getEmptySet()

allocateBitmap

public static FastBitSet allocateBitmap(int bitCount)

and

public void and(FastBitSet setAnd)

andNot

public void andNot(FastBitSet setAndNot)

cardinality

public int cardinality()

cardinality

public int cardinality(int max)
Parameters:
max -
Returns:
n bits below max

clear

public void clear()

clear

public void clear(int bitIndex)

clear

public void clear(int fromIndex,
                  int toIndex)

clone

public Object clone()
Overrides:
clone in class Object

equals

public boolean equals(Object obj)
Overrides:
equals in class Object

flip

public void flip(int bitIndex)

flip

public void flip(int fromIndex,
                 int toIndex)

get

public boolean get(int bitIndex)

isEmpty

public boolean isEmpty()

length

public int length()

nextSetBit

public int nextSetBit(int fromIndex)

or

public void or(FastBitSet setOr)

set

public void set(int bitIndex)

set

public void set(int bitIndex,
                boolean value)

set

public void set(int fromIndex,
                int toIndex)

set

public void set(int fromIndex,
                int toIndex,
                boolean value)

size

public int size()

xor

public void xor(FastBitSet setXor)

toBitSet

public BitSet toBitSet()

toString

public String toString()
Overrides:
toString in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

bitmapGetBit

private static final boolean bitmapGetBit(int[] bitmap,
                                          int i)

bitmapSetBit

private static final void bitmapSetBit(int[] bitmap,
                                       int i)

bitmapClearBit

private static final void bitmapClearBit(int[] bitmap,
                                         int i)

bitmapSetRange

private static final void bitmapSetRange(int[] bitmap,
                                         int iStart,
                                         int bitCount)

bitmapClearRange

private static final void bitmapClearRange(int[] bitmap,
                                           int iStart,
                                           int bitCount)

bitmapClear

private static final void bitmapClear(int[] bitmap)

bitmapGetMinimumWordCount

private static final int bitmapGetMinimumWordCount(int[] bitmap)

bitmapGetSizeInBits

private static final int bitmapGetSizeInBits(int[] bitmap)

getWordCountFromBitCount

private static final int getWordCountFromBitCount(int bitCount)

bitmapAnd

private static final void bitmapAnd(int[] bitmap,
                                    int[] bitmapAnd)

bitmapAndNot

private static final void bitmapAndNot(int[] bitmap,
                                       int[] bitmapAndNot)

bitmapOr

private static final void bitmapOr(int[] bitmap,
                                   int[] bitmapOr)

bitmapXor

private static final void bitmapXor(int[] bitmap,
                                    int[] bitmapXor)

bitmapNextSetBit

private static final int bitmapNextSetBit(int[] bitmap,
                                          int fromIndex)

bitmapGetCardinality

private static final int bitmapGetCardinality(int[] bitmap)

countBitsInWord

private static final int countBitsInWord(int word)

bitmapIsEqual

private static final boolean bitmapIsEqual(int[] bitmap1,
                                           int[] bitmap2)

bitmapIsEmpty

private static final boolean bitmapIsEmpty(int[] bitmap)

numberOfLeadingZeros

private static final int numberOfLeadingZeros(int i)

ensureSufficientBits

private static final int[] ensureSufficientBits(int[] bitmap,
                                                int minimumBitCount)

ensureSufficientWords

private static final int[] ensureSufficientWords(int[] bitmap,
                                                 int minimumWordCount)