[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool SpaceTool.java, 1.36, 1.37
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-09-13 13:36:27
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv5796/src/net/sourceforge/bprocessor/gl/tool Modified Files: SpaceTool.java Log Message: Added a script to project that can contain userdefined functions Index: SpaceTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/SpaceTool.java,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** SpaceTool.java 13 Sep 2006 08:08:38 -0000 1.36 --- SpaceTool.java 13 Sep 2006 13:36:19 -0000 1.37 *************** *** 557,604 **** */ public Object evaluate(String value) { ! Project.info("evaluate '" + value + "'"); ! Reader input = new StringReader(value); ! ScriptLexer lexer = new ScriptLexer(input); ! ScriptParser parser = new ScriptParser(lexer); ! Function function = new Function(); try { ! parser.statement(function); ! ! HashMap globals = Project.getInstance().getGlobals().environment(); ! globals.put("cos", new Builtin() { ! public Object evaluate(Environment env) { ! Double argument = (Double) env.get(0); ! return new Double(Math.cos(argument.doubleValue())); ! } ! }); ! globals.put("sin", new Builtin() { ! public Object evaluate(Environment env) { ! Double argument = (Double) env.get(0); ! return new Double(Math.sin(argument.doubleValue())); ! } ! }); ! globals.put("vertex", new Builtin() { ! public Object evaluate(Environment env) { ! Double x = (Double) env.get(0); ! Double y = (Double) env.get(1); ! Double z = (Double) env.get(2); ! Vertex result = new Vertex(x.doubleValue(), y.doubleValue(), z.doubleValue()); ! return result; ! } ! }); ! globals.put("edge", new Builtin() { ! public Object evaluate(Environment env) { ! Vertex from = (Vertex) env.get(0); ! Vertex to = (Vertex) env.get(1); ! Edge result = new Edge(from, to); ! return result; ! } ! }); ! Environment env = new Environment(globals, null); ! Object result = function.evaluate(env); - - if (result instanceof Vertex) { result = Geometry.insertVertex((Vertex)result, true); --- 557,613 ---- */ public Object evaluate(String value) { ! ! ! HashMap globals = Project.getInstance().getGlobals().environment(); ! globals.put("cos", new Builtin() { ! public Object evaluate(Environment env) { ! Double argument = (Double) env.get(0); ! return new Double(Math.cos(argument.doubleValue())); ! } ! }); ! globals.put("sin", new Builtin() { ! public Object evaluate(Environment env) { ! Double argument = (Double) env.get(0); ! return new Double(Math.sin(argument.doubleValue())); ! } ! }); ! globals.put("vertex", new Builtin() { ! public Object evaluate(Environment env) { ! Double x = (Double) env.get(0); ! Double y = (Double) env.get(1); ! Double z = (Double) env.get(2); ! Vertex result = new Vertex(x.doubleValue(), y.doubleValue(), z.doubleValue()); ! return result; ! } ! }); ! globals.put("edge", new Builtin() { ! public Object evaluate(Environment env) { ! Vertex from = (Vertex) env.get(0); ! Vertex to = (Vertex) env.get(1); ! Edge result = new Edge(from, to); ! return result; ! } ! }); ! ! ! ! String script = Project.getInstance().getScript(); try { ! Reader input = new StringReader(script); ! ScriptLexer lexer = new ScriptLexer(input); ! ScriptParser parser = new ScriptParser(lexer); ! parser.script(globals); ! } catch (Exception error) { ! Project.info(error); ! } ! try { ! Project.info("evaluate '" + value + "'"); Environment env = new Environment(globals, null); ! Reader input = new StringReader(value); ! ScriptLexer lexer = new ScriptLexer(input); ! ScriptParser parser = new ScriptParser(lexer); ! Function function = new Function(); ! parser.statement(function); Object result = function.evaluate(env); if (result instanceof Vertex) { result = Geometry.insertVertex((Vertex)result, true); |