Fix tabbing.... Please fix your editors so they do tabbing correctly!!! (Spaces...
[IRC.git] / Robust / src / ClassLibrary / Vector.java
index fb916cfc53d707cdce406ffb75d32ab1ebdd852f..df991ef8c6db7ef1ee038957fde8a3984657fe28 100644 (file)
@@ -9,6 +9,28 @@ public class Vector {
     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];
@@ -26,22 +48,39 @@ public class Vector {
     return -1;
   }
 
+  public boolean contains(Object e) {
+    return indexOf(e)!=-1;
+  }
+
+  public boolean  remove(Object o) {
+    int in=indexOf(o);
+    if (in!=-1) {
+      removeElementAt(in);
+      return true;
+    }
+
+    return false;
+  }
+
   public Object elementAt(int index) {
-    if (index<0 || index >=size) {
-      System.printString("Illegal Vector.elementAt");
+    if (index<0 | index >=size) {
+      System.printString("Illegal Vector.elementAt\n");
+      System.exit(-1);
       return null;
     }
     return array[index];
   }
 
   public void setElementAt(Object obj, int index) {
-    if (index>=0 && index <size)
+    if (index <size)
       array[index]=obj;
-    else
-      System.printString("Illegal setElementAt");
+    else {
+      System.printString("Illegal Vector.setElementAt\n");
+      System.exit(-1);
+    }
   }
 
-  private ensureCapacity(int minCapacity) {
+  private void ensureCapacity(int minCapacity) {
     if (minCapacity>array.length) {
       int newsize;
       if (capacityIncrement<=0)
@@ -62,7 +101,8 @@ public class Vector {
   }
 
   public Enumeration elements() {
-    System.printString("Vector.elements not implemented");
+    System.printString("Vector.elements not implemented\n");
+    System.exit(-1);
   }
 
   public void addElement(Object obj) {
@@ -73,8 +113,11 @@ public class Vector {
   }
 
   public void insertElementAt(Object obj, int index) {
-    if (index<0||index>=size)
-      System.printString("Illegal insertElementAt");
+    if (index<0||index>size) {
+      System.printString("Illegal Vector.insertElementAt\n");
+      System.exit(-1);
+    }
+
     if (size==array.length) {
       ensureCapacity(size+1);
     }
@@ -86,14 +129,17 @@ public class Vector {
   }
 
   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];
+    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 removeAllElements() {
     int s = size;
     for(int i = 0; i<s; ++i ) {