// // AbstractBinder.h // // Library: Data // Package: DataCore // Module: AbstractBinder // // Definition of the AbstractBinder class. // // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef Data_AbstractBinder_INCLUDED #define Data_AbstractBinder_INCLUDED #include "Poco/Data/Data.h" #include "Poco/Data/Date.h" #include "Poco/Data/Time.h" #include "Poco/Data/LOB.h" #include "Poco/DateTime.h" #include "Poco/Nullable.h" #include "Poco/UUID.h" #include "Poco/Any.h" #include "Poco/Dynamic/Var.h" #include "Poco/UTFString.h" #include "Poco/TextEncoding.h" #include #include #include #include namespace Poco { namespace Data { using NullData = NullType; class Transcoder; namespace Keywords { static const NullData null = std::nullopt; } // namespace Keywords class Data_API AbstractBinder /// Interface for Binding data types to placeholders. { public: using Ptr = SharedPtr; enum Direction /// Binding direction for a parameter. { PD_IN, PD_OUT, PD_IN_OUT }; AbstractBinder(Poco::TextEncoding::Ptr pFromEncoding = nullptr, Poco::TextEncoding::Ptr pDBEncoding = nullptr); /// Creates the AbstractBinder. virtual ~AbstractBinder(); /// Destroys the AbstractBinder. virtual void bind(std::size_t pos, const Poco::Int8& val, Direction dir = PD_IN) = 0; /// Binds an Int8. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an Int8 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an Int8 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an Int8 list. virtual void bind(std::size_t pos, const Poco::UInt8& val, Direction dir = PD_IN) = 0; /// Binds an UInt8. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an UInt8 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an UInt8 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an UInt8 list. virtual void bind(std::size_t pos, const Poco::Int16& val, Direction dir = PD_IN) = 0; /// Binds an Int16. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an Int16 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an Int16 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an Int16 list. virtual void bind(std::size_t pos, const Poco::UInt16& val, Direction dir = PD_IN) = 0; /// Binds an UInt16. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an UInt16 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an UInt16 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an UInt16 list. virtual void bind(std::size_t pos, const Poco::Int32& val, Direction dir = PD_IN) = 0; /// Binds an Int32. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an Int32 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an Int32 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an Int32 list. virtual void bind(std::size_t pos, const Poco::UInt32& val, Direction dir = PD_IN) = 0; /// Binds an UInt32. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an UInt32 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an UInt32 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an UInt32 list. virtual void bind(std::size_t pos, const Poco::Int64& val, Direction dir = PD_IN) = 0; /// Binds an Int64. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an Int64 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an Int64 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an Int64 list. virtual void bind(std::size_t pos, const Poco::UInt64& val, Direction dir = PD_IN) = 0; /// Binds an UInt64. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds an UInt64 vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds an UInt64 deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds an UInt64 list. #ifndef POCO_INT64_IS_LONG virtual void bind(std::size_t pos, const long& val, Direction dir = PD_IN) = 0; /// Binds a long. virtual void bind(std::size_t pos, const unsigned long& val, Direction dir = PD_IN) = 0; /// Binds an unsiged long. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a long vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a long deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a long list. #endif virtual void bind(std::size_t pos, const bool& val, Direction dir = PD_IN) = 0; /// Binds a boolean. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a boolean vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a boolean deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a boolean list. virtual void bind(std::size_t pos, const float& val, Direction dir = PD_IN) = 0; /// Binds a float. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a float vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a float deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a float list. virtual void bind(std::size_t pos, const double& val, Direction dir = PD_IN) = 0; /// Binds a double. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a double vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a double deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a double list. virtual void bind(std::size_t pos, const char& val, Direction dir = PD_IN) = 0; /// Binds a single character. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a character vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a character deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a character list. virtual void bind(std::size_t pos, const char* const& pVal, Direction dir = PD_IN) = 0; /// Binds a const char ptr. virtual void bind(std::size_t pos, const std::string& val, Direction dir = PD_IN) = 0; /// Binds a string. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a string vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a string deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a string list. virtual void bind(std::size_t pos, const UTF16String& val, Direction dir = PD_IN); /// Binds a UTF-16 Unicode string. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a UTF-16 Unicode string vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a UTF-16 Unicode string deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a UTF-16 Unicode string list. virtual void bind(std::size_t pos, const BLOB& val, Direction dir = PD_IN) = 0; /// Binds a BLOB. virtual void bind(std::size_t pos, const CLOB& val, Direction dir = PD_IN) = 0; /// Binds a CLOB. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a BLOB vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a BLOB deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a BLOB list. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a CLOB vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a CLOB deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a CLOB list. virtual void bind(std::size_t pos, const DateTime& val, Direction dir = PD_IN) = 0; /// Binds a DateTime. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a DateTime vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a DateTime deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a DateTime list. virtual void bind(std::size_t pos, const Date& val, Direction dir = PD_IN) = 0; /// Binds a Date. virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); /// Binds a Date vector. virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); /// Binds a Date deque. virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); /// Binds a Date list. virtual void bind(std::size_t pos, const Time& val, Direction dir = PD_IN) = 0; /// Binds a Time. virtual void bind(std::size_t pos, const std::vector