X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fjs%2FJS.java;h=9bd8abcf4a5acd34c03f9bc98db52ea906aad99d;hb=a6fb49b55117ea4cf330b412d2a2fff403fcd053;hp=75a34e0845ec5bf82b8f693600bb699b7ea818a7;hpb=f3ad8b6cba43f3c5364dc2cd9f1d050c1f48f167;p=org.ibex.js.git diff --git a/src/org/ibex/js/JS.java b/src/org/ibex/js/JS.java index 75a34e0..9bd8abc 100644 --- a/src/org/ibex/js/JS.java +++ b/src/org/ibex/js/JS.java @@ -116,7 +116,7 @@ public interface JS { public String coerceToString() throws JSExn { return clonee.coerceToString(); } } - public static class Obj extends Basket.HashMap implements JS { + public static class Obj extends Basket.Hash implements JS { private static final String[] emptystr = new String[0]; private static final Placeholder holder = new Placeholder(); @@ -151,7 +151,7 @@ public interface JS { } public JS getAndTriggerTraps(JS key) throws JSExn { Trap t = (Trap)super.get(key, 1); - return t == null ? (JS)super.get(key) : (JS)new Interpreter(t, null, false).run(null); + return t == null ? (JS)get(key) : (JS)new Interpreter(t, null, false).run(null); } public JS justTriggerTraps(JS key, JS val) throws JSExn { Trap t = (Trap)super.get(key, 1); @@ -221,6 +221,7 @@ public interface JS { private final Enumeration parent; + public Enumeration() { this(null); } public Enumeration(Enumeration parent) { this.parent = parent; } protected abstract boolean _hasNext(); @@ -247,13 +248,20 @@ public interface JS { protected JS _next() { throw new NoSuchElementException(); } } - public static final class JavaIterator extends Enumeration { - private final Iterator i; + public static class JavaIterator extends Enumeration { + protected final Iterator i; public JavaIterator(Enumeration parent, Iterator i) { super(parent); this.i = i; } protected boolean _hasNext() { return i.hasNext(); } protected JS _next() { return (JS)i.next(); } } + public static class JavaStringEnumeration extends Enumeration { + protected final java.util.Enumeration e; + public JavaStringEnumeration(java.util.Enumeration e) { this.e = e; } + protected boolean _hasNext() { return e.hasMoreElements(); } + protected JS _next() { return JSU.S(e.nextElement().toString()); } + } + public static final class RandomAccessList extends Enumeration { private final List l; private int pos = 0, size;