001package org.clafer.ir; 002 003import org.clafer.common.Check; 004 005/** 006 * 007 * @author jimmy 008 */ 009public abstract class IrAbstractInt implements IrIntExpr { 010 011 private final IrDomain domain; 012 013 public IrAbstractInt(IrDomain domain) { 014 this.domain = Check.notNull(domain); 015 016 if (domain.isEmpty()) { 017 throw new IllegalArgumentException(); 018 } 019 } 020 021 /** 022 * {@inheritDoc} 023 */ 024 @Override 025 public IrDomain getDomain() { 026 return domain; 027 } 028 029 @Override 030 public boolean equals(Object obj) { 031 if (obj instanceof IrAbstractInt) { 032 IrAbstractInt other = (IrAbstractInt) obj; 033 return domain.equals(other.domain); 034 } 035 return false; 036 } 037 038 @Override 039 public int hashCode() { 040 // Subclasses can choose not to callthis hashCode function since it can 041 // be expensive. 042 return domain.hashCode(); 043 } 044}