pgLab/pglablib/sqlast/BuildStandardItemTreeModelNodeVisitor.cpp

70 lines
1.5 KiB
C++
Raw Normal View History

2022-04-07 19:35:29 +02:00
#include "BuildStandardItemTreeModelNodeVisitor.h"
using namespace sqlast;
namespace {
template <class T>
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<class T>
AutoRevert<T> MakeAutoRevert(T& var, const T newValue)
{
return AutoRevert<T>(var, newValue);
}
}
BuildStandardItemTreeModelNodeVisitor::BuildStandardItemTreeModelNodeVisitor()
: model(std::make_unique<QStandardItemModel>())
, 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)
{
}