// // Extractor.h // // Library: Data/SQLite // Package: SQLite // Module: Extractor // // Definition of the Extractor class. // // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef Data_SQLite_Extractor_INCLUDED #define Data_SQLite_Extractor_INCLUDED #include "Poco/Data/SQLite/SQLite.h" #include "Poco/Data/SQLite/Utility.h" #include "Poco/Data/AbstractExtractor.h" #include "Poco/Data/MetaColumn.h" #include "Poco/Data/DataException.h" #include "Poco/Data/Constants.h" #include "Poco/Data/Date.h" #include "Poco/Data/Time.h" #include "Poco/Data/Date.h" #include "Poco/Data/Time.h" #include "Poco/Nullable.h" #include "Poco/UUID.h" #include "Poco/UTFString.h" #include "Poco/Any.h" #include "Poco/Dynamic/Var.h" #include "sqlite3.h" #include #include namespace Poco { namespace Data { namespace SQLite { class SQLite_API Extractor: public Poco::Data::AbstractExtractor /// Extracts and converts data values form the result row returned by SQLite. /// If NULL is received, the incoming val value is not changed and false is returned { public: using NullIndVec = std::vector >; /// Type for null indicators container. Extractor(sqlite3_stmt* pStmt); /// Creates the Extractor. ~Extractor(); /// Destroys the Extractor. bool extract(std::size_t pos, Poco::Int8& val) override; /// Extracts an Int8. bool extract(std::size_t pos, Poco::UInt8& val) override; /// Extracts an UInt8. bool extract(std::size_t pos, Poco::Int16& val) override; /// Extracts an Int16. bool extract(std::size_t pos, Poco::UInt16& val) override; /// Extracts an UInt16. bool extract(std::size_t pos, Poco::Int32& val) override; /// Extracts an Int32. bool extract(std::size_t pos, Poco::UInt32& val) override; /// Extracts an UInt32. bool extract(std::size_t pos, Poco::Int64& val) override; /// Extracts an Int64. bool extract(std::size_t pos, Poco::UInt64& val) override; /// Extracts an UInt64. bool extract(std::size_t pos, bool& val) override; /// Extracts a boolean. bool extract(std::size_t pos, float& val) override; /// Extracts a float. bool extract(std::size_t pos, double& val) override; /// Extracts a double. bool extract(std::size_t pos, char& val) override; /// Extracts a single character. bool extract(std::size_t pos, std::string& val) override; /// Extracts a string. bool extract(std::size_t pos, UTF16String& val) override; /// Throws NotImplementedException. bool extract(std::size_t pos, Poco::Data::BLOB& val) override; /// Extracts a BLOB. bool extract(std::size_t pos, Poco::Data::CLOB& val) override; /// Extracts a CLOB. bool extract(std::size_t pos, Poco::Data::Date& val) override; /// Extracts a Date. bool extract(std::size_t pos, Poco::Data::Time& val) override; /// Extracts a Time. bool extract(std::size_t pos, Poco::DateTime& val) override; /// Extracts a DateTime. bool extract(std::size_t pos, Poco::UUID& val) override; /// Extracts a UUID. bool extract(std::size_t pos, Poco::Any& val) override; /// Extracts an Any. bool extract(std::size_t pos, Poco::Dynamic::Var& val) override; /// Extracts a Dynamic::Var. // Nullable extraction bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts an Nullable. #ifndef POCO_INT64_IS_LONG bool extract(std::size_t pos, long& val) override; /// Extracts a long. bool extract(std::size_t pos, unsigned long& val) override; /// Extracts an unsigned long. bool extract(std::size_t pos, std::vector& val) override; /// Extracts a long vector. bool extract(std::size_t pos, std::deque& val) override; /// Extracts a long deque. bool extract(std::size_t pos, std::list& val) override; /// Extracts a long list. bool extract(std::size_t pos, std::vector& val) override; /// Extracts an unsigned long vector. bool extract(std::size_t pos, std::deque& val) override; /// Extracts an unsigned long deque. bool extract(std::size_t pos, std::list& val) override; /// Extracts an unsigned long list. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. #endif bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a single Nullable character. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a Nullable. bool extract(std::size_t pos, Poco::Nullable& val) override; /// Extracts a :Nullable