From 3d545db9c5a99535462adc62cbf9fc88d3dd619b Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 07:42:04 +0000 Subject: [PATCH] 2003/11/25 09:59:16 darcs-hash:20040130074204-2ba56-ba697695e3cb2f4cd8e1f7a48aac33a2ba25b1a8.gz --- src/org/xwt/Box.java | 2 +- src/org/xwt/XMLRPC.java | 53 +++++++++++++++------------------------ src/org/xwt/js/Interpreter.java | 4 +-- src/org/xwt/js/JS.java | 4 +-- src/org/xwt/js/Trap.java | 4 ++- 5 files changed, 28 insertions(+), 39 deletions(-) diff --git a/src/org/xwt/Box.java b/src/org/xwt/Box.java index fb36594..c195b48 100644 --- a/src/org/xwt/Box.java +++ b/src/org/xwt/Box.java @@ -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(); diff --git a/src/org/xwt/XMLRPC.java b/src/org/xwt/XMLRPC.java index cd5b4df..39fc30d 100644 --- a/src/org/xwt/XMLRPC.java +++ b/src/org/xwt/XMLRPC.java @@ -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 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; diff --git a/src/org/xwt/js/JS.java b/src/org/xwt/js/JS.java index 5ade735..3632250 100644 --- a/src/org/xwt/js/JS.java +++ b/src/org/xwt/js/JS.java @@ -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() +")"); } diff --git a/src/org/xwt/js/Trap.java b/src/org/xwt/js/Trap.java index 2986079..a0ed711 100644 --- a/src/org/xwt/js/Trap.java +++ b/src/org/xwt/js/Trap.java @@ -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(); -- 1.7.10.4