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