1 // Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL]
8 * An unsynchronized Vector implementation; same semantics as
9 * java.util.Vector. Useful for JDK1.1 platforms that don't have
10 * java.util.ArrayList.
11 * @see java.util.Vector
13 public final class Vec implements Serializable {
15 private Object[] store;
18 public Vec() { this(10); }
19 public Vec(int i) { store = new Object[i]; }
21 private void grow() { grow(store.length * 2); }
22 private void grow(int newsize) {
23 Object[] newstore = new Object[newsize];
24 System.arraycopy(store, 0, newstore, 0, size);
28 public void removeAllElements() {
29 for(int i=0; i<size; i++) store[i] = null;
33 public void toArray(Object[] o) {
34 for(int i=0; i<size; i++)
38 public int indexOf(Object o) {
39 for(int i=0; i<size; i++)
40 if (store[i] == o) return i;
44 public void addElement(Object o) {
45 if (size >= store.length - 1) grow();
49 public Object peek() {
53 public Object elementAt(int i) {
57 public Object lastElement() {
58 if (size == 0) return null;
59 return store[size - 1];
62 public void push(Object o) { addElement(o); }
64 Object ret = lastElement();
65 if (size > 0) store[size--] = null;
69 public int size() { return size; }
71 public void setSize(int newSize) {
72 if (newSize < 0) throw new RuntimeException("tried to set size to negative value");
73 if (newSize > store.length) grow(newSize * 2);
75 for(int i=newSize; i<size; i++)
80 public void copyInto(Object[] out) {
81 for(int i=0; i<size; i++)
85 public void fromArray(Object[] in) {
87 for(int i=0; i<size; i++)
91 public void removeElementAt(int i) {
92 if (i >= size || i < 0) throw new RuntimeException("tried to remove an element outside the vector's limits");
93 for(int j=i; j<size - 1; j++)
94 store[j] = store[j + 1];
98 public void setElementAt(Object o, int i) {
99 if (i >= size) setSize(i);
103 public void removeElement(Object o) {
104 for(int i=0; i<size; i++)
111 public void insertElementAt(Object o, int at) {
112 if (size == store.length) grow();
113 for(int i=size; i>at; i--)
114 store[i] = store[i-1];