X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fjs%2FJSArray.java;fp=src%2Forg%2Fxwt%2Fjs%2FArrayImpl.java;h=880e64fecc5b14806d570cba53b46ca37ae9a8aa;hb=67eeff476179a91ae930ea89cbecde22132ca532;hp=84b33d1a2c406d1cb8da5a5079b54374d7d3fc9a;hpb=9d07963a45f2147a62d8897e9c4245c224d98ccb;p=org.ibex.core.git diff --git a/src/org/xwt/js/ArrayImpl.java b/src/org/xwt/js/JSArray.java similarity index 73% rename from src/org/xwt/js/ArrayImpl.java rename to src/org/xwt/js/JSArray.java index 84b33d1..880e64f 100644 --- a/src/org/xwt/js/ArrayImpl.java +++ b/src/org/xwt/js/JSArray.java @@ -1,15 +1,15 @@ // Copyright 2003 Adam Megacz, see the COPYING file for licensing [GPL] - package org.xwt.js; + import org.xwt.util.*; import java.io.*; import java.util.*; -/** A JavaScript Array */ -class ArrayImpl extends JS.Obj { +/** A JavaScript JSArray */ +public class JSArray extends JSCallable { private Vec vec = new Vec(); - public ArrayImpl() { } - public ArrayImpl(int size) { vec.setSize(size); } + public JSArray() { } + public JSArray(int size) { vec.setSize(size); } private static int intVal(Object o) { if (o instanceof Number) { int intVal = ((Number)o).intValue(); @@ -22,19 +22,16 @@ class ArrayImpl extends JS.Obj { return Integer.parseInt(s); } - public Object callMethod(Object method, JS.Array args,boolean justChecking) { + public Object call(Object method, JSArray args) { if(method.equals("push")) { - if(justChecking) return Boolean.TRUE; for(int i=0;i 0) { Object o = vec.elementAt(0); vec.removeElementAt(0); @@ -44,24 +41,21 @@ class ArrayImpl extends JS.Obj { } } if(method.equals("unshift")) { - if(justChecking) return Boolean.TRUE; // FEATURE: could be optimized a bit with some help from Vec for(int i=0;i= vec.size(); } + public Object nextElement() { + if (cur >= vec.size()) throw new NoSuchElementException(); + return new Integer(cur++); + } + }; } + public void setSize(int i) { vec.setSize(i); } public int length() { return vec.size(); } public Object elementAt(int i) { return vec.elementAt(i); } public void addElement(Object o) { vec.addElement(o); } public void setElementAt(Object o, int i) { vec.setElementAt(o, i); } - + public int size() { return vec.size(); } public String typeName() { return "array"; } - private Object join(JS.Array args) { + private Object join(JSArray args) { return join(args.length() == 0 ? "," : JS.toString(args.elementAt(0))); } @@ -116,7 +114,7 @@ class ArrayImpl extends JS.Obj { return sb.toString(); } - private Object reverse(JS.Array args) { + private Object reverse(JSArray args) { Vec oldVec = vec; int size = oldVec.size(); if(size < 2) return this; @@ -126,7 +124,7 @@ class ArrayImpl extends JS.Obj { return this; } - private Object slice(JS.Array args) { + private Object slice(JSArray args) { int length = length(); int start = JS.toInt(args.length() < 1 ? null : args.elementAt(0)); int end = args.length() < 2 ? length : JS.toInt(args.elementAt(1)); @@ -136,7 +134,7 @@ class ArrayImpl extends JS.Obj { if(end < 0) end = 0; if(start > length) start = length; if(end > length) end = length; - JS.Array a = new JS.Array(end-start); + JSArray a = new JSArray(end-start); for(int i=0;i oldLength-start) deleteCount = oldLength-start; int newLength = oldLength - deleteCount + newCount; int lengthChange = newLength - oldLength; - JS.Array ret = new JS.Array(deleteCount); + JSArray ret = new JSArray(deleteCount); for(int i=0;i 0) {