1//
2// Tuple.h
3//
4// Library: Foundation
5// Package: Core
6// Module: Tuple
7//
8// Definition of the Tuple class.
9//
10// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
11// and Contributors.
12//
13// SPDX-License-Identifier: BSL-1.0
14//
15
16
17#ifndef Foundation_Tuple_INCLUDED
18#define Foundation_Tuple_INCLUDED
19
20
21// TODO: std::tuple doesn't accept partial initialization
22
23//#define POCO_CXX11_TUPLE_FINISHED
24
25
26#include "Poco/Foundation.h"
27#if defined(POCO_CXX11_TUPLE_FINISHED)
28#include <tuple>
29#endif
30#include "Poco/TypeList.h"
31
32
33namespace Poco {
34
35
36#if defined(POCO_CXX11_TUPLE_FINISHED)
37
38template<class ...Types>
39class Tuple : public std::tuple<Types...>
40{
41public:
42 //using std::tuple<Types...>::tuple;
43
44 Tuple() : std::tuple<Types...>()
45 {
46
47 }
48
49 /*
50 Tuple(Types... args) : std::tuple<Types...>(args...)
51 {
52
53 }
54 */
55
56 template < typename ...Args >
57 Tuple(Args&&... args) : std::tuple<Types...>(std::forward<Args>(args)...)
58 {
59
60 }
61
62 //Tuple(const Tuple<Types...> &other) = delete;
63 //Tuple(const Tuple<Types...> &&other) = delete;
64
65 /*
66 Tuple(Types&... args) : std::tuple<Types...>(args...)
67 {
68
69 }
70
71 Tuple(Types&&... args) : std::tuple<Types...>(args...)
72 {
73
74 }
75 */
76
77 enum TupleLengthType
78 {
79 length = std::tuple_size<std::tuple<Types...>>::value
80 };
81
82 template <int N, typename C>
83 void set(C value)
84 {
85 std::get<N>(*this) = value;
86 }
87
88 template <int N>
89 typename std::tuple_element<N, std::tuple<Types...>>::type& get()
90 {
91 return std::get<N>(*this);
92 }
93};
94
95
96#else
97
98
99#if defined(POCO_COMPILER_MSVC)
100#define POCO_TYPEWRAPPER_DEFAULTVALUE(T) TypeWrapper<T>::TYPE()
101#else
102#define POCO_TYPEWRAPPER_DEFAULTVALUE(T) typename TypeWrapper<T>::TYPE()
103#endif
104
105
106template <class T0,
107 class T1 = NullTypeList,
108 class T2 = NullTypeList,
109 class T3 = NullTypeList,
110 class T4 = NullTypeList,
111 class T5 = NullTypeList,
112 class T6 = NullTypeList,
113 class T7 = NullTypeList,
114 class T8 = NullTypeList,
115 class T9 = NullTypeList,
116 class T10 = NullTypeList,
117 class T11 = NullTypeList,
118 class T12 = NullTypeList,
119 class T13 = NullTypeList,
120 class T14 = NullTypeList,
121 class T15 = NullTypeList,
122 class T16 = NullTypeList,
123 class T17 = NullTypeList,
124 class T18 = NullTypeList,
125 class T19 = NullTypeList,
126 class T20 = NullTypeList,
127 class T21 = NullTypeList,
128 class T22 = NullTypeList,
129 class T23 = NullTypeList,
130 class T24 = NullTypeList,
131 class T25 = NullTypeList,
132 class T26 = NullTypeList,
133 class T27 = NullTypeList,
134 class T28 = NullTypeList,
135 class T29 = NullTypeList,
136 class T30 = NullTypeList,
137 class T31 = NullTypeList,
138 class T32 = NullTypeList,
139 class T33 = NullTypeList,
140 class T34 = NullTypeList,
141 class T35 = NullTypeList,
142 class T36 = NullTypeList,
143 class T37 = NullTypeList,
144 class T38 = NullTypeList,
145 class T39 = NullTypeList>
146struct Tuple
147{
148 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType Type;
149
150 enum TupleLengthType
151 {
152 length = Type::length
153 };
154
155 Tuple():_data()
156 {
157 }
158
159 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
160 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
161 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
162 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
163 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
164 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
165 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
166 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
167 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
168 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
169 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
170 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
171 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
172 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
173 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
174 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
175 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
176 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
177 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
178 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
179 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
180 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
181 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
182 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
183 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
184 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
185 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
186 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
187 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
188 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
189 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
190 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
191 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
192 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
193 typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
194 typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
195 typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36),
196 typename TypeWrapper<T37>::CONSTTYPE& t37 = POCO_TYPEWRAPPER_DEFAULTVALUE(T37),
197 typename TypeWrapper<T38>::CONSTTYPE& t38 = POCO_TYPEWRAPPER_DEFAULTVALUE(T38),
198 typename TypeWrapper<T39>::CONSTTYPE& t39 = POCO_TYPEWRAPPER_DEFAULTVALUE(T39)):
199 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
200 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
201 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
202 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
203 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
204 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
205 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
206 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
207 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
208 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
209 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
210 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
211 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
212 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
213 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
214 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
215 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
216 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
217 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
218 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
219 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
220 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
221 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
222 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
223 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
224 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
225 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
226 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
227 (t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
228 (t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
229 (t30, typename TypeListType<T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
230 (t31, typename TypeListType<T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
231 (t32, typename TypeListType<T33,T34,T35,T36,T37,T38,T39>::HeadType
232 (t33, typename TypeListType<T34,T35,T36,T37,T38,T39>::HeadType
233 (t34, typename TypeListType<T35,T36,T37,T38,T39>::HeadType
234 (t35, typename TypeListType<T36,T37,T38,T39>::HeadType
235 (t36, typename TypeListType<T37,T38,T39>::HeadType
236 (t37, typename TypeListType<T38,T39>::HeadType
237 (t38, typename TypeListType<T39>::HeadType
238 (t39, NullTypeList()))))))))))))))))))))))))))))))))))))))))
239 {
240 }
241
242 template <int N>
243 typename TypeGetter<N, Type>::ConstHeadType& get() const
244 {
245 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
246 }
247
248 template <int N>
249 typename TypeGetter<N, Type>::HeadType& get()
250 {
251 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
252 }
253
254 template <int N>
255 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
256 {
257 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
258 }
259
260 bool operator == (const Tuple& other) const
261 {
262 return _data == other._data;
263 }
264
265 bool operator != (const Tuple& other) const
266 {
267 return !(_data == other._data);
268 }
269
270 bool operator < (const Tuple& other) const
271 {
272 return _data < other._data;
273 }
274
275private:
276 Type _data;
277};
278
279
280template <class T0,
281 class T1,
282 class T2,
283 class T3,
284 class T4,
285 class T5,
286 class T6,
287 class T7,
288 class T8,
289 class T9,
290 class T10,
291 class T11,
292 class T12,
293 class T13,
294 class T14,
295 class T15,
296 class T16,
297 class T17,
298 class T18,
299 class T19,
300 class T20,
301 class T21,
302 class T22,
303 class T23,
304 class T24,
305 class T25,
306 class T26,
307 class T27,
308 class T28,
309 class T29,
310 class T30,
311 class T31,
312 class T32,
313 class T33,
314 class T34,
315 class T35,
316 class T36,
317 class T37,
318 class T38>
319struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,NullTypeList>
320{
321 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType Type;
322
323 enum TupleLengthType
324 {
325 length = Type::length
326 };
327
328 Tuple():_data()
329 {
330 }
331
332 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
333 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
334 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
335 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
336 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
337 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
338 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
339 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
340 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
341 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
342 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
343 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
344 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
345 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
346 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
347 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
348 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
349 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
350 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
351 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
352 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
353 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
354 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
355 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
356 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
357 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
358 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
359 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
360 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
361 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
362 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
363 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
364 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
365 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
366 typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
367 typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
368 typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36),
369 typename TypeWrapper<T37>::CONSTTYPE& t37 = POCO_TYPEWRAPPER_DEFAULTVALUE(T37),
370 typename TypeWrapper<T38>::CONSTTYPE& t38 = POCO_TYPEWRAPPER_DEFAULTVALUE(T38)):
371 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
372 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
373 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
374 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
375 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
376 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
377 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
378 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
379 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
380 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
381 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
382 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
383 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
384 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
385 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
386 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
387 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
388 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
389 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
390 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
391 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
392 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
393 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
394 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
395 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
396 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
397 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
398 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
399 (t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
400 (t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
401 (t30, typename TypeListType<T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
402 (t31, typename TypeListType<T32,T33,T34,T35,T36,T37,T38>::HeadType
403 (t32, typename TypeListType<T33,T34,T35,T36,T37,T38>::HeadType
404 (t33, typename TypeListType<T34,T35,T36,T37,T38>::HeadType
405 (t34, typename TypeListType<T35,T36,T37,T38>::HeadType
406 (t35, typename TypeListType<T36,T37,T38>::HeadType
407 (t36, typename TypeListType<T37,T38>::HeadType
408 (t37, typename TypeListType<T38>::HeadType
409 (t38, NullTypeList())))))))))))))))))))))))))))))))))))))))
410 {
411 }
412
413 template <int N>
414 typename TypeGetter<N, Type>::ConstHeadType& get() const
415 {
416 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
417 }
418
419 template <int N>
420 typename TypeGetter<N, Type>::HeadType& get()
421 {
422 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
423 }
424
425 template <int N>
426 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
427 {
428 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
429 }
430
431 bool operator == (const Tuple& other) const
432 {
433 return _data == other._data;
434 }
435
436 bool operator != (const Tuple& other) const
437 {
438 return !(_data == other._data);
439 }
440
441 bool operator < (const Tuple& other) const
442 {
443 return _data < other._data;
444 }
445
446private:
447 Type _data;
448};
449
450
451template <class T0,
452 class T1,
453 class T2,
454 class T3,
455 class T4,
456 class T5,
457 class T6,
458 class T7,
459 class T8,
460 class T9,
461 class T10,
462 class T11,
463 class T12,
464 class T13,
465 class T14,
466 class T15,
467 class T16,
468 class T17,
469 class T18,
470 class T19,
471 class T20,
472 class T21,
473 class T22,
474 class T23,
475 class T24,
476 class T25,
477 class T26,
478 class T27,
479 class T28,
480 class T29,
481 class T30,
482 class T31,
483 class T32,
484 class T33,
485 class T34,
486 class T35,
487 class T36,
488 class T37>
489struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,NullTypeList>
490{
491 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType Type;
492
493 enum TupleLengthType
494 {
495 length = Type::length
496 };
497
498 Tuple():_data()
499 {
500 }
501
502 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
503 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
504 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
505 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
506 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
507 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
508 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
509 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
510 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
511 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
512 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
513 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
514 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
515 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
516 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
517 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
518 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
519 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
520 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
521 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
522 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
523 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
524 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
525 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
526 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
527 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
528 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
529 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
530 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
531 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
532 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
533 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
534 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
535 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
536 typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
537 typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
538 typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36),
539 typename TypeWrapper<T37>::CONSTTYPE& t37 = POCO_TYPEWRAPPER_DEFAULTVALUE(T37)):
540 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
541 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
542 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
543 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
544 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
545 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
546 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
547 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
548 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
549 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
550 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
551 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
552 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
553 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
554 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
555 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
556 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
557 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
558 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
559 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
560 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
561 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
562 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
563 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
564 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
565 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
566 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
567 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
568 (t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
569 (t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
570 (t30, typename TypeListType<T31,T32,T33,T34,T35,T36,T37>::HeadType
571 (t31, typename TypeListType<T32,T33,T34,T35,T36,T37>::HeadType
572 (t32, typename TypeListType<T33,T34,T35,T36,T37>::HeadType
573 (t33, typename TypeListType<T34,T35,T36,T37>::HeadType
574 (t34, typename TypeListType<T35,T36,T37>::HeadType
575 (t35, typename TypeListType<T36,T37>::HeadType
576 (t36, typename TypeListType<T37>::HeadType
577 (t37, NullTypeList()))))))))))))))))))))))))))))))))))))))
578 {
579 }
580
581 template <int N>
582 typename TypeGetter<N, Type>::ConstHeadType& get() const
583 {
584 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
585 }
586
587 template <int N>
588 typename TypeGetter<N, Type>::HeadType& get()
589 {
590 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
591 }
592
593 template <int N>
594 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
595 {
596 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
597 }
598
599 bool operator == (const Tuple& other) const
600 {
601 return _data == other._data;
602 }
603
604 bool operator != (const Tuple& other) const
605 {
606 return !(_data == other._data);
607 }
608
609 bool operator < (const Tuple& other) const
610 {
611 return _data < other._data;
612 }
613
614private:
615 Type _data;
616};
617
618
619template <class T0,
620 class T1,
621 class T2,
622 class T3,
623 class T4,
624 class T5,
625 class T6,
626 class T7,
627 class T8,
628 class T9,
629 class T10,
630 class T11,
631 class T12,
632 class T13,
633 class T14,
634 class T15,
635 class T16,
636 class T17,
637 class T18,
638 class T19,
639 class T20,
640 class T21,
641 class T22,
642 class T23,
643 class T24,
644 class T25,
645 class T26,
646 class T27,
647 class T28,
648 class T29,
649 class T30,
650 class T31,
651 class T32,
652 class T33,
653 class T34,
654 class T35,
655 class T36>
656struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,NullTypeList>
657{
658 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType Type;
659
660 enum TupleLengthType
661 {
662 length = Type::length
663 };
664
665 Tuple():_data()
666 {
667 }
668
669 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
670 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
671 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
672 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
673 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
674 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
675 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
676 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
677 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
678 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
679 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
680 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
681 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
682 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
683 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
684 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
685 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
686 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
687 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
688 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
689 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
690 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
691 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
692 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
693 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
694 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
695 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
696 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
697 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
698 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
699 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
700 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
701 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
702 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
703 typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
704 typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
705 typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36)):
706 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
707 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
708 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
709 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
710 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
711 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
712 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
713 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
714 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
715 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
716 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
717 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
718 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
719 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
720 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
721 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
722 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
723 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
724 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
725 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
726 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
727 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
728 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
729 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
730 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
731 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
732 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
733 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
734 (t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
735 (t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36>::HeadType
736 (t30, typename TypeListType<T31,T32,T33,T34,T35,T36>::HeadType
737 (t31, typename TypeListType<T32,T33,T34,T35,T36>::HeadType
738 (t32, typename TypeListType<T33,T34,T35,T36>::HeadType
739 (t33, typename TypeListType<T34,T35,T36>::HeadType
740 (t34, typename TypeListType<T35,T36>::HeadType
741 (t35, typename TypeListType<T36>::HeadType
742 (t36, NullTypeList())))))))))))))))))))))))))))))))))))))
743 {
744 }
745
746 template <int N>
747 typename TypeGetter<N, Type>::ConstHeadType& get() const
748 {
749 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
750 }
751
752 template <int N>
753 typename TypeGetter<N, Type>::HeadType& get()
754 {
755 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
756 }
757
758 template <int N>
759 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
760 {
761 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
762 }
763
764 bool operator == (const Tuple& other) const
765 {
766 return _data == other._data;
767 }
768
769 bool operator != (const Tuple& other) const
770 {
771 return !(_data == other._data);
772 }
773
774 bool operator < (const Tuple& other) const
775 {
776 return _data < other._data;
777 }
778
779private:
780 Type _data;
781};
782
783
784template <class T0,
785 class T1,
786 class T2,
787 class T3,
788 class T4,
789 class T5,
790 class T6,
791 class T7,
792 class T8,
793 class T9,
794 class T10,
795 class T11,
796 class T12,
797 class T13,
798 class T14,
799 class T15,
800 class T16,
801 class T17,
802 class T18,
803 class T19,
804 class T20,
805 class T21,
806 class T22,
807 class T23,
808 class T24,
809 class T25,
810 class T26,
811 class T27,
812 class T28,
813 class T29,
814 class T30,
815 class T31,
816 class T32,
817 class T33,
818 class T34,
819 class T35>
820struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,NullTypeList>
821{
822 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType Type;
823
824 enum TupleLengthType
825 {
826 length = Type::length
827 };
828
829 Tuple():_data()
830 {
831 }
832
833 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
834 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
835 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
836 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
837 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
838 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
839 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
840 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
841 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
842 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
843 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
844 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
845 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
846 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
847 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
848 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
849 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
850 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
851 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
852 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
853 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
854 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
855 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
856 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
857 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
858 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
859 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
860 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
861 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
862 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
863 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
864 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
865 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
866 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
867 typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
868 typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35)):
869 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
870 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
871 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
872 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
873 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
874 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
875 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
876 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
877 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
878 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
879 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
880 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
881 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
882 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
883 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
884 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
885 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
886 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
887 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
888 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
889 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
890 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
891 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
892 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
893 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
894 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
895 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
896 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
897 (t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35>::HeadType
898 (t29, typename TypeListType<T30,T31,T32,T33,T34,T35>::HeadType
899 (t30, typename TypeListType<T31,T32,T33,T34,T35>::HeadType
900 (t31, typename TypeListType<T32,T33,T34,T35>::HeadType
901 (t32, typename TypeListType<T33,T34,T35>::HeadType
902 (t33, typename TypeListType<T34,T35>::HeadType
903 (t34, typename TypeListType<T35>::HeadType
904 (t35, NullTypeList()))))))))))))))))))))))))))))))))))))
905 {
906 }
907
908 template <int N>
909 typename TypeGetter<N, Type>::ConstHeadType& get() const
910 {
911 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
912 }
913
914 template <int N>
915 typename TypeGetter<N, Type>::HeadType& get()
916 {
917 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
918 }
919
920 template <int N>
921 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
922 {
923 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
924 }
925
926 bool operator == (const Tuple& other) const
927 {
928 return _data == other._data;
929 }
930
931 bool operator != (const Tuple& other) const
932 {
933 return !(_data == other._data);
934 }
935
936 bool operator < (const Tuple& other) const
937 {
938 return _data < other._data;
939 }
940
941private:
942 Type _data;
943};
944
945
946template <class T0,
947 class T1,
948 class T2,
949 class T3,
950 class T4,
951 class T5,
952 class T6,
953 class T7,
954 class T8,
955 class T9,
956 class T10,
957 class T11,
958 class T12,
959 class T13,
960 class T14,
961 class T15,
962 class T16,
963 class T17,
964 class T18,
965 class T19,
966 class T20,
967 class T21,
968 class T22,
969 class T23,
970 class T24,
971 class T25,
972 class T26,
973 class T27,
974 class T28,
975 class T29,
976 class T30,
977 class T31,
978 class T32,
979 class T33,
980 class T34>
981struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,NullTypeList>
982{
983 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType Type;
984
985 enum TupleLengthType
986 {
987 length = Type::length
988 };
989
990 Tuple():_data()
991 {
992 }
993
994 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
995 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
996 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
997 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
998 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
999 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1000 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1001 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1002 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1003 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1004 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1005 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1006 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1007 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1008 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1009 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1010 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1011 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1012 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1013 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1014 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1015 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1016 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1017 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1018 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1019 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1020 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1021 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1022 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1023 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1024 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1025 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
1026 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
1027 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
1028 typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34)):
1029 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1030 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1031 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1032 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1033 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1034 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1035 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1036 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1037 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1038 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1039 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1040 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1041 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1042 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1043 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1044 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1045 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1046 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1047 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1048 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1049 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1050 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1051 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1052 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1053 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1054 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1055 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
1056 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34>::HeadType
1057 (t28, typename TypeListType<T29,T30,T31,T32,T33,T34>::HeadType
1058 (t29, typename TypeListType<T30,T31,T32,T33,T34>::HeadType
1059 (t30, typename TypeListType<T31,T32,T33,T34>::HeadType
1060 (t31, typename TypeListType<T32,T33,T34>::HeadType
1061 (t32, typename TypeListType<T33,T34>::HeadType
1062 (t33, typename TypeListType<T34>::HeadType
1063 (t34, NullTypeList())))))))))))))))))))))))))))))))))))
1064 {
1065 }
1066
1067 template <int N>
1068 typename TypeGetter<N, Type>::ConstHeadType& get() const
1069 {
1070 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1071 }
1072
1073 template <int N>
1074 typename TypeGetter<N, Type>::HeadType& get()
1075 {
1076 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1077 }
1078
1079 template <int N>
1080 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1081 {
1082 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1083 }
1084
1085 bool operator == (const Tuple& other) const
1086 {
1087 return _data == other._data;
1088 }
1089
1090 bool operator != (const Tuple& other) const
1091 {
1092 return !(_data == other._data);
1093 }
1094
1095 bool operator < (const Tuple& other) const
1096 {
1097 return _data < other._data;
1098 }
1099
1100private:
1101 Type _data;
1102};
1103
1104
1105template <class T0,
1106 class T1,
1107 class T2,
1108 class T3,
1109 class T4,
1110 class T5,
1111 class T6,
1112 class T7,
1113 class T8,
1114 class T9,
1115 class T10,
1116 class T11,
1117 class T12,
1118 class T13,
1119 class T14,
1120 class T15,
1121 class T16,
1122 class T17,
1123 class T18,
1124 class T19,
1125 class T20,
1126 class T21,
1127 class T22,
1128 class T23,
1129 class T24,
1130 class T25,
1131 class T26,
1132 class T27,
1133 class T28,
1134 class T29,
1135 class T30,
1136 class T31,
1137 class T32,
1138 class T33>
1139struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,NullTypeList>
1140{
1141 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType Type;
1142
1143 enum TupleLengthType
1144 {
1145 length = Type::length
1146 };
1147
1148 Tuple():_data()
1149 {
1150 }
1151
1152 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1153 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1154 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1155 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1156 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1157 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1158 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1159 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1160 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1161 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1162 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1163 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1164 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1165 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1166 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1167 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1168 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1169 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1170 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1171 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1172 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1173 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1174 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1175 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1176 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1177 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1178 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1179 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1180 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1181 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1182 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1183 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
1184 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
1185 typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33)):
1186 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1187 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1188 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1189 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1190 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1191 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1192 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1193 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1194 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1195 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1196 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1197 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1198 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1199 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1200 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1201 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1202 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1203 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1204 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1205 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1206 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1207 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1208 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1209 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1210 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1211 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1212 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33>::HeadType
1213 (t27, typename TypeListType<T28,T29,T30,T31,T32,T33>::HeadType
1214 (t28, typename TypeListType<T29,T30,T31,T32,T33>::HeadType
1215 (t29, typename TypeListType<T30,T31,T32,T33>::HeadType
1216 (t30, typename TypeListType<T31,T32,T33>::HeadType
1217 (t31, typename TypeListType<T32,T33>::HeadType
1218 (t32, typename TypeListType<T33>::HeadType
1219 (t33, NullTypeList()))))))))))))))))))))))))))))))))))
1220 {
1221 }
1222
1223 template <int N>
1224 typename TypeGetter<N, Type>::ConstHeadType& get() const
1225 {
1226 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1227 }
1228
1229 template <int N>
1230 typename TypeGetter<N, Type>::HeadType& get()
1231 {
1232 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1233 }
1234
1235 template <int N>
1236 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1237 {
1238 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1239 }
1240
1241 bool operator == (const Tuple& other) const
1242 {
1243 return _data == other._data;
1244 }
1245
1246 bool operator != (const Tuple& other) const
1247 {
1248 return !(_data == other._data);
1249 }
1250
1251 bool operator < (const Tuple& other) const
1252 {
1253 return _data < other._data;
1254 }
1255
1256private:
1257 Type _data;
1258};
1259
1260
1261template <class T0,
1262 class T1,
1263 class T2,
1264 class T3,
1265 class T4,
1266 class T5,
1267 class T6,
1268 class T7,
1269 class T8,
1270 class T9,
1271 class T10,
1272 class T11,
1273 class T12,
1274 class T13,
1275 class T14,
1276 class T15,
1277 class T16,
1278 class T17,
1279 class T18,
1280 class T19,
1281 class T20,
1282 class T21,
1283 class T22,
1284 class T23,
1285 class T24,
1286 class T25,
1287 class T26,
1288 class T27,
1289 class T28,
1290 class T29,
1291 class T30,
1292 class T31,
1293 class T32>
1294struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,NullTypeList>
1295{
1296 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType Type;
1297
1298 enum TupleLengthType
1299 {
1300 length = Type::length
1301 };
1302
1303 Tuple():_data()
1304 {
1305 }
1306
1307 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1308 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1309 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1310 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1311 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1312 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1313 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1314 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1315 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1316 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1317 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1318 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1319 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1320 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1321 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1322 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1323 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1324 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1325 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1326 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1327 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1328 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1329 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1330 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1331 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1332 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1333 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1334 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1335 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1336 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1337 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1338 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
1339 typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32)):
1340 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1341 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1342 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1343 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1344 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1345 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1346 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1347 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1348 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1349 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1350 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1351 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1352 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1353 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1354 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1355 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1356 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1357 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1358 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1359 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1360 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1361 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1362 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1363 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1364 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1365 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32>::HeadType
1366 (t26, typename TypeListType<T27,T28,T29,T30,T31,T32>::HeadType
1367 (t27, typename TypeListType<T28,T29,T30,T31,T32>::HeadType
1368 (t28, typename TypeListType<T29,T30,T31,T32>::HeadType
1369 (t29, typename TypeListType<T30,T31,T32>::HeadType
1370 (t30, typename TypeListType<T31,T32>::HeadType
1371 (t31, typename TypeListType<T32>::HeadType
1372 (t32, NullTypeList())))))))))))))))))))))))))))))))))
1373 {
1374 }
1375
1376 template <int N>
1377 typename TypeGetter<N, Type>::ConstHeadType& get() const
1378 {
1379 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1380 }
1381
1382 template <int N>
1383 typename TypeGetter<N, Type>::HeadType& get()
1384 {
1385 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1386 }
1387
1388 template <int N>
1389 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1390 {
1391 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1392 }
1393
1394 bool operator == (const Tuple& other) const
1395 {
1396 return _data == other._data;
1397 }
1398
1399 bool operator != (const Tuple& other) const
1400 {
1401 return !(_data == other._data);
1402 }
1403
1404 bool operator < (const Tuple& other) const
1405 {
1406 return _data < other._data;
1407 }
1408
1409private:
1410 Type _data;
1411};
1412
1413
1414template <class T0,
1415 class T1,
1416 class T2,
1417 class T3,
1418 class T4,
1419 class T5,
1420 class T6,
1421 class T7,
1422 class T8,
1423 class T9,
1424 class T10,
1425 class T11,
1426 class T12,
1427 class T13,
1428 class T14,
1429 class T15,
1430 class T16,
1431 class T17,
1432 class T18,
1433 class T19,
1434 class T20,
1435 class T21,
1436 class T22,
1437 class T23,
1438 class T24,
1439 class T25,
1440 class T26,
1441 class T27,
1442 class T28,
1443 class T29,
1444 class T30,
1445 class T31>
1446struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,NullTypeList>
1447{
1448 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType Type;
1449
1450 enum TupleLengthType
1451 {
1452 length = Type::length
1453 };
1454
1455 Tuple():_data()
1456 {
1457 }
1458
1459 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1460 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1461 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1462 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1463 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1464 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1465 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1466 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1467 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1468 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1469 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1470 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1471 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1472 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1473 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1474 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1475 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1476 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1477 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1478 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1479 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1480 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1481 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1482 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1483 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1484 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1485 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1486 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1487 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1488 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1489 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1490 typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31)):
1491 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1492 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1493 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1494 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1495 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1496 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1497 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1498 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1499 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1500 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1501 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1502 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1503 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1504 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1505 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1506 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1507 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1508 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1509 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1510 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1511 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1512 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1513 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1514 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1515 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31>::HeadType
1516 (t25, typename TypeListType<T26,T27,T28,T29,T30,T31>::HeadType
1517 (t26, typename TypeListType<T27,T28,T29,T30,T31>::HeadType
1518 (t27, typename TypeListType<T28,T29,T30,T31>::HeadType
1519 (t28, typename TypeListType<T29,T30,T31>::HeadType
1520 (t29, typename TypeListType<T30,T31>::HeadType
1521 (t30, typename TypeListType<T31>::HeadType
1522 (t31, NullTypeList()))))))))))))))))))))))))))))))))
1523 {
1524 }
1525
1526 template <int N>
1527 typename TypeGetter<N, Type>::ConstHeadType& get() const
1528 {
1529 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1530 }
1531
1532 template <int N>
1533 typename TypeGetter<N, Type>::HeadType& get()
1534 {
1535 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1536 }
1537
1538 template <int N>
1539 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1540 {
1541 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1542 }
1543
1544 bool operator == (const Tuple& other) const
1545 {
1546 return _data == other._data;
1547 }
1548
1549 bool operator != (const Tuple& other) const
1550 {
1551 return !(_data == other._data);
1552 }
1553
1554 bool operator < (const Tuple& other) const
1555 {
1556 return _data < other._data;
1557 }
1558
1559private:
1560 Type _data;
1561};
1562
1563
1564template <class T0,
1565 class T1,
1566 class T2,
1567 class T3,
1568 class T4,
1569 class T5,
1570 class T6,
1571 class T7,
1572 class T8,
1573 class T9,
1574 class T10,
1575 class T11,
1576 class T12,
1577 class T13,
1578 class T14,
1579 class T15,
1580 class T16,
1581 class T17,
1582 class T18,
1583 class T19,
1584 class T20,
1585 class T21,
1586 class T22,
1587 class T23,
1588 class T24,
1589 class T25,
1590 class T26,
1591 class T27,
1592 class T28,
1593 class T29,
1594 class T30>
1595struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,NullTypeList>
1596{
1597 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType Type;
1598
1599 enum TupleLengthType
1600 {
1601 length = Type::length
1602 };
1603
1604 Tuple():_data()
1605 {
1606 }
1607
1608 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1609 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1610 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1611 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1612 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1613 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1614 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1615 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1616 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1617 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1618 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1619 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1620 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1621 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1622 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1623 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1624 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1625 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1626 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1627 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1628 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1629 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1630 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1631 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1632 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1633 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1634 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1635 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1636 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1637 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1638 typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30)):
1639 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1640 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1641 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1642 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1643 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1644 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1645 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1646 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1647 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1648 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1649 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1650 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1651 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1652 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1653 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1654 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1655 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1656 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1657 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1658 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1659 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1660 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1661 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1662 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30>::HeadType
1663 (t24, typename TypeListType<T25,T26,T27,T28,T29,T30>::HeadType
1664 (t25, typename TypeListType<T26,T27,T28,T29,T30>::HeadType
1665 (t26, typename TypeListType<T27,T28,T29,T30>::HeadType
1666 (t27, typename TypeListType<T28,T29,T30>::HeadType
1667 (t28, typename TypeListType<T29,T30>::HeadType
1668 (t29, typename TypeListType<T30>::HeadType
1669 (t30, NullTypeList())))))))))))))))))))))))))))))))
1670 {
1671 }
1672
1673 template <int N>
1674 typename TypeGetter<N, Type>::ConstHeadType& get() const
1675 {
1676 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1677 }
1678
1679 template <int N>
1680 typename TypeGetter<N, Type>::HeadType& get()
1681 {
1682 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1683 }
1684
1685 template <int N>
1686 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1687 {
1688 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1689 }
1690
1691 bool operator == (const Tuple& other) const
1692 {
1693 return _data == other._data;
1694 }
1695
1696 bool operator != (const Tuple& other) const
1697 {
1698 return !(_data == other._data);
1699 }
1700
1701 bool operator < (const Tuple& other) const
1702 {
1703 return _data < other._data;
1704 }
1705
1706private:
1707 Type _data;
1708};
1709
1710
1711template <class T0,
1712 class T1,
1713 class T2,
1714 class T3,
1715 class T4,
1716 class T5,
1717 class T6,
1718 class T7,
1719 class T8,
1720 class T9,
1721 class T10,
1722 class T11,
1723 class T12,
1724 class T13,
1725 class T14,
1726 class T15,
1727 class T16,
1728 class T17,
1729 class T18,
1730 class T19,
1731 class T20,
1732 class T21,
1733 class T22,
1734 class T23,
1735 class T24,
1736 class T25,
1737 class T26,
1738 class T27,
1739 class T28,
1740 class T29>
1741struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,NullTypeList>
1742{
1743 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType Type;
1744
1745 enum TupleLengthType
1746 {
1747 length = Type::length
1748 };
1749
1750 Tuple():_data()
1751 {
1752 }
1753
1754 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1755 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1756 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1757 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1758 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1759 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1760 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1761 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1762 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1763 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1764 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1765 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1766 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1767 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1768 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1769 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1770 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1771 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1772 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1773 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1774 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1775 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1776 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1777 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1778 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1779 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1780 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1781 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1782 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1783 typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29)):
1784 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1785 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1786 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1787 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1788 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1789 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1790 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1791 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1792 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1793 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1794 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1795 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1796 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1797 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1798 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1799 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1800 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1801 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1802 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1803 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1804 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1805 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1806 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29>::HeadType
1807 (t23, typename TypeListType<T24,T25,T26,T27,T28,T29>::HeadType
1808 (t24, typename TypeListType<T25,T26,T27,T28,T29>::HeadType
1809 (t25, typename TypeListType<T26,T27,T28,T29>::HeadType
1810 (t26, typename TypeListType<T27,T28,T29>::HeadType
1811 (t27, typename TypeListType<T28,T29>::HeadType
1812 (t28, typename TypeListType<T29>::HeadType
1813 (t29, NullTypeList()))))))))))))))))))))))))))))))
1814 {
1815 }
1816
1817 template <int N>
1818 typename TypeGetter<N, Type>::ConstHeadType& get() const
1819 {
1820 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1821 }
1822
1823 template <int N>
1824 typename TypeGetter<N, Type>::HeadType& get()
1825 {
1826 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1827 }
1828
1829 template <int N>
1830 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1831 {
1832 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1833 }
1834
1835 bool operator == (const Tuple& other) const
1836 {
1837 return _data == other._data;
1838 }
1839
1840 bool operator != (const Tuple& other) const
1841 {
1842 return !(_data == other._data);
1843 }
1844
1845 bool operator < (const Tuple& other) const
1846 {
1847 return _data < other._data;
1848 }
1849
1850private:
1851 Type _data;
1852};
1853
1854
1855template <class T0,
1856 class T1,
1857 class T2,
1858 class T3,
1859 class T4,
1860 class T5,
1861 class T6,
1862 class T7,
1863 class T8,
1864 class T9,
1865 class T10,
1866 class T11,
1867 class T12,
1868 class T13,
1869 class T14,
1870 class T15,
1871 class T16,
1872 class T17,
1873 class T18,
1874 class T19,
1875 class T20,
1876 class T21,
1877 class T22,
1878 class T23,
1879 class T24,
1880 class T25,
1881 class T26,
1882 class T27,
1883 class T28>
1884struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,NullTypeList>
1885{
1886 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType Type;
1887
1888 enum TupleLengthType
1889 {
1890 length = Type::length
1891 };
1892
1893 Tuple():_data()
1894 {
1895 }
1896
1897 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1898 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1899 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1900 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1901 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1902 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1903 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1904 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1905 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1906 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1907 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1908 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1909 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1910 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1911 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1912 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1913 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1914 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1915 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1916 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1917 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1918 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1919 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1920 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1921 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1922 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1923 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1924 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1925 typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28)):
1926 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1927 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1928 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1929 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1930 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1931 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1932 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1933 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1934 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1935 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1936 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1937 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1938 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1939 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1940 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1941 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1942 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1943 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1944 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1945 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1946 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1947 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28>::HeadType
1948 (t22, typename TypeListType<T23,T24,T25,T26,T27,T28>::HeadType
1949 (t23, typename TypeListType<T24,T25,T26,T27,T28>::HeadType
1950 (t24, typename TypeListType<T25,T26,T27,T28>::HeadType
1951 (t25, typename TypeListType<T26,T27,T28>::HeadType
1952 (t26, typename TypeListType<T27,T28>::HeadType
1953 (t27, typename TypeListType<T28>::HeadType
1954 (t28, NullTypeList())))))))))))))))))))))))))))))
1955 {
1956 }
1957
1958 template <int N>
1959 typename TypeGetter<N, Type>::ConstHeadType& get() const
1960 {
1961 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1962 }
1963
1964 template <int N>
1965 typename TypeGetter<N, Type>::HeadType& get()
1966 {
1967 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1968 }
1969
1970 template <int N>
1971 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1972 {
1973 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1974 }
1975
1976 bool operator == (const Tuple& other) const
1977 {
1978 return _data == other._data;
1979 }
1980
1981 bool operator != (const Tuple& other) const
1982 {
1983 return !(_data == other._data);
1984 }
1985
1986 bool operator < (const Tuple& other) const
1987 {
1988 return _data < other._data;
1989 }
1990
1991private:
1992 Type _data;
1993};
1994
1995
1996template <class T0,
1997 class T1,
1998 class T2,
1999 class T3,
2000 class T4,
2001 class T5,
2002 class T6,
2003 class T7,
2004 class T8,
2005 class T9,
2006 class T10,
2007 class T11,
2008 class T12,
2009 class T13,
2010 class T14,
2011 class T15,
2012 class T16,
2013 class T17,
2014 class T18,
2015 class T19,
2016 class T20,
2017 class T21,
2018 class T22,
2019 class T23,
2020 class T24,
2021 class T25,
2022 class T26,
2023 class T27>
2024struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,NullTypeList>
2025{
2026 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType Type;
2027
2028 enum TupleLengthType
2029 {
2030 length = Type::length
2031 };
2032
2033 Tuple():_data()
2034 {
2035 }
2036
2037 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2038 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2039 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2040 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2041 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2042 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2043 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2044 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2045 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2046 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2047 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2048 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2049 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2050 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2051 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2052 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2053 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2054 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2055 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2056 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2057 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2058 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2059 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2060 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2061 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
2062 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
2063 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
2064 typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27)):
2065 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2066 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2067 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2068 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2069 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2070 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2071 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2072 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2073 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2074 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2075 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2076 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2077 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2078 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2079 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2080 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2081 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2082 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2083 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2084 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2085 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27>::HeadType
2086 (t21, typename TypeListType<T22,T23,T24,T25,T26,T27>::HeadType
2087 (t22, typename TypeListType<T23,T24,T25,T26,T27>::HeadType
2088 (t23, typename TypeListType<T24,T25,T26,T27>::HeadType
2089 (t24, typename TypeListType<T25,T26,T27>::HeadType
2090 (t25, typename TypeListType<T26,T27>::HeadType
2091 (t26, typename TypeListType<T27>::HeadType
2092 (t27, NullTypeList()))))))))))))))))))))))))))))
2093 {
2094 }
2095
2096 template <int N>
2097 typename TypeGetter<N, Type>::ConstHeadType& get() const
2098 {
2099 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2100 }
2101
2102 template <int N>
2103 typename TypeGetter<N, Type>::HeadType& get()
2104 {
2105 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2106 }
2107
2108 template <int N>
2109 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2110 {
2111 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2112 }
2113
2114 bool operator == (const Tuple& other) const
2115 {
2116 return _data == other._data;
2117 }
2118
2119 bool operator != (const Tuple& other) const
2120 {
2121 return !(_data == other._data);
2122 }
2123
2124 bool operator < (const Tuple& other) const
2125 {
2126 return _data < other._data;
2127 }
2128
2129private:
2130 Type _data;
2131};
2132
2133
2134template <class T0,
2135 class T1,
2136 class T2,
2137 class T3,
2138 class T4,
2139 class T5,
2140 class T6,
2141 class T7,
2142 class T8,
2143 class T9,
2144 class T10,
2145 class T11,
2146 class T12,
2147 class T13,
2148 class T14,
2149 class T15,
2150 class T16,
2151 class T17,
2152 class T18,
2153 class T19,
2154 class T20,
2155 class T21,
2156 class T22,
2157 class T23,
2158 class T24,
2159 class T25,
2160 class T26>
2161struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,NullTypeList>
2162{
2163 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType Type;
2164
2165 enum TupleLengthType
2166 {
2167 length = Type::length
2168 };
2169
2170 Tuple():_data()
2171 {
2172 }
2173
2174 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2175 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2176 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2177 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2178 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2179 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2180 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2181 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2182 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2183 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2184 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2185 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2186 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2187 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2188 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2189 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2190 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2191 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2192 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2193 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2194 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2195 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2196 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2197 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2198 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
2199 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
2200 typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26)):
2201 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2202 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2203 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2204 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2205 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2206 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2207 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2208 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2209 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2210 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2211 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2212 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2213 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2214 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2215 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2216 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2217 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2218 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2219 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2220 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26>::HeadType
2221 (t20, typename TypeListType<T21,T22,T23,T24,T25,T26>::HeadType
2222 (t21, typename TypeListType<T22,T23,T24,T25,T26>::HeadType
2223 (t22, typename TypeListType<T23,T24,T25,T26>::HeadType
2224 (t23, typename TypeListType<T24,T25,T26>::HeadType
2225 (t24, typename TypeListType<T25,T26>::HeadType
2226 (t25, typename TypeListType<T26>::HeadType
2227 (t26, NullTypeList())))))))))))))))))))))))))))
2228 {
2229 }
2230
2231 template <int N>
2232 typename TypeGetter<N, Type>::ConstHeadType& get() const
2233 {
2234 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2235 }
2236
2237 template <int N>
2238 typename TypeGetter<N, Type>::HeadType& get()
2239 {
2240 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2241 }
2242
2243 template <int N>
2244 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2245 {
2246 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2247 }
2248
2249 bool operator == (const Tuple& other) const
2250 {
2251 return _data == other._data;
2252 }
2253
2254 bool operator != (const Tuple& other) const
2255 {
2256 return !(_data == other._data);
2257 }
2258
2259 bool operator < (const Tuple& other) const
2260 {
2261 return _data < other._data;
2262 }
2263
2264private:
2265 Type _data;
2266};
2267
2268
2269template <class T0,
2270 class T1,
2271 class T2,
2272 class T3,
2273 class T4,
2274 class T5,
2275 class T6,
2276 class T7,
2277 class T8,
2278 class T9,
2279 class T10,
2280 class T11,
2281 class T12,
2282 class T13,
2283 class T14,
2284 class T15,
2285 class T16,
2286 class T17,
2287 class T18,
2288 class T19,
2289 class T20,
2290 class T21,
2291 class T22,
2292 class T23,
2293 class T24,
2294 class T25>
2295struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,NullTypeList>
2296{
2297 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType Type;
2298
2299 enum TupleLengthType
2300 {
2301 length = Type::length
2302 };
2303
2304 Tuple():_data()
2305 {
2306 }
2307
2308 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2309 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2310 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2311 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2312 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2313 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2314 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2315 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2316 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2317 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2318 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2319 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2320 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2321 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2322 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2323 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2324 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2325 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2326 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2327 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2328 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2329 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2330 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2331 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2332 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
2333 typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25)):
2334 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2335 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2336 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2337 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2338 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2339 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2340 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2341 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2342 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2343 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2344 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2345 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2346 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2347 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2348 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2349 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2350 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2351 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2352 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25>::HeadType
2353 (t19, typename TypeListType<T20,T21,T22,T23,T24,T25>::HeadType
2354 (t20, typename TypeListType<T21,T22,T23,T24,T25>::HeadType
2355 (t21, typename TypeListType<T22,T23,T24,T25>::HeadType
2356 (t22, typename TypeListType<T23,T24,T25>::HeadType
2357 (t23, typename TypeListType<T24,T25>::HeadType
2358 (t24, typename TypeListType<T25>::HeadType
2359 (t25, NullTypeList()))))))))))))))))))))))))))
2360 {
2361 }
2362
2363 template <int N>
2364 typename TypeGetter<N, Type>::ConstHeadType& get() const
2365 {
2366 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2367 }
2368
2369 template <int N>
2370 typename TypeGetter<N, Type>::HeadType& get()
2371 {
2372 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2373 }
2374
2375 template <int N>
2376 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2377 {
2378 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2379 }
2380
2381 bool operator == (const Tuple& other) const
2382 {
2383 return _data == other._data;
2384 }
2385
2386 bool operator != (const Tuple& other) const
2387 {
2388 return !(_data == other._data);
2389 }
2390
2391 bool operator < (const Tuple& other) const
2392 {
2393 return _data < other._data;
2394 }
2395
2396private:
2397 Type _data;
2398};
2399
2400
2401template <class T0,
2402 class T1,
2403 class T2,
2404 class T3,
2405 class T4,
2406 class T5,
2407 class T6,
2408 class T7,
2409 class T8,
2410 class T9,
2411 class T10,
2412 class T11,
2413 class T12,
2414 class T13,
2415 class T14,
2416 class T15,
2417 class T16,
2418 class T17,
2419 class T18,
2420 class T19,
2421 class T20,
2422 class T21,
2423 class T22,
2424 class T23,
2425 class T24>
2426struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,NullTypeList>
2427{
2428 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType Type;
2429
2430 enum TupleLengthType
2431 {
2432 length = Type::length
2433 };
2434
2435 Tuple():_data()
2436 {
2437 }
2438
2439 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2440 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2441 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2442 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2443 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2444 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2445 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2446 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2447 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2448 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2449 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2450 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2451 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2452 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2453 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2454 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2455 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2456 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2457 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2458 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2459 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2460 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2461 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2462 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2463 typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24)):
2464 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2465 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2466 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2467 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2468 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2469 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2470 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2471 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2472 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2473 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2474 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2475 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2476 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2477 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2478 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2479 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2480 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2481 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24>::HeadType
2482 (t18, typename TypeListType<T19,T20,T21,T22,T23,T24>::HeadType
2483 (t19, typename TypeListType<T20,T21,T22,T23,T24>::HeadType
2484 (t20, typename TypeListType<T21,T22,T23,T24>::HeadType
2485 (t21, typename TypeListType<T22,T23,T24>::HeadType
2486 (t22, typename TypeListType<T23,T24>::HeadType
2487 (t23, typename TypeListType<T24>::HeadType
2488 (t24, NullTypeList())))))))))))))))))))))))))
2489 {
2490 }
2491
2492 template <int N>
2493 typename TypeGetter<N, Type>::ConstHeadType& get() const
2494 {
2495 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2496 }
2497
2498 template <int N>
2499 typename TypeGetter<N, Type>::HeadType& get()
2500 {
2501 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2502 }
2503
2504 template <int N>
2505 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2506 {
2507 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2508 }
2509
2510 bool operator == (const Tuple& other) const
2511 {
2512 return _data == other._data;
2513 }
2514
2515 bool operator != (const Tuple& other) const
2516 {
2517 return !(_data == other._data);
2518 }
2519
2520 bool operator < (const Tuple& other) const
2521 {
2522 return _data < other._data;
2523 }
2524
2525private:
2526 Type _data;
2527};
2528
2529
2530template <class T0,
2531 class T1,
2532 class T2,
2533 class T3,
2534 class T4,
2535 class T5,
2536 class T6,
2537 class T7,
2538 class T8,
2539 class T9,
2540 class T10,
2541 class T11,
2542 class T12,
2543 class T13,
2544 class T14,
2545 class T15,
2546 class T16,
2547 class T17,
2548 class T18,
2549 class T19,
2550 class T20,
2551 class T21,
2552 class T22,
2553 class T23>
2554struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,NullTypeList>
2555{
2556 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType Type;
2557
2558 enum TupleLengthType
2559 {
2560 length = Type::length
2561 };
2562
2563 Tuple():_data()
2564 {
2565 }
2566
2567 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2568 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2569 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2570 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2571 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2572 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2573 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2574 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2575 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2576 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2577 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2578 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2579 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2580 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2581 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2582 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2583 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2584 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2585 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2586 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2587 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2588 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2589 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2590 typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23)):
2591 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2592 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2593 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2594 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2595 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2596 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2597 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2598 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2599 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2600 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2601 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2602 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2603 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2604 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2605 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2606 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2607 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23>::HeadType
2608 (t17, typename TypeListType<T18,T19,T20,T21,T22,T23>::HeadType
2609 (t18, typename TypeListType<T19,T20,T21,T22,T23>::HeadType
2610 (t19, typename TypeListType<T20,T21,T22,T23>::HeadType
2611 (t20, typename TypeListType<T21,T22,T23>::HeadType
2612 (t21, typename TypeListType<T22,T23>::HeadType
2613 (t22, typename TypeListType<T23>::HeadType
2614 (t23, NullTypeList()))))))))))))))))))))))))
2615 {
2616 }
2617
2618 template <int N>
2619 typename TypeGetter<N, Type>::ConstHeadType& get() const
2620 {
2621 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2622 }
2623
2624 template <int N>
2625 typename TypeGetter<N, Type>::HeadType& get()
2626 {
2627 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2628 }
2629
2630 template <int N>
2631 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2632 {
2633 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2634 }
2635
2636 bool operator == (const Tuple& other) const
2637 {
2638 return _data == other._data;
2639 }
2640
2641 bool operator != (const Tuple& other) const
2642 {
2643 return !(_data == other._data);
2644 }
2645
2646 bool operator < (const Tuple& other) const
2647 {
2648 return _data < other._data;
2649 }
2650
2651private:
2652 Type _data;
2653};
2654
2655
2656template <class T0,
2657 class T1,
2658 class T2,
2659 class T3,
2660 class T4,
2661 class T5,
2662 class T6,
2663 class T7,
2664 class T8,
2665 class T9,
2666 class T10,
2667 class T11,
2668 class T12,
2669 class T13,
2670 class T14,
2671 class T15,
2672 class T16,
2673 class T17,
2674 class T18,
2675 class T19,
2676 class T20,
2677 class T21,
2678 class T22>
2679struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,NullTypeList>
2680{
2681 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType Type;
2682
2683 enum TupleLengthType
2684 {
2685 length = Type::length
2686 };
2687
2688 Tuple():_data()
2689 {
2690 }
2691
2692 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2693 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2694 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2695 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2696 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2697 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2698 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2699 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2700 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2701 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2702 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2703 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2704 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2705 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2706 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2707 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2708 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2709 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2710 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2711 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2712 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2713 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2714 typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22)):
2715 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2716 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2717 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2718 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2719 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2720 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2721 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2722 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2723 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2724 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2725 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2726 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2727 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2728 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2729 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2730 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22>::HeadType
2731 (t16, typename TypeListType<T17,T18,T19,T20,T21,T22>::HeadType
2732 (t17, typename TypeListType<T18,T19,T20,T21,T22>::HeadType
2733 (t18, typename TypeListType<T19,T20,T21,T22>::HeadType
2734 (t19, typename TypeListType<T20,T21,T22>::HeadType
2735 (t20, typename TypeListType<T21,T22>::HeadType
2736 (t21, typename TypeListType<T22>::HeadType
2737 (t22, NullTypeList())))))))))))))))))))))))
2738 {
2739 }
2740
2741 template <int N>
2742 typename TypeGetter<N, Type>::ConstHeadType& get() const
2743 {
2744 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2745 }
2746
2747 template <int N>
2748 typename TypeGetter<N, Type>::HeadType& get()
2749 {
2750 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2751 }
2752
2753 template <int N>
2754 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2755 {
2756 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2757 }
2758
2759 bool operator == (const Tuple& other) const
2760 {
2761 return _data == other._data;
2762 }
2763
2764 bool operator != (const Tuple& other) const
2765 {
2766 return !(_data == other._data);
2767 }
2768
2769 bool operator < (const Tuple& other) const
2770 {
2771 return _data < other._data;
2772 }
2773
2774private:
2775 Type _data;
2776};
2777
2778
2779template <class T0,
2780 class T1,
2781 class T2,
2782 class T3,
2783 class T4,
2784 class T5,
2785 class T6,
2786 class T7,
2787 class T8,
2788 class T9,
2789 class T10,
2790 class T11,
2791 class T12,
2792 class T13,
2793 class T14,
2794 class T15,
2795 class T16,
2796 class T17,
2797 class T18,
2798 class T19,
2799 class T20,
2800 class T21>
2801struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,NullTypeList>
2802{
2803 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType Type;
2804
2805 enum TupleLengthType
2806 {
2807 length = Type::length
2808 };
2809
2810 Tuple():_data()
2811 {
2812 }
2813
2814 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2815 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2816 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2817 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2818 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2819 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2820 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2821 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2822 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2823 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2824 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2825 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2826 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2827 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2828 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2829 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2830 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2831 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2832 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2833 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2834 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2835 typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21)):
2836 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2837 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2838 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2839 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2840 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2841 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2842 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2843 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2844 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2845 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2846 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2847 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2848 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2849 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2850 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21>::HeadType
2851 (t15, typename TypeListType<T16,T17,T18,T19,T20,T21>::HeadType
2852 (t16, typename TypeListType<T17,T18,T19,T20,T21>::HeadType
2853 (t17, typename TypeListType<T18,T19,T20,T21>::HeadType
2854 (t18, typename TypeListType<T19,T20,T21>::HeadType
2855 (t19, typename TypeListType<T20,T21>::HeadType
2856 (t20, typename TypeListType<T21>::HeadType
2857 (t21, NullTypeList()))))))))))))))))))))))
2858 {
2859 }
2860
2861 template <int N>
2862 typename TypeGetter<N, Type>::ConstHeadType& get() const
2863 {
2864 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2865 }
2866
2867 template <int N>
2868 typename TypeGetter<N, Type>::HeadType& get()
2869 {
2870 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2871 }
2872
2873 template <int N>
2874 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2875 {
2876 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2877 }
2878
2879 bool operator == (const Tuple& other) const
2880 {
2881 return _data == other._data;
2882 }
2883
2884 bool operator != (const Tuple& other) const
2885 {
2886 return !(_data == other._data);
2887 }
2888
2889 bool operator < (const Tuple& other) const
2890 {
2891 return _data < other._data;
2892 }
2893
2894private:
2895 Type _data;
2896};
2897
2898
2899template <class T0,
2900 class T1,
2901 class T2,
2902 class T3,
2903 class T4,
2904 class T5,
2905 class T6,
2906 class T7,
2907 class T8,
2908 class T9,
2909 class T10,
2910 class T11,
2911 class T12,
2912 class T13,
2913 class T14,
2914 class T15,
2915 class T16,
2916 class T17,
2917 class T18,
2918 class T19,
2919 class T20>
2920struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,NullTypeList>
2921{
2922 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType Type;
2923
2924 enum TupleLengthType
2925 {
2926 length = Type::length
2927 };
2928
2929 Tuple():_data()
2930 {
2931 }
2932
2933 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2934 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2935 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2936 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2937 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2938 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2939 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2940 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2941 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2942 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2943 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2944 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2945 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2946 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2947 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2948 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2949 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2950 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2951 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2952 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2953 typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20)):
2954 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2955 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2956 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2957 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2958 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2959 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2960 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2961 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2962 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2963 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2964 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2965 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2966 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2967 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20>::HeadType
2968 (t14, typename TypeListType<T15,T16,T17,T18,T19,T20>::HeadType
2969 (t15, typename TypeListType<T16,T17,T18,T19,T20>::HeadType
2970 (t16, typename TypeListType<T17,T18,T19,T20>::HeadType
2971 (t17, typename TypeListType<T18,T19,T20>::HeadType
2972 (t18, typename TypeListType<T19,T20>::HeadType
2973 (t19, typename TypeListType<T20>::HeadType
2974 (t20, NullTypeList())))))))))))))))))))))
2975 {
2976 }
2977
2978 template <int N>
2979 typename TypeGetter<N, Type>::ConstHeadType& get() const
2980 {
2981 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2982 }
2983
2984 template <int N>
2985 typename TypeGetter<N, Type>::HeadType& get()
2986 {
2987 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2988 }
2989
2990 template <int N>
2991 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2992 {
2993 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2994 }
2995
2996 bool operator == (const Tuple& other) const
2997 {
2998 return _data == other._data;
2999 }
3000
3001 bool operator != (const Tuple& other) const
3002 {
3003 return !(_data == other._data);
3004 }
3005
3006 bool operator < (const Tuple& other) const
3007 {
3008 return _data < other._data;
3009 }
3010
3011private:
3012 Type _data;
3013};
3014
3015
3016template <class T0,
3017 class T1,
3018 class T2,
3019 class T3,
3020 class T4,
3021 class T5,
3022 class T6,
3023 class T7,
3024 class T8,
3025 class T9,
3026 class T10,
3027 class T11,
3028 class T12,
3029 class T13,
3030 class T14,
3031 class T15,
3032 class T16,
3033 class T17,
3034 class T18,
3035 class T19>
3036struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,NullTypeList>
3037{
3038 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType Type;
3039
3040 enum TupleLengthType
3041 {
3042 length = Type::length
3043 };
3044
3045 Tuple():_data()
3046 {
3047 }
3048
3049 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3050 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3051 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3052 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3053 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3054 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3055 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3056 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3057 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3058 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3059 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3060 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3061 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3062 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3063 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3064 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3065 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
3066 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
3067 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
3068 typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)):
3069 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3070 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3071 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3072 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3073 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3074 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3075 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3076 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3077 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3078 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3079 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3080 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3081 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19>::HeadType
3082 (t13, typename TypeListType<T14,T15,T16,T17,T18,T19>::HeadType
3083 (t14, typename TypeListType<T15,T16,T17,T18,T19>::HeadType
3084 (t15, typename TypeListType<T16,T17,T18,T19>::HeadType
3085 (t16, typename TypeListType<T17,T18,T19>::HeadType
3086 (t17, typename TypeListType<T18,T19>::HeadType
3087 (t18, typename TypeListType<T19>::HeadType
3088 (t19, NullTypeList()))))))))))))))))))))
3089 {
3090 }
3091
3092 template <int N>
3093 typename TypeGetter<N, Type>::ConstHeadType& get() const
3094 {
3095 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3096 }
3097
3098 template <int N>
3099 typename TypeGetter<N, Type>::HeadType& get()
3100 {
3101 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3102 }
3103
3104 template <int N>
3105 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3106 {
3107 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3108 }
3109
3110 bool operator == (const Tuple& other) const
3111 {
3112 return _data == other._data;
3113 }
3114
3115 bool operator != (const Tuple& other) const
3116 {
3117 return !(_data == other._data);
3118 }
3119
3120 bool operator < (const Tuple& other) const
3121 {
3122 return _data < other._data;
3123 }
3124
3125private:
3126 Type _data;
3127};
3128
3129
3130template <class T0,
3131 class T1,
3132 class T2,
3133 class T3,
3134 class T4,
3135 class T5,
3136 class T6,
3137 class T7,
3138 class T8,
3139 class T9,
3140 class T10,
3141 class T11,
3142 class T12,
3143 class T13,
3144 class T14,
3145 class T15,
3146 class T16,
3147 class T17,
3148 class T18>
3149struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,NullTypeList>
3150{
3151 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType Type;
3152
3153 enum TupleLengthType
3154 {
3155 length = Type::length
3156 };
3157
3158 Tuple():_data()
3159 {
3160 }
3161
3162 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3163 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3164 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3165 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3166 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3167 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3168 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3169 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3170 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3171 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3172 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3173 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3174 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3175 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3176 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3177 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3178 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
3179 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
3180 typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18)):
3181 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3182 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3183 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3184 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3185 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3186 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3187 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3188 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3189 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3190 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3191 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3192 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18>::HeadType
3193 (t12, typename TypeListType<T13,T14,T15,T16,T17,T18>::HeadType
3194 (t13, typename TypeListType<T14,T15,T16,T17,T18>::HeadType
3195 (t14, typename TypeListType<T15,T16,T17,T18>::HeadType
3196 (t15, typename TypeListType<T16,T17,T18>::HeadType
3197 (t16, typename TypeListType<T17,T18>::HeadType
3198 (t17, typename TypeListType<T18>::HeadType
3199 (t18, NullTypeList())))))))))))))))))))
3200 {
3201 }
3202
3203 template <int N>
3204 typename TypeGetter<N, Type>::ConstHeadType& get() const
3205 {
3206 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3207 }
3208
3209 template <int N>
3210 typename TypeGetter<N, Type>::HeadType& get()
3211 {
3212 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3213 }
3214
3215 template <int N>
3216 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3217 {
3218 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3219 }
3220
3221 bool operator == (const Tuple& other) const
3222 {
3223 return _data == other._data;
3224 }
3225
3226 bool operator != (const Tuple& other) const
3227 {
3228 return !(_data == other._data);
3229 }
3230
3231 bool operator < (const Tuple& other) const
3232 {
3233 return _data < other._data;
3234 }
3235
3236private:
3237 Type _data;
3238};
3239
3240
3241template <class T0,
3242 class T1,
3243 class T2,
3244 class T3,
3245 class T4,
3246 class T5,
3247 class T6,
3248 class T7,
3249 class T8,
3250 class T9,
3251 class T10,
3252 class T11,
3253 class T12,
3254 class T13,
3255 class T14,
3256 class T15,
3257 class T16,
3258 class T17>
3259struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,NullTypeList>
3260{
3261 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType Type;
3262
3263 enum TupleLengthType
3264 {
3265 length = Type::length
3266 };
3267
3268 Tuple():_data()
3269 {
3270 }
3271
3272 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3273 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3274 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3275 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3276 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3277 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3278 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3279 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3280 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3281 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3282 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3283 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3284 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3285 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3286 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3287 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3288 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
3289 typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17)):
3290 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3291 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3292 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3293 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3294 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3295 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3296 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3297 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3298 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3299 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3300 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17>::HeadType
3301 (t11, typename TypeListType<T12,T13,T14,T15,T16,T17>::HeadType
3302 (t12, typename TypeListType<T13,T14,T15,T16,T17>::HeadType
3303 (t13, typename TypeListType<T14,T15,T16,T17>::HeadType
3304 (t14, typename TypeListType<T15,T16,T17>::HeadType
3305 (t15, typename TypeListType<T16,T17>::HeadType
3306 (t16, typename TypeListType<T17>::HeadType
3307 (t17, NullTypeList()))))))))))))))))))
3308 {
3309 }
3310
3311 template <int N>
3312 typename TypeGetter<N, Type>::ConstHeadType& get() const
3313 {
3314 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3315 }
3316
3317 template <int N>
3318 typename TypeGetter<N, Type>::HeadType& get()
3319 {
3320 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3321 }
3322
3323 template <int N>
3324 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3325 {
3326 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3327 }
3328
3329 bool operator == (const Tuple& other) const
3330 {
3331 return _data == other._data;
3332 }
3333
3334 bool operator != (const Tuple& other) const
3335 {
3336 return !(_data == other._data);
3337 }
3338
3339 bool operator < (const Tuple& other) const
3340 {
3341 return _data < other._data;
3342 }
3343
3344private:
3345 Type _data;
3346};
3347
3348
3349template <class T0,
3350 class T1,
3351 class T2,
3352 class T3,
3353 class T4,
3354 class T5,
3355 class T6,
3356 class T7,
3357 class T8,
3358 class T9,
3359 class T10,
3360 class T11,
3361 class T12,
3362 class T13,
3363 class T14,
3364 class T15,
3365 class T16>
3366struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,NullTypeList>
3367{
3368 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType Type;
3369
3370 enum TupleLengthType
3371 {
3372 length = Type::length
3373 };
3374
3375 Tuple():_data()
3376 {
3377 }
3378
3379 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3380 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3381 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3382 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3383 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3384 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3385 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3386 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3387 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3388 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3389 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3390 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3391 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3392 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3393 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3394 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3395 typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16)):
3396 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3397 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3398 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3399 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3400 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3401 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3402 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3403 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3404 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3405 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16>::HeadType
3406 (t10, typename TypeListType<T11,T12,T13,T14,T15,T16>::HeadType
3407 (t11, typename TypeListType<T12,T13,T14,T15,T16>::HeadType
3408 (t12, typename TypeListType<T13,T14,T15,T16>::HeadType
3409 (t13, typename TypeListType<T14,T15,T16>::HeadType
3410 (t14, typename TypeListType<T15,T16>::HeadType
3411 (t15, typename TypeListType<T16>::HeadType
3412 (t16, NullTypeList())))))))))))))))))
3413 {
3414 }
3415
3416 template <int N>
3417 typename TypeGetter<N, Type>::ConstHeadType& get() const
3418 {
3419 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3420 }
3421
3422 template <int N>
3423 typename TypeGetter<N, Type>::HeadType& get()
3424 {
3425 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3426 }
3427
3428 template <int N>
3429 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3430 {
3431 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3432 }
3433
3434 bool operator == (const Tuple& other) const
3435 {
3436 return _data == other._data;
3437 }
3438
3439 bool operator != (const Tuple& other) const
3440 {
3441 return !(_data == other._data);
3442 }
3443
3444 bool operator < (const Tuple& other) const
3445 {
3446 return _data < other._data;
3447 }
3448
3449private:
3450 Type _data;
3451};
3452
3453
3454template <class T0,
3455 class T1,
3456 class T2,
3457 class T3,
3458 class T4,
3459 class T5,
3460 class T6,
3461 class T7,
3462 class T8,
3463 class T9,
3464 class T10,
3465 class T11,
3466 class T12,
3467 class T13,
3468 class T14,
3469 class T15>
3470struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,NullTypeList>
3471{
3472 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType Type;
3473
3474 enum TupleLengthType
3475 {
3476 length = Type::length
3477 };
3478
3479 Tuple():_data()
3480 {
3481 }
3482
3483 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3484 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3485 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3486 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3487 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3488 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3489 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3490 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3491 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3492 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3493 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3494 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3495 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3496 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3497 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3498 typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15)):
3499 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3500 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3501 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3502 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3503 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3504 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3505 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3506 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3507 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15>::HeadType
3508 (t9, typename TypeListType<T10,T11,T12,T13,T14,T15>::HeadType
3509 (t10, typename TypeListType<T11,T12,T13,T14,T15>::HeadType
3510 (t11, typename TypeListType<T12,T13,T14,T15>::HeadType
3511 (t12, typename TypeListType<T13,T14,T15>::HeadType
3512 (t13, typename TypeListType<T14,T15>::HeadType
3513 (t14, typename TypeListType<T15>::HeadType
3514 (t15, NullTypeList()))))))))))))))))
3515 {
3516 }
3517
3518 template <int N>
3519 typename TypeGetter<N, Type>::ConstHeadType& get() const
3520 {
3521 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3522 }
3523
3524 template <int N>
3525 typename TypeGetter<N, Type>::HeadType& get()
3526 {
3527 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3528 }
3529
3530 template <int N>
3531 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3532 {
3533 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3534 }
3535
3536 bool operator == (const Tuple& other) const
3537 {
3538 return _data == other._data;
3539 }
3540
3541 bool operator != (const Tuple& other) const
3542 {
3543 return !(_data == other._data);
3544 }
3545
3546 bool operator < (const Tuple& other) const
3547 {
3548 return _data < other._data;
3549 }
3550
3551private:
3552 Type _data;
3553};
3554
3555
3556template <class T0,
3557 class T1,
3558 class T2,
3559 class T3,
3560 class T4,
3561 class T5,
3562 class T6,
3563 class T7,
3564 class T8,
3565 class T9,
3566 class T10,
3567 class T11,
3568 class T12,
3569 class T13,
3570 class T14>
3571struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,NullTypeList>
3572{
3573 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType Type;
3574
3575 enum TupleLengthType
3576 {
3577 length = Type::length
3578 };
3579
3580 Tuple():_data()
3581 {
3582 }
3583
3584 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3585 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3586 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3587 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3588 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3589 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3590 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3591 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3592 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3593 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3594 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3595 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3596 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3597 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3598 typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14)):
3599 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3600 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3601 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3602 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3603 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3604 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3605 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3606 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14>::HeadType
3607 (t8, typename TypeListType<T9,T10,T11,T12,T13,T14>::HeadType
3608 (t9, typename TypeListType<T10,T11,T12,T13,T14>::HeadType
3609 (t10, typename TypeListType<T11,T12,T13,T14>::HeadType
3610 (t11, typename TypeListType<T12,T13,T14>::HeadType
3611 (t12, typename TypeListType<T13,T14>::HeadType
3612 (t13, typename TypeListType<T14>::HeadType
3613 (t14, NullTypeList())))))))))))))))
3614 {
3615 }
3616
3617 template <int N>
3618 typename TypeGetter<N, Type>::ConstHeadType& get() const
3619 {
3620 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3621 }
3622
3623 template <int N>
3624 typename TypeGetter<N, Type>::HeadType& get()
3625 {
3626 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3627 }
3628
3629 template <int N>
3630 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3631 {
3632 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3633 }
3634
3635 bool operator == (const Tuple& other) const
3636 {
3637 return _data == other._data;
3638 }
3639
3640 bool operator != (const Tuple& other) const
3641 {
3642 return !(_data == other._data);
3643 }
3644
3645 bool operator < (const Tuple& other) const
3646 {
3647 return _data < other._data;
3648 }
3649
3650private:
3651 Type _data;
3652};
3653
3654
3655template <class T0,
3656 class T1,
3657 class T2,
3658 class T3,
3659 class T4,
3660 class T5,
3661 class T6,
3662 class T7,
3663 class T8,
3664 class T9,
3665 class T10,
3666 class T11,
3667 class T12,
3668 class T13>
3669struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,NullTypeList>
3670{
3671 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType Type;
3672
3673 enum TupleLengthType
3674 {
3675 length = Type::length
3676 };
3677
3678 Tuple():_data()
3679 {
3680 }
3681
3682 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3683 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3684 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3685 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3686 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3687 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3688 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3689 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3690 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3691 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3692 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3693 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3694 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3695 typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13)):
3696 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3697 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3698 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3699 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3700 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3701 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3702 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13>::HeadType
3703 (t7, typename TypeListType<T8,T9,T10,T11,T12,T13>::HeadType
3704 (t8, typename TypeListType<T9,T10,T11,T12,T13>::HeadType
3705 (t9, typename TypeListType<T10,T11,T12,T13>::HeadType
3706 (t10, typename TypeListType<T11,T12,T13>::HeadType
3707 (t11, typename TypeListType<T12,T13>::HeadType
3708 (t12, typename TypeListType<T13>::HeadType
3709 (t13, NullTypeList()))))))))))))))
3710 {
3711 }
3712
3713 template <int N>
3714 typename TypeGetter<N, Type>::ConstHeadType& get() const
3715 {
3716 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3717 }
3718
3719 template <int N>
3720 typename TypeGetter<N, Type>::HeadType& get()
3721 {
3722 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3723 }
3724
3725 template <int N>
3726 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3727 {
3728 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3729 }
3730
3731 bool operator == (const Tuple& other) const
3732 {
3733 return _data == other._data;
3734 }
3735
3736 bool operator != (const Tuple& other) const
3737 {
3738 return !(_data == other._data);
3739 }
3740
3741 bool operator < (const Tuple& other) const
3742 {
3743 return _data < other._data;
3744 }
3745
3746private:
3747 Type _data;
3748};
3749
3750
3751template <class T0,
3752 class T1,
3753 class T2,
3754 class T3,
3755 class T4,
3756 class T5,
3757 class T6,
3758 class T7,
3759 class T8,
3760 class T9,
3761 class T10,
3762 class T11,
3763 class T12>
3764struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12, NullTypeList>
3765{
3766 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType Type;
3767
3768 enum TupleLengthType
3769 {
3770 length = Type::length
3771 };
3772
3773 Tuple():_data()
3774 {
3775 }
3776
3777 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3778 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3779 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3780 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3781 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3782 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3783 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3784 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3785 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3786 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3787 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3788 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3789 typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12)):
3790 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3791 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3792 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3793 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3794 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3795 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12>::HeadType
3796 (t6, typename TypeListType<T7,T8,T9,T10,T11,T12>::HeadType
3797 (t7, typename TypeListType<T8,T9,T10,T11,T12>::HeadType
3798 (t8, typename TypeListType<T9,T10,T11,T12>::HeadType
3799 (t9, typename TypeListType<T10,T11,T12>::HeadType
3800 (t10, typename TypeListType<T11,T12>::HeadType
3801 (t11, typename TypeListType<T12>::HeadType
3802 (t12, NullTypeList())))))))))))))
3803 {
3804 }
3805
3806 template <int N>
3807 typename TypeGetter<N, Type>::ConstHeadType& get() const
3808 {
3809 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3810 }
3811
3812 template <int N>
3813 typename TypeGetter<N, Type>::HeadType& get()
3814 {
3815 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3816 }
3817
3818 template <int N>
3819 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3820 {
3821 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3822 }
3823
3824 bool operator == (const Tuple& other) const
3825 {
3826 return _data == other._data;
3827 }
3828
3829 bool operator != (const Tuple& other) const
3830 {
3831 return !(_data == other._data);
3832 }
3833
3834 bool operator < (const Tuple& other) const
3835 {
3836 return _data < other._data;
3837 }
3838
3839private:
3840 Type _data;
3841};
3842
3843
3844template <class T0,
3845 class T1,
3846 class T2,
3847 class T3,
3848 class T4,
3849 class T5,
3850 class T6,
3851 class T7,
3852 class T8,
3853 class T9,
3854 class T10,
3855 class T11>
3856struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,NullTypeList>
3857{
3858 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType Type;
3859
3860 enum TupleLengthType
3861 {
3862 length = Type::length
3863 };
3864
3865 Tuple():_data()
3866 {
3867 }
3868
3869 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3870 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3871 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3872 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3873 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3874 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3875 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3876 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3877 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3878 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3879 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3880 typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11)):
3881 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3882 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3883 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3884 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3885 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11>::HeadType
3886 (t5, typename TypeListType<T6,T7,T8,T9,T10,T11>::HeadType
3887 (t6, typename TypeListType<T7,T8,T9,T10,T11>::HeadType
3888 (t7, typename TypeListType<T8,T9,T10,T11>::HeadType
3889 (t8, typename TypeListType<T9,T10,T11>::HeadType
3890 (t9, typename TypeListType<T10,T11>::HeadType
3891 (t10, typename TypeListType<T11>::HeadType
3892 (t11, NullTypeList()))))))))))))
3893 {
3894 }
3895
3896 template <int N>
3897 typename TypeGetter<N, Type>::ConstHeadType& get() const
3898 {
3899 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3900 }
3901
3902 template <int N>
3903 typename TypeGetter<N, Type>::HeadType& get()
3904 {
3905 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3906 }
3907
3908 template <int N>
3909 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3910 {
3911 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3912 }
3913
3914 bool operator == (const Tuple& other) const
3915 {
3916 return _data == other._data;
3917 }
3918
3919 bool operator != (const Tuple& other) const
3920 {
3921 return !(_data == other._data);
3922 }
3923
3924 bool operator < (const Tuple& other) const
3925 {
3926 return _data < other._data;
3927 }
3928
3929private:
3930 Type _data;
3931};
3932
3933
3934template <class T0,
3935 class T1,
3936 class T2,
3937 class T3,
3938 class T4,
3939 class T5,
3940 class T6,
3941 class T7,
3942 class T8,
3943 class T9,
3944 class T10>
3945struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7,T8,T9,T10, NullTypeList>
3946{
3947 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::HeadType Type;
3948
3949 enum TupleLengthType
3950 {
3951 length = Type::length
3952 };
3953
3954 Tuple():_data()
3955 {
3956 }
3957
3958 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3959 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3960 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3961 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3962 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3963 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3964 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3965 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3966 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3967 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3968 typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10)):
3969 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::HeadType
3970 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10>::HeadType
3971 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10>::HeadType
3972 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10>::HeadType
3973 (t4, typename TypeListType<T5,T6,T7,T8,T9,T10>::HeadType
3974 (t5, typename TypeListType<T6,T7,T8,T9,T10>::HeadType
3975 (t6, typename TypeListType<T7,T8,T9,T10>::HeadType
3976 (t7, typename TypeListType<T8,T9,T10>::HeadType
3977 (t8, typename TypeListType<T9,T10>::HeadType
3978 (t9, typename TypeListType<T10>::HeadType
3979 (t10, NullTypeList())))))))))))
3980 {
3981 }
3982
3983 template <int N>
3984 typename TypeGetter<N, Type>::ConstHeadType& get() const
3985 {
3986 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3987 }
3988
3989 template <int N>
3990 typename TypeGetter<N, Type>::HeadType& get()
3991 {
3992 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3993 }
3994
3995 template <int N>
3996 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3997 {
3998 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3999 }
4000
4001 bool operator == (const Tuple& other) const
4002 {
4003 return _data == other._data;
4004 }
4005
4006 bool operator != (const Tuple& other) const
4007 {
4008 return !(_data == other._data);
4009 }
4010
4011 bool operator < (const Tuple& other) const
4012 {
4013 return _data < other._data;
4014 }
4015
4016private:
4017 Type _data;
4018};
4019
4020
4021template <class T0,
4022 class T1,
4023 class T2,
4024 class T3,
4025 class T4,
4026 class T5,
4027 class T6,
4028 class T7,
4029 class T8,
4030 class T9>
4031struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7,T8,T9, NullTypeList>
4032{
4033 typedef typename TypeListType<T0, T1,T2,T3,T4,T5,T6,T7,T8,T9>::HeadType Type;
4034
4035 enum TupleLengthType
4036 {
4037 length = Type::length
4038 };
4039
4040 Tuple():_data()
4041 {
4042 }
4043
4044 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4045 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4046 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4047 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4048 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4049 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4050 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
4051 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
4052 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
4053 typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9)):
4054 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9>::HeadType
4055 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9>::HeadType
4056 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9>::HeadType
4057 (t3, typename TypeListType<T4,T5,T6,T7,T8,T9>::HeadType
4058 (t4, typename TypeListType<T5,T6,T7,T8,T9>::HeadType
4059 (t5, typename TypeListType<T6,T7,T8,T9>::HeadType
4060 (t6, typename TypeListType<T7,T8,T9>::HeadType
4061 (t7, typename TypeListType<T8,T9>::HeadType
4062 (t8, typename TypeListType<T9>::HeadType
4063 (t9, NullTypeList()))))))))))
4064 {
4065 }
4066
4067 template <int N>
4068 typename TypeGetter<N, Type>::ConstHeadType& get() const
4069 {
4070 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4071 }
4072
4073 template <int N>
4074 typename TypeGetter<N, Type>::HeadType& get()
4075 {
4076 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4077 }
4078
4079 template <int N>
4080 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4081 {
4082 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4083 }
4084
4085 bool operator == (const Tuple& other) const
4086 {
4087 return _data == other._data;
4088 }
4089
4090 bool operator != (const Tuple& other) const
4091 {
4092 return !(_data == other._data);
4093 }
4094
4095 bool operator < (const Tuple& other) const
4096 {
4097 return _data < other._data;
4098 }
4099
4100private:
4101 Type _data;
4102};
4103
4104
4105template <class T0,
4106 class T1,
4107 class T2,
4108 class T3,
4109 class T4,
4110 class T5,
4111 class T6,
4112 class T7,
4113 class T8>
4114struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7,T8, NullTypeList>
4115{
4116 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8>::HeadType Type;
4117
4118 enum TupleLengthType
4119 {
4120 length = Type::length
4121 };
4122
4123 Tuple():_data()
4124 {
4125 }
4126
4127 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4128 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4129 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4130 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4131 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4132 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4133 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
4134 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
4135 typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8)):
4136 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8>::HeadType
4137 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8>::HeadType
4138 (t2, typename TypeListType<T3,T4,T5,T6,T7,T8>::HeadType
4139 (t3, typename TypeListType<T4,T5,T6,T7,T8>::HeadType
4140 (t4, typename TypeListType<T5,T6,T7,T8>::HeadType
4141 (t5, typename TypeListType<T6,T7,T8>::HeadType
4142 (t6, typename TypeListType<T7,T8>::HeadType
4143 (t7, typename TypeListType<T8>::HeadType
4144 (t8, NullTypeList())))))))))
4145 {
4146 }
4147
4148 template <int N>
4149 typename TypeGetter<N, Type>::ConstHeadType& get() const
4150 {
4151 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4152 }
4153
4154 template <int N>
4155 typename TypeGetter<N, Type>::HeadType& get()
4156 {
4157 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4158 }
4159
4160 template <int N>
4161 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4162 {
4163 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4164 }
4165
4166 bool operator == (const Tuple& other) const
4167 {
4168 return _data == other._data;
4169 }
4170
4171 bool operator != (const Tuple& other) const
4172 {
4173 return !(_data == other._data);
4174 }
4175
4176 bool operator < (const Tuple& other) const
4177 {
4178 return _data < other._data;
4179 }
4180
4181private:
4182 Type _data;
4183};
4184
4185
4186template <class T0,
4187 class T1,
4188 class T2,
4189 class T3,
4190 class T4,
4191 class T5,
4192 class T6,
4193 class T7>
4194struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7, NullTypeList>
4195{
4196 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7>::HeadType Type;
4197
4198 enum TupleLengthType
4199 {
4200 length = Type::length
4201 };
4202
4203 Tuple():_data()
4204 {
4205 }
4206
4207 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4208 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4209 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4210 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4211 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4212 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4213 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
4214 typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7)):
4215 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7>::HeadType
4216 (t1, typename TypeListType<T2,T3,T4,T5,T6,T7>::HeadType
4217 (t2, typename TypeListType<T3,T4,T5,T6,T7>::HeadType
4218 (t3, typename TypeListType<T4,T5,T6,T7>::HeadType
4219 (t4, typename TypeListType<T5,T6,T7>::HeadType
4220 (t5, typename TypeListType<T6,T7>::HeadType
4221 (t6, typename TypeListType<T7>::HeadType
4222 (t7, NullTypeList()))))))))
4223 {
4224 }
4225
4226 template <int N>
4227 typename TypeGetter<N, Type>::ConstHeadType& get() const
4228 {
4229 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4230 }
4231
4232 template <int N>
4233 typename TypeGetter<N, Type>::HeadType& get()
4234 {
4235 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4236 }
4237
4238 template <int N>
4239 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4240 {
4241 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4242 }
4243
4244 bool operator == (const Tuple& other) const
4245 {
4246 return _data == other._data;
4247 }
4248
4249 bool operator != (const Tuple& other) const
4250 {
4251 return !(_data == other._data);
4252 }
4253
4254 bool operator < (const Tuple& other) const
4255 {
4256 return _data < other._data;
4257 }
4258
4259private:
4260 Type _data;
4261};
4262
4263
4264template <class T0,
4265 class T1,
4266 class T2,
4267 class T3,
4268 class T4,
4269 class T5,
4270 class T6>
4271struct Tuple<T0, T1,T2,T3,T4,T5,T6, NullTypeList>
4272{
4273 typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6>::HeadType Type;
4274
4275 enum TupleLengthType
4276 {
4277 length = Type::length
4278 };
4279
4280 Tuple():_data()
4281 {
4282 }
4283
4284 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4285 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4286 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4287 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4288 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4289 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4290 typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6)):
4291 _data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6>::HeadType
4292 (t1, typename TypeListType<T2,T3,T4,T5,T6>::HeadType
4293 (t2, typename TypeListType<T3,T4,T5,T6>::HeadType
4294 (t3, typename TypeListType<T4,T5,T6>::HeadType
4295 (t4, typename TypeListType<T5,T6>::HeadType
4296 (t5, typename TypeListType<T6>::HeadType
4297 (t6, NullTypeList())))))))
4298 {
4299 }
4300
4301 template <int N>
4302 typename TypeGetter<N, Type>::ConstHeadType& get() const
4303 {
4304 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4305 }
4306
4307 template <int N>
4308 typename TypeGetter<N, Type>::HeadType& get()
4309 {
4310 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4311 }
4312
4313 template <int N>
4314 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4315 {
4316 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4317 }
4318
4319 bool operator == (const Tuple& other) const
4320 {
4321 return _data == other._data;
4322 }
4323
4324 bool operator != (const Tuple& other) const
4325 {
4326 return !(_data == other._data);
4327 }
4328
4329 bool operator < (const Tuple& other) const
4330 {
4331 return _data < other._data;
4332 }
4333
4334private:
4335 Type _data;
4336};
4337
4338
4339template <class T0,
4340 class T1,
4341 class T2,
4342 class T3,
4343 class T4,
4344 class T5>
4345struct Tuple<T0, T1,T2,T3,T4,T5, NullTypeList>
4346{
4347 typedef typename TypeListType<T0,T1,T2,T3,T4,T5>::HeadType Type;
4348
4349 enum TupleLengthType
4350 {
4351 length = Type::length
4352 };
4353
4354 Tuple():_data()
4355 {
4356 }
4357
4358 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4359 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4360 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4361 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4362 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4363 typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5)):
4364 _data(t0, typename TypeListType<T1,T2,T3,T4,T5>::HeadType
4365 (t1, typename TypeListType<T2,T3,T4,T5>::HeadType
4366 (t2, typename TypeListType<T3,T4,T5>::HeadType
4367 (t3, typename TypeListType<T4,T5>::HeadType
4368 (t4, typename TypeListType<T5>::HeadType
4369 (t5, NullTypeList()))))))
4370 {
4371 }
4372
4373 template <int N>
4374 typename TypeGetter<N, Type>::ConstHeadType& get() const
4375 {
4376 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4377 }
4378
4379 template <int N>
4380 typename TypeGetter<N, Type>::HeadType& get()
4381 {
4382 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4383 }
4384
4385 template <int N>
4386 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4387 {
4388 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4389 }
4390
4391 bool operator == (const Tuple& other) const
4392 {
4393 return _data == other._data;
4394 }
4395
4396 bool operator != (const Tuple& other) const
4397 {
4398 return !(_data == other._data);
4399 }
4400
4401 bool operator < (const Tuple& other) const
4402 {
4403 return _data < other._data;
4404 }
4405
4406private:
4407 Type _data;
4408};
4409
4410
4411template <class T0,
4412 class T1,
4413 class T2,
4414 class T3,
4415 class T4>
4416struct Tuple<T0, T1,T2,T3,T4, NullTypeList>
4417{
4418 typedef typename TypeListType<T0,T1,T2,T3,T4>::HeadType Type;
4419
4420 enum TupleLengthType
4421 {
4422 length = Type::length
4423 };
4424
4425 Tuple():_data()
4426 {
4427 }
4428
4429 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4430 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4431 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4432 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4433 typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4)):
4434 _data(t0, typename TypeListType<T1,T2,T3,T4>::HeadType
4435 (t1, typename TypeListType<T2,T3,T4>::HeadType
4436 (t2, typename TypeListType<T3,T4>::HeadType
4437 (t3, typename TypeListType<T4>::HeadType
4438 (t4, NullTypeList())))))
4439 {
4440 }
4441
4442 template <int N>
4443 typename TypeGetter<N, Type>::ConstHeadType& get() const
4444 {
4445 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4446 }
4447
4448 template <int N>
4449 typename TypeGetter<N, Type>::HeadType& get()
4450 {
4451 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4452 }
4453
4454 template <int N>
4455 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4456 {
4457 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4458 }
4459
4460 bool operator == (const Tuple& other) const
4461 {
4462 return _data == other._data;
4463 }
4464
4465 bool operator != (const Tuple& other) const
4466 {
4467 return !(_data == other._data);
4468 }
4469
4470 bool operator < (const Tuple& other) const
4471 {
4472 return _data < other._data;
4473 }
4474
4475private:
4476 Type _data;
4477};
4478
4479
4480template <class T0,
4481 class T1,
4482 class T2,
4483 class T3>
4484struct Tuple<T0, T1,T2,T3, NullTypeList>
4485{
4486 typedef typename TypeListType<T0,T1,T2,T3>::HeadType Type;
4487
4488 enum TupleLengthType
4489 {
4490 length = Type::length
4491 };
4492
4493 Tuple():_data()
4494 {
4495 }
4496
4497 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4498 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4499 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4500 typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3)):
4501 _data(t0, typename TypeListType<T1,T2,T3>::HeadType
4502 (t1, typename TypeListType<T2,T3>::HeadType
4503 (t2, typename TypeListType<T3>::HeadType
4504 (t3, NullTypeList()))))
4505 {
4506 }
4507
4508 template <int N>
4509 typename TypeGetter<N, Type>::ConstHeadType& get() const
4510 {
4511 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4512 }
4513
4514 template <int N>
4515 typename TypeGetter<N, Type>::HeadType& get()
4516 {
4517 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4518 }
4519
4520 template <int N>
4521 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4522 {
4523 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4524 }
4525
4526 bool operator == (const Tuple& other) const
4527 {
4528 return _data == other._data;
4529 }
4530
4531 bool operator != (const Tuple& other) const
4532 {
4533 return !(_data == other._data);
4534 }
4535
4536 bool operator < (const Tuple& other) const
4537 {
4538 return _data < other._data;
4539 }
4540
4541private:
4542 Type _data;
4543};
4544
4545
4546template <class T0,
4547 class T1,
4548 class T2>
4549struct Tuple<T0, T1,T2, NullTypeList>
4550{
4551 typedef typename TypeListType<T0,T1,T2>::HeadType Type;
4552
4553 enum TupleLengthType
4554 {
4555 length = Type::length
4556 };
4557
4558 Tuple():_data()
4559 {
4560 }
4561
4562 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4563 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4564 typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2)):
4565 _data(t0, typename TypeListType<T1,T2>::HeadType
4566 (t1, typename TypeListType<T2>::HeadType
4567 (t2, NullTypeList())))
4568 {
4569 }
4570
4571 template <int N>
4572 typename TypeGetter<N, Type>::ConstHeadType& get() const
4573 {
4574 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4575 }
4576
4577 template <int N>
4578 typename TypeGetter<N, Type>::HeadType& get()
4579 {
4580 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4581 }
4582
4583 template <int N>
4584 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4585 {
4586 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4587 }
4588
4589 bool operator == (const Tuple& other) const
4590 {
4591 return _data == other._data;
4592 }
4593
4594 bool operator != (const Tuple& other) const
4595 {
4596 return !(_data == other._data);
4597 }
4598
4599 bool operator < (const Tuple& other) const
4600 {
4601 return _data < other._data;
4602 }
4603
4604private:
4605 Type _data;
4606};
4607
4608
4609template <class T0,
4610 class T1>
4611struct Tuple<T0, T1, NullTypeList>
4612{
4613 typedef typename TypeListType<T0,T1>::HeadType Type;
4614
4615 enum TupleLengthType
4616 {
4617 length = Type::length
4618 };
4619
4620 Tuple():_data()
4621 {
4622 }
4623
4624 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4625 typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1)):
4626 _data(t0, typename TypeListType<T1>::HeadType(t1, NullTypeList()))
4627 {
4628 }
4629
4630 template <int N>
4631 typename TypeGetter<N, Type>::ConstHeadType& get() const
4632 {
4633 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4634 }
4635
4636 template <int N>
4637 typename TypeGetter<N, Type>::HeadType& get()
4638 {
4639 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4640 }
4641
4642 template <int N>
4643 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4644 {
4645 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4646 }
4647
4648 bool operator == (const Tuple& other) const
4649 {
4650 return _data == other._data;
4651 }
4652
4653 bool operator != (const Tuple& other) const
4654 {
4655 return !(_data == other._data);
4656 }
4657
4658 bool operator < (const Tuple& other) const
4659 {
4660 return _data < other._data;
4661 }
4662
4663private:
4664 Type _data;
4665};
4666
4667
4668template <class T0>
4669struct Tuple<T0, NullTypeList>
4670{
4671 typedef TypeList<T0, NullTypeList> Type;
4672
4673 enum TupleLengthType
4674 {
4675 length = Type::length
4676 };
4677
4678 Tuple():_data()
4679 {
4680 }
4681
4682 Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0):
4683 _data(t0, NullTypeList())
4684 {
4685 }
4686
4687 template <int N>
4688 typename TypeGetter<N, Type>::ConstHeadType& get() const
4689 {
4690 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4691 }
4692
4693 template <int N>
4694 typename TypeGetter<N, Type>::HeadType& get()
4695 {
4696 return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4697 }
4698
4699 template <int N>
4700 void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4701 {
4702 Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4703 }
4704
4705 bool operator == (const Tuple& other) const
4706 {
4707 return _data == other._data;
4708 }
4709
4710 bool operator != (const Tuple& other) const
4711 {
4712 return !(_data == other._data);
4713 }
4714
4715 bool operator < (const Tuple& other) const
4716 {
4717 return _data < other._data;
4718 }
4719
4720private:
4721 Type _data;
4722};
4723
4724#endif
4725
4726} // namespace Poco
4727
4728
4729#endif // Foundation_Tuple_INCLUDED
4730