package org.overture.interpreter.assistant.definition; import org.overture.ast.assistant.IAstAssistant; import org.overture.ast.definitions.AStateDefinition; import org.overture.interpreter.assistant.IInterpreterAssistantFactory; import org.overture.interpreter.runtime.Context; import org.overture.interpreter.runtime.StateContext; import org.overture.interpreter.runtime.VdmRuntime; import org.overture.interpreter.runtime.state.StateDefinitionRuntimeState; import org.overture.interpreter.values.FunctionValue; import org.overture.interpreter.values.State; public class AStateDefinitionAssistantInterpreter implements IAstAssistant { protected static IInterpreterAssistantFactory af; @SuppressWarnings("static-access") public AStateDefinitionAssistantInterpreter(IInterpreterAssistantFactory af) { //super(af); this.af = af; } public Context getStateContext(AStateDefinition state) { return VdmRuntime.getNodeState(state).moduleState.getContext(); } public void initState(AStateDefinition sdef, StateContext initialContext) { StateDefinitionRuntimeState state = new StateDefinitionRuntimeState(); VdmRuntime.setNodeState(sdef, state); if (sdef.getInvdef() != null) { state.invfunc = new FunctionValue(sdef.getInvdef(), null, null, initialContext); initialContext.put(sdef.getName().getInvName(sdef.getLocation()), state.invfunc); } if (sdef.getInitdef() != null) { state.initfunc = new FunctionValue(sdef.getInitdef(), null, null, initialContext); initialContext.put(sdef.getName().getInitName(sdef.getLocation()), state.initfunc); } state.moduleState = new State(sdef); state.moduleState.initialize(initialContext); } }