From 79f7b43dc4738c48c7ef6d093399cfec88733b88 Mon Sep 17 00:00:00 2001 From: Alex Fabijanic Date: Fri, 24 Jun 2022 05:59:15 +0200 Subject: [PATCH] feat(TypeHandler): DB into() does not compile for more than 20 members in a tuple #3342 --- Data/include/Poco/Data/TypeHandler.h | 4090 ++++++++++++++++++++++++-- 1 file changed, 3877 insertions(+), 213 deletions(-) diff --git a/Data/include/Poco/Data/TypeHandler.h b/Data/include/Poco/Data/TypeHandler.h index 85684666e..235cbbb26 100644 --- a/Data/include/Poco/Data/TypeHandler.h +++ b/Data/include/Poco/Data/TypeHandler.h @@ -79,18 +79,18 @@ class TypeHandler: public AbstractTypeHandler /// // the table is defined as Person (LastName VARCHAR(30), FirstName VARCHAR, Age INTEGER(3)) /// // Note that we advance pos by the number of columns the datatype uses! For string/int this is one. /// poco_assert_dbg (!pBinder.isNull()); - /// TypeHandler::bind(pos++, obj.getLastName(), pBinder, dir); - /// TypeHandler::bind(pos++, obj.getFirstName(), pBinder, dir); - /// TypeHandler::bind(pos++, obj.getAge(), pBinder, dir); + /// TypeHandler::bind(pos++, obj.getLastName(), pBinder, dir); + /// TypeHandler::bind(pos++, obj.getFirstName(), pBinder, dir); + /// TypeHandler::bind(pos++, obj.getAge(), pBinder, dir); /// } /// /// static void prepare(std::size_t pos, const Person& obj, AbstractPreparator::Ptr pPreparator) /// { /// // the table is defined as Person (LastName VARCHAR(30), FirstName VARCHAR, Age INTEGER(3)) /// poco_assert_dbg (!pPreparator.isNull()); - /// TypeHandler::prepare(pos++, obj.getLastName(), pPreparator); - /// TypeHandler::prepare(pos++, obj.getFirstName(), pPreparator); - /// TypeHandler::prepare(pos++, obj.getAge(), pPreparator); + /// TypeHandler::prepare(pos++, obj.getLastName(), pPreparator); + /// TypeHandler::prepare(pos++, obj.getFirstName(), pPreparator); + /// TypeHandler::prepare(pos++, obj.getAge(), pPreparator); /// } /// /// static void extract(std::size_t pos, Person& obj, const Person& defVal, AbstractExtractor::Ptr pExt) @@ -102,9 +102,9 @@ class TypeHandler: public AbstractTypeHandler /// std::string firstName; /// int age = 0; /// // the table is defined as Person (LastName VARCHAR(30), FirstName VARCHAR, Age INTEGER(3)) - /// TypeHandler::extract(pos++, lastName, defVal.getLastName(), pExt); - /// TypeHandler::extract(pos++, firstName, defVal.getFirstName(), pExt); - /// TypeHandler::extract(pos++, age, defVal.getAge(), pExt); + /// TypeHandler::extract(pos++, lastName, defVal.getLastName(), pExt); + /// TypeHandler::extract(pos++, firstName, defVal.getFirstName(), pExt); + /// TypeHandler::extract(pos++, age, defVal.getAge(), pExt); /// obj.setLastName(lastName); /// obj.setFirstName(firstName); /// obj.setAge(age); @@ -343,6 +343,3670 @@ void tupleExtract(std::size_t& pos, TupleType tuple, DefValType defVal, Abstract } +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + +template +class TypeHandler> +{ + public: + using TupleConstRef = typename Poco::TypeWrapper>::CONSTREFTYPE; + using TupleRef = typename Poco::TypeWrapper>::REFTYPE; + + static void bind(std::size_t pos, TupleConstRef tuple, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) + { + poco_assert_dbg (!pBinder.isNull()); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + tupleBind(pos, tuple, pBinder, dir); + } + + static void prepare(std::size_t pos, TupleConstRef tuple, AbstractPreparator::Ptr pPreparator) + { + poco_assert_dbg (!pPreparator.isNull()); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + tuplePrepare(pos, tuple, pPreparator); + } + + static std::size_t size() + { + return TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); + } + + static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) + { + poco_assert_dbg (!pExt.isNull()); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + tupleExtract(pos, tuple, defVal, pExt); + } + + private: + TypeHandler(const TypeHandler&); + TypeHandler& operator=(const TypeHandler&); +}; + + template ::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -550,24 +4214,24 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -673,23 +4337,23 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -791,22 +4455,22 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -904,21 +4568,21 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1012,20 +4676,20 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1115,19 +4779,19 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1213,18 +4877,18 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1306,17 +4970,17 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1394,16 +5058,16 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1468,15 +5132,15 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1538,14 +5202,14 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1604,13 +5268,13 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1666,12 +5330,12 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1724,11 +5388,11 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1778,10 +5442,10 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1828,9 +5492,9 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1874,8 +5538,8 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size() + + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1916,7 +5580,7 @@ public: static std::size_t size() { return TypeHandler::size() + - TypeHandler::size(); + TypeHandler::size(); } static void extract(std::size_t pos, TupleRef tuple, TupleConstRef defVal, AbstractExtractor::Ptr pExt) @@ -1975,9 +5639,9 @@ class TypeHandler>: public AbstractTypeHandler public: static void bind(std::size_t pos, const std::pair& obj, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) { - TypeHandler::bind(pos, obj.first, pBinder, dir); + TypeHandler::bind(pos, obj.first, pBinder, dir); pos += TypeHandler::size(); - TypeHandler::bind(pos, obj.second, pBinder, dir); + TypeHandler::bind(pos, obj.second, pBinder, dir); } static std::size_t size() @@ -1987,16 +5651,16 @@ public: static void extract(std::size_t pos, std::pair& obj, const std::pair& defVal, AbstractExtractor::Ptr pExt) { - TypeHandler::extract(pos, obj.first, defVal.first, pExt); + TypeHandler::extract(pos, obj.first, defVal.first, pExt); pos += TypeHandler::size(); - TypeHandler::extract(pos, obj.second, defVal.second, pExt); + TypeHandler::extract(pos, obj.second, defVal.second, pExt); } static void prepare(std::size_t pos, const std::pair& obj, AbstractPreparator::Ptr pPreparator) { - TypeHandler::prepare(pos, obj.first, pPreparator); + TypeHandler::prepare(pos, obj.first, pPreparator); pos += TypeHandler::size(); - TypeHandler::prepare(pos, obj.second, pPreparator); + TypeHandler::prepare(pos, obj.second, pPreparator); } private: @@ -2013,7 +5677,7 @@ public: static void bind(std::size_t pos, const Poco::AutoPtr& obj, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) { // *obj will trigger a nullpointer exception if empty: this is on purpose - TypeHandler::bind(pos, *obj, pBinder, dir); + TypeHandler::bind(pos, *obj, pBinder, dir); } static std::size_t size() @@ -2027,15 +5691,15 @@ public: obj = Poco::AutoPtr(new T()); if (defVal) - TypeHandler::extract(pos, *obj, *defVal, pExt); + TypeHandler::extract(pos, *obj, *defVal, pExt); else - TypeHandler::extract(pos, *obj, *obj, pExt); + TypeHandler::extract(pos, *obj, *obj, pExt); } static void prepare(std::size_t pos, const Poco::AutoPtr&, AbstractPreparator::Ptr pPreparator) { poco_assert_dbg (!pPreparator.isNull()); - TypeHandler::prepare(pos, T(), pPreparator); + TypeHandler::prepare(pos, T(), pPreparator); } private: @@ -2053,7 +5717,7 @@ public: static void bind(std::size_t pos, const Poco::SharedPtr& obj, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) { // *obj will trigger a nullpointer exception if empty - TypeHandler::bind(pos, *obj, pBinder, dir); + TypeHandler::bind(pos, *obj, pBinder, dir); } static std::size_t size() @@ -2067,15 +5731,15 @@ public: obj = Poco::SharedPtr(new T()); if (defVal) - TypeHandler::extract(pos, *obj, *defVal, pExt); + TypeHandler::extract(pos, *obj, *defVal, pExt); else - TypeHandler::extract(pos, *obj, *obj, pExt); + TypeHandler::extract(pos, *obj, *obj, pExt); } static void prepare(std::size_t pos, const Poco::SharedPtr&, AbstractPreparator::Ptr pPreparator) { poco_assert_dbg (!pPreparator.isNull()); - TypeHandler::prepare(pos, T(), pPreparator); + TypeHandler::prepare(pos, T(), pPreparator); } private: