2003/06/18 05:53:37
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:01:39 +0000 (07:01 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:01:39 +0000 (07:01 +0000)
darcs-hash:20040130070139-2ba56-16e89e8a4a90cba6cc72faebe42bcae7141942d5.gz

Makefile
src/org/xwt/SpecialBoxProperty.java

index 841b277..e3ac858 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,7 @@ c_objects              := $(c_sources:src/%.c=bin-$(platform)/%.c.o)
 gcc_path               := $(shell pwd)/gcc/install
 #gcc_optimizations      := -O9 -ffast-math -fomit-frame-pointer -foptimize-sibling-calls -finline-functions
 #gcc_optimzations       += -funroll-loops -ffunction-sections -fdata-sections
-gcc_optimizations      := -O0
+gcc_optimizations      := -O2
 debug                  := 
 gcc_flags              := $(gcc_optimizations) $(debug) -Isrc/org/ijg
 gcj_flags              := -fCLASSPATH=bin 
index 24cc971..d55fd38 100644 (file)
@@ -655,9 +655,34 @@ class SpecialBoxProperty {
 
         specialBoxProperties.put("apply", new SpecialBoxProperty() {
                 public void put(Box b, Object value) { }
-                public Object get(Box b) { return new Apply(b); }
+                public Object get(final Box b) { return public Object call(JS.Array args) throws JS.Exn {
+                    
+                    // apply a template
+                    if (args.elementAt(0) instanceof String) {
+                        String templatename = (String)args.elementAt(0);
+                        Template t = Template.getTemplate(templatename, null);
+                        if (t == null) {
+                            if (Log.on) Log.logJS(this, "template " + templatename + " not found");
+                        } else {
+                            if (ThreadMessage.suspendThread()) try {
+                                JS.Callable callback = args.length() < 2 ? null : (Callable)args.elementAt(1);
+                                t.apply(b, null, null, callback, 0, t.numUnits());
+                            } finally {
+                                ThreadMessage.resumeThread();
+                            }
+                        }
+                        
+                        // apply a list of properties
+                    } else if (args.elementAt(0) instanceof JS && !(args.elementAt(0) instanceof Box)) {
+                        JS s = (JS)args.elementAt(0);
+                        Object[] keys = s.keys();
+                        for(int j=0; j<keys.length; j++) b.put(keys[j].toString(), s.get(keys[j]));
+                    }
+                    
+                    return b;
+                } }
             });
-
+        
         specialBoxProperties.put("id", new SpecialBoxProperty() {
                 public void put(Box b, Object value) { }
                 public Object get(Box b) { return b.id; }
@@ -684,40 +709,6 @@ class SpecialBoxProperty {
         catch (NumberFormatException e) { return 0; }
     }
         
-    /** helper that converts a String to a int according to JavaScript coercion rules */
-    public static class Apply extends JS.Callable {
-
-        Box b;
-        public Apply(Box b) { super(); this.b = b; }
-
-        public Object call(JS.Array args) throws JS.Exn {
-
-            // apply a template
-            if (args.elementAt(0) instanceof String) {
-                String templatename = (String)args.elementAt(0);
-                Template t = Template.getTemplate(templatename, null);
-                if (t == null) {
-                    if (Log.on) Log.logJS(this, "template " + templatename + " not found");
-                } else {
-                    if (ThreadMessage.suspendThread()) try {
-                        JS.Callable callback = args.length() < 2 ? null : (Callable)args.elementAt(1);
-                        t.apply(b, null, null, callback, 0, t.numUnits());
-                    } finally {
-                        ThreadMessage.resumeThread();
-                    }
-                }
-
-            // apply a list of properties
-            } else if (args.elementAt(0) instanceof JS && !(args.elementAt(0) instanceof Box)) {
-                JS s = (JS)args.elementAt(0);
-                Object[] keys = s.keys();
-                for(int j=0; j<keys.length; j++) b.put(keys[j].toString(), s.get(keys[j]));
-            }
-
-            return b;
-        }
-    }
-
 }