added ImmortalThread
[org.ibex.util.git] / src / org / ibex / util / Vec.java
index d3fe00e..cffe9f5 100644 (file)
@@ -1,9 +1,6 @@
-// Copyright (C) 2003 Adam Megacz <adam@ibex.org> all rights reserved.
-//
-// You may modify, copy, and redistribute this code under the terms of
-// the GNU Library Public License version 2.1, with the exception of
-// the portion of clause 6a after the semicolon (aka the "obnoxious
-// relink clause")
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the Apache Public Source License 2.0 ("the License").
+// You may not use this file except in compliance with the License.
 
 package org.ibex.util;
 import java.io.*;
@@ -17,7 +14,7 @@ import java.io.*;
  *
  *  @see java.util.Vector
  */
-public final class Vec implements Serializable {
+public final class Vec implements Serializable, Cloneable {
     
     private Object[] store;
     private int size = 0;
@@ -25,7 +22,13 @@ public final class Vec implements Serializable {
     public Vec() { this(10); }
     public Vec(int i) { store = new Object[i]; }
     public Vec(int i, Object[] store) { size = i; this.store = store; }
-    
+    public Vec(Vec old) {
+        store = new Object[old.store.length];
+        System.arraycopy(old.store, 0, store, 0, old.store.length);
+        this.size = old.size;
+    }
+
+    public Object clone() { return new Vec(this); }
     private void grow() { grow(store.length * 2); }
     private void grow(int newsize) {
         Object[] newstore = new Object[newsize];
@@ -50,6 +53,7 @@ public final class Vec implements Serializable {
         return -1;
     }
     
+    public void add(Object o) { addElement(o); }
     public void addElement(Object o) {
         if (size >= store.length - 1) grow();
         store[size++] = o;
@@ -59,6 +63,7 @@ public final class Vec implements Serializable {
         return lastElement();
     }
 
+    public Object get(int i) { return elementAt(i); }
     public Object elementAt(int i) {
         return store[i];
     }
@@ -71,7 +76,7 @@ public final class Vec implements Serializable {
     public void push(Object o) { addElement(o); }
     public Object pop() {
         Object ret = lastElement();
-        if (size > 0) store[size--] = null;
+        if (size > 0) store[--size] = null;
         return ret;
     }
 
@@ -98,6 +103,7 @@ public final class Vec implements Serializable {
             store[i] = in[i];
     }
 
+    public void remove(int i) { removeElementAt(i); }
     public void removeElementAt(int i) {
         if (i >= size || i < 0) throw new RuntimeException("tried to remove an element outside the vector's limits");
         for(int j=i; j<size - 1; j++)