001package org.clafer.ir; 002 003import java.util.Arrays; 004import org.clafer.common.Check; 005import org.clafer.common.Util; 006 007/** 008 * 009 * @author jimmy 010 */ 011public class IrSetIntersection extends IrAbstractSet { 012 013 private final IrSetExpr[] operands; 014 015 IrSetIntersection(IrSetExpr[] operands, IrDomain env, IrDomain ker, IrDomain card) { 016 super(env, ker, card); 017 this.operands = Check.noNullsNotEmpty(operands); 018 } 019 020 public IrSetExpr[] getOperands() { 021 return operands; 022 } 023 024 @Override 025 public <A, B> B accept(IrSetExprVisitor<A, B> visitor, A a) { 026 return visitor.visit(this, a); 027 } 028 029 @Override 030 public boolean equals(Object obj) { 031 if (obj instanceof IrSetIntersection) { 032 IrSetIntersection other = (IrSetIntersection) obj; 033 return Arrays.equals(operands, other.operands) && super.equals(other); 034 } 035 return false; 036 } 037 038 @Override 039 public int hashCode() { 040 return 3 * Arrays.hashCode(operands); 041 } 042 043 @Override 044 public String toString() { 045 return "(" + Util.intercalate(") ∪ (", operands) + ")"; 046 } 047}