001package org.clafer.ir; 002 003import org.clafer.common.Check; 004 005/** 006 * 007 * @author jimmy 008 */ 009public class IrCard extends IrAbstractInt { 010 011 private final IrSetExpr set; 012 013 IrCard(IrSetExpr set, IrDomain domain) { 014 super(domain); 015 this.set = Check.notNull(set); 016 if (!IrUtil.isSubsetOf(domain, set.getCard())) { 017 throw new IllegalArgumentException(); 018 } 019 } 020 021 public IrSetExpr getSet() { 022 return set; 023 } 024 025 @Override 026 public <A, B> B accept(IrIntExprVisitor<A, B> visitor, A a) { 027 return visitor.visit(this, a); 028 } 029 030 @Override 031 public boolean equals(Object obj) { 032 if (obj instanceof IrCard) { 033 IrCard other = (IrCard) obj; 034 return set.equals(other.set) && super.equals(other); 035 } 036 return false; 037 } 038 039 @Override 040 public int hashCode() { 041 return 31 * set.hashCode(); 042 } 043 044 @Override 045 public String toString() { 046 return "|" + set + "|"; 047 } 048}