import java.util.*;
// FIXME: could use some cleaning up...
+// FIXME: Finish implementing ECMA-262
/** A JavaScript Array */
class ArrayImpl extends JS.Obj {
}
// we use _get instead of get solely to work around a GCJ bug
public Object _get(Object key) throws JS.Exn {
- // FIXME: HACK!
- if (key.equals("cascade")) return org.xwt.Trap.cascadeFunction;
- if (key.equals("trapee")) return org.xwt.Trap.currentTrapee();
if (key.equals("length")) return new Long(vec.size());
+ if (key.equals("push")) return new JS.Callable() {
+ public Object call(JS.Array args) {
+ for(int i=0;i<args.length();i++)
+ vec.push(args.elementAt(i));
+ return new Long(vec.size());
+ }
+ };
+ if (key.equals("pop")) return new JS.Callable() {
+ public Object call(JS.Array args) {
+ return vec.pop(); // this'll return null on size()==0
+ }
+ };
+
int i = intVal(key);
if (i == Integer.MIN_VALUE) return super.get(key);
try {
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 String typeName() { return "array"; }
}