Field

Changeset 131:aaa7df04ed1c

Show
Ignore:
Timestamp:
07/31/2008 10:05:39 PM (5 months ago)
Author:
marc@f1.local
branch:
default
Message:

Scala and Processing are no longer enabled by default. Added new 'shim' for variables that are bridged from Python to the ScalaInterface?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • extras/fieldscala/field/core/execution/ScalaInterface.java

    r126 r131  
    7777                        try { 
    7878                                scalaInterface.eval("trait Shim[T]\n" + "{\n" + "       def get: T\n" + "       def set(t : T)\n" + "}\n" + "\n" + "implicit def deShim[T](g : Shim[T]) : T = \n" + "   g.get\n", false); 
     79                                scalaInterface.eval("class PythonShim[T](name : String) extends Shim[T]\n" + "{\n" + "  import field.core.execution.PythonInterface\n" + "      def get : T = \n" + "           PythonInterface.getPythonInterface().getVariable(name).asInstanceOf[T]\n" + "   def set(t : T) = \n" + "                PythonInterface.getPythonInterface().setVariable(name, t)\n" + "}", false); 
    7980                        } finally { 
    8081                                scalaInterface.insideShared = false; 
     
    282283 
    283284                        // temp workaround for bug #70 
    284                         if (parameters.length > 0) 
    285                                 typeName = "AnyRef"; 
    286  
    287                         interp.bind(name, typeName == null ? defaultTypeName : typeName, value); 
     285//                      if (parameters.length > 0) 
     286//                              typeName = "AnyRef"; 
     287 
     288 
     289                        typeName = typeName == null ? defaultTypeName : typeName; 
     290 
     291                        if (parameters.length>0) 
     292                        { 
     293                                String l = "["; 
     294                                for(int i=0;i<parameters.length;i++) 
     295                                { 
     296                                        l = l+(i==0 ? "" : ",")+"_"; 
     297                                } 
     298                                typeName = typeName+l+"]"; 
     299                        } 
     300 
     301 
     302 
     303                        interp.bind(name, typeName, value); 
    288304                        for (ScriptingInterface s : shared) 
    289305                                s.setVariable(name, value); 
     
    294310                                // we need to build a Shim ÑÊwhat should this 
    295311                                // shim be called ? 
     312 
     313                                eval("var "+name+"_ = new PythonShim["+typeName+"](\""+name+"\")", false); 
    296314 
    297315                        }