/** * */ package soottocfg.cfg.expression.literal; import java.util.HashSet; import java.util.Map; import java.util.Set; import soottocfg.cfg.SourceLocation; import soottocfg.cfg.expression.Expression; import soottocfg.cfg.expression.IdentifierExpression; import soottocfg.cfg.type.BoolType; import soottocfg.cfg.type.Type; import soottocfg.cfg.variable.Variable; /** * @author schaef * */ public class BooleanLiteral extends Expression implements Literal{ /** * */ private static final long serialVersionUID = -8808519364513150612L; private final boolean value; public static BooleanLiteral trueLiteral() { return new BooleanLiteral(null, true); } public static BooleanLiteral falseLiteral() { return new BooleanLiteral(null, false); } public BooleanLiteral(SourceLocation loc, boolean value) { super(loc); this.value = value; } public boolean getValue() { return value; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(value); return sb.toString(); } @Override public Set<IdentifierExpression> getUseIdentifierExpressions() { return new HashSet<IdentifierExpression>(); } @Override public Set<Variable> getDefVariables() { Set<Variable> used = new HashSet<Variable>(); return used; } @Override public Type getType() { return BoolType.instance(); } @Override public boolean equals(Object other) { if (other instanceof BooleanLiteral) { return ((BooleanLiteral) other).getValue() == this.value; } return false; } @Override public int hashCode() { // same hash code as Boolean.hashCode return value ? 1231 : 1237; } @Override public Expression deepCopy() { return new BooleanLiteral(getSourceLocation(), value); } @Override public Expression substitute(Map<Variable, Variable> subs) { return this.deepCopy(); } @Override public Expression substituteVarWithExpression(Map<Variable, Expression> subs) { return this.deepCopy(); } }