001package org.clafer.ir; 002 003import org.clafer.common.Check; 004 005/** 006 * 007 * @author jimmy 008 */ 009public class IrMinus extends IrAbstractInt { 010 011 private final IrIntExpr expr; 012 013 public IrMinus(IrIntExpr expr, IrDomain domain) { 014 super(domain); 015 this.expr = Check.notNull(expr); 016 } 017 018 public IrIntExpr getExpr() { 019 return expr; 020 } 021 022 @Override 023 public <A, B> B accept(IrIntExprVisitor<A, B> visitor, A a) { 024 return visitor.visit(this, a); 025 } 026 027 @Override 028 public boolean equals(Object obj) { 029 if (obj instanceof IrMinus) { 030 IrMinus other = (IrMinus) obj; 031 return expr.equals(other.expr) && super.equals(other); 032 } 033 return false; 034 } 035 036 @Override 037 public int hashCode() { 038 return ~expr.hashCode(); 039 } 040 041 @Override 042 public String toString() { 043 return "-(" + expr + ")"; 044 } 045}