X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2FClassLibrary%2FVector.java;h=adcd4efa6f296556f6a77ff1c015c09ffa0c1779;hb=57888a70a5a1d240517f542b7b3245086a94e0c8;hp=40b174abf6ac1bc0f78bcbc0309c83fc7446c41a;hpb=47404342f41b5e1435a606878fc1d6f4fcc1872b;p=IRC.git diff --git a/Robust/src/ClassLibrary/Vector.java b/Robust/src/ClassLibrary/Vector.java index 40b174ab..adcd4efa 100644 --- a/Robust/src/ClassLibrary/Vector.java +++ b/Robust/src/ClassLibrary/Vector.java @@ -1,83 +1,149 @@ public class Vector { - Object[] array; - int size; - int capacityIncrement; - - public Vector() { - capacityIncrement=0; - size=0; - array=new Object[10]; - } + Object[] array; + int size; + int capacityIncrement; + + public Vector() { + capacityIncrement=0; + size=0; + array=new Object[10]; + } + + public Vector(int size) { + capacityIncrement=0; + this.size=0; + array=new Object[size]; + } + + //used for internal cloning + private Vector(int size, int capacityIncrement, Object[] array) { + this.size = size; + this.capacityIncrement = capacityIncrement; + this.array = new Object[array.length]; + System.arraycopy(array, 0, this.array, 0, size); + } + + public Vector clone() { + return new Vector(size,capacityIncrement, array); + } + + public boolean isEmpty() { + return size==0; + } + + public void clear() { + size=0; + array=new Object[10]; + } - public void clear() { - size=0; - array=new Object[10]; + public int indexOf(Object elem) { + return indexOf(elem, 0); + } + + public int indexOf(Object elem, int index) { + for(int i=index; i=size) { + System.printString("Illegal Vector.elementAt\n"); + System.exit(-1); + return null; } + return array[index]; + } - public Object elementAt(int index) { - if (index<0 || index >=size) { - System.printString("Illegal Vector.elementAt"); - return null; - } - return array[index]; + public void setElementAt(Object obj, int index) { + if (index =0 && index array.length) { + int newsize; + if (capacityIncrement<=0) + newsize=array.length*2; + else + newsize=array.length+capacityIncrement; + if (newsizearray.length) { - int newsize; - if (capacityIncrement<=0) - newsize=array.length*2; - else - newsize=array.length+capacityIncrement; - if (newsizesize) { + System.printString("Illegal Vector.insertElementAt\n"); + System.exit(-1); } - public Enumeration elements() { - System.printString("Vector.elements not implemented"); + if (size==array.length) { + ensureCapacity(size+1); + } + size++; + for(int i=size-1; i>index; --i) { + array[i] = array[i-1]; } + array[index] = obj; + } - public void addElement(Object obj) { - if (size==array.length) { - ensureCapacity(size+1); - } - array[size++]=obj; + public void removeElementAt(int index) { + if (index<0||index>=size) { + System.printString("Illegal Vector.removeElementAt\n"); + System.exit(-1); } + removeElement(array, index, size); + size--; + array[size]=null; + } + + public static native void removeElement(Object[] array, int index, int size); - public void removeElementAt(int index) { - if (index<0||index>=size) - System.printString("Illegal remove"); - for(int i=index;i<(size-1);i++) { - array[i]=array[i+1]; - } - size--; + public void removeAllElements() { + int s = size; + for(int i = 0; i