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>");
}
}