SwitchStatementNode.java
package edu.udel.cis.vsl.tass.ast.impl.statement;
import edu.udel.cis.vsl.tass.ast.IF.LabelReferenceNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.PairNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.SequenceNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.expression.ExpressionNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.statement.StatementNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.statement.SwitchStatementNodeIF;
/**
* A switch statement.
*
* @author Timothy K. Zirkel (zirkel)
*
*/
public class SwitchStatementNode extends StatementNode implements
SwitchStatementNodeIF {
private ExpressionNodeIF expression;
private SequenceNodeIF<PairNodeIF<ExpressionNodeIF, LabelReferenceNodeIF>> cases;
private LabelReferenceNodeIF defaultCase;
private StatementNodeIF body;
public SwitchStatementNode(long id) {
super(id);
}
/**
* A switch statement. The parameter expression is the evaluated expression
* for the switch. The parameter cases gives sets of parings of values the
* switch expression might match and labels for the corresponding point in
* the switch statement body. The parameter defaultCase gives the label for
* where to go when no other cases are matched. The body is the whole body
* of the switch statement, including appropriate labels.
*/
public SwitchStatementNode(
long id,
ExpressionNodeIF expression,
SequenceNodeIF<PairNodeIF<ExpressionNodeIF, LabelReferenceNodeIF>> cases,
LabelReferenceNodeIF defaultCase, StatementNodeIF body) {
super(id);
this.expression = expression;
this.cases = cases;
this.defaultCase = defaultCase;
this.body = body;
}
@Override
public ExpressionNodeIF expression() {
return expression;
}
@Override
public SequenceNodeIF<PairNodeIF<ExpressionNodeIF, LabelReferenceNodeIF>> cases() {
return cases;
}
@Override
public LabelReferenceNodeIF defaultCase() {
return defaultCase;
}
@Override
public StatementNodeIF body() {
return body;
}
@Override
public void setExpression(ExpressionNodeIF expression) {
this.expression = expression;
}
@Override
public void setCases(
SequenceNodeIF<PairNodeIF<ExpressionNodeIF, LabelReferenceNodeIF>> cases) {
this.cases = cases;
}
@Override
public void setDefaultCase(LabelReferenceNodeIF defaultCase) {
this.defaultCase = defaultCase;
}
@Override
public void setBody(StatementNodeIF body) {
this.body = body;
}
}