TypeReferenceNode.java

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

import edu.udel.cis.vsl.tass.ast.IF.AbstractSyntaxTreeIF;

import java.io.PrintWriter;

import edu.udel.cis.vsl.tass.ast.IF.ASTNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.TypeDefinitionNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.type.TypeReferenceNodeIF;
import edu.udel.cis.vsl.tass.ast.impl.IdentifierNode;

public class TypeReferenceNode extends IdentifierNode implements
		TypeReferenceNodeIF {

	TypeDefinitionNodeIF referent;

	public TypeReferenceNode(long id) {
		super(id);
	}
	
	public TypeReferenceNode(long mId, String mName,
			TypeDefinitionNodeIF mReferent) {
		super(mId, mName);
		referent = mReferent;
	}

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

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

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

	// No children

	@Override
	protected String nodeType() {
		return "Type 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 + "<trn:typeRef>" + referent.id()
						+ "</trn:typeRef>");
	}

}