#pragma once #include #include #include namespace sqlast { class NodeVisitor; class Node { public: Node(); virtual ~Node() = default; virtual void Accept(NodeVisitor &visitor) = 0; /// Every derived class that has child nodes should override these /// to facilitate // virtual int ChildCount() const { return 0; } // virtual const Node* GetChild(int index) const { throw std::out_of_range("GetChild"); } virtual QString ToString() const; }; } /* - Node - INSERT - UPDATE - DELETE - SELECT - WITH - CTE */