From 72c37ea4085a83254c6cd8b921110ace1169985c Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 30 Oct 2004 22:52:15 +0000 Subject: [PATCH] JSArray now uses an internal Vec darcs-hash:20041030225215-5007d-86ee868937b33820394d825c2b61142af21ef272.gz --- src/org/ibex/js/JSArray.java | 41 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) diff --git a/src/org/ibex/js/JSArray.java b/src/org/ibex/js/JSArray.java index 52c1878..1b98193 100644 --- a/src/org/ibex/js/JSArray.java +++ b/src/org/ibex/js/JSArray.java @@ -6,10 +6,10 @@ import java.util.*; /** A JavaScript JSArray */ public class JSArray extends JS { + private static final Object NULL = new Object(); + private Vec vec = new Vec(); - private BalancedTree arr = new BalancedTree(); - public JSArray() { } public JSArray(int size) { setSize(size); } @@ -120,27 +120,28 @@ public class JSArray extends JS { public final int length() { return size(); } public final Object elementAt(int i) { if(i < 0 || i >= size()) throw new ArrayIndexOutOfBoundsException(i); - Object o = arr.getNode(i); + Object o = vec.elementAt(i); return o == NULL ? null : o; } public final void addElement(Object o) { - arr.insertNode(size(),o==null ? NULL : o); + vec.insertElementAt(o==null ? NULL : o, size()); } public final void setElementAt(Object o, int i) { if(i < 0 || i >= size()) throw new ArrayIndexOutOfBoundsException(i); - arr.replaceNode(i,o==null ? NULL : o); + vec.setElementAt(o==null ? NULL : o,i); } public final void insertElementAt(Object o, int i) { if(i < 0 || i > size()) throw new ArrayIndexOutOfBoundsException(i); - arr.insertNode(i,o==null ? NULL : o); + vec.insertElementAt(o==null ? NULL : o, i); } public final Object removeElementAt(int i) { if(i < 0 || i >= size()) throw new ArrayIndexOutOfBoundsException(i); - Object o = arr.deleteNode(i); + Object o = vec.elementAt(i); + vec.removeElementAt(i); return o == NULL ? null : o; } - public final int size() { return arr.treeSize(); } + public final int size() { return vec.size(); } public String typeName() { return "array"; } private Object join(String sep) { @@ -162,7 +163,7 @@ public class JSArray extends JS { int size = size(); if(size < 2) return this; Vec vec = toVec(); - arr.clear(); + vec.removeAllElements(); for(int i=size-1,j=0;i>=0;i--,j++) insertElementAt(vec.elementAt(i),j); return this; } @@ -240,25 +241,7 @@ public class JSArray extends JS { return ret; } - public Vec toVec() { - int count = size(); - Vec vec = new Vec(); - vec.setSize(count); - for(int i=0;i