WhileLoopNode.java

package edu.udel.cis.vsl.tass.ast.impl.statement;

import java.util.Collection;

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.expression.PureExpressionNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.statement.StatementNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.statement.WhileLoopNodeIF;

/**
 * A while loop.
 * 
 * @author Timothy K. Zirkel (zirkel)
 * 
 */
public class WhileLoopNode extends StatementNode implements WhileLoopNodeIF {

	private SequenceNodeIF<PureExpressionNodeIF> invariants = null;
	private StatementNodeIF body;
	private ExpressionNodeIF condition;

	public WhileLoopNode(long id) {
		super(id);
	}
	
	/**
	 * The parameter body is the body of the loop. The parameter condition is
	 * the expression for the loop condition.
	 */
	public WhileLoopNode(long id, StatementNodeIF body,
			ExpressionNodeIF condition) {
		super(id);
		this.body = body;
		this.condition = condition;
	}

	@Override
	public StatementNodeIF body() {
		return body;
	}

	@Override
	public SequenceNodeIF<PureExpressionNodeIF> invariants() {
		return invariants;
	}

	@Override
	public void setBody(StatementNodeIF body) {
		this.body = body;
	}

	@Override
	public void setInvariants(SequenceNodeIF<PureExpressionNodeIF> invariants) {
		this.invariants = invariants;
	}

	@Override
	public ExpressionNodeIF condition() {
		return condition;
	}

	@Override
	public void setCondition(ExpressionNodeIF condition) {
		this.condition = condition;
	}

}