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}