package dk.brics.jscontrolflow.statements; import java.util.Collections; import java.util.List; import dk.brics.jscontrolflow.Statement; /** * Statement that assigns to exactly one temporary variable * (called v<sub>result</sub> by convention). * * @author Asger */ public abstract class Assignment extends Statement { private int resultVar; public Assignment(int resultVar) { this.resultVar = resultVar; } public int getResultVar() { return resultVar; } public void setResultVar(int resultVar) { this.resultVar = resultVar; } public abstract void apply(AssignmentVisitor v); public abstract <Q,A> A apply(AssignmentQuestionAnswer<Q, A> v, Q arg); @Override public final void apply(StatementVisitor v) { apply((AssignmentVisitor)v); } @Override public final <Q, A> A apply(StatementQuestionAnswer<Q, A> v, Q arg) { return apply((AssignmentQuestionAnswer<Q, A>)v, arg); } @Override public final List<Integer> getAssignedVariables() { return Collections.singletonList(resultVar); } }