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