+ Trap getTrap(Object key) { return null; }
+ void putTrap(Object key, Trap value) throws JSExn { throw new JSExn("traps cannot be placed on this object (class=" + this.getClass().getName() +")"); }
+
+ public static class O extends JS {
+ private Hash entries;
+
+ public Enumeration keys() throws JSExn { return entries == null ? emptyEnumeration : entries.keys(); }
+ public Object get(Object key) throws JSExn { return entries == null ? null : entries.get(key, null); }
+ public void put(Object key, Object val) throws JSExn { (entries==null?entries=new Hash():entries).put(key,null,val); }
+
+ /** retrieve a trap from the entries hash */
+ final Trap getTrap(Object key) {
+ return entries == null ? null : (Trap)entries.get(key, Trap.class);
+ }
+
+ /** retrieve a trap from the entries hash */
+ final void putTrap(Object key, Trap value) {
+ if (entries == null) entries = new Hash();
+ entries.put(key, Trap.class, value);
+ }
+ }
+
+ public static class BT extends O {
+ private BalancedTree bt;
+ private final BalancedTree bt() { if(bt != null) return bt; return bt = new BalancedTree(); }
+ public final void insertNode(int index, Object o) { bt().insertNode(index,o); }
+ public final void clear() { bt().clear(); }
+ public final Object getNode(int i) { return bt().getNode(i); }
+ public final int treeSize() { return bt().treeSize(); }
+ public final Object deleteNode(int i) { return bt().deleteNode(i); }
+ public final void replaceNode(int index, Object o) { bt().replaceNode(index,o); }
+ public final int indexNode(Object o) { return bt().indexNode(o); }
+ }
+