1 //
2 // MessagePack for C++ static resolution routine
3 //
4 // Copyright (C) 2008-2009 FURUHASHI Sadayuki
5 //
6 // Licensed under the Apache License, Version 2.0 (the "License");
7 // you may not use this file except in compliance with the License.
8 // You may obtain a copy of the License at
9 //
10 // http://www.apache.org/licenses/LICENSE-2.0
11 //
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
17 //
18 #ifndef MSGPACK_CPP03_DEFINE_ARRAY_HPP
19 #define MSGPACK_CPP03_DEFINE_ARRAY_HPP
20
21 #include "rpc/msgpack/versioning.hpp"
22 #include "rpc/msgpack/adaptor/msgpack_tuple.hpp"
23 #include "rpc/msgpack/adaptor/adaptor_base.hpp"
24 #include "rpc/msgpack/object_fwd.hpp"
25
26 #define MSGPACK_DEFINE_ARRAY(...) \
27 template <typename Packer> \
28 void msgpack_pack(Packer& pk) const \
29 { \
30 clmdep_msgpack::type::make_define_array(__VA_ARGS__).msgpack_pack(pk); \
31 } \
32 void msgpack_unpack(clmdep_msgpack::object const& o) \
33 { \
34 clmdep_msgpack::type::make_define_array(__VA_ARGS__).msgpack_unpack(o); \
35 }\
36 template <typename MSGPACK_OBJECT> \
37 void msgpack_object(MSGPACK_OBJECT* o, clmdep_msgpack::zone& z) const \
38 { \
39 clmdep_msgpack::type::make_define_array(__VA_ARGS__).msgpack_object(o, z); \
40 }
41
42 #define MSGPACK_BASE_ARRAY(base) (*const_cast<base *>(static_cast<base const*>(this)))
43
44 // MSGPACK_ADD_ENUM must be used in the global namespace.
45 #define MSGPACK_ADD_ENUM(enum_name) \
46 namespace clmdep_msgpack { \
47 /** @cond */ \
48 MSGPACK_API_VERSION_NAMESPACE(v1) { \
49 /** @endcond */ \
50 namespace adaptor { \
51 template<> \
52 struct convert<enum_name> { \
53 clmdep_msgpack::object const& operator()(clmdep_msgpack::object const& o, enum_name& v) const {\
54 int tmp; \
55 o >> tmp; \
56 v = static_cast<enum_name>(tmp); \
57 return o; \
58 } \
59 }; \
60 template<> \
61 struct object<enum_name> { \
62 void operator()(clmdep_msgpack::object& o, const enum_name& v) const {\
63 o << static_cast<int>(v); \
64 } \
65 }; \
66 template<> \
67 struct object_with_zone<enum_name> { \
68 void operator()(clmdep_msgpack::object::with_zone& o, const enum_name& v) const { \
69 o << static_cast<int>(v); \
70 } \
71 }; \
72 template<> \
73 struct pack<enum_name> { \
74 template <typename Stream> \
75 clmdep_msgpack::packer<Stream>& operator()(clmdep_msgpack::packer<Stream>& o, const enum_name& v) const { \
76 return o << static_cast<int>(v); \
77 } \
78 }; \
79 } \
80 /** @cond */ \
81 } \
82 /** @endcond */ \
83 }
84
85 namespace clmdep_msgpack {
86 /// @cond
MSGPACK_API_VERSION_NAMESPACE(v1)87 MSGPACK_API_VERSION_NAMESPACE(v1) {
88 /// @endcond
89 namespace type {
90
91 /// @cond
92
93 template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
94 struct define_array;
95 /// @endcond
96
97 template <>
98 struct define_array<> {
99 typedef define_array<> value_type;
100 typedef tuple<> tuple_type;
101 template <typename Packer>
102 void msgpack_pack(Packer& pk) const
103 {
104 pk.pack_array(0);
105 }
106 void msgpack_unpack(clmdep_msgpack::object const& o)
107 {
108 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
109 }
110 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone&) const
111 {
112 o->type = clmdep_msgpack::type::ARRAY;
113 o->via.array.ptr = nullptr;
114 o->via.array.size = 0;
115 }
116 };
117
118 /// @cond
119
120 template <typename A0>
121 struct define_array<A0> {
122 typedef define_array<A0> value_type;
123 typedef tuple<A0> tuple_type;
124 define_array(A0& _a0) :
125 a0(_a0) {}
126 template <typename Packer>
127 void msgpack_pack(Packer& pk) const
128 {
129 pk.pack_array(1);
130
131 pk.pack(a0);
132 }
133 void msgpack_unpack(clmdep_msgpack::object const& o)
134 {
135 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
136 const size_t size = o.via.array.size;
137 if(size > 0) {
138 clmdep_msgpack::object *ptr = o.via.array.ptr;
139 switch(size) {
140 default:
141 case 1: ptr[0].convert(a0);
142 }
143 }
144 }
145 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
146 {
147 o->type = clmdep_msgpack::type::ARRAY;
148 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*1));
149 o->via.array.size = 1;
150
151 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
152 }
153
154 A0& a0;
155 };
156
157 template <typename A0, typename A1>
158 struct define_array<A0, A1> {
159 typedef define_array<A0, A1> value_type;
160 typedef tuple<A0, A1> tuple_type;
161 define_array(A0& _a0, A1& _a1) :
162 a0(_a0), a1(_a1) {}
163 template <typename Packer>
164 void msgpack_pack(Packer& pk) const
165 {
166 pk.pack_array(2);
167
168 pk.pack(a0);
169 pk.pack(a1);
170 }
171 void msgpack_unpack(clmdep_msgpack::object const& o)
172 {
173 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
174 const size_t size = o.via.array.size;
175 if(size > 0) {
176 clmdep_msgpack::object *ptr = o.via.array.ptr;
177 switch(size) {
178 default:
179 case 2: ptr[1].convert(a1);
180 case 1: ptr[0].convert(a0);
181 }
182 }
183 }
184 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
185 {
186 o->type = clmdep_msgpack::type::ARRAY;
187 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*2));
188 o->via.array.size = 2;
189
190 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
191 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
192 }
193
194 A0& a0;
195 A1& a1;
196 };
197
198 template <typename A0, typename A1, typename A2>
199 struct define_array<A0, A1, A2> {
200 typedef define_array<A0, A1, A2> value_type;
201 typedef tuple<A0, A1, A2> tuple_type;
202 define_array(A0& _a0, A1& _a1, A2& _a2) :
203 a0(_a0), a1(_a1), a2(_a2) {}
204 template <typename Packer>
205 void msgpack_pack(Packer& pk) const
206 {
207 pk.pack_array(3);
208
209 pk.pack(a0);
210 pk.pack(a1);
211 pk.pack(a2);
212 }
213 void msgpack_unpack(clmdep_msgpack::object const& o)
214 {
215 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
216 const size_t size = o.via.array.size;
217 if(size > 0) {
218 clmdep_msgpack::object *ptr = o.via.array.ptr;
219 switch(size) {
220 default:
221 case 3: ptr[2].convert(a2);
222 case 2: ptr[1].convert(a1);
223 case 1: ptr[0].convert(a0);
224 }
225 }
226 }
227 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
228 {
229 o->type = clmdep_msgpack::type::ARRAY;
230 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*3));
231 o->via.array.size = 3;
232
233 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
234 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
235 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
236 }
237
238 A0& a0;
239 A1& a1;
240 A2& a2;
241 };
242
243 template <typename A0, typename A1, typename A2, typename A3>
244 struct define_array<A0, A1, A2, A3> {
245 typedef define_array<A0, A1, A2, A3> value_type;
246 typedef tuple<A0, A1, A2, A3> tuple_type;
247 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3) :
248 a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
249 template <typename Packer>
250 void msgpack_pack(Packer& pk) const
251 {
252 pk.pack_array(4);
253
254 pk.pack(a0);
255 pk.pack(a1);
256 pk.pack(a2);
257 pk.pack(a3);
258 }
259 void msgpack_unpack(clmdep_msgpack::object const& o)
260 {
261 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
262 const size_t size = o.via.array.size;
263 if(size > 0) {
264 clmdep_msgpack::object *ptr = o.via.array.ptr;
265 switch(size) {
266 default:
267 case 4: ptr[3].convert(a3);
268 case 3: ptr[2].convert(a2);
269 case 2: ptr[1].convert(a1);
270 case 1: ptr[0].convert(a0);
271 }
272 }
273 }
274 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
275 {
276 o->type = clmdep_msgpack::type::ARRAY;
277 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*4));
278 o->via.array.size = 4;
279
280 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
281 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
282 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
283 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
284 }
285
286 A0& a0;
287 A1& a1;
288 A2& a2;
289 A3& a3;
290 };
291
292 template <typename A0, typename A1, typename A2, typename A3, typename A4>
293 struct define_array<A0, A1, A2, A3, A4> {
294 typedef define_array<A0, A1, A2, A3, A4> value_type;
295 typedef tuple<A0, A1, A2, A3, A4> tuple_type;
296 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4) :
297 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {}
298 template <typename Packer>
299 void msgpack_pack(Packer& pk) const
300 {
301 pk.pack_array(5);
302
303 pk.pack(a0);
304 pk.pack(a1);
305 pk.pack(a2);
306 pk.pack(a3);
307 pk.pack(a4);
308 }
309 void msgpack_unpack(clmdep_msgpack::object const& o)
310 {
311 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
312 const size_t size = o.via.array.size;
313 if(size > 0) {
314 clmdep_msgpack::object *ptr = o.via.array.ptr;
315 switch(size) {
316 default:
317 case 5: ptr[4].convert(a4);
318 case 4: ptr[3].convert(a3);
319 case 3: ptr[2].convert(a2);
320 case 2: ptr[1].convert(a1);
321 case 1: ptr[0].convert(a0);
322 }
323 }
324 }
325 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
326 {
327 o->type = clmdep_msgpack::type::ARRAY;
328 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*5));
329 o->via.array.size = 5;
330
331 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
332 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
333 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
334 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
335 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
336 }
337
338 A0& a0;
339 A1& a1;
340 A2& a2;
341 A3& a3;
342 A4& a4;
343 };
344
345 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
346 struct define_array<A0, A1, A2, A3, A4, A5> {
347 typedef define_array<A0, A1, A2, A3, A4, A5> value_type;
348 typedef tuple<A0, A1, A2, A3, A4, A5> tuple_type;
349 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5) :
350 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
351 template <typename Packer>
352 void msgpack_pack(Packer& pk) const
353 {
354 pk.pack_array(6);
355
356 pk.pack(a0);
357 pk.pack(a1);
358 pk.pack(a2);
359 pk.pack(a3);
360 pk.pack(a4);
361 pk.pack(a5);
362 }
363 void msgpack_unpack(clmdep_msgpack::object const& o)
364 {
365 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
366 const size_t size = o.via.array.size;
367 if(size > 0) {
368 clmdep_msgpack::object *ptr = o.via.array.ptr;
369 switch(size) {
370 default:
371 case 6: ptr[5].convert(a5);
372 case 5: ptr[4].convert(a4);
373 case 4: ptr[3].convert(a3);
374 case 3: ptr[2].convert(a2);
375 case 2: ptr[1].convert(a1);
376 case 1: ptr[0].convert(a0);
377 }
378 }
379 }
380 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
381 {
382 o->type = clmdep_msgpack::type::ARRAY;
383 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*6));
384 o->via.array.size = 6;
385
386 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
387 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
388 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
389 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
390 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
391 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
392 }
393
394 A0& a0;
395 A1& a1;
396 A2& a2;
397 A3& a3;
398 A4& a4;
399 A5& a5;
400 };
401
402 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
403 struct define_array<A0, A1, A2, A3, A4, A5, A6> {
404 typedef define_array<A0, A1, A2, A3, A4, A5, A6> value_type;
405 typedef tuple<A0, A1, A2, A3, A4, A5, A6> tuple_type;
406 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6) :
407 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {}
408 template <typename Packer>
409 void msgpack_pack(Packer& pk) const
410 {
411 pk.pack_array(7);
412
413 pk.pack(a0);
414 pk.pack(a1);
415 pk.pack(a2);
416 pk.pack(a3);
417 pk.pack(a4);
418 pk.pack(a5);
419 pk.pack(a6);
420 }
421 void msgpack_unpack(clmdep_msgpack::object const& o)
422 {
423 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
424 const size_t size = o.via.array.size;
425 if(size > 0) {
426 clmdep_msgpack::object *ptr = o.via.array.ptr;
427 switch(size) {
428 default:
429 case 7: ptr[6].convert(a6);
430 case 6: ptr[5].convert(a5);
431 case 5: ptr[4].convert(a4);
432 case 4: ptr[3].convert(a3);
433 case 3: ptr[2].convert(a2);
434 case 2: ptr[1].convert(a1);
435 case 1: ptr[0].convert(a0);
436 }
437 }
438 }
439 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
440 {
441 o->type = clmdep_msgpack::type::ARRAY;
442 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*7));
443 o->via.array.size = 7;
444
445 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
446 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
447 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
448 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
449 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
450 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
451 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
452 }
453
454 A0& a0;
455 A1& a1;
456 A2& a2;
457 A3& a3;
458 A4& a4;
459 A5& a5;
460 A6& a6;
461 };
462
463 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
464 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7> {
465 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7> value_type;
466 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7> tuple_type;
467 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7) :
468 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
469 template <typename Packer>
470 void msgpack_pack(Packer& pk) const
471 {
472 pk.pack_array(8);
473
474 pk.pack(a0);
475 pk.pack(a1);
476 pk.pack(a2);
477 pk.pack(a3);
478 pk.pack(a4);
479 pk.pack(a5);
480 pk.pack(a6);
481 pk.pack(a7);
482 }
483 void msgpack_unpack(clmdep_msgpack::object const& o)
484 {
485 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
486 const size_t size = o.via.array.size;
487 if(size > 0) {
488 clmdep_msgpack::object *ptr = o.via.array.ptr;
489 switch(size) {
490 default:
491 case 8: ptr[7].convert(a7);
492 case 7: ptr[6].convert(a6);
493 case 6: ptr[5].convert(a5);
494 case 5: ptr[4].convert(a4);
495 case 4: ptr[3].convert(a3);
496 case 3: ptr[2].convert(a2);
497 case 2: ptr[1].convert(a1);
498 case 1: ptr[0].convert(a0);
499 }
500 }
501 }
502 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
503 {
504 o->type = clmdep_msgpack::type::ARRAY;
505 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*8));
506 o->via.array.size = 8;
507
508 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
509 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
510 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
511 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
512 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
513 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
514 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
515 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
516 }
517
518 A0& a0;
519 A1& a1;
520 A2& a2;
521 A3& a3;
522 A4& a4;
523 A5& a5;
524 A6& a6;
525 A7& a7;
526 };
527
528 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
529 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
530 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> value_type;
531 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> tuple_type;
532 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8) :
533 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {}
534 template <typename Packer>
535 void msgpack_pack(Packer& pk) const
536 {
537 pk.pack_array(9);
538
539 pk.pack(a0);
540 pk.pack(a1);
541 pk.pack(a2);
542 pk.pack(a3);
543 pk.pack(a4);
544 pk.pack(a5);
545 pk.pack(a6);
546 pk.pack(a7);
547 pk.pack(a8);
548 }
549 void msgpack_unpack(clmdep_msgpack::object const& o)
550 {
551 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
552 const size_t size = o.via.array.size;
553 if(size > 0) {
554 clmdep_msgpack::object *ptr = o.via.array.ptr;
555 switch(size) {
556 default:
557 case 9: ptr[8].convert(a8);
558 case 8: ptr[7].convert(a7);
559 case 7: ptr[6].convert(a6);
560 case 6: ptr[5].convert(a5);
561 case 5: ptr[4].convert(a4);
562 case 4: ptr[3].convert(a3);
563 case 3: ptr[2].convert(a2);
564 case 2: ptr[1].convert(a1);
565 case 1: ptr[0].convert(a0);
566 }
567 }
568 }
569 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
570 {
571 o->type = clmdep_msgpack::type::ARRAY;
572 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*9));
573 o->via.array.size = 9;
574
575 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
576 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
577 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
578 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
579 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
580 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
581 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
582 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
583 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
584 }
585
586 A0& a0;
587 A1& a1;
588 A2& a2;
589 A3& a3;
590 A4& a4;
591 A5& a5;
592 A6& a6;
593 A7& a7;
594 A8& a8;
595 };
596
597 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
598 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
599 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> value_type;
600 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> tuple_type;
601 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9) :
602 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
603 template <typename Packer>
604 void msgpack_pack(Packer& pk) const
605 {
606 pk.pack_array(10);
607
608 pk.pack(a0);
609 pk.pack(a1);
610 pk.pack(a2);
611 pk.pack(a3);
612 pk.pack(a4);
613 pk.pack(a5);
614 pk.pack(a6);
615 pk.pack(a7);
616 pk.pack(a8);
617 pk.pack(a9);
618 }
619 void msgpack_unpack(clmdep_msgpack::object const& o)
620 {
621 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
622 const size_t size = o.via.array.size;
623 if(size > 0) {
624 clmdep_msgpack::object *ptr = o.via.array.ptr;
625 switch(size) {
626 default:
627 case 10: ptr[9].convert(a9);
628 case 9: ptr[8].convert(a8);
629 case 8: ptr[7].convert(a7);
630 case 7: ptr[6].convert(a6);
631 case 6: ptr[5].convert(a5);
632 case 5: ptr[4].convert(a4);
633 case 4: ptr[3].convert(a3);
634 case 3: ptr[2].convert(a2);
635 case 2: ptr[1].convert(a1);
636 case 1: ptr[0].convert(a0);
637 }
638 }
639 }
640 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
641 {
642 o->type = clmdep_msgpack::type::ARRAY;
643 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*10));
644 o->via.array.size = 10;
645
646 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
647 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
648 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
649 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
650 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
651 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
652 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
653 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
654 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
655 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
656 }
657
658 A0& a0;
659 A1& a1;
660 A2& a2;
661 A3& a3;
662 A4& a4;
663 A5& a5;
664 A6& a6;
665 A7& a7;
666 A8& a8;
667 A9& a9;
668 };
669
670 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
671 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
672 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> value_type;
673 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> tuple_type;
674 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10) :
675 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {}
676 template <typename Packer>
677 void msgpack_pack(Packer& pk) const
678 {
679 pk.pack_array(11);
680
681 pk.pack(a0);
682 pk.pack(a1);
683 pk.pack(a2);
684 pk.pack(a3);
685 pk.pack(a4);
686 pk.pack(a5);
687 pk.pack(a6);
688 pk.pack(a7);
689 pk.pack(a8);
690 pk.pack(a9);
691 pk.pack(a10);
692 }
693 void msgpack_unpack(clmdep_msgpack::object const& o)
694 {
695 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
696 const size_t size = o.via.array.size;
697 if(size > 0) {
698 clmdep_msgpack::object *ptr = o.via.array.ptr;
699 switch(size) {
700 default:
701 case 11: ptr[10].convert(a10);
702 case 10: ptr[9].convert(a9);
703 case 9: ptr[8].convert(a8);
704 case 8: ptr[7].convert(a7);
705 case 7: ptr[6].convert(a6);
706 case 6: ptr[5].convert(a5);
707 case 5: ptr[4].convert(a4);
708 case 4: ptr[3].convert(a3);
709 case 3: ptr[2].convert(a2);
710 case 2: ptr[1].convert(a1);
711 case 1: ptr[0].convert(a0);
712 }
713 }
714 }
715 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
716 {
717 o->type = clmdep_msgpack::type::ARRAY;
718 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*11));
719 o->via.array.size = 11;
720
721 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
722 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
723 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
724 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
725 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
726 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
727 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
728 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
729 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
730 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
731 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
732 }
733
734 A0& a0;
735 A1& a1;
736 A2& a2;
737 A3& a3;
738 A4& a4;
739 A5& a5;
740 A6& a6;
741 A7& a7;
742 A8& a8;
743 A9& a9;
744 A10& a10;
745 };
746
747 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
748 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
749 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> value_type;
750 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> tuple_type;
751 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11) :
752 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
753 template <typename Packer>
754 void msgpack_pack(Packer& pk) const
755 {
756 pk.pack_array(12);
757
758 pk.pack(a0);
759 pk.pack(a1);
760 pk.pack(a2);
761 pk.pack(a3);
762 pk.pack(a4);
763 pk.pack(a5);
764 pk.pack(a6);
765 pk.pack(a7);
766 pk.pack(a8);
767 pk.pack(a9);
768 pk.pack(a10);
769 pk.pack(a11);
770 }
771 void msgpack_unpack(clmdep_msgpack::object const& o)
772 {
773 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
774 const size_t size = o.via.array.size;
775 if(size > 0) {
776 clmdep_msgpack::object *ptr = o.via.array.ptr;
777 switch(size) {
778 default:
779 case 12: ptr[11].convert(a11);
780 case 11: ptr[10].convert(a10);
781 case 10: ptr[9].convert(a9);
782 case 9: ptr[8].convert(a8);
783 case 8: ptr[7].convert(a7);
784 case 7: ptr[6].convert(a6);
785 case 6: ptr[5].convert(a5);
786 case 5: ptr[4].convert(a4);
787 case 4: ptr[3].convert(a3);
788 case 3: ptr[2].convert(a2);
789 case 2: ptr[1].convert(a1);
790 case 1: ptr[0].convert(a0);
791 }
792 }
793 }
794 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
795 {
796 o->type = clmdep_msgpack::type::ARRAY;
797 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*12));
798 o->via.array.size = 12;
799
800 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
801 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
802 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
803 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
804 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
805 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
806 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
807 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
808 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
809 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
810 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
811 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
812 }
813
814 A0& a0;
815 A1& a1;
816 A2& a2;
817 A3& a3;
818 A4& a4;
819 A5& a5;
820 A6& a6;
821 A7& a7;
822 A8& a8;
823 A9& a9;
824 A10& a10;
825 A11& a11;
826 };
827
828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
829 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
830 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> value_type;
831 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> tuple_type;
832 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12) :
833 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12) {}
834 template <typename Packer>
835 void msgpack_pack(Packer& pk) const
836 {
837 pk.pack_array(13);
838
839 pk.pack(a0);
840 pk.pack(a1);
841 pk.pack(a2);
842 pk.pack(a3);
843 pk.pack(a4);
844 pk.pack(a5);
845 pk.pack(a6);
846 pk.pack(a7);
847 pk.pack(a8);
848 pk.pack(a9);
849 pk.pack(a10);
850 pk.pack(a11);
851 pk.pack(a12);
852 }
853 void msgpack_unpack(clmdep_msgpack::object const& o)
854 {
855 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
856 const size_t size = o.via.array.size;
857 if(size > 0) {
858 clmdep_msgpack::object *ptr = o.via.array.ptr;
859 switch(size) {
860 default:
861 case 13: ptr[12].convert(a12);
862 case 12: ptr[11].convert(a11);
863 case 11: ptr[10].convert(a10);
864 case 10: ptr[9].convert(a9);
865 case 9: ptr[8].convert(a8);
866 case 8: ptr[7].convert(a7);
867 case 7: ptr[6].convert(a6);
868 case 6: ptr[5].convert(a5);
869 case 5: ptr[4].convert(a4);
870 case 4: ptr[3].convert(a3);
871 case 3: ptr[2].convert(a2);
872 case 2: ptr[1].convert(a1);
873 case 1: ptr[0].convert(a0);
874 }
875 }
876 }
877 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
878 {
879 o->type = clmdep_msgpack::type::ARRAY;
880 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*13));
881 o->via.array.size = 13;
882
883 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
884 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
885 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
886 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
887 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
888 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
889 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
890 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
891 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
892 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
893 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
894 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
895 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
896 }
897
898 A0& a0;
899 A1& a1;
900 A2& a2;
901 A3& a3;
902 A4& a4;
903 A5& a5;
904 A6& a6;
905 A7& a7;
906 A8& a8;
907 A9& a9;
908 A10& a10;
909 A11& a11;
910 A12& a12;
911 };
912
913 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
914 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
915 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> value_type;
916 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> tuple_type;
917 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13) :
918 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13) {}
919 template <typename Packer>
920 void msgpack_pack(Packer& pk) const
921 {
922 pk.pack_array(14);
923
924 pk.pack(a0);
925 pk.pack(a1);
926 pk.pack(a2);
927 pk.pack(a3);
928 pk.pack(a4);
929 pk.pack(a5);
930 pk.pack(a6);
931 pk.pack(a7);
932 pk.pack(a8);
933 pk.pack(a9);
934 pk.pack(a10);
935 pk.pack(a11);
936 pk.pack(a12);
937 pk.pack(a13);
938 }
939 void msgpack_unpack(clmdep_msgpack::object const& o)
940 {
941 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
942 const size_t size = o.via.array.size;
943 if(size > 0) {
944 clmdep_msgpack::object *ptr = o.via.array.ptr;
945 switch(size) {
946 default:
947 case 14: ptr[13].convert(a13);
948 case 13: ptr[12].convert(a12);
949 case 12: ptr[11].convert(a11);
950 case 11: ptr[10].convert(a10);
951 case 10: ptr[9].convert(a9);
952 case 9: ptr[8].convert(a8);
953 case 8: ptr[7].convert(a7);
954 case 7: ptr[6].convert(a6);
955 case 6: ptr[5].convert(a5);
956 case 5: ptr[4].convert(a4);
957 case 4: ptr[3].convert(a3);
958 case 3: ptr[2].convert(a2);
959 case 2: ptr[1].convert(a1);
960 case 1: ptr[0].convert(a0);
961 }
962 }
963 }
964 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
965 {
966 o->type = clmdep_msgpack::type::ARRAY;
967 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*14));
968 o->via.array.size = 14;
969
970 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
971 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
972 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
973 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
974 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
975 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
976 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
977 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
978 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
979 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
980 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
981 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
982 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
983 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
984 }
985
986 A0& a0;
987 A1& a1;
988 A2& a2;
989 A3& a3;
990 A4& a4;
991 A5& a5;
992 A6& a6;
993 A7& a7;
994 A8& a8;
995 A9& a9;
996 A10& a10;
997 A11& a11;
998 A12& a12;
999 A13& a13;
1000 };
1001
1002 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1003 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> {
1004 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> value_type;
1005 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> tuple_type;
1006 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14) :
1007 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14) {}
1008 template <typename Packer>
1009 void msgpack_pack(Packer& pk) const
1010 {
1011 pk.pack_array(15);
1012
1013 pk.pack(a0);
1014 pk.pack(a1);
1015 pk.pack(a2);
1016 pk.pack(a3);
1017 pk.pack(a4);
1018 pk.pack(a5);
1019 pk.pack(a6);
1020 pk.pack(a7);
1021 pk.pack(a8);
1022 pk.pack(a9);
1023 pk.pack(a10);
1024 pk.pack(a11);
1025 pk.pack(a12);
1026 pk.pack(a13);
1027 pk.pack(a14);
1028 }
1029 void msgpack_unpack(clmdep_msgpack::object const& o)
1030 {
1031 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1032 const size_t size = o.via.array.size;
1033 if(size > 0) {
1034 clmdep_msgpack::object *ptr = o.via.array.ptr;
1035 switch(size) {
1036 default:
1037 case 15: ptr[14].convert(a14);
1038 case 14: ptr[13].convert(a13);
1039 case 13: ptr[12].convert(a12);
1040 case 12: ptr[11].convert(a11);
1041 case 11: ptr[10].convert(a10);
1042 case 10: ptr[9].convert(a9);
1043 case 9: ptr[8].convert(a8);
1044 case 8: ptr[7].convert(a7);
1045 case 7: ptr[6].convert(a6);
1046 case 6: ptr[5].convert(a5);
1047 case 5: ptr[4].convert(a4);
1048 case 4: ptr[3].convert(a3);
1049 case 3: ptr[2].convert(a2);
1050 case 2: ptr[1].convert(a1);
1051 case 1: ptr[0].convert(a0);
1052 }
1053 }
1054 }
1055 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1056 {
1057 o->type = clmdep_msgpack::type::ARRAY;
1058 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*15));
1059 o->via.array.size = 15;
1060
1061 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1062 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1063 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1064 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1065 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1066 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1067 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1068 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1069 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1070 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1071 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1072 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1073 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1074 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1075 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1076 }
1077
1078 A0& a0;
1079 A1& a1;
1080 A2& a2;
1081 A3& a3;
1082 A4& a4;
1083 A5& a5;
1084 A6& a6;
1085 A7& a7;
1086 A8& a8;
1087 A9& a9;
1088 A10& a10;
1089 A11& a11;
1090 A12& a12;
1091 A13& a13;
1092 A14& a14;
1093 };
1094
1095 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1096 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
1097 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> value_type;
1098 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> tuple_type;
1099 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15) :
1100 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15) {}
1101 template <typename Packer>
1102 void msgpack_pack(Packer& pk) const
1103 {
1104 pk.pack_array(16);
1105
1106 pk.pack(a0);
1107 pk.pack(a1);
1108 pk.pack(a2);
1109 pk.pack(a3);
1110 pk.pack(a4);
1111 pk.pack(a5);
1112 pk.pack(a6);
1113 pk.pack(a7);
1114 pk.pack(a8);
1115 pk.pack(a9);
1116 pk.pack(a10);
1117 pk.pack(a11);
1118 pk.pack(a12);
1119 pk.pack(a13);
1120 pk.pack(a14);
1121 pk.pack(a15);
1122 }
1123 void msgpack_unpack(clmdep_msgpack::object const& o)
1124 {
1125 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1126 const size_t size = o.via.array.size;
1127 if(size > 0) {
1128 clmdep_msgpack::object *ptr = o.via.array.ptr;
1129 switch(size) {
1130 default:
1131 case 16: ptr[15].convert(a15);
1132 case 15: ptr[14].convert(a14);
1133 case 14: ptr[13].convert(a13);
1134 case 13: ptr[12].convert(a12);
1135 case 12: ptr[11].convert(a11);
1136 case 11: ptr[10].convert(a10);
1137 case 10: ptr[9].convert(a9);
1138 case 9: ptr[8].convert(a8);
1139 case 8: ptr[7].convert(a7);
1140 case 7: ptr[6].convert(a6);
1141 case 6: ptr[5].convert(a5);
1142 case 5: ptr[4].convert(a4);
1143 case 4: ptr[3].convert(a3);
1144 case 3: ptr[2].convert(a2);
1145 case 2: ptr[1].convert(a1);
1146 case 1: ptr[0].convert(a0);
1147 }
1148 }
1149 }
1150 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1151 {
1152 o->type = clmdep_msgpack::type::ARRAY;
1153 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*16));
1154 o->via.array.size = 16;
1155
1156 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1157 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1158 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1159 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1160 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1161 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1162 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1163 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1164 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1165 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1166 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1167 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1168 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1169 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1170 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1171 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1172 }
1173
1174 A0& a0;
1175 A1& a1;
1176 A2& a2;
1177 A3& a3;
1178 A4& a4;
1179 A5& a5;
1180 A6& a6;
1181 A7& a7;
1182 A8& a8;
1183 A9& a9;
1184 A10& a10;
1185 A11& a11;
1186 A12& a12;
1187 A13& a13;
1188 A14& a14;
1189 A15& a15;
1190 };
1191
1192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1193 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> {
1194 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> value_type;
1195 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> tuple_type;
1196 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16) :
1197 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16) {}
1198 template <typename Packer>
1199 void msgpack_pack(Packer& pk) const
1200 {
1201 pk.pack_array(17);
1202
1203 pk.pack(a0);
1204 pk.pack(a1);
1205 pk.pack(a2);
1206 pk.pack(a3);
1207 pk.pack(a4);
1208 pk.pack(a5);
1209 pk.pack(a6);
1210 pk.pack(a7);
1211 pk.pack(a8);
1212 pk.pack(a9);
1213 pk.pack(a10);
1214 pk.pack(a11);
1215 pk.pack(a12);
1216 pk.pack(a13);
1217 pk.pack(a14);
1218 pk.pack(a15);
1219 pk.pack(a16);
1220 }
1221 void msgpack_unpack(clmdep_msgpack::object const& o)
1222 {
1223 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1224 const size_t size = o.via.array.size;
1225 if(size > 0) {
1226 clmdep_msgpack::object *ptr = o.via.array.ptr;
1227 switch(size) {
1228 default:
1229 case 17: ptr[16].convert(a16);
1230 case 16: ptr[15].convert(a15);
1231 case 15: ptr[14].convert(a14);
1232 case 14: ptr[13].convert(a13);
1233 case 13: ptr[12].convert(a12);
1234 case 12: ptr[11].convert(a11);
1235 case 11: ptr[10].convert(a10);
1236 case 10: ptr[9].convert(a9);
1237 case 9: ptr[8].convert(a8);
1238 case 8: ptr[7].convert(a7);
1239 case 7: ptr[6].convert(a6);
1240 case 6: ptr[5].convert(a5);
1241 case 5: ptr[4].convert(a4);
1242 case 4: ptr[3].convert(a3);
1243 case 3: ptr[2].convert(a2);
1244 case 2: ptr[1].convert(a1);
1245 case 1: ptr[0].convert(a0);
1246 }
1247 }
1248 }
1249 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1250 {
1251 o->type = clmdep_msgpack::type::ARRAY;
1252 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*17));
1253 o->via.array.size = 17;
1254
1255 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1256 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1257 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1258 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1259 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1260 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1261 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1262 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1263 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1264 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1265 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1266 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1267 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1268 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1269 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1270 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1271 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1272 }
1273
1274 A0& a0;
1275 A1& a1;
1276 A2& a2;
1277 A3& a3;
1278 A4& a4;
1279 A5& a5;
1280 A6& a6;
1281 A7& a7;
1282 A8& a8;
1283 A9& a9;
1284 A10& a10;
1285 A11& a11;
1286 A12& a12;
1287 A13& a13;
1288 A14& a14;
1289 A15& a15;
1290 A16& a16;
1291 };
1292
1293 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1294 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
1295 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> value_type;
1296 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> tuple_type;
1297 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17) :
1298 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17) {}
1299 template <typename Packer>
1300 void msgpack_pack(Packer& pk) const
1301 {
1302 pk.pack_array(18);
1303
1304 pk.pack(a0);
1305 pk.pack(a1);
1306 pk.pack(a2);
1307 pk.pack(a3);
1308 pk.pack(a4);
1309 pk.pack(a5);
1310 pk.pack(a6);
1311 pk.pack(a7);
1312 pk.pack(a8);
1313 pk.pack(a9);
1314 pk.pack(a10);
1315 pk.pack(a11);
1316 pk.pack(a12);
1317 pk.pack(a13);
1318 pk.pack(a14);
1319 pk.pack(a15);
1320 pk.pack(a16);
1321 pk.pack(a17);
1322 }
1323 void msgpack_unpack(clmdep_msgpack::object const& o)
1324 {
1325 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1326 const size_t size = o.via.array.size;
1327 if(size > 0) {
1328 clmdep_msgpack::object *ptr = o.via.array.ptr;
1329 switch(size) {
1330 default:
1331 case 18: ptr[17].convert(a17);
1332 case 17: ptr[16].convert(a16);
1333 case 16: ptr[15].convert(a15);
1334 case 15: ptr[14].convert(a14);
1335 case 14: ptr[13].convert(a13);
1336 case 13: ptr[12].convert(a12);
1337 case 12: ptr[11].convert(a11);
1338 case 11: ptr[10].convert(a10);
1339 case 10: ptr[9].convert(a9);
1340 case 9: ptr[8].convert(a8);
1341 case 8: ptr[7].convert(a7);
1342 case 7: ptr[6].convert(a6);
1343 case 6: ptr[5].convert(a5);
1344 case 5: ptr[4].convert(a4);
1345 case 4: ptr[3].convert(a3);
1346 case 3: ptr[2].convert(a2);
1347 case 2: ptr[1].convert(a1);
1348 case 1: ptr[0].convert(a0);
1349 }
1350 }
1351 }
1352 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1353 {
1354 o->type = clmdep_msgpack::type::ARRAY;
1355 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*18));
1356 o->via.array.size = 18;
1357
1358 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1359 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1360 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1361 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1362 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1363 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1364 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1365 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1366 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1367 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1368 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1369 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1370 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1371 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1372 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1373 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1374 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1375 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
1376 }
1377
1378 A0& a0;
1379 A1& a1;
1380 A2& a2;
1381 A3& a3;
1382 A4& a4;
1383 A5& a5;
1384 A6& a6;
1385 A7& a7;
1386 A8& a8;
1387 A9& a9;
1388 A10& a10;
1389 A11& a11;
1390 A12& a12;
1391 A13& a13;
1392 A14& a14;
1393 A15& a15;
1394 A16& a16;
1395 A17& a17;
1396 };
1397
1398 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1399 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> {
1400 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> value_type;
1401 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> tuple_type;
1402 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18) :
1403 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18) {}
1404 template <typename Packer>
1405 void msgpack_pack(Packer& pk) const
1406 {
1407 pk.pack_array(19);
1408
1409 pk.pack(a0);
1410 pk.pack(a1);
1411 pk.pack(a2);
1412 pk.pack(a3);
1413 pk.pack(a4);
1414 pk.pack(a5);
1415 pk.pack(a6);
1416 pk.pack(a7);
1417 pk.pack(a8);
1418 pk.pack(a9);
1419 pk.pack(a10);
1420 pk.pack(a11);
1421 pk.pack(a12);
1422 pk.pack(a13);
1423 pk.pack(a14);
1424 pk.pack(a15);
1425 pk.pack(a16);
1426 pk.pack(a17);
1427 pk.pack(a18);
1428 }
1429 void msgpack_unpack(clmdep_msgpack::object const& o)
1430 {
1431 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1432 const size_t size = o.via.array.size;
1433 if(size > 0) {
1434 clmdep_msgpack::object *ptr = o.via.array.ptr;
1435 switch(size) {
1436 default:
1437 case 19: ptr[18].convert(a18);
1438 case 18: ptr[17].convert(a17);
1439 case 17: ptr[16].convert(a16);
1440 case 16: ptr[15].convert(a15);
1441 case 15: ptr[14].convert(a14);
1442 case 14: ptr[13].convert(a13);
1443 case 13: ptr[12].convert(a12);
1444 case 12: ptr[11].convert(a11);
1445 case 11: ptr[10].convert(a10);
1446 case 10: ptr[9].convert(a9);
1447 case 9: ptr[8].convert(a8);
1448 case 8: ptr[7].convert(a7);
1449 case 7: ptr[6].convert(a6);
1450 case 6: ptr[5].convert(a5);
1451 case 5: ptr[4].convert(a4);
1452 case 4: ptr[3].convert(a3);
1453 case 3: ptr[2].convert(a2);
1454 case 2: ptr[1].convert(a1);
1455 case 1: ptr[0].convert(a0);
1456 }
1457 }
1458 }
1459 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1460 {
1461 o->type = clmdep_msgpack::type::ARRAY;
1462 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*19));
1463 o->via.array.size = 19;
1464
1465 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1466 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1467 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1468 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1469 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1470 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1471 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1472 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1473 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1474 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1475 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1476 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1477 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1478 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1479 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1480 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1481 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1482 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
1483 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
1484 }
1485
1486 A0& a0;
1487 A1& a1;
1488 A2& a2;
1489 A3& a3;
1490 A4& a4;
1491 A5& a5;
1492 A6& a6;
1493 A7& a7;
1494 A8& a8;
1495 A9& a9;
1496 A10& a10;
1497 A11& a11;
1498 A12& a12;
1499 A13& a13;
1500 A14& a14;
1501 A15& a15;
1502 A16& a16;
1503 A17& a17;
1504 A18& a18;
1505 };
1506
1507 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1508 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
1509 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> value_type;
1510 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> tuple_type;
1511 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19) :
1512 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19) {}
1513 template <typename Packer>
1514 void msgpack_pack(Packer& pk) const
1515 {
1516 pk.pack_array(20);
1517
1518 pk.pack(a0);
1519 pk.pack(a1);
1520 pk.pack(a2);
1521 pk.pack(a3);
1522 pk.pack(a4);
1523 pk.pack(a5);
1524 pk.pack(a6);
1525 pk.pack(a7);
1526 pk.pack(a8);
1527 pk.pack(a9);
1528 pk.pack(a10);
1529 pk.pack(a11);
1530 pk.pack(a12);
1531 pk.pack(a13);
1532 pk.pack(a14);
1533 pk.pack(a15);
1534 pk.pack(a16);
1535 pk.pack(a17);
1536 pk.pack(a18);
1537 pk.pack(a19);
1538 }
1539 void msgpack_unpack(clmdep_msgpack::object const& o)
1540 {
1541 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1542 const size_t size = o.via.array.size;
1543 if(size > 0) {
1544 clmdep_msgpack::object *ptr = o.via.array.ptr;
1545 switch(size) {
1546 default:
1547 case 20: ptr[19].convert(a19);
1548 case 19: ptr[18].convert(a18);
1549 case 18: ptr[17].convert(a17);
1550 case 17: ptr[16].convert(a16);
1551 case 16: ptr[15].convert(a15);
1552 case 15: ptr[14].convert(a14);
1553 case 14: ptr[13].convert(a13);
1554 case 13: ptr[12].convert(a12);
1555 case 12: ptr[11].convert(a11);
1556 case 11: ptr[10].convert(a10);
1557 case 10: ptr[9].convert(a9);
1558 case 9: ptr[8].convert(a8);
1559 case 8: ptr[7].convert(a7);
1560 case 7: ptr[6].convert(a6);
1561 case 6: ptr[5].convert(a5);
1562 case 5: ptr[4].convert(a4);
1563 case 4: ptr[3].convert(a3);
1564 case 3: ptr[2].convert(a2);
1565 case 2: ptr[1].convert(a1);
1566 case 1: ptr[0].convert(a0);
1567 }
1568 }
1569 }
1570 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1571 {
1572 o->type = clmdep_msgpack::type::ARRAY;
1573 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*20));
1574 o->via.array.size = 20;
1575
1576 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1577 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1578 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1579 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1580 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1581 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1582 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1583 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1584 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1585 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1586 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1587 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1588 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1589 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1590 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1591 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1592 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1593 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
1594 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
1595 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
1596 }
1597
1598 A0& a0;
1599 A1& a1;
1600 A2& a2;
1601 A3& a3;
1602 A4& a4;
1603 A5& a5;
1604 A6& a6;
1605 A7& a7;
1606 A8& a8;
1607 A9& a9;
1608 A10& a10;
1609 A11& a11;
1610 A12& a12;
1611 A13& a13;
1612 A14& a14;
1613 A15& a15;
1614 A16& a16;
1615 A17& a17;
1616 A18& a18;
1617 A19& a19;
1618 };
1619
1620 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
1621 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> {
1622 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> value_type;
1623 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> tuple_type;
1624 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20) :
1625 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20) {}
1626 template <typename Packer>
1627 void msgpack_pack(Packer& pk) const
1628 {
1629 pk.pack_array(21);
1630
1631 pk.pack(a0);
1632 pk.pack(a1);
1633 pk.pack(a2);
1634 pk.pack(a3);
1635 pk.pack(a4);
1636 pk.pack(a5);
1637 pk.pack(a6);
1638 pk.pack(a7);
1639 pk.pack(a8);
1640 pk.pack(a9);
1641 pk.pack(a10);
1642 pk.pack(a11);
1643 pk.pack(a12);
1644 pk.pack(a13);
1645 pk.pack(a14);
1646 pk.pack(a15);
1647 pk.pack(a16);
1648 pk.pack(a17);
1649 pk.pack(a18);
1650 pk.pack(a19);
1651 pk.pack(a20);
1652 }
1653 void msgpack_unpack(clmdep_msgpack::object const& o)
1654 {
1655 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1656 const size_t size = o.via.array.size;
1657 if(size > 0) {
1658 clmdep_msgpack::object *ptr = o.via.array.ptr;
1659 switch(size) {
1660 default:
1661 case 21: ptr[20].convert(a20);
1662 case 20: ptr[19].convert(a19);
1663 case 19: ptr[18].convert(a18);
1664 case 18: ptr[17].convert(a17);
1665 case 17: ptr[16].convert(a16);
1666 case 16: ptr[15].convert(a15);
1667 case 15: ptr[14].convert(a14);
1668 case 14: ptr[13].convert(a13);
1669 case 13: ptr[12].convert(a12);
1670 case 12: ptr[11].convert(a11);
1671 case 11: ptr[10].convert(a10);
1672 case 10: ptr[9].convert(a9);
1673 case 9: ptr[8].convert(a8);
1674 case 8: ptr[7].convert(a7);
1675 case 7: ptr[6].convert(a6);
1676 case 6: ptr[5].convert(a5);
1677 case 5: ptr[4].convert(a4);
1678 case 4: ptr[3].convert(a3);
1679 case 3: ptr[2].convert(a2);
1680 case 2: ptr[1].convert(a1);
1681 case 1: ptr[0].convert(a0);
1682 }
1683 }
1684 }
1685 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1686 {
1687 o->type = clmdep_msgpack::type::ARRAY;
1688 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*21));
1689 o->via.array.size = 21;
1690
1691 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1692 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1693 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1694 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1695 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1696 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1697 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1698 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1699 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1700 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1701 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1702 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1703 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1704 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1705 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1706 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1707 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1708 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
1709 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
1710 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
1711 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
1712 }
1713
1714 A0& a0;
1715 A1& a1;
1716 A2& a2;
1717 A3& a3;
1718 A4& a4;
1719 A5& a5;
1720 A6& a6;
1721 A7& a7;
1722 A8& a8;
1723 A9& a9;
1724 A10& a10;
1725 A11& a11;
1726 A12& a12;
1727 A13& a13;
1728 A14& a14;
1729 A15& a15;
1730 A16& a16;
1731 A17& a17;
1732 A18& a18;
1733 A19& a19;
1734 A20& a20;
1735 };
1736
1737 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
1738 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
1739 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> value_type;
1740 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> tuple_type;
1741 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21) :
1742 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21) {}
1743 template <typename Packer>
1744 void msgpack_pack(Packer& pk) const
1745 {
1746 pk.pack_array(22);
1747
1748 pk.pack(a0);
1749 pk.pack(a1);
1750 pk.pack(a2);
1751 pk.pack(a3);
1752 pk.pack(a4);
1753 pk.pack(a5);
1754 pk.pack(a6);
1755 pk.pack(a7);
1756 pk.pack(a8);
1757 pk.pack(a9);
1758 pk.pack(a10);
1759 pk.pack(a11);
1760 pk.pack(a12);
1761 pk.pack(a13);
1762 pk.pack(a14);
1763 pk.pack(a15);
1764 pk.pack(a16);
1765 pk.pack(a17);
1766 pk.pack(a18);
1767 pk.pack(a19);
1768 pk.pack(a20);
1769 pk.pack(a21);
1770 }
1771 void msgpack_unpack(clmdep_msgpack::object const& o)
1772 {
1773 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1774 const size_t size = o.via.array.size;
1775 if(size > 0) {
1776 clmdep_msgpack::object *ptr = o.via.array.ptr;
1777 switch(size) {
1778 default:
1779 case 22: ptr[21].convert(a21);
1780 case 21: ptr[20].convert(a20);
1781 case 20: ptr[19].convert(a19);
1782 case 19: ptr[18].convert(a18);
1783 case 18: ptr[17].convert(a17);
1784 case 17: ptr[16].convert(a16);
1785 case 16: ptr[15].convert(a15);
1786 case 15: ptr[14].convert(a14);
1787 case 14: ptr[13].convert(a13);
1788 case 13: ptr[12].convert(a12);
1789 case 12: ptr[11].convert(a11);
1790 case 11: ptr[10].convert(a10);
1791 case 10: ptr[9].convert(a9);
1792 case 9: ptr[8].convert(a8);
1793 case 8: ptr[7].convert(a7);
1794 case 7: ptr[6].convert(a6);
1795 case 6: ptr[5].convert(a5);
1796 case 5: ptr[4].convert(a4);
1797 case 4: ptr[3].convert(a3);
1798 case 3: ptr[2].convert(a2);
1799 case 2: ptr[1].convert(a1);
1800 case 1: ptr[0].convert(a0);
1801 }
1802 }
1803 }
1804 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1805 {
1806 o->type = clmdep_msgpack::type::ARRAY;
1807 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*22));
1808 o->via.array.size = 22;
1809
1810 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1811 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1812 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1813 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1814 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1815 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1816 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1817 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1818 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1819 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1820 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1821 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1822 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1823 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1824 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1825 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1826 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1827 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
1828 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
1829 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
1830 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
1831 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
1832 }
1833
1834 A0& a0;
1835 A1& a1;
1836 A2& a2;
1837 A3& a3;
1838 A4& a4;
1839 A5& a5;
1840 A6& a6;
1841 A7& a7;
1842 A8& a8;
1843 A9& a9;
1844 A10& a10;
1845 A11& a11;
1846 A12& a12;
1847 A13& a13;
1848 A14& a14;
1849 A15& a15;
1850 A16& a16;
1851 A17& a17;
1852 A18& a18;
1853 A19& a19;
1854 A20& a20;
1855 A21& a21;
1856 };
1857
1858 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
1859 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> {
1860 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> value_type;
1861 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> tuple_type;
1862 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22) :
1863 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22) {}
1864 template <typename Packer>
1865 void msgpack_pack(Packer& pk) const
1866 {
1867 pk.pack_array(23);
1868
1869 pk.pack(a0);
1870 pk.pack(a1);
1871 pk.pack(a2);
1872 pk.pack(a3);
1873 pk.pack(a4);
1874 pk.pack(a5);
1875 pk.pack(a6);
1876 pk.pack(a7);
1877 pk.pack(a8);
1878 pk.pack(a9);
1879 pk.pack(a10);
1880 pk.pack(a11);
1881 pk.pack(a12);
1882 pk.pack(a13);
1883 pk.pack(a14);
1884 pk.pack(a15);
1885 pk.pack(a16);
1886 pk.pack(a17);
1887 pk.pack(a18);
1888 pk.pack(a19);
1889 pk.pack(a20);
1890 pk.pack(a21);
1891 pk.pack(a22);
1892 }
1893 void msgpack_unpack(clmdep_msgpack::object const& o)
1894 {
1895 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
1896 const size_t size = o.via.array.size;
1897 if(size > 0) {
1898 clmdep_msgpack::object *ptr = o.via.array.ptr;
1899 switch(size) {
1900 default:
1901 case 23: ptr[22].convert(a22);
1902 case 22: ptr[21].convert(a21);
1903 case 21: ptr[20].convert(a20);
1904 case 20: ptr[19].convert(a19);
1905 case 19: ptr[18].convert(a18);
1906 case 18: ptr[17].convert(a17);
1907 case 17: ptr[16].convert(a16);
1908 case 16: ptr[15].convert(a15);
1909 case 15: ptr[14].convert(a14);
1910 case 14: ptr[13].convert(a13);
1911 case 13: ptr[12].convert(a12);
1912 case 12: ptr[11].convert(a11);
1913 case 11: ptr[10].convert(a10);
1914 case 10: ptr[9].convert(a9);
1915 case 9: ptr[8].convert(a8);
1916 case 8: ptr[7].convert(a7);
1917 case 7: ptr[6].convert(a6);
1918 case 6: ptr[5].convert(a5);
1919 case 5: ptr[4].convert(a4);
1920 case 4: ptr[3].convert(a3);
1921 case 3: ptr[2].convert(a2);
1922 case 2: ptr[1].convert(a1);
1923 case 1: ptr[0].convert(a0);
1924 }
1925 }
1926 }
1927 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
1928 {
1929 o->type = clmdep_msgpack::type::ARRAY;
1930 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*23));
1931 o->via.array.size = 23;
1932
1933 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
1934 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
1935 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
1936 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
1937 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
1938 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
1939 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
1940 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
1941 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
1942 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
1943 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
1944 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
1945 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
1946 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
1947 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
1948 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
1949 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
1950 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
1951 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
1952 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
1953 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
1954 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
1955 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
1956 }
1957
1958 A0& a0;
1959 A1& a1;
1960 A2& a2;
1961 A3& a3;
1962 A4& a4;
1963 A5& a5;
1964 A6& a6;
1965 A7& a7;
1966 A8& a8;
1967 A9& a9;
1968 A10& a10;
1969 A11& a11;
1970 A12& a12;
1971 A13& a13;
1972 A14& a14;
1973 A15& a15;
1974 A16& a16;
1975 A17& a17;
1976 A18& a18;
1977 A19& a19;
1978 A20& a20;
1979 A21& a21;
1980 A22& a22;
1981 };
1982
1983 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
1984 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> {
1985 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> value_type;
1986 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> tuple_type;
1987 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23) :
1988 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23) {}
1989 template <typename Packer>
1990 void msgpack_pack(Packer& pk) const
1991 {
1992 pk.pack_array(24);
1993
1994 pk.pack(a0);
1995 pk.pack(a1);
1996 pk.pack(a2);
1997 pk.pack(a3);
1998 pk.pack(a4);
1999 pk.pack(a5);
2000 pk.pack(a6);
2001 pk.pack(a7);
2002 pk.pack(a8);
2003 pk.pack(a9);
2004 pk.pack(a10);
2005 pk.pack(a11);
2006 pk.pack(a12);
2007 pk.pack(a13);
2008 pk.pack(a14);
2009 pk.pack(a15);
2010 pk.pack(a16);
2011 pk.pack(a17);
2012 pk.pack(a18);
2013 pk.pack(a19);
2014 pk.pack(a20);
2015 pk.pack(a21);
2016 pk.pack(a22);
2017 pk.pack(a23);
2018 }
2019 void msgpack_unpack(clmdep_msgpack::object const& o)
2020 {
2021 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2022 const size_t size = o.via.array.size;
2023 if(size > 0) {
2024 clmdep_msgpack::object *ptr = o.via.array.ptr;
2025 switch(size) {
2026 default:
2027 case 24: ptr[23].convert(a23);
2028 case 23: ptr[22].convert(a22);
2029 case 22: ptr[21].convert(a21);
2030 case 21: ptr[20].convert(a20);
2031 case 20: ptr[19].convert(a19);
2032 case 19: ptr[18].convert(a18);
2033 case 18: ptr[17].convert(a17);
2034 case 17: ptr[16].convert(a16);
2035 case 16: ptr[15].convert(a15);
2036 case 15: ptr[14].convert(a14);
2037 case 14: ptr[13].convert(a13);
2038 case 13: ptr[12].convert(a12);
2039 case 12: ptr[11].convert(a11);
2040 case 11: ptr[10].convert(a10);
2041 case 10: ptr[9].convert(a9);
2042 case 9: ptr[8].convert(a8);
2043 case 8: ptr[7].convert(a7);
2044 case 7: ptr[6].convert(a6);
2045 case 6: ptr[5].convert(a5);
2046 case 5: ptr[4].convert(a4);
2047 case 4: ptr[3].convert(a3);
2048 case 3: ptr[2].convert(a2);
2049 case 2: ptr[1].convert(a1);
2050 case 1: ptr[0].convert(a0);
2051 }
2052 }
2053 }
2054 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2055 {
2056 o->type = clmdep_msgpack::type::ARRAY;
2057 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*24));
2058 o->via.array.size = 24;
2059
2060 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2061 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2062 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2063 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2064 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2065 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2066 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2067 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2068 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2069 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2070 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2071 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2072 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2073 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2074 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2075 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2076 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2077 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2078 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2079 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2080 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2081 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2082 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2083 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2084 }
2085
2086 A0& a0;
2087 A1& a1;
2088 A2& a2;
2089 A3& a3;
2090 A4& a4;
2091 A5& a5;
2092 A6& a6;
2093 A7& a7;
2094 A8& a8;
2095 A9& a9;
2096 A10& a10;
2097 A11& a11;
2098 A12& a12;
2099 A13& a13;
2100 A14& a14;
2101 A15& a15;
2102 A16& a16;
2103 A17& a17;
2104 A18& a18;
2105 A19& a19;
2106 A20& a20;
2107 A21& a21;
2108 A22& a22;
2109 A23& a23;
2110 };
2111
2112 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2113 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> {
2114 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> value_type;
2115 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> tuple_type;
2116 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24) :
2117 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24) {}
2118 template <typename Packer>
2119 void msgpack_pack(Packer& pk) const
2120 {
2121 pk.pack_array(25);
2122
2123 pk.pack(a0);
2124 pk.pack(a1);
2125 pk.pack(a2);
2126 pk.pack(a3);
2127 pk.pack(a4);
2128 pk.pack(a5);
2129 pk.pack(a6);
2130 pk.pack(a7);
2131 pk.pack(a8);
2132 pk.pack(a9);
2133 pk.pack(a10);
2134 pk.pack(a11);
2135 pk.pack(a12);
2136 pk.pack(a13);
2137 pk.pack(a14);
2138 pk.pack(a15);
2139 pk.pack(a16);
2140 pk.pack(a17);
2141 pk.pack(a18);
2142 pk.pack(a19);
2143 pk.pack(a20);
2144 pk.pack(a21);
2145 pk.pack(a22);
2146 pk.pack(a23);
2147 pk.pack(a24);
2148 }
2149 void msgpack_unpack(clmdep_msgpack::object const& o)
2150 {
2151 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2152 const size_t size = o.via.array.size;
2153 if(size > 0) {
2154 clmdep_msgpack::object *ptr = o.via.array.ptr;
2155 switch(size) {
2156 default:
2157 case 25: ptr[24].convert(a24);
2158 case 24: ptr[23].convert(a23);
2159 case 23: ptr[22].convert(a22);
2160 case 22: ptr[21].convert(a21);
2161 case 21: ptr[20].convert(a20);
2162 case 20: ptr[19].convert(a19);
2163 case 19: ptr[18].convert(a18);
2164 case 18: ptr[17].convert(a17);
2165 case 17: ptr[16].convert(a16);
2166 case 16: ptr[15].convert(a15);
2167 case 15: ptr[14].convert(a14);
2168 case 14: ptr[13].convert(a13);
2169 case 13: ptr[12].convert(a12);
2170 case 12: ptr[11].convert(a11);
2171 case 11: ptr[10].convert(a10);
2172 case 10: ptr[9].convert(a9);
2173 case 9: ptr[8].convert(a8);
2174 case 8: ptr[7].convert(a7);
2175 case 7: ptr[6].convert(a6);
2176 case 6: ptr[5].convert(a5);
2177 case 5: ptr[4].convert(a4);
2178 case 4: ptr[3].convert(a3);
2179 case 3: ptr[2].convert(a2);
2180 case 2: ptr[1].convert(a1);
2181 case 1: ptr[0].convert(a0);
2182 }
2183 }
2184 }
2185 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2186 {
2187 o->type = clmdep_msgpack::type::ARRAY;
2188 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*25));
2189 o->via.array.size = 25;
2190
2191 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2192 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2193 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2194 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2195 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2196 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2197 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2198 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2199 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2200 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2201 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2202 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2203 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2204 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2205 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2206 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2207 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2208 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2209 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2210 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2211 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2212 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2213 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2214 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2215 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
2216 }
2217
2218 A0& a0;
2219 A1& a1;
2220 A2& a2;
2221 A3& a3;
2222 A4& a4;
2223 A5& a5;
2224 A6& a6;
2225 A7& a7;
2226 A8& a8;
2227 A9& a9;
2228 A10& a10;
2229 A11& a11;
2230 A12& a12;
2231 A13& a13;
2232 A14& a14;
2233 A15& a15;
2234 A16& a16;
2235 A17& a17;
2236 A18& a18;
2237 A19& a19;
2238 A20& a20;
2239 A21& a21;
2240 A22& a22;
2241 A23& a23;
2242 A24& a24;
2243 };
2244
2245 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
2246 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> {
2247 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> value_type;
2248 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> tuple_type;
2249 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25) :
2250 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25) {}
2251 template <typename Packer>
2252 void msgpack_pack(Packer& pk) const
2253 {
2254 pk.pack_array(26);
2255
2256 pk.pack(a0);
2257 pk.pack(a1);
2258 pk.pack(a2);
2259 pk.pack(a3);
2260 pk.pack(a4);
2261 pk.pack(a5);
2262 pk.pack(a6);
2263 pk.pack(a7);
2264 pk.pack(a8);
2265 pk.pack(a9);
2266 pk.pack(a10);
2267 pk.pack(a11);
2268 pk.pack(a12);
2269 pk.pack(a13);
2270 pk.pack(a14);
2271 pk.pack(a15);
2272 pk.pack(a16);
2273 pk.pack(a17);
2274 pk.pack(a18);
2275 pk.pack(a19);
2276 pk.pack(a20);
2277 pk.pack(a21);
2278 pk.pack(a22);
2279 pk.pack(a23);
2280 pk.pack(a24);
2281 pk.pack(a25);
2282 }
2283 void msgpack_unpack(clmdep_msgpack::object const& o)
2284 {
2285 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2286 const size_t size = o.via.array.size;
2287 if(size > 0) {
2288 clmdep_msgpack::object *ptr = o.via.array.ptr;
2289 switch(size) {
2290 default:
2291 case 26: ptr[25].convert(a25);
2292 case 25: ptr[24].convert(a24);
2293 case 24: ptr[23].convert(a23);
2294 case 23: ptr[22].convert(a22);
2295 case 22: ptr[21].convert(a21);
2296 case 21: ptr[20].convert(a20);
2297 case 20: ptr[19].convert(a19);
2298 case 19: ptr[18].convert(a18);
2299 case 18: ptr[17].convert(a17);
2300 case 17: ptr[16].convert(a16);
2301 case 16: ptr[15].convert(a15);
2302 case 15: ptr[14].convert(a14);
2303 case 14: ptr[13].convert(a13);
2304 case 13: ptr[12].convert(a12);
2305 case 12: ptr[11].convert(a11);
2306 case 11: ptr[10].convert(a10);
2307 case 10: ptr[9].convert(a9);
2308 case 9: ptr[8].convert(a8);
2309 case 8: ptr[7].convert(a7);
2310 case 7: ptr[6].convert(a6);
2311 case 6: ptr[5].convert(a5);
2312 case 5: ptr[4].convert(a4);
2313 case 4: ptr[3].convert(a3);
2314 case 3: ptr[2].convert(a2);
2315 case 2: ptr[1].convert(a1);
2316 case 1: ptr[0].convert(a0);
2317 }
2318 }
2319 }
2320 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2321 {
2322 o->type = clmdep_msgpack::type::ARRAY;
2323 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*26));
2324 o->via.array.size = 26;
2325
2326 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2327 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2328 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2329 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2330 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2331 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2332 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2333 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2334 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2335 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2336 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2337 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2338 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2339 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2340 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2341 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2342 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2343 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2344 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2345 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2346 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2347 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2348 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2349 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2350 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
2351 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
2352 }
2353
2354 A0& a0;
2355 A1& a1;
2356 A2& a2;
2357 A3& a3;
2358 A4& a4;
2359 A5& a5;
2360 A6& a6;
2361 A7& a7;
2362 A8& a8;
2363 A9& a9;
2364 A10& a10;
2365 A11& a11;
2366 A12& a12;
2367 A13& a13;
2368 A14& a14;
2369 A15& a15;
2370 A16& a16;
2371 A17& a17;
2372 A18& a18;
2373 A19& a19;
2374 A20& a20;
2375 A21& a21;
2376 A22& a22;
2377 A23& a23;
2378 A24& a24;
2379 A25& a25;
2380 };
2381
2382 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
2383 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> {
2384 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> value_type;
2385 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> tuple_type;
2386 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26) :
2387 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26) {}
2388 template <typename Packer>
2389 void msgpack_pack(Packer& pk) const
2390 {
2391 pk.pack_array(27);
2392
2393 pk.pack(a0);
2394 pk.pack(a1);
2395 pk.pack(a2);
2396 pk.pack(a3);
2397 pk.pack(a4);
2398 pk.pack(a5);
2399 pk.pack(a6);
2400 pk.pack(a7);
2401 pk.pack(a8);
2402 pk.pack(a9);
2403 pk.pack(a10);
2404 pk.pack(a11);
2405 pk.pack(a12);
2406 pk.pack(a13);
2407 pk.pack(a14);
2408 pk.pack(a15);
2409 pk.pack(a16);
2410 pk.pack(a17);
2411 pk.pack(a18);
2412 pk.pack(a19);
2413 pk.pack(a20);
2414 pk.pack(a21);
2415 pk.pack(a22);
2416 pk.pack(a23);
2417 pk.pack(a24);
2418 pk.pack(a25);
2419 pk.pack(a26);
2420 }
2421 void msgpack_unpack(clmdep_msgpack::object const& o)
2422 {
2423 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2424 const size_t size = o.via.array.size;
2425 if(size > 0) {
2426 clmdep_msgpack::object *ptr = o.via.array.ptr;
2427 switch(size) {
2428 default:
2429 case 27: ptr[26].convert(a26);
2430 case 26: ptr[25].convert(a25);
2431 case 25: ptr[24].convert(a24);
2432 case 24: ptr[23].convert(a23);
2433 case 23: ptr[22].convert(a22);
2434 case 22: ptr[21].convert(a21);
2435 case 21: ptr[20].convert(a20);
2436 case 20: ptr[19].convert(a19);
2437 case 19: ptr[18].convert(a18);
2438 case 18: ptr[17].convert(a17);
2439 case 17: ptr[16].convert(a16);
2440 case 16: ptr[15].convert(a15);
2441 case 15: ptr[14].convert(a14);
2442 case 14: ptr[13].convert(a13);
2443 case 13: ptr[12].convert(a12);
2444 case 12: ptr[11].convert(a11);
2445 case 11: ptr[10].convert(a10);
2446 case 10: ptr[9].convert(a9);
2447 case 9: ptr[8].convert(a8);
2448 case 8: ptr[7].convert(a7);
2449 case 7: ptr[6].convert(a6);
2450 case 6: ptr[5].convert(a5);
2451 case 5: ptr[4].convert(a4);
2452 case 4: ptr[3].convert(a3);
2453 case 3: ptr[2].convert(a2);
2454 case 2: ptr[1].convert(a1);
2455 case 1: ptr[0].convert(a0);
2456 }
2457 }
2458 }
2459 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2460 {
2461 o->type = clmdep_msgpack::type::ARRAY;
2462 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*27));
2463 o->via.array.size = 27;
2464
2465 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2466 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2467 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2468 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2469 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2470 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2471 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2472 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2473 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2474 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2475 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2476 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2477 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2478 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2479 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2480 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2481 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2482 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2483 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2484 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2485 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2486 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2487 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2488 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2489 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
2490 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
2491 o->via.array.ptr[26] = clmdep_msgpack::object(a26, z);
2492 }
2493
2494 A0& a0;
2495 A1& a1;
2496 A2& a2;
2497 A3& a3;
2498 A4& a4;
2499 A5& a5;
2500 A6& a6;
2501 A7& a7;
2502 A8& a8;
2503 A9& a9;
2504 A10& a10;
2505 A11& a11;
2506 A12& a12;
2507 A13& a13;
2508 A14& a14;
2509 A15& a15;
2510 A16& a16;
2511 A17& a17;
2512 A18& a18;
2513 A19& a19;
2514 A20& a20;
2515 A21& a21;
2516 A22& a22;
2517 A23& a23;
2518 A24& a24;
2519 A25& a25;
2520 A26& a26;
2521 };
2522
2523 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
2524 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> {
2525 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> value_type;
2526 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> tuple_type;
2527 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27) :
2528 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27) {}
2529 template <typename Packer>
2530 void msgpack_pack(Packer& pk) const
2531 {
2532 pk.pack_array(28);
2533
2534 pk.pack(a0);
2535 pk.pack(a1);
2536 pk.pack(a2);
2537 pk.pack(a3);
2538 pk.pack(a4);
2539 pk.pack(a5);
2540 pk.pack(a6);
2541 pk.pack(a7);
2542 pk.pack(a8);
2543 pk.pack(a9);
2544 pk.pack(a10);
2545 pk.pack(a11);
2546 pk.pack(a12);
2547 pk.pack(a13);
2548 pk.pack(a14);
2549 pk.pack(a15);
2550 pk.pack(a16);
2551 pk.pack(a17);
2552 pk.pack(a18);
2553 pk.pack(a19);
2554 pk.pack(a20);
2555 pk.pack(a21);
2556 pk.pack(a22);
2557 pk.pack(a23);
2558 pk.pack(a24);
2559 pk.pack(a25);
2560 pk.pack(a26);
2561 pk.pack(a27);
2562 }
2563 void msgpack_unpack(clmdep_msgpack::object const& o)
2564 {
2565 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2566 const size_t size = o.via.array.size;
2567 if(size > 0) {
2568 clmdep_msgpack::object *ptr = o.via.array.ptr;
2569 switch(size) {
2570 default:
2571 case 28: ptr[27].convert(a27);
2572 case 27: ptr[26].convert(a26);
2573 case 26: ptr[25].convert(a25);
2574 case 25: ptr[24].convert(a24);
2575 case 24: ptr[23].convert(a23);
2576 case 23: ptr[22].convert(a22);
2577 case 22: ptr[21].convert(a21);
2578 case 21: ptr[20].convert(a20);
2579 case 20: ptr[19].convert(a19);
2580 case 19: ptr[18].convert(a18);
2581 case 18: ptr[17].convert(a17);
2582 case 17: ptr[16].convert(a16);
2583 case 16: ptr[15].convert(a15);
2584 case 15: ptr[14].convert(a14);
2585 case 14: ptr[13].convert(a13);
2586 case 13: ptr[12].convert(a12);
2587 case 12: ptr[11].convert(a11);
2588 case 11: ptr[10].convert(a10);
2589 case 10: ptr[9].convert(a9);
2590 case 9: ptr[8].convert(a8);
2591 case 8: ptr[7].convert(a7);
2592 case 7: ptr[6].convert(a6);
2593 case 6: ptr[5].convert(a5);
2594 case 5: ptr[4].convert(a4);
2595 case 4: ptr[3].convert(a3);
2596 case 3: ptr[2].convert(a2);
2597 case 2: ptr[1].convert(a1);
2598 case 1: ptr[0].convert(a0);
2599 }
2600 }
2601 }
2602 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2603 {
2604 o->type = clmdep_msgpack::type::ARRAY;
2605 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*28));
2606 o->via.array.size = 28;
2607
2608 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2609 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2610 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2611 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2612 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2613 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2614 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2615 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2616 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2617 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2618 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2619 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2620 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2621 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2622 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2623 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2624 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2625 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2626 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2627 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2628 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2629 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2630 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2631 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2632 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
2633 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
2634 o->via.array.ptr[26] = clmdep_msgpack::object(a26, z);
2635 o->via.array.ptr[27] = clmdep_msgpack::object(a27, z);
2636 }
2637
2638 A0& a0;
2639 A1& a1;
2640 A2& a2;
2641 A3& a3;
2642 A4& a4;
2643 A5& a5;
2644 A6& a6;
2645 A7& a7;
2646 A8& a8;
2647 A9& a9;
2648 A10& a10;
2649 A11& a11;
2650 A12& a12;
2651 A13& a13;
2652 A14& a14;
2653 A15& a15;
2654 A16& a16;
2655 A17& a17;
2656 A18& a18;
2657 A19& a19;
2658 A20& a20;
2659 A21& a21;
2660 A22& a22;
2661 A23& a23;
2662 A24& a24;
2663 A25& a25;
2664 A26& a26;
2665 A27& a27;
2666 };
2667
2668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
2669 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> {
2670 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> value_type;
2671 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> tuple_type;
2672 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28) :
2673 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28) {}
2674 template <typename Packer>
2675 void msgpack_pack(Packer& pk) const
2676 {
2677 pk.pack_array(29);
2678
2679 pk.pack(a0);
2680 pk.pack(a1);
2681 pk.pack(a2);
2682 pk.pack(a3);
2683 pk.pack(a4);
2684 pk.pack(a5);
2685 pk.pack(a6);
2686 pk.pack(a7);
2687 pk.pack(a8);
2688 pk.pack(a9);
2689 pk.pack(a10);
2690 pk.pack(a11);
2691 pk.pack(a12);
2692 pk.pack(a13);
2693 pk.pack(a14);
2694 pk.pack(a15);
2695 pk.pack(a16);
2696 pk.pack(a17);
2697 pk.pack(a18);
2698 pk.pack(a19);
2699 pk.pack(a20);
2700 pk.pack(a21);
2701 pk.pack(a22);
2702 pk.pack(a23);
2703 pk.pack(a24);
2704 pk.pack(a25);
2705 pk.pack(a26);
2706 pk.pack(a27);
2707 pk.pack(a28);
2708 }
2709 void msgpack_unpack(clmdep_msgpack::object const& o)
2710 {
2711 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2712 const size_t size = o.via.array.size;
2713 if(size > 0) {
2714 clmdep_msgpack::object *ptr = o.via.array.ptr;
2715 switch(size) {
2716 default:
2717 case 29: ptr[28].convert(a28);
2718 case 28: ptr[27].convert(a27);
2719 case 27: ptr[26].convert(a26);
2720 case 26: ptr[25].convert(a25);
2721 case 25: ptr[24].convert(a24);
2722 case 24: ptr[23].convert(a23);
2723 case 23: ptr[22].convert(a22);
2724 case 22: ptr[21].convert(a21);
2725 case 21: ptr[20].convert(a20);
2726 case 20: ptr[19].convert(a19);
2727 case 19: ptr[18].convert(a18);
2728 case 18: ptr[17].convert(a17);
2729 case 17: ptr[16].convert(a16);
2730 case 16: ptr[15].convert(a15);
2731 case 15: ptr[14].convert(a14);
2732 case 14: ptr[13].convert(a13);
2733 case 13: ptr[12].convert(a12);
2734 case 12: ptr[11].convert(a11);
2735 case 11: ptr[10].convert(a10);
2736 case 10: ptr[9].convert(a9);
2737 case 9: ptr[8].convert(a8);
2738 case 8: ptr[7].convert(a7);
2739 case 7: ptr[6].convert(a6);
2740 case 6: ptr[5].convert(a5);
2741 case 5: ptr[4].convert(a4);
2742 case 4: ptr[3].convert(a3);
2743 case 3: ptr[2].convert(a2);
2744 case 2: ptr[1].convert(a1);
2745 case 1: ptr[0].convert(a0);
2746 }
2747 }
2748 }
2749 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2750 {
2751 o->type = clmdep_msgpack::type::ARRAY;
2752 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*29));
2753 o->via.array.size = 29;
2754
2755 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2756 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2757 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2758 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2759 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2760 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2761 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2762 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2763 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2764 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2765 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2766 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2767 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2768 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2769 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2770 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2771 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2772 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2773 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2774 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2775 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2776 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2777 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2778 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2779 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
2780 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
2781 o->via.array.ptr[26] = clmdep_msgpack::object(a26, z);
2782 o->via.array.ptr[27] = clmdep_msgpack::object(a27, z);
2783 o->via.array.ptr[28] = clmdep_msgpack::object(a28, z);
2784 }
2785
2786 A0& a0;
2787 A1& a1;
2788 A2& a2;
2789 A3& a3;
2790 A4& a4;
2791 A5& a5;
2792 A6& a6;
2793 A7& a7;
2794 A8& a8;
2795 A9& a9;
2796 A10& a10;
2797 A11& a11;
2798 A12& a12;
2799 A13& a13;
2800 A14& a14;
2801 A15& a15;
2802 A16& a16;
2803 A17& a17;
2804 A18& a18;
2805 A19& a19;
2806 A20& a20;
2807 A21& a21;
2808 A22& a22;
2809 A23& a23;
2810 A24& a24;
2811 A25& a25;
2812 A26& a26;
2813 A27& a27;
2814 A28& a28;
2815 };
2816
2817 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
2818 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> {
2819 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> value_type;
2820 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> tuple_type;
2821 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29) :
2822 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29) {}
2823 template <typename Packer>
2824 void msgpack_pack(Packer& pk) const
2825 {
2826 pk.pack_array(30);
2827
2828 pk.pack(a0);
2829 pk.pack(a1);
2830 pk.pack(a2);
2831 pk.pack(a3);
2832 pk.pack(a4);
2833 pk.pack(a5);
2834 pk.pack(a6);
2835 pk.pack(a7);
2836 pk.pack(a8);
2837 pk.pack(a9);
2838 pk.pack(a10);
2839 pk.pack(a11);
2840 pk.pack(a12);
2841 pk.pack(a13);
2842 pk.pack(a14);
2843 pk.pack(a15);
2844 pk.pack(a16);
2845 pk.pack(a17);
2846 pk.pack(a18);
2847 pk.pack(a19);
2848 pk.pack(a20);
2849 pk.pack(a21);
2850 pk.pack(a22);
2851 pk.pack(a23);
2852 pk.pack(a24);
2853 pk.pack(a25);
2854 pk.pack(a26);
2855 pk.pack(a27);
2856 pk.pack(a28);
2857 pk.pack(a29);
2858 }
2859 void msgpack_unpack(clmdep_msgpack::object const& o)
2860 {
2861 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
2862 const size_t size = o.via.array.size;
2863 if(size > 0) {
2864 clmdep_msgpack::object *ptr = o.via.array.ptr;
2865 switch(size) {
2866 default:
2867 case 30: ptr[29].convert(a29);
2868 case 29: ptr[28].convert(a28);
2869 case 28: ptr[27].convert(a27);
2870 case 27: ptr[26].convert(a26);
2871 case 26: ptr[25].convert(a25);
2872 case 25: ptr[24].convert(a24);
2873 case 24: ptr[23].convert(a23);
2874 case 23: ptr[22].convert(a22);
2875 case 22: ptr[21].convert(a21);
2876 case 21: ptr[20].convert(a20);
2877 case 20: ptr[19].convert(a19);
2878 case 19: ptr[18].convert(a18);
2879 case 18: ptr[17].convert(a17);
2880 case 17: ptr[16].convert(a16);
2881 case 16: ptr[15].convert(a15);
2882 case 15: ptr[14].convert(a14);
2883 case 14: ptr[13].convert(a13);
2884 case 13: ptr[12].convert(a12);
2885 case 12: ptr[11].convert(a11);
2886 case 11: ptr[10].convert(a10);
2887 case 10: ptr[9].convert(a9);
2888 case 9: ptr[8].convert(a8);
2889 case 8: ptr[7].convert(a7);
2890 case 7: ptr[6].convert(a6);
2891 case 6: ptr[5].convert(a5);
2892 case 5: ptr[4].convert(a4);
2893 case 4: ptr[3].convert(a3);
2894 case 3: ptr[2].convert(a2);
2895 case 2: ptr[1].convert(a1);
2896 case 1: ptr[0].convert(a0);
2897 }
2898 }
2899 }
2900 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
2901 {
2902 o->type = clmdep_msgpack::type::ARRAY;
2903 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*30));
2904 o->via.array.size = 30;
2905
2906 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
2907 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
2908 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
2909 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
2910 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
2911 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
2912 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
2913 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
2914 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
2915 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
2916 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
2917 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
2918 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
2919 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
2920 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
2921 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
2922 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
2923 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
2924 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
2925 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
2926 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
2927 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
2928 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
2929 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
2930 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
2931 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
2932 o->via.array.ptr[26] = clmdep_msgpack::object(a26, z);
2933 o->via.array.ptr[27] = clmdep_msgpack::object(a27, z);
2934 o->via.array.ptr[28] = clmdep_msgpack::object(a28, z);
2935 o->via.array.ptr[29] = clmdep_msgpack::object(a29, z);
2936 }
2937
2938 A0& a0;
2939 A1& a1;
2940 A2& a2;
2941 A3& a3;
2942 A4& a4;
2943 A5& a5;
2944 A6& a6;
2945 A7& a7;
2946 A8& a8;
2947 A9& a9;
2948 A10& a10;
2949 A11& a11;
2950 A12& a12;
2951 A13& a13;
2952 A14& a14;
2953 A15& a15;
2954 A16& a16;
2955 A17& a17;
2956 A18& a18;
2957 A19& a19;
2958 A20& a20;
2959 A21& a21;
2960 A22& a22;
2961 A23& a23;
2962 A24& a24;
2963 A25& a25;
2964 A26& a26;
2965 A27& a27;
2966 A28& a28;
2967 A29& a29;
2968 };
2969
2970 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
2971 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> {
2972 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> value_type;
2973 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> tuple_type;
2974 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29, A30& _a30) :
2975 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30) {}
2976 template <typename Packer>
2977 void msgpack_pack(Packer& pk) const
2978 {
2979 pk.pack_array(31);
2980
2981 pk.pack(a0);
2982 pk.pack(a1);
2983 pk.pack(a2);
2984 pk.pack(a3);
2985 pk.pack(a4);
2986 pk.pack(a5);
2987 pk.pack(a6);
2988 pk.pack(a7);
2989 pk.pack(a8);
2990 pk.pack(a9);
2991 pk.pack(a10);
2992 pk.pack(a11);
2993 pk.pack(a12);
2994 pk.pack(a13);
2995 pk.pack(a14);
2996 pk.pack(a15);
2997 pk.pack(a16);
2998 pk.pack(a17);
2999 pk.pack(a18);
3000 pk.pack(a19);
3001 pk.pack(a20);
3002 pk.pack(a21);
3003 pk.pack(a22);
3004 pk.pack(a23);
3005 pk.pack(a24);
3006 pk.pack(a25);
3007 pk.pack(a26);
3008 pk.pack(a27);
3009 pk.pack(a28);
3010 pk.pack(a29);
3011 pk.pack(a30);
3012 }
3013 void msgpack_unpack(clmdep_msgpack::object const& o)
3014 {
3015 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
3016 const size_t size = o.via.array.size;
3017 if(size > 0) {
3018 clmdep_msgpack::object *ptr = o.via.array.ptr;
3019 switch(size) {
3020 default:
3021 case 31: ptr[30].convert(a30);
3022 case 30: ptr[29].convert(a29);
3023 case 29: ptr[28].convert(a28);
3024 case 28: ptr[27].convert(a27);
3025 case 27: ptr[26].convert(a26);
3026 case 26: ptr[25].convert(a25);
3027 case 25: ptr[24].convert(a24);
3028 case 24: ptr[23].convert(a23);
3029 case 23: ptr[22].convert(a22);
3030 case 22: ptr[21].convert(a21);
3031 case 21: ptr[20].convert(a20);
3032 case 20: ptr[19].convert(a19);
3033 case 19: ptr[18].convert(a18);
3034 case 18: ptr[17].convert(a17);
3035 case 17: ptr[16].convert(a16);
3036 case 16: ptr[15].convert(a15);
3037 case 15: ptr[14].convert(a14);
3038 case 14: ptr[13].convert(a13);
3039 case 13: ptr[12].convert(a12);
3040 case 12: ptr[11].convert(a11);
3041 case 11: ptr[10].convert(a10);
3042 case 10: ptr[9].convert(a9);
3043 case 9: ptr[8].convert(a8);
3044 case 8: ptr[7].convert(a7);
3045 case 7: ptr[6].convert(a6);
3046 case 6: ptr[5].convert(a5);
3047 case 5: ptr[4].convert(a4);
3048 case 4: ptr[3].convert(a3);
3049 case 3: ptr[2].convert(a2);
3050 case 2: ptr[1].convert(a1);
3051 case 1: ptr[0].convert(a0);
3052 }
3053 }
3054 }
3055 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
3056 {
3057 o->type = clmdep_msgpack::type::ARRAY;
3058 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*31));
3059 o->via.array.size = 31;
3060
3061 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
3062 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
3063 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
3064 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
3065 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
3066 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
3067 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
3068 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
3069 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
3070 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
3071 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
3072 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
3073 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
3074 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
3075 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
3076 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
3077 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
3078 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
3079 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
3080 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
3081 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
3082 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
3083 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
3084 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
3085 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
3086 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
3087 o->via.array.ptr[26] = clmdep_msgpack::object(a26, z);
3088 o->via.array.ptr[27] = clmdep_msgpack::object(a27, z);
3089 o->via.array.ptr[28] = clmdep_msgpack::object(a28, z);
3090 o->via.array.ptr[29] = clmdep_msgpack::object(a29, z);
3091 o->via.array.ptr[30] = clmdep_msgpack::object(a30, z);
3092 }
3093
3094 A0& a0;
3095 A1& a1;
3096 A2& a2;
3097 A3& a3;
3098 A4& a4;
3099 A5& a5;
3100 A6& a6;
3101 A7& a7;
3102 A8& a8;
3103 A9& a9;
3104 A10& a10;
3105 A11& a11;
3106 A12& a12;
3107 A13& a13;
3108 A14& a14;
3109 A15& a15;
3110 A16& a16;
3111 A17& a17;
3112 A18& a18;
3113 A19& a19;
3114 A20& a20;
3115 A21& a21;
3116 A22& a22;
3117 A23& a23;
3118 A24& a24;
3119 A25& a25;
3120 A26& a26;
3121 A27& a27;
3122 A28& a28;
3123 A29& a29;
3124 A30& a30;
3125 };
3126
3127 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
3128 struct define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> {
3129 typedef define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> value_type;
3130 typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> tuple_type;
3131 define_array(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13, A14& _a14, A15& _a15, A16& _a16, A17& _a17, A18& _a18, A19& _a19, A20& _a20, A21& _a21, A22& _a22, A23& _a23, A24& _a24, A25& _a25, A26& _a26, A27& _a27, A28& _a28, A29& _a29, A30& _a30, A31& _a31) :
3132 a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30), a31(_a31) {}
3133 template <typename Packer>
3134 void msgpack_pack(Packer& pk) const
3135 {
3136 pk.pack_array(32);
3137
3138 pk.pack(a0);
3139 pk.pack(a1);
3140 pk.pack(a2);
3141 pk.pack(a3);
3142 pk.pack(a4);
3143 pk.pack(a5);
3144 pk.pack(a6);
3145 pk.pack(a7);
3146 pk.pack(a8);
3147 pk.pack(a9);
3148 pk.pack(a10);
3149 pk.pack(a11);
3150 pk.pack(a12);
3151 pk.pack(a13);
3152 pk.pack(a14);
3153 pk.pack(a15);
3154 pk.pack(a16);
3155 pk.pack(a17);
3156 pk.pack(a18);
3157 pk.pack(a19);
3158 pk.pack(a20);
3159 pk.pack(a21);
3160 pk.pack(a22);
3161 pk.pack(a23);
3162 pk.pack(a24);
3163 pk.pack(a25);
3164 pk.pack(a26);
3165 pk.pack(a27);
3166 pk.pack(a28);
3167 pk.pack(a29);
3168 pk.pack(a30);
3169 pk.pack(a31);
3170 }
3171 void msgpack_unpack(clmdep_msgpack::object const& o)
3172 {
3173 if(o.type != clmdep_msgpack::type::ARRAY) { throw clmdep_msgpack::type_error(); }
3174 const size_t size = o.via.array.size;
3175 if(size > 0) {
3176 clmdep_msgpack::object *ptr = o.via.array.ptr;
3177 switch(size) {
3178 default:
3179 case 32: ptr[31].convert(a31);
3180 case 31: ptr[30].convert(a30);
3181 case 30: ptr[29].convert(a29);
3182 case 29: ptr[28].convert(a28);
3183 case 28: ptr[27].convert(a27);
3184 case 27: ptr[26].convert(a26);
3185 case 26: ptr[25].convert(a25);
3186 case 25: ptr[24].convert(a24);
3187 case 24: ptr[23].convert(a23);
3188 case 23: ptr[22].convert(a22);
3189 case 22: ptr[21].convert(a21);
3190 case 21: ptr[20].convert(a20);
3191 case 20: ptr[19].convert(a19);
3192 case 19: ptr[18].convert(a18);
3193 case 18: ptr[17].convert(a17);
3194 case 17: ptr[16].convert(a16);
3195 case 16: ptr[15].convert(a15);
3196 case 15: ptr[14].convert(a14);
3197 case 14: ptr[13].convert(a13);
3198 case 13: ptr[12].convert(a12);
3199 case 12: ptr[11].convert(a11);
3200 case 11: ptr[10].convert(a10);
3201 case 10: ptr[9].convert(a9);
3202 case 9: ptr[8].convert(a8);
3203 case 8: ptr[7].convert(a7);
3204 case 7: ptr[6].convert(a6);
3205 case 6: ptr[5].convert(a5);
3206 case 5: ptr[4].convert(a4);
3207 case 4: ptr[3].convert(a3);
3208 case 3: ptr[2].convert(a2);
3209 case 2: ptr[1].convert(a1);
3210 case 1: ptr[0].convert(a0);
3211 }
3212 }
3213 }
3214 void msgpack_object(clmdep_msgpack::object* o, clmdep_msgpack::zone& z) const
3215 {
3216 o->type = clmdep_msgpack::type::ARRAY;
3217 o->via.array.ptr = static_cast<clmdep_msgpack::object*>(z.allocate_align(sizeof(clmdep_msgpack::object)*32));
3218 o->via.array.size = 32;
3219
3220 o->via.array.ptr[0] = clmdep_msgpack::object(a0, z);
3221 o->via.array.ptr[1] = clmdep_msgpack::object(a1, z);
3222 o->via.array.ptr[2] = clmdep_msgpack::object(a2, z);
3223 o->via.array.ptr[3] = clmdep_msgpack::object(a3, z);
3224 o->via.array.ptr[4] = clmdep_msgpack::object(a4, z);
3225 o->via.array.ptr[5] = clmdep_msgpack::object(a5, z);
3226 o->via.array.ptr[6] = clmdep_msgpack::object(a6, z);
3227 o->via.array.ptr[7] = clmdep_msgpack::object(a7, z);
3228 o->via.array.ptr[8] = clmdep_msgpack::object(a8, z);
3229 o->via.array.ptr[9] = clmdep_msgpack::object(a9, z);
3230 o->via.array.ptr[10] = clmdep_msgpack::object(a10, z);
3231 o->via.array.ptr[11] = clmdep_msgpack::object(a11, z);
3232 o->via.array.ptr[12] = clmdep_msgpack::object(a12, z);
3233 o->via.array.ptr[13] = clmdep_msgpack::object(a13, z);
3234 o->via.array.ptr[14] = clmdep_msgpack::object(a14, z);
3235 o->via.array.ptr[15] = clmdep_msgpack::object(a15, z);
3236 o->via.array.ptr[16] = clmdep_msgpack::object(a16, z);
3237 o->via.array.ptr[17] = clmdep_msgpack::object(a17, z);
3238 o->via.array.ptr[18] = clmdep_msgpack::object(a18, z);
3239 o->via.array.ptr[19] = clmdep_msgpack::object(a19, z);
3240 o->via.array.ptr[20] = clmdep_msgpack::object(a20, z);
3241 o->via.array.ptr[21] = clmdep_msgpack::object(a21, z);
3242 o->via.array.ptr[22] = clmdep_msgpack::object(a22, z);
3243 o->via.array.ptr[23] = clmdep_msgpack::object(a23, z);
3244 o->via.array.ptr[24] = clmdep_msgpack::object(a24, z);
3245 o->via.array.ptr[25] = clmdep_msgpack::object(a25, z);
3246 o->via.array.ptr[26] = clmdep_msgpack::object(a26, z);
3247 o->via.array.ptr[27] = clmdep_msgpack::object(a27, z);
3248 o->via.array.ptr[28] = clmdep_msgpack::object(a28, z);
3249 o->via.array.ptr[29] = clmdep_msgpack::object(a29, z);
3250 o->via.array.ptr[30] = clmdep_msgpack::object(a30, z);
3251 o->via.array.ptr[31] = clmdep_msgpack::object(a31, z);
3252 }
3253
3254 A0& a0;
3255 A1& a1;
3256 A2& a2;
3257 A3& a3;
3258 A4& a4;
3259 A5& a5;
3260 A6& a6;
3261 A7& a7;
3262 A8& a8;
3263 A9& a9;
3264 A10& a10;
3265 A11& a11;
3266 A12& a12;
3267 A13& a13;
3268 A14& a14;
3269 A15& a15;
3270 A16& a16;
3271 A17& a17;
3272 A18& a18;
3273 A19& a19;
3274 A20& a20;
3275 A21& a21;
3276 A22& a22;
3277 A23& a23;
3278 A24& a24;
3279 A25& a25;
3280 A26& a26;
3281 A27& a27;
3282 A28& a28;
3283 A29& a29;
3284 A30& a30;
3285 A31& a31;
3286 };
3287
3288 /// @endcond
3289
3290 inline define_array<> make_define_array()
3291 {
3292 return define_array<>();
3293 }
3294
3295 /// @cond
3296
3297 template <typename A0>
3298 inline define_array<A0> make_define_array(A0& a0)
3299 {
3300 return define_array<A0>(a0);
3301 }
3302
3303 template <typename A0, typename A1>
3304 inline define_array<A0, A1> make_define_array(A0& a0, A1& a1)
3305 {
3306 return define_array<A0, A1>(a0, a1);
3307 }
3308
3309 template <typename A0, typename A1, typename A2>
3310 inline define_array<A0, A1, A2> make_define_array(A0& a0, A1& a1, A2& a2)
3311 {
3312 return define_array<A0, A1, A2>(a0, a1, a2);
3313 }
3314
3315 template <typename A0, typename A1, typename A2, typename A3>
3316 inline define_array<A0, A1, A2, A3> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3)
3317 {
3318 return define_array<A0, A1, A2, A3>(a0, a1, a2, a3);
3319 }
3320
3321 template <typename A0, typename A1, typename A2, typename A3, typename A4>
3322 inline define_array<A0, A1, A2, A3, A4> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4)
3323 {
3324 return define_array<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
3325 }
3326
3327 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
3328 inline define_array<A0, A1, A2, A3, A4, A5> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5)
3329 {
3330 return define_array<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
3331 }
3332
3333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
3334 inline define_array<A0, A1, A2, A3, A4, A5, A6> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6)
3335 {
3336 return define_array<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
3337 }
3338
3339 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
3340 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7)
3341 {
3342 return define_array<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
3343 }
3344
3345 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
3346 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8)
3347 {
3348 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
3349 }
3350
3351 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
3352 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9)
3353 {
3354 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
3355 }
3356
3357 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
3358 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10)
3359 {
3360 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
3361 }
3362
3363 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
3364 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11)
3365 {
3366 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
3367 }
3368
3369 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
3370 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12)
3371 {
3372 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
3373 }
3374
3375 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
3376 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13)
3377 {
3378 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
3379 }
3380
3381 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
3382 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14)
3383 {
3384 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
3385 }
3386
3387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
3388 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15)
3389 {
3390 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
3391 }
3392
3393 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
3394 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16)
3395 {
3396 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
3397 }
3398
3399 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
3400 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17)
3401 {
3402 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
3403 }
3404
3405 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
3406 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18)
3407 {
3408 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
3409 }
3410
3411 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
3412 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19)
3413 {
3414 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
3415 }
3416
3417 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
3418 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20)
3419 {
3420 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
3421 }
3422
3423 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
3424 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21)
3425 {
3426 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
3427 }
3428
3429 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
3430 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22)
3431 {
3432 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22);
3433 }
3434
3435 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
3436 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23)
3437 {
3438 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23);
3439 }
3440
3441 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3442 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24)
3443 {
3444 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24);
3445 }
3446
3447 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3448 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25)
3449 {
3450 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25);
3451 }
3452
3453 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3454 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26)
3455 {
3456 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26);
3457 }
3458
3459 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3460 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27)
3461 {
3462 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27);
3463 }
3464
3465 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3466 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28)
3467 {
3468 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
3469 }
3470
3471 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
3472 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29)
3473 {
3474 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
3475 }
3476
3477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
3478 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30)
3479 {
3480 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
3481 }
3482
3483 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
3484 inline define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_define_array(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14, A15& a15, A16& a16, A17& a17, A18& a18, A19& a19, A20& a20, A21& a21, A22& a22, A23& a23, A24& a24, A25& a25, A26& a26, A27& a27, A28& a28, A29& a29, A30& a30, A31& a31)
3485 {
3486 return define_array<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
3487 }
3488
3489 /// @endcond
3490
3491 } // namespace type
3492 /// @cond
3493 } // MSGPACK_API_VERSION_NAMESPACE(v1)
3494 /// @endcond
3495 } // namespace clmdep_msgpack
3496
3497
3498 #endif // MSGPACK_CPP03_DEFINE_ARRAY_HPP
3499