FunctionReferenceNode.java

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

import java.io.PrintWriter;

import edu.udel.cis.vsl.tass.ast.IF.ASTNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.AbstractSyntaxTreeIF;
import edu.udel.cis.vsl.tass.ast.IF.declaration.FunctionDeclarationNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.expression.FunctionReferenceNodeIF;

public class FunctionReferenceNode
	extends ExpressionNode
	implements FunctionReferenceNodeIF {

	private FunctionDeclarationNodeIF referent;

	private String name;

	public FunctionReferenceNode(long id) {
		super(id);
	}
	
	public FunctionReferenceNode(long id,
								 FunctionDeclarationNodeIF mReferent) {
		super(id);
		referent = mReferent;
	}

	@Override
	public FunctionDeclarationNodeIF referent() {
		return referent;
	}

	@Override
	public void setReferent(ASTNodeIF mReferent) {
		referent = (FunctionDeclarationNodeIF)mReferent;
	}

	@Override
	public void setReferent(FunctionDeclarationNodeIF mReferent) {
		referent = mReferent;
	}

	@Override
	public String name() {
		return name;
	}

	@Override
	public void setName(String newName) {
		this.name = newName;
	}

	@Override
	protected String nodeType() {
		return "Function Reference";
	}

	@Override
	public String toString() {
		return super.toString() + " referent: " + referent.id();
	}

	@Override
	public void toXml(String prefix, PrintWriter out,AbstractSyntaxTreeIF ast) {
		super.toXml(prefix,out,ast);
		
		out.println(prefix+"<frn:referentRef>"+referent.id()+"</frn:referentRef>");
	}
	
}