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}