/src/sql-parser/src/SQLParserResult.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | |
2 | | #include "SQLParserResult.h" |
3 | | #include <algorithm> |
4 | | |
5 | | namespace hsql { |
6 | | |
7 | 5.22k | SQLParserResult::SQLParserResult() : isValid_(false), errorMsg_(nullptr) {} |
8 | | |
9 | 0 | SQLParserResult::SQLParserResult(SQLStatement* stmt) : isValid_(false), errorMsg_(nullptr) { addStatement(stmt); } |
10 | | |
11 | | // Move constructor. |
12 | 0 | SQLParserResult::SQLParserResult(SQLParserResult&& moved) { *this = std::forward<SQLParserResult>(moved); } |
13 | | |
14 | 0 | SQLParserResult& SQLParserResult::operator=(SQLParserResult&& moved) { |
15 | 0 | isValid_ = moved.isValid_; |
16 | 0 | errorMsg_ = moved.errorMsg_; |
17 | 0 | statements_ = std::move(moved.statements_); |
18 | |
|
19 | 0 | moved.errorMsg_ = nullptr; |
20 | 0 | moved.reset(); |
21 | 0 | return *this; |
22 | 0 | } |
23 | | |
24 | 5.22k | SQLParserResult::~SQLParserResult() { reset(); } |
25 | | |
26 | 63.6k | void SQLParserResult::addStatement(SQLStatement* stmt) { statements_.push_back(stmt); } |
27 | | |
28 | 0 | const SQLStatement* SQLParserResult::getStatement(size_t index) const { return statements_[index]; } |
29 | | |
30 | 0 | SQLStatement* SQLParserResult::getMutableStatement(size_t index) { return statements_[index]; } |
31 | | |
32 | 0 | size_t SQLParserResult::size() const { return statements_.size(); } |
33 | | |
34 | 0 | bool SQLParserResult::isValid() const { return isValid_; } |
35 | | |
36 | 653 | const char* SQLParserResult::errorMsg() const { return errorMsg_; } |
37 | | |
38 | 0 | int SQLParserResult::errorLine() const { return errorLine_; } |
39 | | |
40 | 0 | int SQLParserResult::errorColumn() const { return errorColumn_; } |
41 | | |
42 | 10.5k | void SQLParserResult::setIsValid(bool isValid) { isValid_ = isValid; } |
43 | | |
44 | 5.35k | void SQLParserResult::setErrorDetails(char* errorMsg, int errorLine, int errorColumn) { |
45 | 5.35k | errorMsg_ = errorMsg; |
46 | 5.35k | errorLine_ = errorLine; |
47 | 5.35k | errorColumn_ = errorColumn; |
48 | 5.35k | } |
49 | | |
50 | 0 | const std::vector<SQLStatement*>& SQLParserResult::getStatements() const { return statements_; } |
51 | | |
52 | 0 | std::vector<SQLStatement*> SQLParserResult::releaseStatements() { |
53 | 0 | std::vector<SQLStatement*> copy = statements_; |
54 | |
|
55 | 0 | statements_.clear(); |
56 | |
|
57 | 0 | return copy; |
58 | 0 | } |
59 | | |
60 | 5.22k | void SQLParserResult::reset() { |
61 | 63.6k | for (SQLStatement* statement : statements_) { |
62 | 63.6k | delete statement; |
63 | 63.6k | } |
64 | 5.22k | statements_.clear(); |
65 | | |
66 | 5.22k | isValid_ = false; |
67 | | |
68 | 5.22k | free(errorMsg_); |
69 | 5.22k | errorMsg_ = nullptr; |
70 | 5.22k | errorLine_ = -1; |
71 | 5.22k | errorColumn_ = -1; |
72 | 5.22k | } |
73 | | |
74 | | // Does NOT take ownership. |
75 | 237k | void SQLParserResult::addParameter(Expr* parameter) { |
76 | 237k | parameters_.push_back(parameter); |
77 | 1.93G | std::sort(parameters_.begin(), parameters_.end(), [](const Expr* a, const Expr* b) { return a->ival < b->ival; }); |
78 | 237k | } |
79 | | |
80 | 0 | const std::vector<Expr*>& SQLParserResult::parameters() { return parameters_; } |
81 | | |
82 | | } // namespace hsql |