001package org.clafer.ir; 002 003/** 004 * An immutable expression that evaluates to an integer. 005 * 006 * @author jimmy 007 */ 008public interface IrIntExpr extends IrExpr { 009 010 /** 011 * Domain cannot be empty. 012 * 013 * @return the domain of values this expression can take 014 */ 015 public IrDomain getDomain(); 016 017 /** 018 * Dynamic dispatch on the visitor. 019 * 020 * @param <A> the parameter type 021 * @param <B> the return type 022 * @param visitor the visitor 023 * @param a the parameter 024 * @return the return value 025 */ 026 public <A, B> B accept(IrIntExprVisitor<A, B> visitor, A a); 027}