001package org.clafer.ir; 002 003import java.util.Arrays; 004import org.clafer.common.Check; 005 006/** 007 * 008 * @author jimmy 009 */ 010public class IrSortSets extends IrAbstractBool implements IrBoolExpr { 011 012 private final IrSetExpr[] sets; 013 014 public IrSortSets(IrSetExpr[] sets, IrBoolDomain domain) { 015 super(domain); 016 this.sets = Check.noNullsNotEmpty(sets); 017 } 018 019 public IrSetExpr[] getSets() { 020 return sets; 021 } 022 023 @Override 024 public IrBoolExpr negate() { 025 return new IrNot(this, getDomain().invert()); 026 } 027 028 @Override 029 public boolean isNegative() { 030 return false; 031 } 032 033 @Override 034 public <A, B> B accept(IrBoolExprVisitor<A, B> visitor, A a) { 035 return visitor.visit(this, a); 036 } 037 038 @Override 039 public <A, B> B accept(IrIntExprVisitor<A, B> visitor, A a) { 040 return visitor.visit(this, a); 041 } 042 043 @Override 044 public boolean equals(Object obj) { 045 if (obj instanceof IrSortSets) { 046 IrSortSets other = (IrSortSets) obj; 047 return Arrays.deepEquals(sets, other.sets); 048 } 049 return false; 050 } 051 052 @Override 053 public int hashCode() { 054 return Arrays.deepHashCode(sets); 055 } 056}