Beispiel #1
0
/** Created by wayne on 15/10/27. */
public final class IRUnop extends IRExp {
  public final Uop op;
  public final IRExp e;
  final int recordHash;
  static final Hash<P2<Uop, IRExp>> hash = Hash.p2Hash(Hash.anyHash(), Hash.anyHash());

  public IRUnop(Uop op, IRExp e) {
    this.op = op;
    this.e = e;
    this.recordHash = hash.hash(P.p(op, e));
  }

  @Override
  public boolean equals(Object obj) {
    return (obj instanceof IRUnop && op.equals(((IRUnop) obj).op) && e.equals(((IRUnop) obj).e));
  }

  @Override
  public int hashCode() {
    return recordHash;
  }

  @Override
  public FHashSet<IRPVar> free() {
    return e.free();
  }

  @Override
  public String toString() {
    return op + "(" + e + ")";
  }

  @Override
  public <T> T accept(IRExpVisitor<T> ask) {
    return ask.forUnop(this);
  }

  @Override
  public IRExp accept(SimpleTransformVisitor ask) {
    return ask.forUnop(this);
  }

  @Override
  public <T> P2<IRExp, T> accept(TransformVisitor<T> ask) {
    return ask.forUnop(this);
  }
}