// // AbstractExtractor.h // // Library: Data // Package: DataCore // Module: AbstractExtractor // // Definition of the AbstractExtractor class. // // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef Data_AbstractExtractor_INCLUDED #define Data_AbstractExtractor_INCLUDED #include "Poco/Data/Data.h" #include "Poco/Data/Constants.h" #include "Poco/Data/LOB.h" #include "Poco/UUID.h" #include "Poco/UTFString.h" #include #include #include #include #include namespace Poco { class DateTime; class Any; namespace Dynamic { class Var; } namespace Data { class Date; class Time; class Data_API AbstractExtractor /// Interface used to extract data from a single result row. /// If an extractor receives null it is not allowed to change val! { public: using Ptr = SharedPtr; AbstractExtractor(); /// Creates the AbstractExtractor. virtual ~AbstractExtractor(); /// Destroys the AbstractExtractor. virtual bool extract(std::size_t pos, Poco::Int8& val) = 0; /// Extracts an Int8. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an Int8 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an Int8 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an Int8 list. virtual bool extract(std::size_t pos, Poco::UInt8& val) = 0; /// Extracts an UInt8. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an UInt8 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an UInt8 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an UInt8 list. virtual bool extract(std::size_t pos, Poco::Int16& val) = 0; /// Extracts an Int16. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an Int16 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an Int16 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an Int16 list. virtual bool extract(std::size_t pos, Poco::UInt16& val) = 0; /// Extracts an UInt16. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an UInt16 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an UInt16 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an UInt16 list. virtual bool extract(std::size_t pos, Poco::Int32& val) = 0; /// Extracts an Int32. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an Int32 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an Int32 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an Int32 list. virtual bool extract(std::size_t pos, Poco::UInt32& val) = 0; /// Extracts an UInt32. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an UInt32 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an UInt32 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an UInt32 list. virtual bool extract(std::size_t pos, Poco::Int64& val) = 0; /// Extracts an Int64. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an Int64 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an Int64 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an Int64 list. virtual bool extract(std::size_t pos, Poco::UInt64& val) = 0; /// Extracts an UInt64. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts an UInt64 vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts an UInt64 deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts an UInt64 list. #ifndef POCO_INT64_IS_LONG virtual bool extract(std::size_t pos, long& val) = 0; /// Extracts a long. Returns false if null was received. virtual bool extract(std::size_t pos, unsigned long& val) = 0; /// Extracts an unsigned long. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a long vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a long deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a long list. #endif virtual bool extract(std::size_t pos, bool& val) = 0; /// Extracts a boolean. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a boolean vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a boolean deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a boolean list. virtual bool extract(std::size_t pos, float& val) = 0; /// Extracts a float. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a float vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a float deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a float list. virtual bool extract(std::size_t pos, double& val) = 0; /// Extracts a double. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a double vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a double deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a double list. virtual bool extract(std::size_t pos, char& val) = 0; /// Extracts a single character. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a character vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a character deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a character list. virtual bool extract(std::size_t pos, std::string& val) = 0; /// Extracts a string. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a string vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a string deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a string list. virtual bool extract(std::size_t pos, UTF16String& val); /// Extracts a UTF16String. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a UTF16String vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a UTF16String deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a UTF16String list. virtual bool extract(std::size_t pos, BLOB& val) = 0; /// Extracts a BLOB. Returns false if null was received. virtual bool extract(std::size_t pos, CLOB& val) = 0; /// Extracts a CLOB. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a BLOB vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a BLOB deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a BLOB list. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a CLOB vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a CLOB deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a CLOB list. virtual bool extract(std::size_t pos, DateTime& val) = 0; /// Extracts a DateTime. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a DateTime vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a DateTime deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a DateTime list. virtual bool extract(std::size_t pos, Date& val) = 0; /// Extracts a Date. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector& val); /// Extracts a Date vector. virtual bool extract(std::size_t pos, std::deque& val); /// Extracts a Date deque. virtual bool extract(std::size_t pos, std::list& val); /// Extracts a Date list. virtual bool extract(std::size_t pos, Time& val) = 0; /// Extracts a Time. Returns false if null was received. virtual bool extract(std::size_t pos, std::vector