add IntVector.getMaxIndex()

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1821 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
sjfink 2007-10-04 15:47:15 +00:00
parent 3efa160e7a
commit 516adf98aa
4 changed files with 27 additions and 11 deletions

View File

@ -19,15 +19,13 @@ import com.ibm.wala.util.debug.VerboseAction;
*/
public interface IntVector extends VerboseAction {
/**
* @param x
*/
int get(int x);
/**
* @param x
* @param value
*/
void set(int x, int value);
/**
* @return max i s.t set(i) was called.
*/
public abstract int getMaxIndex();
}

View File

@ -25,14 +25,13 @@ public class SimpleIntVector implements IntVector {
private final static float GROWTH_FACTOR = 1.5f;
private final static int INITIAL_SIZE = 1;
int maxIndex = -1;
int[] store;
final int defaultValue;
/**
* @param defaultValue
*/
public SimpleIntVector(int defaultValue) {
this.defaultValue = defaultValue;
store = new int[getInitialSize()];
@ -74,6 +73,7 @@ public class SimpleIntVector implements IntVector {
if (Assertions.verifyAssertions) {
Assertions._assert(x >= 0);
}
maxIndex = Math.max(maxIndex,x);
if (value == defaultValue) {
if (x >= store.length) {
return;
@ -121,5 +121,9 @@ public class SimpleIntVector implements IntVector {
int count = count1;
return (double) count / (double) store.length;
}
public int getMaxIndex() {
return maxIndex;
}
}

View File

@ -26,6 +26,7 @@ public class SparseIntVector implements IntVector {
private final static int INITIAL_SIZE = 5;
private final double EXPANSION = 1.5;
int maxIndex = -1;
/**
* if indices[i] = x, then data[i] == get(x)
@ -57,6 +58,7 @@ public class SparseIntVector implements IntVector {
* @see com.ibm.wala.util.intset.IntVector#set(int, int)
*/
public void set(int x, int value) {
maxIndex = Math.max(maxIndex,x);
int index = indices.getIndex(x);
if (index == -1) {
indices.add(x);
@ -84,6 +86,10 @@ public class SparseIntVector implements IntVector {
Trace.println(getClass() + " stats: ");
Trace.println("data.length " + data.length);
Trace.println("indices.size() " + indices.size());
}
public int getMaxIndex() {
return maxIndex;
}
}

View File

@ -25,6 +25,8 @@ public class TwoLevelIntVector implements IntVector {
private static final int PAGE_SIZE = 4096;
private static final int LOG_PAGE_SIZE = Logs.log2(PAGE_SIZE);
int maxIndex = -1;
/**
* Array of IntVector: data.get(i) holds data[i*PAGE_SIZE] ...
@ -72,6 +74,7 @@ public class TwoLevelIntVector implements IntVector {
* @see com.ibm.wala.util.intset.IntVector#set(int, int)
*/
public void set(int x, int value) {
maxIndex = Math.max(maxIndex,x);
int page = getPageNumber(x);
IntVector v = findOrCreatePage(page);
int localX = toLocalIndex(x, page);
@ -101,5 +104,10 @@ public class TwoLevelIntVector implements IntVector {
Trace.println("stats of " + getClass());
Trace.println("data: size = " + data.size());
}
public int getMaxIndex() {
return maxIndex;
}
}