001package org.clafer.ir;
002
003import org.clafer.common.Check;
004
005/**
006 *
007 * @author jimmy
008 */
009public class IrSetVar extends IrAbstractSet implements IrVar {
010
011    private final String name;
012
013    IrSetVar(String name, IrDomain env, IrDomain ker, IrDomain card) {
014        super(env, ker, card);
015        this.name = Check.notNull(name);
016    }
017
018    @Override
019    public String getName() {
020        return name;
021    }
022
023    @Override
024    public <A, B> B accept(IrSetExprVisitor<A, B> visitor, A a) {
025        return visitor.visit(this, a);
026    }
027
028    @Override
029    public boolean equals(Object obj) {
030        return this == obj;
031    }
032
033    @Override
034    public int hashCode() {
035        return name.hashCode();
036    }
037
038    @Override
039    public String toString() {
040        // TODO: should only print name
041        return name + "{env=" + getEnv() + ", ker=" + getKer() + ", card=" + getCard() + "}";
042    }
043}