package models.algebra;
import java.util.ArrayList;
public class Constant extends Term {
public Constant(String value) {
super(new Symbol(value, 0), new ArrayList<Expression>());
}
public Constant(String value, Type type) {
super(new Symbol((type == null ? value: type.valueToRepresentation(value)), 0), new ArrayList<Expression>());
symbol.setSignature(new Type[] {type});
}
public Constant(Symbol symbol) {
super(symbol);
}
@Override
public boolean equals(Object another) {
if (!(another instanceof Constant)) return false;
return symbol.equals(((Constant) another).symbol);
}
@Override
public Object clone() {
Constant c = new Constant(symbol);
c.setType(type);
return c;
}
public String toString() {
return symbol.getName();
}
public Object getValue() {
if (getType() != null) {
return getType().representationToValue(symbol.getName());
}
return symbol.getName();
}
public String toImplementation(String[] sideEffects) {
if (symbol.isImplGenerative()) {
String exp = symbol.generate(getType(), new Type[] {}, new String[] {}, new String[] {}, sideEffects);
return exp;
}
return symbol.getImplName();
}
}