EnumElementReferenceNode.java
package edu.udel.cis.vsl.tass.ast.impl.expression;
import edu.udel.cis.vsl.tass.ast.IF.ASTNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.IdentifierNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.PairNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.expression.EnumElementReferenceNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.expression.LiteralNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.type.TypeNodeIF;
/**
* A reference to an enumerated value.
*
* @author Timothy K. Zirkel (zirkel)
*
*/
public class EnumElementReferenceNode extends LiteralNode implements
EnumElementReferenceNodeIF {
private PairNodeIF<IdentifierNodeIF, LiteralNodeIF> referent;
public EnumElementReferenceNode(long id) {
super(id);
}
/**
* A reference to an enumerated value. The identifer is the name of the
* reference, the parameter type is the type of the node, and the parameter
* referent is the pairing of the enumerated type name to the corresponding
* literal.
*/
public EnumElementReferenceNode(long id, IdentifierNodeIF identifier,
TypeNodeIF type,
PairNodeIF<IdentifierNodeIF, LiteralNodeIF> referent) {
super(id, identifier, type);
this.referent = referent;
}
@Override
public void setReferent(ASTNodeIF referent) {
// TODO: Handle this properly. This should never be called
assert false;
}
@Override
public String name() {
return super.identifier().name();
}
@Override
public void setName(String name) {
super.identifier().setName(name);
}
@Override
public PairNodeIF<IdentifierNodeIF, LiteralNodeIF> referent() {
return referent;
}
@Override
public void setReferent(PairNodeIF<IdentifierNodeIF, LiteralNodeIF> referent) {
this.referent = referent;
}
}