#ifndef __SQLPARSER__SQLPARSER_RESULT_H__ #define __SQLPARSER__SQLPARSER_RESULT_H__ #include "sql/SQLStatement.h" namespace hsql { // Represents the result of the SQLParser. // If parsing was successful it contains a list of SQLStatement. class SQLParserResult { public: // Initialize with empty statement list. SQLParserResult(); // Initialize with a single statement. // Takes ownership of the statement. SQLParserResult(SQLStatement* stmt); // Move constructor. SQLParserResult(SQLParserResult&& moved); // Deletes all statements in the result. virtual ~SQLParserResult(); // Set whether parsing was successful. void setIsValid(bool isValid); // Returns true if parsing was successful. bool isValid() const; // Returns the number of statements in the result. size_t size() const; // Set the details of the error, if available. // Takes ownership of errorMsg. void setErrorDetails(char* errorMsg, int errorLine, int errorColumn); // Returns the error message, if an error occurred. const char* errorMsg() const; // Returns the line number of the occurrance of the error in the query. int errorLine() const; // Returns the column number of the occurrance of the error in the query. int errorColumn() const; // Adds a statement to the result list of statements. // SQLParserResult takes ownership of the statement. void addStatement(SQLStatement* stmt); // Gets the SQL statement with the given index. const SQLStatement* getStatement(int index) const; // Gets the non const SQL statement with the given index. SQLStatement* getMutableStatement(int index); // Get the list of all statements. const std::vector& getStatements() const; // Returns a copy of the list of all statements in this result. // Removes them from this result. std::vector releaseStatements(); // Deletes all statements and other data within the result. void reset(); // Does NOT take ownership. void addParameter(Expr* parameter); const std::vector& parameters(); private: // List of statements within the result. std::vector statements_; // Flag indicating the parsing was successful. bool isValid_; // Error message, if an error occurred. char* errorMsg_; // Line number of the occurrance of the error in the query. int errorLine_; // Column number of the occurrance of the error in the query. int errorColumn_; // Does NOT have ownership. std::vector parameters_; }; } // namespace hsql #endif // __SQLPARSER__SQLPARSER_RESULT_H__