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}