// // Tuple.h // // $Id: //poco/svn/Foundation/include/Poco/Tuple.h#2 $ // // Library: Foundation // Package: Core // Module: Tuple // // Definition of the Tuple class. // // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // #ifndef Foundation_Tuple_INCLUDED #define Foundation_Tuple_INCLUDED #include "Poco/Foundation.h" #include "Poco/TypeList.h" namespace Poco { #if defined(POCO_OS_FAMILY_WINDOWS) && !defined(MINGW32) #define POCO_TYPEWRAPPER_DEFAULTVALUE(T) TypeWrapper::TYPE() #else #define POCO_TYPEWRAPPER_DEFAULTVALUE(T) typename TypeWrapper::TYPE() #endif template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16), typename TypeWrapper::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17), typename TypeWrapper::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18), typename TypeWrapper::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, typename TypeListType::HeadType (t14, typename TypeListType::HeadType (t15, typename TypeListType::HeadType (t16, typename TypeListType::HeadType (t17, typename TypeListType::HeadType (t18, typename TypeListType::HeadType (t19, NullTypeList())))))))))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16), typename TypeWrapper::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17), typename TypeWrapper::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, typename TypeListType::HeadType (t14, typename TypeListType::HeadType (t15, typename TypeListType::HeadType (t16, typename TypeListType::HeadType (t17, typename TypeListType::HeadType (t18, NullTypeList()))))))))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16), typename TypeWrapper::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, typename TypeListType::HeadType (t14, typename TypeListType::HeadType (t15, typename TypeListType::HeadType (t16, typename TypeListType::HeadType (t17, NullTypeList())))))))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, typename TypeListType::HeadType (t14, typename TypeListType::HeadType (t15, typename TypeListType::HeadType (t16, NullTypeList()))))))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, typename TypeListType::HeadType (t14, typename TypeListType::HeadType (t15, NullTypeList())))))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, typename TypeListType::HeadType (t14, NullTypeList()))))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, typename TypeListType::HeadType (t13, NullTypeList())))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, typename TypeListType::HeadType (t12, NullTypeList()))))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, typename TypeListType::HeadType (t11, NullTypeList())))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, typename TypeListType::HeadType (t10, NullTypeList()))))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, typename TypeListType::HeadType (t9, NullTypeList())))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, typename TypeListType::HeadType (t8, NullTypeList()))))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, typename TypeListType::HeadType (t7, NullTypeList())))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, typename TypeListType::HeadType (t6, NullTypeList()))))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, typename TypeListType::HeadType (t5, NullTypeList())))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, typename TypeListType::HeadType (t4, NullTypeList()))))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, typename TypeListType::HeadType (t3, NullTypeList())))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2)): _data(t0, typename TypeListType::HeadType (t1, typename TypeListType::HeadType (t2, NullTypeList()))) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0, typename TypeWrapper::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1)): _data(t0, typename TypeListType::HeadType(t1, NullTypeList())) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef TypeList Type; enum TupleLengthType { length = Type::length }; Tuple():_data() { } Tuple(typename TypeWrapper::CONSTTYPE& t0): _data(t0, NullTypeList()) { } template typename TypeGetter::ConstHeadType& get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType& get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType& val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator == (const Tuple& other) const { return _data == other._data; } bool operator != (const Tuple& other) const { return !(_data == other._data); } bool operator < (const Tuple& other) const { return _data < other._data; } private: Type _data; }; } // namespace Poco #endif // Foundation_Tuple_INCLUDED