package hdgl.db.query.visitor; import hdgl.db.query.expression.*; public interface Visitor<TR, TA> { /** * a place-holder class which indicates no input or output parameters * _void is not instantiable so you can only use "null" for a _void; * @author elm * */ public static final class _void{ private _void(){ throw new InstantiationError("_void is not instantiable."); } } public TR visitQuery(Query query, TA... arguments); public TR visitVertex(Vertex vertex, TA... arguments); public TR visitEdge(Edge edge, TA... arguments); public TR visitAsteriskQuantifier(AsteriskQuantifier quantifier, TA... arguments); public TR visitQuestionQuantifier(QuestionQuantifier quantifier, TA... arguments); public TR visitPlusQuantifier(PlusQuantifier quantifier, TA... arguments); public TR visitConcat(Concat concat, TA... arguments); public TR visitCondition(Condition cond, TA... arguments); public TR visitOrder(Order order, TA... arguments); public TR visitParallel(Parallel parallel, TA... arguments); }