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