2003/05/03 03:18:55
[org.ibex.core.git] / src / org / xwt / js / JS.java
index f086de6..1da4c54 100644 (file)
@@ -1,52 +1,53 @@
-// Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL]\r
-\r
-package org.xwt.js;\r
-import org.xwt.util.*;\r
-\r
-/** all objects other than Strings and Numbers which are exposed to JS code must implement this interface */\r
-public interface JS {\r
-\r
-    public Object get(Object key) throws JS.Exn;\r
-    public Object put(Object key, Object val) throws JS.Exn;\r
-    public Object[] enumerateProperties();\r
-    public String coerceToString() throws JS.Exn;\r
-    public Num coerceToNumber() throws JS.Exn;\r
-    public Object call(Object[] args) throws JS.Exn;\r
-\r
-    /** if JS calls a Java method, and the Java method throws an exception, it can only be caught by JS if it is a subclass of Exn. */\r
-    public static class Exn extends RuntimeException {\r
-       private Object js = null;\r
-       public Exn(Object js) { this.js = js; }\r
-       public Object getObject() { return js; }\r
-    }\r
-\r
-    /** Any object which becomes part of the scope chain must support this interface */\r
-    public static interface Scope extends JS {\r
-       public boolean has(Object key);\r
-       public JS getParentScope();\r
-    }\r
-\r
-    /** A mutable, boxed numeric value.  These are recycled -- never duplicate references -- use duplicate() instead. */\r
-    public static class Num implements Cloneable, JS {\r
-       \r
-       private Num() { }\r
-       \r
-       public boolean isDouble = false;\r
-       public long longVal = -1;\r
-       public double doubleVal = -1;\r
-       \r
-       private static Vec pool = new Vec();\r
-       public static synchronized void recycle(Num n) { pool.push(n); }\r
-       public static synchronized Num getOne() { return (pool.size() > 0) ? (Num)pool.pop() : new Num(); }\r
-       \r
-       public Num duplicate() { try { return (Num)clone(); } catch (CloneNotSupportedException c) { throw new Error(c); } }\r
-\r
-       public Object get(Object key) throws JS.Exn { return null; }\r
-       public Object put(Object key, Object val) throws JS.Exn { throw new JS.Exn("attempt to set a property on a Number"); }\r
-       public Object[] enumerateProperties() { return new Object[] { }; }\r
-       public String coerceToString() throws JS.Exn { return isDouble ? String.valueOf(doubleVal) : String.valueOf(longVal); }\r
-       public Num coerceToNumber() throws JS.Exn { return duplicate(); }\r
-       public Object call(Object[] args) throws JS.Exn { throw new JS.Exn("attempt to apply the () operator to a Number"); }\r
-       \r
-    }\r
-}\r
+// Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL] 
+package org.xwt.js; 
+import org.xwt.util.*; 
+/** all objects other than Strings and Numbers which are exposed to JS code must implement this interface */ 
+public interface JS { 
+    public Object get(Object key) throws JS.Exn; 
+    public Object put(Object key, Object val) throws JS.Exn; 
+    public Object[] enumerateProperties(); 
+    public String coerceToString() throws JS.Exn; 
+    public Num coerceToNumber() throws JS.Exn; 
+    public Object call(Object[] args) throws JS.Exn; 
+    /** if JS calls a Java method, and the Java method throws an exception, it can only be caught by JS if it is a subclass of Exn. */ 
+    public static class Exn extends RuntimeException { 
+       private Object js = null; 
+       public Exn(Object js) { this.js = js; } 
+       public Object getObject() { return js; } 
+    } 
+    /** Any object which becomes part of the scope chain must support this interface */ 
+    public static interface Scope extends JS { 
+       public boolean has(Object key); 
+       public void declare(String s);
+       public JS getParentScope(); 
+    } 
+    /** A mutable, boxed numeric value.  These are recycled -- never duplicate references -- use duplicate() instead. */ 
+    public static class Num implements Cloneable, JS { 
+        
+       private Num() { } 
+        
+       public boolean isDouble = false; 
+       public long longVal = -1; 
+       public double doubleVal = -1; 
+        
+       private static Vec pool = new Vec(); 
+       public static synchronized void recycle(Num n) { pool.push(n); } 
+       public static synchronized Num getOne() { return (pool.size() > 0) ? (Num)pool.pop() : new Num(); } 
+        
+       public Num duplicate() { try { return (Num)clone(); } catch (CloneNotSupportedException c) { throw new Error(c); } } 
+       public Object get(Object key) throws JS.Exn { return null; } 
+       public Object put(Object key, Object val) throws JS.Exn { throw new JS.Exn("attempt to set a property on a Number"); } 
+       public Object[] enumerateProperties() { return new Object[] { }; } 
+       public String coerceToString() throws JS.Exn { return isDouble ? String.valueOf(doubleVal) : String.valueOf(longVal); } 
+       public Num coerceToNumber() throws JS.Exn { return duplicate(); } 
+       public Object call(Object[] args) throws JS.Exn { throw new JS.Exn("attempt to apply the () operator to a Number"); } 
+        
+    } 
+}