#include "BuildStandardItemTreeModelNodeVisitor.h" using namespace sqlast; namespace { template class AutoRevert { public: AutoRevert(T& var, const T newValue) : variable(var) , previousValue(var) { variable = std::move(newValue); } AutoRevert(T& var, const T&& newValue) : variable(var) , previousValue(var) { variable = std::move(newValue); } ~AutoRevert() { variable = std::move(previousValue); } AutoRevert(const AutoRevert&) = delete; AutoRevert operator=(const AutoRevert&) = delete; private: T& variable; T previousValue; }; template AutoRevert MakeAutoRevert(T& var, const T newValue) { return AutoRevert(var, newValue); } } BuildStandardItemTreeModelNodeVisitor::BuildStandardItemTreeModelNodeVisitor() : model(std::make_unique()) , currentParent(model->invisibleRootItem()) { } void BuildStandardItemTreeModelNodeVisitor::Visit(SelectItem &selectItem) { } void BuildStandardItemTreeModelNodeVisitor::Visit(SelectList &selectList) { } void BuildStandardItemTreeModelNodeVisitor::Visit(SelectStatement &selectStatement) { auto item = new QStandardItem("SELECT"); currentParent->appendRow(item); auto guard = MakeAutoRevert(currentParent, item); } void sqlast::BuildStandardItemTreeModelNodeVisitor::Visit(StatementList &statementList) { }