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