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