69 lines
1.5 KiB
C++
69 lines
1.5 KiB
C++
#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)
|
|
{
|
|
}
|