2003/11/25 09:59:16
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:42:04 +0000 (07:42 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:42:04 +0000 (07:42 +0000)
darcs-hash:20040130074204-2ba56-ba697695e3cb2f4cd8e1f7a48aac33a2ba25b1a8.gz

src/org/xwt/Box.java
src/org/xwt/XMLRPC.java
src/org/xwt/js/Interpreter.java
src/org/xwt/js/JS.java
src/org/xwt/js/Trap.java

index fb36594..c195b48 100644 (file)
@@ -434,7 +434,7 @@ public final class Box extends JSScope {
         case "maxheight": CHECKSET_INT(maxheight); MARK_RESIZE;
         case "minheight": CHECKSET_INT(minheight); MARK_RESIZE;
         case "colspan": CHECKSET_SHORT(colspan); MARK_REPACK_parent;
-        case "rowspan": CHECKSET_SHORT(colspan); MARK_REPACK_parent;
+        case "rowspan": CHECKSET_SHORT(rowspan); MARK_REPACK_parent;
         case "rows": CHECKSET_SHORT(rows); if (rows==0){set(FIXED, COLS);if(cols==0)cols=1;} else set(FIXED, ROWS); MARK_REPACK;
         case "cols": CHECKSET_SHORT(cols); if (cols==0){set(FIXED, ROWS);if(rows==0)rows=1;} else set(FIXED, COLS); MARK_REPACK;
         case "noclip": CHECKSET_FLAG(NOCLIP); if (parent == null) dirty(); else parent.dirty();
index cd5b4df..39fc30d 100644 (file)
@@ -81,36 +81,27 @@ class XMLRPC extends JS {
 
         public void startElement(XML.Element c) {
             content.reset();
-            if (c.localName.equals("fault")) fault = true;
-            else if (c.localName.equals("struct")) objects.setElementAt(new JS(), objects.size() - 1);
-            else if (c.localName.equals("array")) objects.setElementAt(null, objects.size() - 1);
-            else if (c.localName.equals("value")) objects.addElement("");
+            //#switch(c.localName)
+            case "fault": fault = true;
+            case "struct": objects.setElementAt(new JS(), objects.size() - 1);
+            case "array": objects.setElementAt(null, objects.size() - 1);
+            case "value": objects.addElement("");
+            //#end
         }
         
         public void endElement(XML.Element c) {
-            
-            if (c.localName.equals("int") || c.localName.equals("i4"))
-                objects.setElementAt(new Integer(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
-            
-            else if (c.localName.equals("boolean"))
-                objects.setElementAt(content.getBuf()[0] == '1' ? Boolean.TRUE : Boolean.FALSE, objects.size() - 1);
-            
-            else if (c.localName.equals("string"))
+            //#switch(c.localName)
+            case "int": objects.setElementAt(new Integer(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
+            case "i4": objects.setElementAt(new Integer(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
+            case "boolean": objects.setElementAt(content.getBuf()[0] == '1' ? Boolean.TRUE : Boolean.FALSE, objects.size() - 1);
+            case "string": objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
+            case "double": objects.setElementAt(new Double(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
+            case "base64": objects.setElementAt(new Res.ByteArray(Base64.decode(new String(content.getBuf(), 0, content.size())),
+                                                                  null), objects.size() - 1);
+            case "name": objects.addElement(new String(content.getBuf(), 0, content.size()));
+            case "value": if ("".equals(objects.lastElement()))
                 objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
-            
-            else if (c.localName.equals("double"))
-                objects.setElementAt(new Double(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
-            
-            else if (c.localName.equals("base64"))
-                objects.setElementAt(new Res.ByteArray(Base64.decode(new String(content.getBuf(), 0, content.size())), null), objects.size() - 1);
-
-            else if (c.localName.equals("name"))
-                objects.addElement(new String(content.getBuf(), 0, content.size()));
-            
-            else if (c.localName.equals("value") && "".equals(objects.lastElement()))
-                objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
-            
-            else if (c.localName.equals("dateTime.iso8601")) {
+            case "dateTime.iso8601":
                 String s = new String(content.getBuf(), 0, content.size());
                 
                 // strip whitespace
@@ -135,24 +126,20 @@ class XMLRPC extends JS {
                     if (Log.on) Log.log(this, "error parsing date : " + s);
                     if (Log.on) Log.log(this, e);
                 }
-                
-            } else if (c.localName.equals("member")) {
+            case "member":
                 Object memberValue = objects.elementAt(objects.size() - 1);
                 String memberName = (String)objects.elementAt(objects.size() - 2);
                 JS struct = (JS)objects.elementAt(objects.size() - 3);
                 struct.put(memberName, memberValue);
                 objects.setSize(objects.size() - 2);
-                
-            } else if (c.localName.equals("data")) {
+            case "data":
                 int i;
                 for(i=objects.size() - 1; objects.elementAt(i) != null; i--);
                 JSArray arr = new JSArray();
                 for(int j = i + 1; j<objects.size(); j++) arr.put(new Integer(j - i - 1), objects.elementAt(j));
                 objects.setElementAt(arr, i);
                 objects.setSize(i + 1);
-                
-            }
-            
+            //#end            
             content.reset();
         }
         
index fe118e5..5c7163b 100644 (file)
@@ -167,7 +167,7 @@ class Interpreter implements ByteCodes, Tokens {
                                 Trap t = ts.t.next;
                                 while (t != null && t.f.numFormalArgs == 0) t = t.next;
                                 if (t == null) {
-                                    ((JS)ts.t.trapee).put(t.name, ts.val);
+                                    ((JS)ts.t.trapee).put(ts.t.name, ts.val);
                                     if (pausecount > initialPauseCount) { pc++; return null; }   // we were paused
                                 } else {
                                     stack.push(o);
@@ -203,7 +203,7 @@ class Interpreter implements ByteCodes, Tokens {
                     throw je("tried to assign \"" + (val==null?"(null)":val.toString()) + "\" to the null key");
                 Trap t = null;
                 if (target instanceof JS) {
-                    t = ((JS)target).getTrap(val);
+                    t = ((JS)target).getTrap(key);
                     while (t != null && t.f.numFormalArgs == 0) t = t.next;
                 } else if (target instanceof Trap.TrapScope && key.equals("cascade")) {
                     Trap.TrapScope ts = (Trap.TrapScope)target;
index 5ade735..3632250 100644 (file)
@@ -184,9 +184,9 @@ public class JS {
     public static final Object METHOD = new Object();
     public Object callMethod(Object method, Object a0, Object a1, Object a2, Object[] rest, int nargs) {
         throw new JSExn("attempted to call the null value (method "+method+")");
-    }
+    }    
     public Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) {
-        throw new JSExn("you cannot call this object)");
+        throw new JSExn("you cannot call this object (class=" + this.getClass().getName() +")");
     }
 
 
index 2986079..a0ed711 100644 (file)
@@ -25,12 +25,14 @@ class Trap {
     private static final JSFunction getInvoker = new JSFunction("getInvoker", 0, null);
     static {
         putInvoker.add(-1, ByteCodes.PUT, null);
+        putInvoker.add(-1, Tokens.RETURN, null);
         getInvoker.add(-1, ByteCodes.GET, null);
+        putInvoker.add(-1, Tokens.RETURN, null);
     }
     
     void invoke(Object key, Object value) {
         Interpreter i = new Interpreter(putInvoker, false, null);
-        i.stack.push(this);
+        i.stack.push(trapee);
         i.stack.push(key);
         i.stack.push(value);
         i.resume();