#pragma once namespace sqlast { class SelectItem; class SelectList; class SelectStatement; class StatementList; class StringLiteral; class NodeVisitor { public: virtual ~NodeVisitor() = default; virtual void Visit(SelectItem &selectItem) = 0; virtual void Visit(SelectList &selectList) = 0; virtual void Visit(SelectStatement &selectStatement) = 0; virtual void Visit(StatementList &statementList) = 0; virtual void Visit(StringLiteral &stringLiteral) = 0; protected: void VisitSelectListItems(SelectList &selectList); }; }