DoUntilNode.java

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

import java.util.Collection;

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

/**
 * A Do... Until... loop.
 * 
 * @author Timothy K. Zirkel (zirkel)
 *
 */
public class DoUntilNode extends StatementNode implements DoUntilNodeIF {

	StatementNodeIF body;
	SequenceNodeIF<PureExpressionNodeIF> invariants;
	ExpressionNodeIF condition;
	
	public DoUntilNode(long id) {
		super(id);
	}
	
	/**
	 * The parameter body is the body of the loop.  The parameter condition is
	 * the loop control condition.
	 */
	public DoUntilNode(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;
	}

}