001package org.clafer.ir;
002
003/**
004 * Dynamic dispatch for IR set expressions.
005 *
006 * @param <A> the parameter type
007 * @param <B> the return type
008 * @author jimmy
009 */
010public interface IrSetExprVisitor<A, B> {
011
012    public B visit(IrSetVar ir, A a);
013
014    public B visit(IrSingleton ir, A a);
015
016    public B visit(IrArrayToSet ir, A a);
017
018    public B visit(IrJoinRelation ir, A a);
019
020    public B visit(IrJoinFunction ir, A a);
021
022    public B visit(IrSetDifference ir, A a);
023
024    public B visit(IrSetIntersection ir, A a);
025
026    public B visit(IrSetUnion ir, A a);
027
028    public B visit(IrOffset ir, A a);
029
030    public B visit(IrMask ir, A a);
031
032    public B visit(IrSetTernary ir, A a);
033}