com.ibm.wala.util.intset
Class MutableSparseIntSet

java.lang.Object
  extended by com.ibm.wala.util.intset.SparseIntSet
      extended by com.ibm.wala.util.intset.MutableSparseIntSet
All Implemented Interfaces:
IntSet, MutableIntSet
Direct Known Subclasses:
TunedMutableSparseIntSet

public class MutableSparseIntSet
extends SparseIntSet
implements MutableIntSet

A sparse ordered, mutable duplicate-free, fully-encapsulated set of integers. Instances are not canonical, except for EMPTY. This implementation will be inefficient if these sets get large. TODO: even for small sets, we probably want to work on this to reduce the allocation activity.


Field Summary
 
Fields inherited from class com.ibm.wala.util.intset.SparseIntSet
elements, size
 
Constructor Summary
protected MutableSparseIntSet()
           
  MutableSparseIntSet(int initialCapacity)
          Create an empty set with a non-zero capacity
  MutableSparseIntSet(int[] backingStore)
           
 
Method Summary
 boolean add(int value)
          Add an integer value to this set.
 boolean addAll(IntSet set)
          Add all elements from another int set.
 boolean addAll(SparseIntSet that)
          Add all elements from another int set.
 boolean addAllInIntersection(IntSet other, IntSet filter)
           
 void copySet(IntSet that)
          Set the value of this to be the same as the value of set
static MutableSparseIntSet diff(MutableSparseIntSet A, MutableSparseIntSet B)
           
 float getExpansionFactor()
           
 int getInitialNonEmptySize()
           
 void intersectWith(IntSet set)
          Interset this with another set.
 void intersectWith(SparseIntSet set)
           
static MutableSparseIntSet make(IntSet set)
           
static MutableSparseIntSet makeEmpty()
           
 boolean remove(int value)
          Remove an integer from this set.
 void removeAll(BitVectorIntSet v)
           
 void removeAll(MutableSparseIntSet set)
          TODO optimize
<T extends BitVectorBase<T>>
void
removeAll(T v)
           
 
Methods inherited from class com.ibm.wala.util.intset.SparseIntSet
add, contains, containsAny, containsAny, diff, diffInternal, elementAt, foreach, foreachExcluding, getIndex, intersection, intIterator, isEmpty, isSubset, max, pair, parseIntArray, sameValue, singleton, size, toIntArray, toString, union
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.ibm.wala.util.intset.IntSet
contains, containsAny, foreach, foreachExcluding, intersection, intIterator, isEmpty, isSubset, max, sameValue, size, union
 

Constructor Detail

MutableSparseIntSet

public MutableSparseIntSet(int[] backingStore)

MutableSparseIntSet

public MutableSparseIntSet(int initialCapacity)
                    throws java.lang.IllegalArgumentException
Create an empty set with a non-zero capacity

Parameters:
initialCapacity -
Throws:
java.lang.IllegalArgumentException

MutableSparseIntSet

protected MutableSparseIntSet()
Method Detail

remove

public boolean remove(int value)
Description copied from interface: MutableIntSet
Remove an integer from this set.

Specified by:
remove in interface MutableIntSet
Parameters:
value - integer to remove
Returns:
true iff the value of this changes.

getInitialNonEmptySize

public int getInitialNonEmptySize()

getExpansionFactor

public float getExpansionFactor()

add

public boolean add(int value)
Description copied from interface: MutableIntSet
Add an integer value to this set.

Specified by:
add in interface MutableIntSet
Parameters:
value -
Returns:
true iff this value changes

copySet

public void copySet(IntSet that)
             throws java.lang.IllegalArgumentException
Description copied from interface: MutableIntSet
Set the value of this to be the same as the value of set

Specified by:
copySet in interface MutableIntSet
Throws:
java.lang.IllegalArgumentException - if that == null

intersectWith

public void intersectWith(IntSet set)
Description copied from interface: MutableIntSet
Interset this with another set.

Specified by:
intersectWith in interface MutableIntSet

intersectWith

public void intersectWith(SparseIntSet set)

addAll

public boolean addAll(IntSet set)
               throws java.lang.IllegalArgumentException
Add all elements from another int set.

Specified by:
addAll in interface MutableIntSet
Returns:
true iff this set changes
Throws:
java.lang.IllegalArgumentException - if set == null

addAll

public boolean addAll(SparseIntSet that)
Add all elements from another int set.

Parameters:
that -
Returns:
true iff this set changes

removeAll

public void removeAll(BitVectorIntSet v)
Parameters:
v -

removeAll

public <T extends BitVectorBase<T>> void removeAll(T v)

removeAll

public void removeAll(MutableSparseIntSet set)
TODO optimize

Parameters:
set -
Throws:
java.lang.IllegalArgumentException - if set is null

addAllInIntersection

public boolean addAllInIntersection(IntSet other,
                                    IntSet filter)
Specified by:
addAllInIntersection in interface MutableIntSet

diff

public static MutableSparseIntSet diff(MutableSparseIntSet A,
                                       MutableSparseIntSet B)

make

public static MutableSparseIntSet make(IntSet set)

makeEmpty

public static MutableSparseIntSet makeEmpty()