package eis.iilang; /** * Encapsulates a truth value. That is either true or false or anything else * (multi-valued logic). * * @author tristanbehrens * */ public class TruthValue extends Parameter { /** * */ private static final long serialVersionUID = 377656049621872537L; /** The value of the numner. */ private String value; /** * Contructs a truth-value. * * @param value */ public TruthValue(String value) { this.value = value; } /** * Constructs a truth-value from a boolean one. * * @param bool */ public TruthValue(boolean bool) { if (bool == true) value = "true"; else value = "false"; } @Override protected String toXML(int depth) { return indent(depth) + "<truthvalue value=\"" + value + "\"/>" + "\n"; } @Override public String toProlog() { String ret = ""; ret += value; return ret; } /** * Returns the value. * * @return */ public String getValue() { return value; } /** * Gets the value as a boolean. Not that this only works iff the value * itself is either true or false. * * @return */ public boolean getBooleanValue() { if (value.equals("true")) return true; else if (value.equals("false")) return false; else throw new AssertionError(value + "cannot be converted to boolean"); } @Override public Object clone() { return new TruthValue(value); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((value == null) ? 0 : value.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof TruthValue)) return false; TruthValue other = (TruthValue) obj; if (value == null) { if (other.value != null) return false; } else if (!value.equals(other.value)) return false; return true; } @Override public Object accept(IILObjectVisitor visitor, Object object) { return visitor.visit(this, object); } @Override public void accept(IILVisitor visitor) { visitor.visit(this); } }