FunctionApplicationNode.java

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

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.FunctionApplicationNodeIF;
import edu.udel.cis.vsl.tass.ast.impl.expression.ExpressionNode;

/**
 * A function application.
 * 
 * @author Timothy K. Zirkel (zirkel)
 * 
 */
public class FunctionApplicationNode extends ExpressionNode implements
		FunctionApplicationNodeIF {

	private ExpressionNodeIF function;
	private SequenceNodeIF<ExpressionNodeIF> arguments;

	public FunctionApplicationNode(long id) {
		super(id);
	}
	
	/**
	 * A function application. The parameter function is an expression
	 * evaluating to a function. The parameter arguments is the sequence of
	 * arguments to the function.
	 */
	public FunctionApplicationNode(long id, ExpressionNodeIF function,
			SequenceNodeIF<ExpressionNodeIF> arguments) {
		super(id);
		this.function = function;
		this.arguments = arguments;
	}

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

	@Override
	public SequenceNodeIF<ExpressionNodeIF> arguments() {
		return arguments;
	}

	@Override
	public void setFunction(ExpressionNodeIF function) {
		this.function = function;
	}

	@Override
	public void setArguments(SequenceNodeIF<ExpressionNodeIF> arguments) {
		this.arguments = arguments;
	}

}