JSArray now uses an internal Vec
authoradam <adam@megacz.com>
Sat, 30 Oct 2004 22:52:15 +0000 (22:52 +0000)
committeradam <adam@megacz.com>
Sat, 30 Oct 2004 22:52:15 +0000 (22:52 +0000)
darcs-hash:20041030225215-5007d-86ee868937b33820394d825c2b61142af21ef272.gz

src/org/ibex/js/JSArray.java

index 52c1878..1b98193 100644 (file)
@@ -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<count;i++) {
-            Object o = arr.getNode(i);
-            vec.setElementAt(o == NULL ? null : o,i);
-        }
-        return vec;
-    }
-    
-    protected void setFromVec(Vec vec) {
-        int count = vec.size();
-        arr.clear();
-        for(int i=0;i<count;i++) {
-            Object o = vec.elementAt(i);
-            arr.insertNode(i,o==null ? NULL : o);
-        }
-    }
-    
+    protected Vec toVec() { return (Vec)vec.clone(); }
+    protected void setFromVec(Vec vec) { this.vec = (Vec)vec.clone(); }
     public String toString() { return JS.toString(join(",")); }
 }