--- /dev/null
+package org.simantics.scl.runtime.equations;\r
+\r
+import org.simantics.scl.runtime.SCLContext;\r
+import org.simantics.scl.runtime.function.Function;\r
+import org.simantics.scl.runtime.tuple.Tuple0;\r
+\r
+public interface EquationContext {\r
+ void listenEquationVariable(String variableName, Function callback);\r
+ void setEquationVariable(String variableName, Object value);\r
+ \r
+ public static Object applyEquationContext(Function f, EquationContext equationContext) {\r
+ SCLContext context = SCLContext.getCurrent();\r
+ Object oldEquationContext = context.put("equation", equationContext);\r
+ try {\r
+ return f.apply(Tuple0.INSTANCE);\r
+ } finally {\r
+ context.put("equation", oldEquationContext);\r
+ }\r
+ }\r
+}\r