package code.term.visitor;

import code.term.TermImplBuiltin;
import code.term.TermImplChar;
import code.term.TermImplFloat;
import code.term.TermImplInt;
import code.term.TermImplString;
import code.term.TermImplUser;
import code.term.Variable;
import code.term.TermImplOpaque;

/**
 * @author Stephen Johnson
 * @since Jul 6, 2004
 *
 * Extended to generics by Sergio Antoy
 * on Mon Apr 11 10:37:06 PDT 2005
 *
 */
public interface TermVisitor<R,T> {

    R visit(TermImplChar t, T arg);

    R visit(TermImplFloat t, T arg);

    R visit(TermImplInt t, T arg);

    R visit(TermImplString t, T arg);

    R visit(TermImplOpaque v, T arg);

    R visit(TermImplUser t, T arg);

    R visit(Variable v, T arg);

}

