X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Futil%2FVec.java;h=cffe9f5df2ed32959e75fa1a5d548b83fd737a07;hb=fbc820c6f2bcd9920a729e16abc33af869a60216;hp=ffe7cfd592a577e943caace0a6ab5b68f5f08184;hpb=3a85dab61cef1346315ca40d3004f8772815127f;p=org.ibex.util.git diff --git a/src/org/ibex/util/Vec.java b/src/org/ibex/util/Vec.java index ffe7cfd..cffe9f5 100644 --- a/src/org/ibex/util/Vec.java +++ b/src/org/ibex/util/Vec.java @@ -1,9 +1,6 @@ -// Copyright (C) 2003 Adam Megacz 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; } @@ -86,9 +91,10 @@ public final class Vec implements Serializable { size = newSize; } - public void copyInto(Object[] out) { + public Object[] copyInto(Object[] out) { for(int i=0; i= size || i < 0) throw new RuntimeException("tried to remove an element outside the vector's limits"); for(int j=i; j