X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Futil%2FVec.java;fp=src%2Forg%2Fxwt%2Futil%2FVec.java;h=ac8b149204a8bbc4a97037df2ecf551b859d6fc1;hb=78f74e193fcc871be406d5cde191818224b8e249;hp=0000000000000000000000000000000000000000;hpb=6242c991f365dbd67eba62ecfa5df769a83fcbc6;p=org.ibex.core.git diff --git a/src/org/xwt/util/Vec.java b/src/org/xwt/util/Vec.java new file mode 100644 index 0000000..ac8b149 --- /dev/null +++ b/src/org/xwt/util/Vec.java @@ -0,0 +1,102 @@ +// Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL] +package org.xwt.util; + +import java.util.*; +import java.io.*; + +/** + * An unsynchronized Vector implementation; same semantics as + * java.util.Vector. Useful for JDK1.1 platforms that don't have + * java.util.ArrayList. + * @see java.util.Vector + */ +public class Vec implements Serializable { + + private Object[] store; + private int size = 0; + + public Vec() { this(10); } + public Vec(int i) { store = new Object[i]; } + + private void grow() { grow(store.length * 2); } + private void grow(int newsize) { + Object[] newstore = new Object[newsize]; + System.arraycopy(store, 0, newstore, 0, size); + store = newstore; + } + + public void removeAllElements() { + for(int i=0; i= store.length) grow(); + store[size++] = o; + } + + public Object elementAt(int i) { + return store[i]; + } + + public Object lastElement() { + if (size == 0) return null; + return store[size - 1]; + } + + public int size() { return size; } + + public void setSize(int newSize) { + if (newSize < 0) throw new RuntimeException("tried to set size to negative value"); + if (newSize > size) grow(newSize * 2); + if (newSize < size) + for(int i=newSize; i= size || i < 0) throw new RuntimeException("tried to remove an element outside the vector's limits"); + for(int j=i; j= size) setSize(i); + store[i] = o; + } + + public void removeElement(Object o) { + for(int i=0; iat; i--) + store[i] = store[i-1]; + store[at] = o; + size++; + } + +}