// // AbstractPreparator.h // // Library: Data // Package: DataCore // Module: AbstractPreparator // // Definition of the AbstractPreparator class. // // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef Data_AbstractPreparator_INCLUDED #define Data_AbstractPreparator_INCLUDED #include "Poco/Data/Data.h" #include "Poco/RefCountedObject.h" #include "Poco/Data/LOB.h" #include "Poco/Nullable.h" #include "Poco/UUID.h" #include "Poco/UTFString.h" #include #include #include #include namespace Poco { class DateTime; class Any; namespace Dynamic { class Var; } namespace Data { class Date; class Time; class Data_API AbstractPreparator /// Interface used for database preparation where we first have to register all data types /// (and memory output locations) before extracting data, e.g. ODBC. /// Extract works as two-phase extract: first we call prepare once, then extract n-times. /// There are cases (bulk operations using std::vector storage) when extract is called only once. /// The value passed to a prepare() call is not used by the prepare, serving only as an indication /// of the data type being prepared, thus all values are passed as const references. /// Implementing this interface is not mandatory for a connector. Connectors that only extract data /// after SQL execution (e.g. SQLite) do not need this functionality at all. { public: using Ptr = SharedPtr; AbstractPreparator(Poco::UInt32 length = 1u); /// Creates the AbstractPreparator. virtual ~AbstractPreparator(); /// Destroys the AbstractPreparator. virtual void prepare(std::size_t pos, const Poco::Int8&) = 0; /// Prepares an Int8. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an Int8 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an Int8 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an Int8 list. virtual void prepare(std::size_t pos, const Poco::UInt8&) = 0; /// Prepares an UInt8. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an UInt8 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an UInt8 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an UInt8 list. virtual void prepare(std::size_t pos, const Poco::Int16&) = 0; /// Prepares an Int16. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an Int16 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an Int16 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an Int16 list. virtual void prepare(std::size_t pos, const Poco::UInt16&) = 0; /// Prepares an UInt16. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an UInt16 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an UInt16 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an UInt16 list. virtual void prepare(std::size_t pos, const Poco::Int32&) = 0; /// Prepares an Int32. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an Int32 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an Int32 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an Int32 list. virtual void prepare(std::size_t pos, const Poco::UInt32&) = 0; /// Prepares an UInt32. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an UInt32 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an UInt32 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an UInt32 list. virtual void prepare(std::size_t pos, const Poco::Int64&) = 0; /// Prepares an Int64. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an Int64 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an Int64 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an Int64 list. virtual void prepare(std::size_t pos, const Poco::UInt64&) = 0; /// Prepares an UInt64. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares an UInt64 vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares an UInt64 deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares an UInt64 list. #ifndef POCO_INT64_IS_LONG virtual void prepare(std::size_t pos, const long&) = 0; /// Prepares a long. virtual void prepare(std::size_t pos, const unsigned long&) = 0; /// Prepares an unsigned long. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a long vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a long deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a long list. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a unsigned long vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a unsigned long deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a unsigned long list. #endif virtual void prepare(std::size_t pos, const bool&) = 0; /// Prepares a boolean. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a boolean vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a boolean deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a boolean list. virtual void prepare(std::size_t pos, const float&) = 0; /// Prepares a float. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a float vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a float deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a float list. virtual void prepare(std::size_t pos, const double&) = 0; /// Prepares a double. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a double vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a double deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a double list. virtual void prepare(std::size_t pos, const char&) = 0; /// Prepares a single character. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a character vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a character deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a character list. virtual void prepare(std::size_t pos, const std::string&) = 0; /// Prepares a string. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a string vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a string deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a character list. virtual void prepare(std::size_t pos, const UTF16String&) = 0; /// Prepares a UTF16String. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a UTF16String vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a UTF16String deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a UTF16String list. virtual void prepare(std::size_t pos, const BLOB&) = 0; /// Prepares a BLOB. virtual void prepare(std::size_t pos, const CLOB&) = 0; /// Prepares a CLOB. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a BLOB vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a BLOB deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a BLOB list. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a CLOB vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a CLOB deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a CLOB list. virtual void prepare(std::size_t pos, const DateTime&) = 0; /// Prepares a DateTime. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a DateTime vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a DateTime deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a DateTime list. virtual void prepare(std::size_t pos, const Date&) = 0; /// Prepares a Date. virtual void prepare(std::size_t pos, const std::vector& val); /// Prepares a Date vector. virtual void prepare(std::size_t pos, const std::deque& val); /// Prepares a Date deque. virtual void prepare(std::size_t pos, const std::list& val); /// Prepares a Date list. virtual void prepare(std::size_t pos, const Time&) = 0; /// Prepares a Time. virtual void prepare(std::size_t pos, const std::vector