MessagePack for C++
cpp03_define_array.hpp
Go to the documentation of this file.
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 
16 #include "msgpack/object_fwd.hpp"
17 
18 namespace msgpack {
22 namespace type {
23 
24 
25 template <>
26 struct define_array<> {
29  template <typename Packer>
30  void msgpack_pack(Packer& pk) const
31  {
32  pk.pack_array(0);
33  }
35  {
36  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
37  }
39  {
42  o->via.array.size = 0;
43  }
44 };
45 
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  }
76  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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  {
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 
4273 
4275 {
4276  return define_array<>();
4277 }
4278 
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 
4474 
4475 } // namespace type
4477 } // MSGPACK_API_VERSION_NAMESPACE(v1)
4479 } // namespace msgpack
4480 
4481 #endif // MSGPACK_V1_CPP03_DEFINE_ARRAY_HPP
Definition: object_fwd.hpp:231
Definition: cpp03_zone.hpp:31
void * allocate_align(size_t size, size_t align=MSGPACK_ZONE_ALIGN)
Definition: cpp03_zone.hpp:256
std::size_t size(T const &t)
Definition: size_equal_only.hpp:24
define_array make_define_array()
Definition: cpp03_define_array.hpp:4274
@ ARRAY
Definition: object_fwd_decl.hpp:40
Definition: adaptor_base.hpp:15
uint32_t size
Definition: object_fwd.hpp:23
msgpack::object * ptr
Definition: object_fwd.hpp:24
Object class that corresponding to MessagePack format object.
Definition: object_fwd.hpp:75
union_type via
Definition: object_fwd.hpp:93
msgpack::enable_if< !msgpack::is_array< T >::value &&!msgpack::is_pointer< T >::value, T & >::type convert(T &v) const
Convert the object.
Definition: object.hpp:1071
msgpack::type::object_type type
Definition: object_fwd.hpp:92
Definition: cpp03_define_array.hpp:26
void msgpack_pack(Packer &pk) const
Definition: cpp03_define_array.hpp:30
void msgpack_unpack(msgpack::object const &o)
Definition: cpp03_define_array.hpp:34
tuple tuple_type
Definition: cpp03_define_array.hpp:28
void msgpack_object(msgpack::object *o, msgpack::zone &) const
Definition: cpp03_define_array.hpp:38
define_array value_type
Definition: cpp03_define_array.hpp:27
Definition: cpp11_define_array.hpp:60
void msgpack_object(msgpack::object *o, msgpack::zone &z) const
Definition: cpp11_define_array.hpp:78
define_array(Args &... args)
Definition: cpp11_define_array.hpp:63
void msgpack_pack(Packer &pk) const
Definition: cpp11_define_array.hpp:66
std::tuple< Args... > tuple_type
Definition: cpp11_define_array.hpp:62
void msgpack_unpack(msgpack::object const &o)
Definition: cpp11_define_array.hpp:72
define_array< Args... > value_type
Definition: cpp11_define_array.hpp:61
Definition: cpp03_msgpack_tuple.hpp:9165
msgpack::object_array array
Definition: object_fwd.hpp:85
#define MSGPACK_NULLPTR
Definition: cpp_config_decl.hpp:85
#define MSGPACK_ZONE_ALIGNOF(type)
Definition: cpp03_zone_decl.hpp:30
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:66