001package org.clafer.ir; 002 003/** 004 * Dynamic dispatch for IR boolean expressions. 005 * 006 * @param <A> the parameter type 007 * @param <B> the return type 008 * @author jimmy 009 */ 010public interface IrBoolExprVisitor<A, B> { 011 012 public B visit(IrBoolVar ir, A a); 013 014 public B visit(IrNot ir, A a); 015 016 public B visit(IrAnd ir, A a); 017 018 public B visit(IrLone ir, A a); 019 020 public B visit(IrOne ir, A a); 021 022 public B visit(IrOr ir, A a); 023 024 public B visit(IrImplies ir, A a); 025 026 public B visit(IrNotImplies ir, A a); 027 028 public B visit(IrIfThenElse ir, A a); 029 030 public B visit(IrIfOnlyIf ir, A a); 031 032 public B visit(IrXor ir, A a); 033 034 public B visit(IrWithin ir, A a); 035 036 public B visit(IrNotWithin ir, A a); 037 038 public B visit(IrCompare ir, A a); 039 040 public B visit(IrSetTest ir, A a); 041 042 public B visit(IrMember ir, A a); 043 044 public B visit(IrNotMember ir, A a); 045 046 public B visit(IrSubsetEq ir, A a); 047 048 public B visit(IrBoolChannel ir, A a); 049 050 public B visit(IrIntChannel ir, A a); 051 052 public B visit(IrSortStrings ir, A a); 053 054 public B visit(IrSortSets ir, A a); 055 056 public B visit(IrSortStringsChannel ir, A a); 057 058 public B visit(IrAllDifferent ir, A a); 059 060 public B visit(IrSelectN ir, A a); 061 062 public B visit(IrAcyclic ir, A a); 063 064 public B visit(IrUnreachable ir, A a); 065 066 public B visit(IrFilterString ir, A a); 067}