PointerTypeNode.java
package edu.udel.cis.vsl.tass.ast.impl.type;
import java.io.PrintWriter;
import java.util.NoSuchElementException;
import edu.udel.cis.vsl.tass.ast.IF.ASTNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.type.PointerTypeNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.type.TypeNodeIF;
import edu.udel.cis.vsl.tass.ast.impl.ASTNode;
public class PointerTypeNode extends ASTNode implements PointerTypeNodeIF {
TypeNodeIF baseType;
public PointerTypeNode(long id) {
super(id);
}
public PointerTypeNode(long id, TypeNodeIF baseType) {
super(id);
this.baseType = baseType;
}
@Override
public int numChildren() {
return 1;
}
@Override
public ASTNodeIF child(int index) {
if (index == 0)
return baseType;
throw new NoSuchElementException("Node " + id()
+ " does not have a child with index " + index + ".");
}
@Override
public void setChild(int i, ASTNodeIF child) {
if (i == 1)
baseType = (TypeNodeIF) child;
throw new NoSuchElementException("Node " + id()
+ " does not have a child with index " + i + ".");
}
@Override
public String toString() {
return baseType.toString() + "*";
}
@Override
public void print(String prefix, PrintWriter out) {
out.println(prefix + " AST Node " + id() + ", Pointer Type");
baseType.print(prefix + "|", out);
}
@Override
public TypeNodeIF baseType() {
return baseType;
}
@Override
public void setBaseType(TypeNodeIF baseType) {
this.baseType = baseType;
}
}