1//
2// MessagePack for C++ static resolution routine
3//
4// Copyright (C) 2015 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_CPP03_DEFINE_MAP_HPP
11#define MSGPACK_CPP03_DEFINE_MAP_HPP
12
13// BOOST_PP_VARIADICS is defined in boost/preprocessor/config/config.hpp
14// http://www.boost.org/libs/preprocessor/doc/ref/variadics.html
15// However, supporting compiler detection is not complete. msgpack-c requires
16// variadic macro arguments support. So BOOST_PP_VARIADICS is defined here explicitly.
17#if !defined(MSGPACK_PP_VARIADICS)
18#define MSGPACK_PP_VARIADICS
19#endif
20
21#include <msgpack/preprocessor.hpp>
22
23#include "msgpack/versioning.hpp"
24#include "msgpack/adaptor/msgpack_tuple.hpp"
25#include "msgpack/adaptor/adaptor_base.hpp"
26#include "msgpack/object_fwd.hpp"
27
28#define MSGPACK_DEFINE_MAP_EACH_PROC(r, data, elem) \
29    MSGPACK_PP_IF( \
30        MSGPACK_PP_IS_BEGIN_PARENS(elem), \
31        elem, \
32        (MSGPACK_PP_STRINGIZE(elem))(elem) \
33    )
34
35#define MSGPACK_DEFINE_MAP_IMPL(...) \
36    MSGPACK_PP_SEQ_TO_TUPLE( \
37        MSGPACK_PP_SEQ_FOR_EACH( \
38            MSGPACK_DEFINE_MAP_EACH_PROC, \
39            0, \
40            MSGPACK_PP_VARIADIC_TO_SEQ(__VA_ARGS__) \
41        ) \
42    )
43
44#define MSGPACK_DEFINE_MAP(...) \
45    template <typename Packer> \
46    void msgpack_pack(Packer& pk) const \
47    { \
48        msgpack::type::make_define_map \
49            MSGPACK_DEFINE_MAP_IMPL(__VA_ARGS__) \
50            .msgpack_pack(pk); \
51    } \
52    void msgpack_unpack(msgpack::object const& o) \
53    { \
54        msgpack::type::make_define_map \
55            MSGPACK_DEFINE_MAP_IMPL(__VA_ARGS__) \
56            .msgpack_unpack(o); \
57    }\
58    template <typename MSGPACK_OBJECT> \
59    void msgpack_object(MSGPACK_OBJECT* o, msgpack::zone& z) const \
60    { \
61        msgpack::type::make_define_map \
62            MSGPACK_DEFINE_MAP_IMPL(__VA_ARGS__) \
63            .msgpack_object(o, z); \
64    }
65
66#define MSGPACK_BASE_MAP(base) \
67    (MSGPACK_PP_STRINGIZE(base))(*const_cast<base *>(static_cast<base const*>(this)))
68
69namespace msgpack {
70/// @cond
71MSGPACK_API_VERSION_NAMESPACE(v1) {
72/// @endcond
73namespace type {
74
75/// @cond
76
77template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
78struct define_map;
79/// @endcond
80
81template <>
82struct define_map<> {
83    template <typename Packer>
84    void msgpack_pack(Packer& pk) const
85    {
86        pk.pack_map(0);
87    }
88    void msgpack_unpack(msgpack::object const& o) const
89    {
90        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
91    }
92    void msgpack_object(msgpack::object* o, msgpack::zone&) const
93    {
94        o->type = msgpack::type::MAP;
95        o->via.map.ptr = nullptr;
96        o->via.map.size = 0;
97    }
98};
99
100/// @cond
101
102template <typename A0, typename A1>
103struct define_map<A0, A1> {
104    define_map(A0& _a0, A1& _a1) :
105        a0(_a0), a1(_a1) {}
106    template <typename Packer>
107    void msgpack_pack(Packer& pk) const
108    {
109        pk.pack_map(1);
110
111        pk.pack(a0);
112        pk.pack(a1);
113    }
114    void msgpack_unpack(msgpack::object const& o) const
115    {
116        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
117        std::map<std::string, msgpack::object const*> kvmap;
118        for (uint32_t i = 0; i < o.via.map.size; ++i) {
119            kvmap.insert(
120                std::map<std::string, msgpack::object const*>::value_type(
121                    std::string(
122                        o.via.map.ptr[i].key.via.str.ptr,
123                        o.via.map.ptr[i].key.via.str.size),
124                    &o.via.map.ptr[i].val
125                )
126            );
127        }
128
129        {
130            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
131            if (it != kvmap.end()) {
132                it->second->convert(a1);
133            }
134        }
135
136    }
137    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
138    {
139        o->type = msgpack::type::MAP;
140        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*1));
141        o->via.map.size = 1;
142
143        o->via.map.ptr[0].key = msgpack::object(a0, z);
144        o->via.map.ptr[0].val = msgpack::object(a1, z);
145
146    }
147
148    A0& a0;
149    A1& a1;
150};
151
152template <typename A0, typename A1, typename A2, typename A3>
153struct define_map<A0, A1, A2, A3> {
154    define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3) :
155        a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
156    template <typename Packer>
157    void msgpack_pack(Packer& pk) const
158    {
159        pk.pack_map(2);
160
161        pk.pack(a0);
162        pk.pack(a1);
163        pk.pack(a2);
164        pk.pack(a3);
165    }
166    void msgpack_unpack(msgpack::object const& o) const
167    {
168        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
169        std::map<std::string, msgpack::object const*> kvmap;
170        for (uint32_t i = 0; i < o.via.map.size; ++i) {
171            kvmap.insert(
172                std::map<std::string, msgpack::object const*>::value_type(
173                    std::string(
174                        o.via.map.ptr[i].key.via.str.ptr,
175                        o.via.map.ptr[i].key.via.str.size),
176                    &o.via.map.ptr[i].val
177                )
178            );
179        }
180
181        {
182            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
183            if (it != kvmap.end()) {
184                it->second->convert(a1);
185            }
186        }
187
188        {
189            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
190            if (it != kvmap.end()) {
191                it->second->convert(a3);
192            }
193        }
194
195    }
196    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
197    {
198        o->type = msgpack::type::MAP;
199        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*2));
200        o->via.map.size = 2;
201
202        o->via.map.ptr[0].key = msgpack::object(a0, z);
203        o->via.map.ptr[0].val = msgpack::object(a1, z);
204
205        o->via.map.ptr[1].key = msgpack::object(a2, z);
206        o->via.map.ptr[1].val = msgpack::object(a3, z);
207
208    }
209
210    A0& a0;
211    A1& a1;
212    A2& a2;
213    A3& a3;
214};
215
216template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
217struct define_map<A0, A1, A2, A3, A4, A5> {
218    define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5) :
219        a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
220    template <typename Packer>
221    void msgpack_pack(Packer& pk) const
222    {
223        pk.pack_map(3);
224
225        pk.pack(a0);
226        pk.pack(a1);
227        pk.pack(a2);
228        pk.pack(a3);
229        pk.pack(a4);
230        pk.pack(a5);
231    }
232    void msgpack_unpack(msgpack::object const& o) const
233    {
234        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
235        std::map<std::string, msgpack::object const*> kvmap;
236        for (uint32_t i = 0; i < o.via.map.size; ++i) {
237            kvmap.insert(
238                std::map<std::string, msgpack::object const*>::value_type(
239                    std::string(
240                        o.via.map.ptr[i].key.via.str.ptr,
241                        o.via.map.ptr[i].key.via.str.size),
242                    &o.via.map.ptr[i].val
243                )
244            );
245        }
246
247        {
248            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
249            if (it != kvmap.end()) {
250                it->second->convert(a1);
251            }
252        }
253
254        {
255            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
256            if (it != kvmap.end()) {
257                it->second->convert(a3);
258            }
259        }
260
261        {
262            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
263            if (it != kvmap.end()) {
264                it->second->convert(a5);
265            }
266        }
267
268    }
269    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
270    {
271        o->type = msgpack::type::MAP;
272        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*3));
273        o->via.map.size = 3;
274
275        o->via.map.ptr[0].key = msgpack::object(a0, z);
276        o->via.map.ptr[0].val = msgpack::object(a1, z);
277
278        o->via.map.ptr[1].key = msgpack::object(a2, z);
279        o->via.map.ptr[1].val = msgpack::object(a3, z);
280
281        o->via.map.ptr[2].key = msgpack::object(a4, z);
282        o->via.map.ptr[2].val = msgpack::object(a5, z);
283
284    }
285
286    A0& a0;
287    A1& a1;
288    A2& a2;
289    A3& a3;
290    A4& a4;
291    A5& a5;
292};
293
294template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
295struct define_map<A0, A1, A2, A3, A4, A5, A6, A7> {
296    define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7) :
297        a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
298    template <typename Packer>
299    void msgpack_pack(Packer& pk) const
300    {
301        pk.pack_map(4);
302
303        pk.pack(a0);
304        pk.pack(a1);
305        pk.pack(a2);
306        pk.pack(a3);
307        pk.pack(a4);
308        pk.pack(a5);
309        pk.pack(a6);
310        pk.pack(a7);
311    }
312    void msgpack_unpack(msgpack::object const& o) const
313    {
314        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
315        std::map<std::string, msgpack::object const*> kvmap;
316        for (uint32_t i = 0; i < o.via.map.size; ++i) {
317            kvmap.insert(
318                std::map<std::string, msgpack::object const*>::value_type(
319                    std::string(
320                        o.via.map.ptr[i].key.via.str.ptr,
321                        o.via.map.ptr[i].key.via.str.size),
322                    &o.via.map.ptr[i].val
323                )
324            );
325        }
326
327        {
328            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
329            if (it != kvmap.end()) {
330                it->second->convert(a1);
331            }
332        }
333
334        {
335            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
336            if (it != kvmap.end()) {
337                it->second->convert(a3);
338            }
339        }
340
341        {
342            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
343            if (it != kvmap.end()) {
344                it->second->convert(a5);
345            }
346        }
347
348        {
349            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
350            if (it != kvmap.end()) {
351                it->second->convert(a7);
352            }
353        }
354
355    }
356    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
357    {
358        o->type = msgpack::type::MAP;
359        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*4));
360        o->via.map.size = 4;
361
362        o->via.map.ptr[0].key = msgpack::object(a0, z);
363        o->via.map.ptr[0].val = msgpack::object(a1, z);
364
365        o->via.map.ptr[1].key = msgpack::object(a2, z);
366        o->via.map.ptr[1].val = msgpack::object(a3, z);
367
368        o->via.map.ptr[2].key = msgpack::object(a4, z);
369        o->via.map.ptr[2].val = msgpack::object(a5, z);
370
371        o->via.map.ptr[3].key = msgpack::object(a6, z);
372        o->via.map.ptr[3].val = msgpack::object(a7, z);
373
374    }
375
376    A0& a0;
377    A1& a1;
378    A2& a2;
379    A3& a3;
380    A4& a4;
381    A5& a5;
382    A6& a6;
383    A7& a7;
384};
385
386template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
387struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
388    define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9) :
389        a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
390    template <typename Packer>
391    void msgpack_pack(Packer& pk) const
392    {
393        pk.pack_map(5);
394
395        pk.pack(a0);
396        pk.pack(a1);
397        pk.pack(a2);
398        pk.pack(a3);
399        pk.pack(a4);
400        pk.pack(a5);
401        pk.pack(a6);
402        pk.pack(a7);
403        pk.pack(a8);
404        pk.pack(a9);
405    }
406    void msgpack_unpack(msgpack::object const& o) const
407    {
408        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
409        std::map<std::string, msgpack::object const*> kvmap;
410        for (uint32_t i = 0; i < o.via.map.size; ++i) {
411            kvmap.insert(
412                std::map<std::string, msgpack::object const*>::value_type(
413                    std::string(
414                        o.via.map.ptr[i].key.via.str.ptr,
415                        o.via.map.ptr[i].key.via.str.size),
416                    &o.via.map.ptr[i].val
417                )
418            );
419        }
420
421        {
422            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
423            if (it != kvmap.end()) {
424                it->second->convert(a1);
425            }
426        }
427
428        {
429            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
430            if (it != kvmap.end()) {
431                it->second->convert(a3);
432            }
433        }
434
435        {
436            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
437            if (it != kvmap.end()) {
438                it->second->convert(a5);
439            }
440        }
441
442        {
443            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
444            if (it != kvmap.end()) {
445                it->second->convert(a7);
446            }
447        }
448
449        {
450            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
451            if (it != kvmap.end()) {
452                it->second->convert(a9);
453            }
454        }
455
456    }
457    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
458    {
459        o->type = msgpack::type::MAP;
460        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*5));
461        o->via.map.size = 5;
462
463        o->via.map.ptr[0].key = msgpack::object(a0, z);
464        o->via.map.ptr[0].val = msgpack::object(a1, z);
465
466        o->via.map.ptr[1].key = msgpack::object(a2, z);
467        o->via.map.ptr[1].val = msgpack::object(a3, z);
468
469        o->via.map.ptr[2].key = msgpack::object(a4, z);
470        o->via.map.ptr[2].val = msgpack::object(a5, z);
471
472        o->via.map.ptr[3].key = msgpack::object(a6, z);
473        o->via.map.ptr[3].val = msgpack::object(a7, z);
474
475        o->via.map.ptr[4].key = msgpack::object(a8, z);
476        o->via.map.ptr[4].val = msgpack::object(a9, z);
477
478    }
479
480    A0& a0;
481    A1& a1;
482    A2& a2;
483    A3& a3;
484    A4& a4;
485    A5& a5;
486    A6& a6;
487    A7& a7;
488    A8& a8;
489    A9& a9;
490};
491
492template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
493struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
494    define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11) :
495        a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
496    template <typename Packer>
497    void msgpack_pack(Packer& pk) const
498    {
499        pk.pack_map(6);
500
501        pk.pack(a0);
502        pk.pack(a1);
503        pk.pack(a2);
504        pk.pack(a3);
505        pk.pack(a4);
506        pk.pack(a5);
507        pk.pack(a6);
508        pk.pack(a7);
509        pk.pack(a8);
510        pk.pack(a9);
511        pk.pack(a10);
512        pk.pack(a11);
513    }
514    void msgpack_unpack(msgpack::object const& o) const
515    {
516        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
517        std::map<std::string, msgpack::object const*> kvmap;
518        for (uint32_t i = 0; i < o.via.map.size; ++i) {
519            kvmap.insert(
520                std::map<std::string, msgpack::object const*>::value_type(
521                    std::string(
522                        o.via.map.ptr[i].key.via.str.ptr,
523                        o.via.map.ptr[i].key.via.str.size),
524                    &o.via.map.ptr[i].val
525                )
526            );
527        }
528
529        {
530            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
531            if (it != kvmap.end()) {
532                it->second->convert(a1);
533            }
534        }
535
536        {
537            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
538            if (it != kvmap.end()) {
539                it->second->convert(a3);
540            }
541        }
542
543        {
544            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
545            if (it != kvmap.end()) {
546                it->second->convert(a5);
547            }
548        }
549
550        {
551            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
552            if (it != kvmap.end()) {
553                it->second->convert(a7);
554            }
555        }
556
557        {
558            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
559            if (it != kvmap.end()) {
560                it->second->convert(a9);
561            }
562        }
563
564        {
565            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
566            if (it != kvmap.end()) {
567                it->second->convert(a11);
568            }
569        }
570
571    }
572    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
573    {
574        o->type = msgpack::type::MAP;
575        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*6));
576        o->via.map.size = 6;
577
578        o->via.map.ptr[0].key = msgpack::object(a0, z);
579        o->via.map.ptr[0].val = msgpack::object(a1, z);
580
581        o->via.map.ptr[1].key = msgpack::object(a2, z);
582        o->via.map.ptr[1].val = msgpack::object(a3, z);
583
584        o->via.map.ptr[2].key = msgpack::object(a4, z);
585        o->via.map.ptr[2].val = msgpack::object(a5, z);
586
587        o->via.map.ptr[3].key = msgpack::object(a6, z);
588        o->via.map.ptr[3].val = msgpack::object(a7, z);
589
590        o->via.map.ptr[4].key = msgpack::object(a8, z);
591        o->via.map.ptr[4].val = msgpack::object(a9, z);
592
593        o->via.map.ptr[5].key = msgpack::object(a10, z);
594        o->via.map.ptr[5].val = msgpack::object(a11, z);
595
596    }
597
598    A0& a0;
599    A1& a1;
600    A2& a2;
601    A3& a3;
602    A4& a4;
603    A5& a5;
604    A6& a6;
605    A7& a7;
606    A8& a8;
607    A9& a9;
608    A10& a10;
609    A11& a11;
610};
611
612template <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>
613struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
614    define_map(A0& _a0, A1& _a1, A2& _a2, A3& _a3, A4& _a4, A5& _a5, A6& _a6, A7& _a7, A8& _a8, A9& _a9, A10& _a10, A11& _a11, A12& _a12, A13& _a13) :
615        a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13) {}
616    template <typename Packer>
617    void msgpack_pack(Packer& pk) const
618    {
619        pk.pack_map(7);
620
621        pk.pack(a0);
622        pk.pack(a1);
623        pk.pack(a2);
624        pk.pack(a3);
625        pk.pack(a4);
626        pk.pack(a5);
627        pk.pack(a6);
628        pk.pack(a7);
629        pk.pack(a8);
630        pk.pack(a9);
631        pk.pack(a10);
632        pk.pack(a11);
633        pk.pack(a12);
634        pk.pack(a13);
635    }
636    void msgpack_unpack(msgpack::object const& o) const
637    {
638        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
639        std::map<std::string, msgpack::object const*> kvmap;
640        for (uint32_t i = 0; i < o.via.map.size; ++i) {
641            kvmap.insert(
642                std::map<std::string, msgpack::object const*>::value_type(
643                    std::string(
644                        o.via.map.ptr[i].key.via.str.ptr,
645                        o.via.map.ptr[i].key.via.str.size),
646                    &o.via.map.ptr[i].val
647                )
648            );
649        }
650
651        {
652            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
653            if (it != kvmap.end()) {
654                it->second->convert(a1);
655            }
656        }
657
658        {
659            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
660            if (it != kvmap.end()) {
661                it->second->convert(a3);
662            }
663        }
664
665        {
666            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
667            if (it != kvmap.end()) {
668                it->second->convert(a5);
669            }
670        }
671
672        {
673            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
674            if (it != kvmap.end()) {
675                it->second->convert(a7);
676            }
677        }
678
679        {
680            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
681            if (it != kvmap.end()) {
682                it->second->convert(a9);
683            }
684        }
685
686        {
687            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
688            if (it != kvmap.end()) {
689                it->second->convert(a11);
690            }
691        }
692
693        {
694            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
695            if (it != kvmap.end()) {
696                it->second->convert(a13);
697            }
698        }
699
700    }
701    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
702    {
703        o->type = msgpack::type::MAP;
704        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*7));
705        o->via.map.size = 7;
706
707        o->via.map.ptr[0].key = msgpack::object(a0, z);
708        o->via.map.ptr[0].val = msgpack::object(a1, z);
709
710        o->via.map.ptr[1].key = msgpack::object(a2, z);
711        o->via.map.ptr[1].val = msgpack::object(a3, z);
712
713        o->via.map.ptr[2].key = msgpack::object(a4, z);
714        o->via.map.ptr[2].val = msgpack::object(a5, z);
715
716        o->via.map.ptr[3].key = msgpack::object(a6, z);
717        o->via.map.ptr[3].val = msgpack::object(a7, z);
718
719        o->via.map.ptr[4].key = msgpack::object(a8, z);
720        o->via.map.ptr[4].val = msgpack::object(a9, z);
721
722        o->via.map.ptr[5].key = msgpack::object(a10, z);
723        o->via.map.ptr[5].val = msgpack::object(a11, z);
724
725        o->via.map.ptr[6].key = msgpack::object(a12, z);
726        o->via.map.ptr[6].val = msgpack::object(a13, z);
727
728    }
729
730    A0& a0;
731    A1& a1;
732    A2& a2;
733    A3& a3;
734    A4& a4;
735    A5& a5;
736    A6& a6;
737    A7& a7;
738    A8& a8;
739    A9& a9;
740    A10& a10;
741    A11& a11;
742    A12& a12;
743    A13& a13;
744};
745
746template <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>
747struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
748    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
749        a0(_a0), a1(_a1), a2(_a2), 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) {}
750    template <typename Packer>
751    void msgpack_pack(Packer& pk) const
752    {
753        pk.pack_map(8);
754
755        pk.pack(a0);
756        pk.pack(a1);
757        pk.pack(a2);
758        pk.pack(a3);
759        pk.pack(a4);
760        pk.pack(a5);
761        pk.pack(a6);
762        pk.pack(a7);
763        pk.pack(a8);
764        pk.pack(a9);
765        pk.pack(a10);
766        pk.pack(a11);
767        pk.pack(a12);
768        pk.pack(a13);
769        pk.pack(a14);
770        pk.pack(a15);
771    }
772    void msgpack_unpack(msgpack::object const& o) const
773    {
774        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
775        std::map<std::string, msgpack::object const*> kvmap;
776        for (uint32_t i = 0; i < o.via.map.size; ++i) {
777            kvmap.insert(
778                std::map<std::string, msgpack::object const*>::value_type(
779                    std::string(
780                        o.via.map.ptr[i].key.via.str.ptr,
781                        o.via.map.ptr[i].key.via.str.size),
782                    &o.via.map.ptr[i].val
783                )
784            );
785        }
786
787        {
788            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
789            if (it != kvmap.end()) {
790                it->second->convert(a1);
791            }
792        }
793
794        {
795            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
796            if (it != kvmap.end()) {
797                it->second->convert(a3);
798            }
799        }
800
801        {
802            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
803            if (it != kvmap.end()) {
804                it->second->convert(a5);
805            }
806        }
807
808        {
809            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
810            if (it != kvmap.end()) {
811                it->second->convert(a7);
812            }
813        }
814
815        {
816            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
817            if (it != kvmap.end()) {
818                it->second->convert(a9);
819            }
820        }
821
822        {
823            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
824            if (it != kvmap.end()) {
825                it->second->convert(a11);
826            }
827        }
828
829        {
830            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
831            if (it != kvmap.end()) {
832                it->second->convert(a13);
833            }
834        }
835
836        {
837            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
838            if (it != kvmap.end()) {
839                it->second->convert(a15);
840            }
841        }
842
843    }
844    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
845    {
846        o->type = msgpack::type::MAP;
847        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*8));
848        o->via.map.size = 8;
849
850        o->via.map.ptr[0].key = msgpack::object(a0, z);
851        o->via.map.ptr[0].val = msgpack::object(a1, z);
852
853        o->via.map.ptr[1].key = msgpack::object(a2, z);
854        o->via.map.ptr[1].val = msgpack::object(a3, z);
855
856        o->via.map.ptr[2].key = msgpack::object(a4, z);
857        o->via.map.ptr[2].val = msgpack::object(a5, z);
858
859        o->via.map.ptr[3].key = msgpack::object(a6, z);
860        o->via.map.ptr[3].val = msgpack::object(a7, z);
861
862        o->via.map.ptr[4].key = msgpack::object(a8, z);
863        o->via.map.ptr[4].val = msgpack::object(a9, z);
864
865        o->via.map.ptr[5].key = msgpack::object(a10, z);
866        o->via.map.ptr[5].val = msgpack::object(a11, z);
867
868        o->via.map.ptr[6].key = msgpack::object(a12, z);
869        o->via.map.ptr[6].val = msgpack::object(a13, z);
870
871        o->via.map.ptr[7].key = msgpack::object(a14, z);
872        o->via.map.ptr[7].val = msgpack::object(a15, z);
873
874    }
875
876    A0& a0;
877    A1& a1;
878    A2& a2;
879    A3& a3;
880    A4& a4;
881    A5& a5;
882    A6& a6;
883    A7& a7;
884    A8& a8;
885    A9& a9;
886    A10& a10;
887    A11& a11;
888    A12& a12;
889    A13& a13;
890    A14& a14;
891    A15& a15;
892};
893
894template <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>
895struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
896    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
897        a0(_a0), a1(_a1), a2(_a2), 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) {}
898    template <typename Packer>
899    void msgpack_pack(Packer& pk) const
900    {
901        pk.pack_map(9);
902
903        pk.pack(a0);
904        pk.pack(a1);
905        pk.pack(a2);
906        pk.pack(a3);
907        pk.pack(a4);
908        pk.pack(a5);
909        pk.pack(a6);
910        pk.pack(a7);
911        pk.pack(a8);
912        pk.pack(a9);
913        pk.pack(a10);
914        pk.pack(a11);
915        pk.pack(a12);
916        pk.pack(a13);
917        pk.pack(a14);
918        pk.pack(a15);
919        pk.pack(a16);
920        pk.pack(a17);
921    }
922    void msgpack_unpack(msgpack::object const& o) const
923    {
924        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
925        std::map<std::string, msgpack::object const*> kvmap;
926        for (uint32_t i = 0; i < o.via.map.size; ++i) {
927            kvmap.insert(
928                std::map<std::string, msgpack::object const*>::value_type(
929                    std::string(
930                        o.via.map.ptr[i].key.via.str.ptr,
931                        o.via.map.ptr[i].key.via.str.size),
932                    &o.via.map.ptr[i].val
933                )
934            );
935        }
936
937        {
938            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
939            if (it != kvmap.end()) {
940                it->second->convert(a1);
941            }
942        }
943
944        {
945            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
946            if (it != kvmap.end()) {
947                it->second->convert(a3);
948            }
949        }
950
951        {
952            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
953            if (it != kvmap.end()) {
954                it->second->convert(a5);
955            }
956        }
957
958        {
959            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
960            if (it != kvmap.end()) {
961                it->second->convert(a7);
962            }
963        }
964
965        {
966            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
967            if (it != kvmap.end()) {
968                it->second->convert(a9);
969            }
970        }
971
972        {
973            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
974            if (it != kvmap.end()) {
975                it->second->convert(a11);
976            }
977        }
978
979        {
980            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
981            if (it != kvmap.end()) {
982                it->second->convert(a13);
983            }
984        }
985
986        {
987            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
988            if (it != kvmap.end()) {
989                it->second->convert(a15);
990            }
991        }
992
993        {
994            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
995            if (it != kvmap.end()) {
996                it->second->convert(a17);
997            }
998        }
999
1000    }
1001    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
1002    {
1003        o->type = msgpack::type::MAP;
1004        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*9));
1005        o->via.map.size = 9;
1006
1007        o->via.map.ptr[0].key = msgpack::object(a0, z);
1008        o->via.map.ptr[0].val = msgpack::object(a1, z);
1009
1010        o->via.map.ptr[1].key = msgpack::object(a2, z);
1011        o->via.map.ptr[1].val = msgpack::object(a3, z);
1012
1013        o->via.map.ptr[2].key = msgpack::object(a4, z);
1014        o->via.map.ptr[2].val = msgpack::object(a5, z);
1015
1016        o->via.map.ptr[3].key = msgpack::object(a6, z);
1017        o->via.map.ptr[3].val = msgpack::object(a7, z);
1018
1019        o->via.map.ptr[4].key = msgpack::object(a8, z);
1020        o->via.map.ptr[4].val = msgpack::object(a9, z);
1021
1022        o->via.map.ptr[5].key = msgpack::object(a10, z);
1023        o->via.map.ptr[5].val = msgpack::object(a11, z);
1024
1025        o->via.map.ptr[6].key = msgpack::object(a12, z);
1026        o->via.map.ptr[6].val = msgpack::object(a13, z);
1027
1028        o->via.map.ptr[7].key = msgpack::object(a14, z);
1029        o->via.map.ptr[7].val = msgpack::object(a15, z);
1030
1031        o->via.map.ptr[8].key = msgpack::object(a16, z);
1032        o->via.map.ptr[8].val = msgpack::object(a17, z);
1033
1034    }
1035
1036    A0& a0;
1037    A1& a1;
1038    A2& a2;
1039    A3& a3;
1040    A4& a4;
1041    A5& a5;
1042    A6& a6;
1043    A7& a7;
1044    A8& a8;
1045    A9& a9;
1046    A10& a10;
1047    A11& a11;
1048    A12& a12;
1049    A13& a13;
1050    A14& a14;
1051    A15& a15;
1052    A16& a16;
1053    A17& a17;
1054};
1055
1056template <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>
1057struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
1058    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
1059        a0(_a0), a1(_a1), a2(_a2), 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) {}
1060    template <typename Packer>
1061    void msgpack_pack(Packer& pk) const
1062    {
1063        pk.pack_map(10);
1064
1065        pk.pack(a0);
1066        pk.pack(a1);
1067        pk.pack(a2);
1068        pk.pack(a3);
1069        pk.pack(a4);
1070        pk.pack(a5);
1071        pk.pack(a6);
1072        pk.pack(a7);
1073        pk.pack(a8);
1074        pk.pack(a9);
1075        pk.pack(a10);
1076        pk.pack(a11);
1077        pk.pack(a12);
1078        pk.pack(a13);
1079        pk.pack(a14);
1080        pk.pack(a15);
1081        pk.pack(a16);
1082        pk.pack(a17);
1083        pk.pack(a18);
1084        pk.pack(a19);
1085    }
1086    void msgpack_unpack(msgpack::object const& o) const
1087    {
1088        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
1089        std::map<std::string, msgpack::object const*> kvmap;
1090        for (uint32_t i = 0; i < o.via.map.size; ++i) {
1091            kvmap.insert(
1092                std::map<std::string, msgpack::object const*>::value_type(
1093                    std::string(
1094                        o.via.map.ptr[i].key.via.str.ptr,
1095                        o.via.map.ptr[i].key.via.str.size),
1096                    &o.via.map.ptr[i].val
1097                )
1098            );
1099        }
1100
1101        {
1102            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
1103            if (it != kvmap.end()) {
1104                it->second->convert(a1);
1105            }
1106        }
1107
1108        {
1109            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
1110            if (it != kvmap.end()) {
1111                it->second->convert(a3);
1112            }
1113        }
1114
1115        {
1116            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
1117            if (it != kvmap.end()) {
1118                it->second->convert(a5);
1119            }
1120        }
1121
1122        {
1123            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
1124            if (it != kvmap.end()) {
1125                it->second->convert(a7);
1126            }
1127        }
1128
1129        {
1130            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
1131            if (it != kvmap.end()) {
1132                it->second->convert(a9);
1133            }
1134        }
1135
1136        {
1137            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
1138            if (it != kvmap.end()) {
1139                it->second->convert(a11);
1140            }
1141        }
1142
1143        {
1144            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
1145            if (it != kvmap.end()) {
1146                it->second->convert(a13);
1147            }
1148        }
1149
1150        {
1151            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
1152            if (it != kvmap.end()) {
1153                it->second->convert(a15);
1154            }
1155        }
1156
1157        {
1158            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
1159            if (it != kvmap.end()) {
1160                it->second->convert(a17);
1161            }
1162        }
1163
1164        {
1165            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
1166            if (it != kvmap.end()) {
1167                it->second->convert(a19);
1168            }
1169        }
1170
1171    }
1172    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
1173    {
1174        o->type = msgpack::type::MAP;
1175        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*10));
1176        o->via.map.size = 10;
1177
1178        o->via.map.ptr[0].key = msgpack::object(a0, z);
1179        o->via.map.ptr[0].val = msgpack::object(a1, z);
1180
1181        o->via.map.ptr[1].key = msgpack::object(a2, z);
1182        o->via.map.ptr[1].val = msgpack::object(a3, z);
1183
1184        o->via.map.ptr[2].key = msgpack::object(a4, z);
1185        o->via.map.ptr[2].val = msgpack::object(a5, z);
1186
1187        o->via.map.ptr[3].key = msgpack::object(a6, z);
1188        o->via.map.ptr[3].val = msgpack::object(a7, z);
1189
1190        o->via.map.ptr[4].key = msgpack::object(a8, z);
1191        o->via.map.ptr[4].val = msgpack::object(a9, z);
1192
1193        o->via.map.ptr[5].key = msgpack::object(a10, z);
1194        o->via.map.ptr[5].val = msgpack::object(a11, z);
1195
1196        o->via.map.ptr[6].key = msgpack::object(a12, z);
1197        o->via.map.ptr[6].val = msgpack::object(a13, z);
1198
1199        o->via.map.ptr[7].key = msgpack::object(a14, z);
1200        o->via.map.ptr[7].val = msgpack::object(a15, z);
1201
1202        o->via.map.ptr[8].key = msgpack::object(a16, z);
1203        o->via.map.ptr[8].val = msgpack::object(a17, z);
1204
1205        o->via.map.ptr[9].key = msgpack::object(a18, z);
1206        o->via.map.ptr[9].val = msgpack::object(a19, z);
1207
1208    }
1209
1210    A0& a0;
1211    A1& a1;
1212    A2& a2;
1213    A3& a3;
1214    A4& a4;
1215    A5& a5;
1216    A6& a6;
1217    A7& a7;
1218    A8& a8;
1219    A9& a9;
1220    A10& a10;
1221    A11& a11;
1222    A12& a12;
1223    A13& a13;
1224    A14& a14;
1225    A15& a15;
1226    A16& a16;
1227    A17& a17;
1228    A18& a18;
1229    A19& a19;
1230};
1231
1232template <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>
1233struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
1234    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
1235        a0(_a0), a1(_a1), a2(_a2), 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) {}
1236    template <typename Packer>
1237    void msgpack_pack(Packer& pk) const
1238    {
1239        pk.pack_map(11);
1240
1241        pk.pack(a0);
1242        pk.pack(a1);
1243        pk.pack(a2);
1244        pk.pack(a3);
1245        pk.pack(a4);
1246        pk.pack(a5);
1247        pk.pack(a6);
1248        pk.pack(a7);
1249        pk.pack(a8);
1250        pk.pack(a9);
1251        pk.pack(a10);
1252        pk.pack(a11);
1253        pk.pack(a12);
1254        pk.pack(a13);
1255        pk.pack(a14);
1256        pk.pack(a15);
1257        pk.pack(a16);
1258        pk.pack(a17);
1259        pk.pack(a18);
1260        pk.pack(a19);
1261        pk.pack(a20);
1262        pk.pack(a21);
1263    }
1264    void msgpack_unpack(msgpack::object const& o) const
1265    {
1266        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
1267        std::map<std::string, msgpack::object const*> kvmap;
1268        for (uint32_t i = 0; i < o.via.map.size; ++i) {
1269            kvmap.insert(
1270                std::map<std::string, msgpack::object const*>::value_type(
1271                    std::string(
1272                        o.via.map.ptr[i].key.via.str.ptr,
1273                        o.via.map.ptr[i].key.via.str.size),
1274                    &o.via.map.ptr[i].val
1275                )
1276            );
1277        }
1278
1279        {
1280            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
1281            if (it != kvmap.end()) {
1282                it->second->convert(a1);
1283            }
1284        }
1285
1286        {
1287            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
1288            if (it != kvmap.end()) {
1289                it->second->convert(a3);
1290            }
1291        }
1292
1293        {
1294            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
1295            if (it != kvmap.end()) {
1296                it->second->convert(a5);
1297            }
1298        }
1299
1300        {
1301            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
1302            if (it != kvmap.end()) {
1303                it->second->convert(a7);
1304            }
1305        }
1306
1307        {
1308            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
1309            if (it != kvmap.end()) {
1310                it->second->convert(a9);
1311            }
1312        }
1313
1314        {
1315            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
1316            if (it != kvmap.end()) {
1317                it->second->convert(a11);
1318            }
1319        }
1320
1321        {
1322            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
1323            if (it != kvmap.end()) {
1324                it->second->convert(a13);
1325            }
1326        }
1327
1328        {
1329            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
1330            if (it != kvmap.end()) {
1331                it->second->convert(a15);
1332            }
1333        }
1334
1335        {
1336            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
1337            if (it != kvmap.end()) {
1338                it->second->convert(a17);
1339            }
1340        }
1341
1342        {
1343            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
1344            if (it != kvmap.end()) {
1345                it->second->convert(a19);
1346            }
1347        }
1348
1349        {
1350            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
1351            if (it != kvmap.end()) {
1352                it->second->convert(a21);
1353            }
1354        }
1355
1356    }
1357    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
1358    {
1359        o->type = msgpack::type::MAP;
1360        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*11));
1361        o->via.map.size = 11;
1362
1363        o->via.map.ptr[0].key = msgpack::object(a0, z);
1364        o->via.map.ptr[0].val = msgpack::object(a1, z);
1365
1366        o->via.map.ptr[1].key = msgpack::object(a2, z);
1367        o->via.map.ptr[1].val = msgpack::object(a3, z);
1368
1369        o->via.map.ptr[2].key = msgpack::object(a4, z);
1370        o->via.map.ptr[2].val = msgpack::object(a5, z);
1371
1372        o->via.map.ptr[3].key = msgpack::object(a6, z);
1373        o->via.map.ptr[3].val = msgpack::object(a7, z);
1374
1375        o->via.map.ptr[4].key = msgpack::object(a8, z);
1376        o->via.map.ptr[4].val = msgpack::object(a9, z);
1377
1378        o->via.map.ptr[5].key = msgpack::object(a10, z);
1379        o->via.map.ptr[5].val = msgpack::object(a11, z);
1380
1381        o->via.map.ptr[6].key = msgpack::object(a12, z);
1382        o->via.map.ptr[6].val = msgpack::object(a13, z);
1383
1384        o->via.map.ptr[7].key = msgpack::object(a14, z);
1385        o->via.map.ptr[7].val = msgpack::object(a15, z);
1386
1387        o->via.map.ptr[8].key = msgpack::object(a16, z);
1388        o->via.map.ptr[8].val = msgpack::object(a17, z);
1389
1390        o->via.map.ptr[9].key = msgpack::object(a18, z);
1391        o->via.map.ptr[9].val = msgpack::object(a19, z);
1392
1393        o->via.map.ptr[10].key = msgpack::object(a20, z);
1394        o->via.map.ptr[10].val = msgpack::object(a21, z);
1395
1396    }
1397
1398    A0& a0;
1399    A1& a1;
1400    A2& a2;
1401    A3& a3;
1402    A4& a4;
1403    A5& a5;
1404    A6& a6;
1405    A7& a7;
1406    A8& a8;
1407    A9& a9;
1408    A10& a10;
1409    A11& a11;
1410    A12& a12;
1411    A13& a13;
1412    A14& a14;
1413    A15& a15;
1414    A16& a16;
1415    A17& a17;
1416    A18& a18;
1417    A19& a19;
1418    A20& a20;
1419    A21& a21;
1420};
1421
1422template <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>
1423struct define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> {
1424    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
1425        a0(_a0), a1(_a1), a2(_a2), 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) {}
1426    template <typename Packer>
1427    void msgpack_pack(Packer& pk) const
1428    {
1429        pk.pack_map(12);
1430
1431        pk.pack(a0);
1432        pk.pack(a1);
1433        pk.pack(a2);
1434        pk.pack(a3);
1435        pk.pack(a4);
1436        pk.pack(a5);
1437        pk.pack(a6);
1438        pk.pack(a7);
1439        pk.pack(a8);
1440        pk.pack(a9);
1441        pk.pack(a10);
1442        pk.pack(a11);
1443        pk.pack(a12);
1444        pk.pack(a13);
1445        pk.pack(a14);
1446        pk.pack(a15);
1447        pk.pack(a16);
1448        pk.pack(a17);
1449        pk.pack(a18);
1450        pk.pack(a19);
1451        pk.pack(a20);
1452        pk.pack(a21);
1453        pk.pack(a22);
1454        pk.pack(a23);
1455    }
1456    void msgpack_unpack(msgpack::object const& o) const
1457    {
1458        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
1459        std::map<std::string, msgpack::object const*> kvmap;
1460        for (uint32_t i = 0; i < o.via.map.size; ++i) {
1461            kvmap.insert(
1462                std::map<std::string, msgpack::object const*>::value_type(
1463                    std::string(
1464                        o.via.map.ptr[i].key.via.str.ptr,
1465                        o.via.map.ptr[i].key.via.str.size),
1466                    &o.via.map.ptr[i].val
1467                )
1468            );
1469        }
1470
1471        {
1472            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
1473            if (it != kvmap.end()) {
1474                it->second->convert(a1);
1475            }
1476        }
1477
1478        {
1479            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
1480            if (it != kvmap.end()) {
1481                it->second->convert(a3);
1482            }
1483        }
1484
1485        {
1486            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
1487            if (it != kvmap.end()) {
1488                it->second->convert(a5);
1489            }
1490        }
1491
1492        {
1493            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
1494            if (it != kvmap.end()) {
1495                it->second->convert(a7);
1496            }
1497        }
1498
1499        {
1500            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
1501            if (it != kvmap.end()) {
1502                it->second->convert(a9);
1503            }
1504        }
1505
1506        {
1507            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
1508            if (it != kvmap.end()) {
1509                it->second->convert(a11);
1510            }
1511        }
1512
1513        {
1514            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
1515            if (it != kvmap.end()) {
1516                it->second->convert(a13);
1517            }
1518        }
1519
1520        {
1521            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
1522            if (it != kvmap.end()) {
1523                it->second->convert(a15);
1524            }
1525        }
1526
1527        {
1528            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
1529            if (it != kvmap.end()) {
1530                it->second->convert(a17);
1531            }
1532        }
1533
1534        {
1535            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
1536            if (it != kvmap.end()) {
1537                it->second->convert(a19);
1538            }
1539        }
1540
1541        {
1542            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
1543            if (it != kvmap.end()) {
1544                it->second->convert(a21);
1545            }
1546        }
1547
1548        {
1549            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
1550            if (it != kvmap.end()) {
1551                it->second->convert(a23);
1552            }
1553        }
1554
1555    }
1556    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
1557    {
1558        o->type = msgpack::type::MAP;
1559        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*12));
1560        o->via.map.size = 12;
1561
1562        o->via.map.ptr[0].key = msgpack::object(a0, z);
1563        o->via.map.ptr[0].val = msgpack::object(a1, z);
1564
1565        o->via.map.ptr[1].key = msgpack::object(a2, z);
1566        o->via.map.ptr[1].val = msgpack::object(a3, z);
1567
1568        o->via.map.ptr[2].key = msgpack::object(a4, z);
1569        o->via.map.ptr[2].val = msgpack::object(a5, z);
1570
1571        o->via.map.ptr[3].key = msgpack::object(a6, z);
1572        o->via.map.ptr[3].val = msgpack::object(a7, z);
1573
1574        o->via.map.ptr[4].key = msgpack::object(a8, z);
1575        o->via.map.ptr[4].val = msgpack::object(a9, z);
1576
1577        o->via.map.ptr[5].key = msgpack::object(a10, z);
1578        o->via.map.ptr[5].val = msgpack::object(a11, z);
1579
1580        o->via.map.ptr[6].key = msgpack::object(a12, z);
1581        o->via.map.ptr[6].val = msgpack::object(a13, z);
1582
1583        o->via.map.ptr[7].key = msgpack::object(a14, z);
1584        o->via.map.ptr[7].val = msgpack::object(a15, z);
1585
1586        o->via.map.ptr[8].key = msgpack::object(a16, z);
1587        o->via.map.ptr[8].val = msgpack::object(a17, z);
1588
1589        o->via.map.ptr[9].key = msgpack::object(a18, z);
1590        o->via.map.ptr[9].val = msgpack::object(a19, z);
1591
1592        o->via.map.ptr[10].key = msgpack::object(a20, z);
1593        o->via.map.ptr[10].val = msgpack::object(a21, z);
1594
1595        o->via.map.ptr[11].key = msgpack::object(a22, z);
1596        o->via.map.ptr[11].val = msgpack::object(a23, z);
1597
1598    }
1599
1600    A0& a0;
1601    A1& a1;
1602    A2& a2;
1603    A3& a3;
1604    A4& a4;
1605    A5& a5;
1606    A6& a6;
1607    A7& a7;
1608    A8& a8;
1609    A9& a9;
1610    A10& a10;
1611    A11& a11;
1612    A12& a12;
1613    A13& a13;
1614    A14& a14;
1615    A15& a15;
1616    A16& a16;
1617    A17& a17;
1618    A18& a18;
1619    A19& a19;
1620    A20& a20;
1621    A21& a21;
1622    A22& a22;
1623    A23& a23;
1624};
1625
1626template <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>
1627struct define_map<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> {
1628    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
1629        a0(_a0), a1(_a1), a2(_a2), 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) {}
1630    template <typename Packer>
1631    void msgpack_pack(Packer& pk) const
1632    {
1633        pk.pack_map(13);
1634
1635        pk.pack(a0);
1636        pk.pack(a1);
1637        pk.pack(a2);
1638        pk.pack(a3);
1639        pk.pack(a4);
1640        pk.pack(a5);
1641        pk.pack(a6);
1642        pk.pack(a7);
1643        pk.pack(a8);
1644        pk.pack(a9);
1645        pk.pack(a10);
1646        pk.pack(a11);
1647        pk.pack(a12);
1648        pk.pack(a13);
1649        pk.pack(a14);
1650        pk.pack(a15);
1651        pk.pack(a16);
1652        pk.pack(a17);
1653        pk.pack(a18);
1654        pk.pack(a19);
1655        pk.pack(a20);
1656        pk.pack(a21);
1657        pk.pack(a22);
1658        pk.pack(a23);
1659        pk.pack(a24);
1660        pk.pack(a25);
1661    }
1662    void msgpack_unpack(msgpack::object const& o) const
1663    {
1664        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
1665        std::map<std::string, msgpack::object const*> kvmap;
1666        for (uint32_t i = 0; i < o.via.map.size; ++i) {
1667            kvmap.insert(
1668                std::map<std::string, msgpack::object const*>::value_type(
1669                    std::string(
1670                        o.via.map.ptr[i].key.via.str.ptr,
1671                        o.via.map.ptr[i].key.via.str.size),
1672                    &o.via.map.ptr[i].val
1673                )
1674            );
1675        }
1676
1677        {
1678            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
1679            if (it != kvmap.end()) {
1680                it->second->convert(a1);
1681            }
1682        }
1683
1684        {
1685            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
1686            if (it != kvmap.end()) {
1687                it->second->convert(a3);
1688            }
1689        }
1690
1691        {
1692            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
1693            if (it != kvmap.end()) {
1694                it->second->convert(a5);
1695            }
1696        }
1697
1698        {
1699            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
1700            if (it != kvmap.end()) {
1701                it->second->convert(a7);
1702            }
1703        }
1704
1705        {
1706            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
1707            if (it != kvmap.end()) {
1708                it->second->convert(a9);
1709            }
1710        }
1711
1712        {
1713            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
1714            if (it != kvmap.end()) {
1715                it->second->convert(a11);
1716            }
1717        }
1718
1719        {
1720            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
1721            if (it != kvmap.end()) {
1722                it->second->convert(a13);
1723            }
1724        }
1725
1726        {
1727            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
1728            if (it != kvmap.end()) {
1729                it->second->convert(a15);
1730            }
1731        }
1732
1733        {
1734            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
1735            if (it != kvmap.end()) {
1736                it->second->convert(a17);
1737            }
1738        }
1739
1740        {
1741            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
1742            if (it != kvmap.end()) {
1743                it->second->convert(a19);
1744            }
1745        }
1746
1747        {
1748            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
1749            if (it != kvmap.end()) {
1750                it->second->convert(a21);
1751            }
1752        }
1753
1754        {
1755            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
1756            if (it != kvmap.end()) {
1757                it->second->convert(a23);
1758            }
1759        }
1760
1761        {
1762            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
1763            if (it != kvmap.end()) {
1764                it->second->convert(a25);
1765            }
1766        }
1767
1768    }
1769    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
1770    {
1771        o->type = msgpack::type::MAP;
1772        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*13));
1773        o->via.map.size = 13;
1774
1775        o->via.map.ptr[0].key = msgpack::object(a0, z);
1776        o->via.map.ptr[0].val = msgpack::object(a1, z);
1777
1778        o->via.map.ptr[1].key = msgpack::object(a2, z);
1779        o->via.map.ptr[1].val = msgpack::object(a3, z);
1780
1781        o->via.map.ptr[2].key = msgpack::object(a4, z);
1782        o->via.map.ptr[2].val = msgpack::object(a5, z);
1783
1784        o->via.map.ptr[3].key = msgpack::object(a6, z);
1785        o->via.map.ptr[3].val = msgpack::object(a7, z);
1786
1787        o->via.map.ptr[4].key = msgpack::object(a8, z);
1788        o->via.map.ptr[4].val = msgpack::object(a9, z);
1789
1790        o->via.map.ptr[5].key = msgpack::object(a10, z);
1791        o->via.map.ptr[5].val = msgpack::object(a11, z);
1792
1793        o->via.map.ptr[6].key = msgpack::object(a12, z);
1794        o->via.map.ptr[6].val = msgpack::object(a13, z);
1795
1796        o->via.map.ptr[7].key = msgpack::object(a14, z);
1797        o->via.map.ptr[7].val = msgpack::object(a15, z);
1798
1799        o->via.map.ptr[8].key = msgpack::object(a16, z);
1800        o->via.map.ptr[8].val = msgpack::object(a17, z);
1801
1802        o->via.map.ptr[9].key = msgpack::object(a18, z);
1803        o->via.map.ptr[9].val = msgpack::object(a19, z);
1804
1805        o->via.map.ptr[10].key = msgpack::object(a20, z);
1806        o->via.map.ptr[10].val = msgpack::object(a21, z);
1807
1808        o->via.map.ptr[11].key = msgpack::object(a22, z);
1809        o->via.map.ptr[11].val = msgpack::object(a23, z);
1810
1811        o->via.map.ptr[12].key = msgpack::object(a24, z);
1812        o->via.map.ptr[12].val = msgpack::object(a25, z);
1813
1814    }
1815
1816    A0& a0;
1817    A1& a1;
1818    A2& a2;
1819    A3& a3;
1820    A4& a4;
1821    A5& a5;
1822    A6& a6;
1823    A7& a7;
1824    A8& a8;
1825    A9& a9;
1826    A10& a10;
1827    A11& a11;
1828    A12& a12;
1829    A13& a13;
1830    A14& a14;
1831    A15& a15;
1832    A16& a16;
1833    A17& a17;
1834    A18& a18;
1835    A19& a19;
1836    A20& a20;
1837    A21& a21;
1838    A22& a22;
1839    A23& a23;
1840    A24& a24;
1841    A25& a25;
1842};
1843
1844template <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>
1845struct define_map<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> {
1846    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
1847        a0(_a0), a1(_a1), a2(_a2), 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) {}
1848    template <typename Packer>
1849    void msgpack_pack(Packer& pk) const
1850    {
1851        pk.pack_map(14);
1852
1853        pk.pack(a0);
1854        pk.pack(a1);
1855        pk.pack(a2);
1856        pk.pack(a3);
1857        pk.pack(a4);
1858        pk.pack(a5);
1859        pk.pack(a6);
1860        pk.pack(a7);
1861        pk.pack(a8);
1862        pk.pack(a9);
1863        pk.pack(a10);
1864        pk.pack(a11);
1865        pk.pack(a12);
1866        pk.pack(a13);
1867        pk.pack(a14);
1868        pk.pack(a15);
1869        pk.pack(a16);
1870        pk.pack(a17);
1871        pk.pack(a18);
1872        pk.pack(a19);
1873        pk.pack(a20);
1874        pk.pack(a21);
1875        pk.pack(a22);
1876        pk.pack(a23);
1877        pk.pack(a24);
1878        pk.pack(a25);
1879        pk.pack(a26);
1880        pk.pack(a27);
1881    }
1882    void msgpack_unpack(msgpack::object const& o) const
1883    {
1884        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
1885        std::map<std::string, msgpack::object const*> kvmap;
1886        for (uint32_t i = 0; i < o.via.map.size; ++i) {
1887            kvmap.insert(
1888                std::map<std::string, msgpack::object const*>::value_type(
1889                    std::string(
1890                        o.via.map.ptr[i].key.via.str.ptr,
1891                        o.via.map.ptr[i].key.via.str.size),
1892                    &o.via.map.ptr[i].val
1893                )
1894            );
1895        }
1896
1897        {
1898            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
1899            if (it != kvmap.end()) {
1900                it->second->convert(a1);
1901            }
1902        }
1903
1904        {
1905            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
1906            if (it != kvmap.end()) {
1907                it->second->convert(a3);
1908            }
1909        }
1910
1911        {
1912            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
1913            if (it != kvmap.end()) {
1914                it->second->convert(a5);
1915            }
1916        }
1917
1918        {
1919            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
1920            if (it != kvmap.end()) {
1921                it->second->convert(a7);
1922            }
1923        }
1924
1925        {
1926            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
1927            if (it != kvmap.end()) {
1928                it->second->convert(a9);
1929            }
1930        }
1931
1932        {
1933            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
1934            if (it != kvmap.end()) {
1935                it->second->convert(a11);
1936            }
1937        }
1938
1939        {
1940            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
1941            if (it != kvmap.end()) {
1942                it->second->convert(a13);
1943            }
1944        }
1945
1946        {
1947            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
1948            if (it != kvmap.end()) {
1949                it->second->convert(a15);
1950            }
1951        }
1952
1953        {
1954            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
1955            if (it != kvmap.end()) {
1956                it->second->convert(a17);
1957            }
1958        }
1959
1960        {
1961            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
1962            if (it != kvmap.end()) {
1963                it->second->convert(a19);
1964            }
1965        }
1966
1967        {
1968            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
1969            if (it != kvmap.end()) {
1970                it->second->convert(a21);
1971            }
1972        }
1973
1974        {
1975            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
1976            if (it != kvmap.end()) {
1977                it->second->convert(a23);
1978            }
1979        }
1980
1981        {
1982            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
1983            if (it != kvmap.end()) {
1984                it->second->convert(a25);
1985            }
1986        }
1987
1988        {
1989            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a26);
1990            if (it != kvmap.end()) {
1991                it->second->convert(a27);
1992            }
1993        }
1994
1995    }
1996    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
1997    {
1998        o->type = msgpack::type::MAP;
1999        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*14));
2000        o->via.map.size = 14;
2001
2002        o->via.map.ptr[0].key = msgpack::object(a0, z);
2003        o->via.map.ptr[0].val = msgpack::object(a1, z);
2004
2005        o->via.map.ptr[1].key = msgpack::object(a2, z);
2006        o->via.map.ptr[1].val = msgpack::object(a3, z);
2007
2008        o->via.map.ptr[2].key = msgpack::object(a4, z);
2009        o->via.map.ptr[2].val = msgpack::object(a5, z);
2010
2011        o->via.map.ptr[3].key = msgpack::object(a6, z);
2012        o->via.map.ptr[3].val = msgpack::object(a7, z);
2013
2014        o->via.map.ptr[4].key = msgpack::object(a8, z);
2015        o->via.map.ptr[4].val = msgpack::object(a9, z);
2016
2017        o->via.map.ptr[5].key = msgpack::object(a10, z);
2018        o->via.map.ptr[5].val = msgpack::object(a11, z);
2019
2020        o->via.map.ptr[6].key = msgpack::object(a12, z);
2021        o->via.map.ptr[6].val = msgpack::object(a13, z);
2022
2023        o->via.map.ptr[7].key = msgpack::object(a14, z);
2024        o->via.map.ptr[7].val = msgpack::object(a15, z);
2025
2026        o->via.map.ptr[8].key = msgpack::object(a16, z);
2027        o->via.map.ptr[8].val = msgpack::object(a17, z);
2028
2029        o->via.map.ptr[9].key = msgpack::object(a18, z);
2030        o->via.map.ptr[9].val = msgpack::object(a19, z);
2031
2032        o->via.map.ptr[10].key = msgpack::object(a20, z);
2033        o->via.map.ptr[10].val = msgpack::object(a21, z);
2034
2035        o->via.map.ptr[11].key = msgpack::object(a22, z);
2036        o->via.map.ptr[11].val = msgpack::object(a23, z);
2037
2038        o->via.map.ptr[12].key = msgpack::object(a24, z);
2039        o->via.map.ptr[12].val = msgpack::object(a25, z);
2040
2041        o->via.map.ptr[13].key = msgpack::object(a26, z);
2042        o->via.map.ptr[13].val = msgpack::object(a27, z);
2043
2044    }
2045
2046    A0& a0;
2047    A1& a1;
2048    A2& a2;
2049    A3& a3;
2050    A4& a4;
2051    A5& a5;
2052    A6& a6;
2053    A7& a7;
2054    A8& a8;
2055    A9& a9;
2056    A10& a10;
2057    A11& a11;
2058    A12& a12;
2059    A13& a13;
2060    A14& a14;
2061    A15& a15;
2062    A16& a16;
2063    A17& a17;
2064    A18& a18;
2065    A19& a19;
2066    A20& a20;
2067    A21& a21;
2068    A22& a22;
2069    A23& a23;
2070    A24& a24;
2071    A25& a25;
2072    A26& a26;
2073    A27& a27;
2074};
2075
2076template <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>
2077struct define_map<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> {
2078    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
2079        a0(_a0), a1(_a1), a2(_a2), 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) {}
2080    template <typename Packer>
2081    void msgpack_pack(Packer& pk) const
2082    {
2083        pk.pack_map(15);
2084
2085        pk.pack(a0);
2086        pk.pack(a1);
2087        pk.pack(a2);
2088        pk.pack(a3);
2089        pk.pack(a4);
2090        pk.pack(a5);
2091        pk.pack(a6);
2092        pk.pack(a7);
2093        pk.pack(a8);
2094        pk.pack(a9);
2095        pk.pack(a10);
2096        pk.pack(a11);
2097        pk.pack(a12);
2098        pk.pack(a13);
2099        pk.pack(a14);
2100        pk.pack(a15);
2101        pk.pack(a16);
2102        pk.pack(a17);
2103        pk.pack(a18);
2104        pk.pack(a19);
2105        pk.pack(a20);
2106        pk.pack(a21);
2107        pk.pack(a22);
2108        pk.pack(a23);
2109        pk.pack(a24);
2110        pk.pack(a25);
2111        pk.pack(a26);
2112        pk.pack(a27);
2113        pk.pack(a28);
2114        pk.pack(a29);
2115    }
2116    void msgpack_unpack(msgpack::object const& o) const
2117    {
2118        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
2119        std::map<std::string, msgpack::object const*> kvmap;
2120        for (uint32_t i = 0; i < o.via.map.size; ++i) {
2121            kvmap.insert(
2122                std::map<std::string, msgpack::object const*>::value_type(
2123                    std::string(
2124                        o.via.map.ptr[i].key.via.str.ptr,
2125                        o.via.map.ptr[i].key.via.str.size),
2126                    &o.via.map.ptr[i].val
2127                )
2128            );
2129        }
2130
2131        {
2132            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
2133            if (it != kvmap.end()) {
2134                it->second->convert(a1);
2135            }
2136        }
2137
2138        {
2139            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
2140            if (it != kvmap.end()) {
2141                it->second->convert(a3);
2142            }
2143        }
2144
2145        {
2146            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
2147            if (it != kvmap.end()) {
2148                it->second->convert(a5);
2149            }
2150        }
2151
2152        {
2153            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
2154            if (it != kvmap.end()) {
2155                it->second->convert(a7);
2156            }
2157        }
2158
2159        {
2160            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
2161            if (it != kvmap.end()) {
2162                it->second->convert(a9);
2163            }
2164        }
2165
2166        {
2167            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
2168            if (it != kvmap.end()) {
2169                it->second->convert(a11);
2170            }
2171        }
2172
2173        {
2174            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
2175            if (it != kvmap.end()) {
2176                it->second->convert(a13);
2177            }
2178        }
2179
2180        {
2181            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
2182            if (it != kvmap.end()) {
2183                it->second->convert(a15);
2184            }
2185        }
2186
2187        {
2188            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
2189            if (it != kvmap.end()) {
2190                it->second->convert(a17);
2191            }
2192        }
2193
2194        {
2195            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
2196            if (it != kvmap.end()) {
2197                it->second->convert(a19);
2198            }
2199        }
2200
2201        {
2202            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
2203            if (it != kvmap.end()) {
2204                it->second->convert(a21);
2205            }
2206        }
2207
2208        {
2209            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
2210            if (it != kvmap.end()) {
2211                it->second->convert(a23);
2212            }
2213        }
2214
2215        {
2216            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
2217            if (it != kvmap.end()) {
2218                it->second->convert(a25);
2219            }
2220        }
2221
2222        {
2223            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a26);
2224            if (it != kvmap.end()) {
2225                it->second->convert(a27);
2226            }
2227        }
2228
2229        {
2230            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a28);
2231            if (it != kvmap.end()) {
2232                it->second->convert(a29);
2233            }
2234        }
2235
2236    }
2237    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
2238    {
2239        o->type = msgpack::type::MAP;
2240        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*15));
2241        o->via.map.size = 15;
2242
2243        o->via.map.ptr[0].key = msgpack::object(a0, z);
2244        o->via.map.ptr[0].val = msgpack::object(a1, z);
2245
2246        o->via.map.ptr[1].key = msgpack::object(a2, z);
2247        o->via.map.ptr[1].val = msgpack::object(a3, z);
2248
2249        o->via.map.ptr[2].key = msgpack::object(a4, z);
2250        o->via.map.ptr[2].val = msgpack::object(a5, z);
2251
2252        o->via.map.ptr[3].key = msgpack::object(a6, z);
2253        o->via.map.ptr[3].val = msgpack::object(a7, z);
2254
2255        o->via.map.ptr[4].key = msgpack::object(a8, z);
2256        o->via.map.ptr[4].val = msgpack::object(a9, z);
2257
2258        o->via.map.ptr[5].key = msgpack::object(a10, z);
2259        o->via.map.ptr[5].val = msgpack::object(a11, z);
2260
2261        o->via.map.ptr[6].key = msgpack::object(a12, z);
2262        o->via.map.ptr[6].val = msgpack::object(a13, z);
2263
2264        o->via.map.ptr[7].key = msgpack::object(a14, z);
2265        o->via.map.ptr[7].val = msgpack::object(a15, z);
2266
2267        o->via.map.ptr[8].key = msgpack::object(a16, z);
2268        o->via.map.ptr[8].val = msgpack::object(a17, z);
2269
2270        o->via.map.ptr[9].key = msgpack::object(a18, z);
2271        o->via.map.ptr[9].val = msgpack::object(a19, z);
2272
2273        o->via.map.ptr[10].key = msgpack::object(a20, z);
2274        o->via.map.ptr[10].val = msgpack::object(a21, z);
2275
2276        o->via.map.ptr[11].key = msgpack::object(a22, z);
2277        o->via.map.ptr[11].val = msgpack::object(a23, z);
2278
2279        o->via.map.ptr[12].key = msgpack::object(a24, z);
2280        o->via.map.ptr[12].val = msgpack::object(a25, z);
2281
2282        o->via.map.ptr[13].key = msgpack::object(a26, z);
2283        o->via.map.ptr[13].val = msgpack::object(a27, z);
2284
2285        o->via.map.ptr[14].key = msgpack::object(a28, z);
2286        o->via.map.ptr[14].val = msgpack::object(a29, z);
2287
2288    }
2289
2290    A0& a0;
2291    A1& a1;
2292    A2& a2;
2293    A3& a3;
2294    A4& a4;
2295    A5& a5;
2296    A6& a6;
2297    A7& a7;
2298    A8& a8;
2299    A9& a9;
2300    A10& a10;
2301    A11& a11;
2302    A12& a12;
2303    A13& a13;
2304    A14& a14;
2305    A15& a15;
2306    A16& a16;
2307    A17& a17;
2308    A18& a18;
2309    A19& a19;
2310    A20& a20;
2311    A21& a21;
2312    A22& a22;
2313    A23& a23;
2314    A24& a24;
2315    A25& a25;
2316    A26& a26;
2317    A27& a27;
2318    A28& a28;
2319    A29& a29;
2320};
2321
2322template <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>
2323struct define_map<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> {
2324    define_map(A0& _a0, A1& _a1, A2& _a2, 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) :
2325        a0(_a0), a1(_a1), a2(_a2), 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) {}
2326    template <typename Packer>
2327    void msgpack_pack(Packer& pk) const
2328    {
2329        pk.pack_map(16);
2330
2331        pk.pack(a0);
2332        pk.pack(a1);
2333        pk.pack(a2);
2334        pk.pack(a3);
2335        pk.pack(a4);
2336        pk.pack(a5);
2337        pk.pack(a6);
2338        pk.pack(a7);
2339        pk.pack(a8);
2340        pk.pack(a9);
2341        pk.pack(a10);
2342        pk.pack(a11);
2343        pk.pack(a12);
2344        pk.pack(a13);
2345        pk.pack(a14);
2346        pk.pack(a15);
2347        pk.pack(a16);
2348        pk.pack(a17);
2349        pk.pack(a18);
2350        pk.pack(a19);
2351        pk.pack(a20);
2352        pk.pack(a21);
2353        pk.pack(a22);
2354        pk.pack(a23);
2355        pk.pack(a24);
2356        pk.pack(a25);
2357        pk.pack(a26);
2358        pk.pack(a27);
2359        pk.pack(a28);
2360        pk.pack(a29);
2361        pk.pack(a30);
2362        pk.pack(a31);
2363    }
2364    void msgpack_unpack(msgpack::object const& o) const
2365    {
2366        if(o.type != msgpack::type::MAP) { throw msgpack::type_error(); }
2367        std::map<std::string, msgpack::object const*> kvmap;
2368        for (uint32_t i = 0; i < o.via.map.size; ++i) {
2369            kvmap.insert(
2370                std::map<std::string, msgpack::object const*>::value_type(
2371                    std::string(
2372                        o.via.map.ptr[i].key.via.str.ptr,
2373                        o.via.map.ptr[i].key.via.str.size),
2374                    &o.via.map.ptr[i].val
2375                )
2376            );
2377        }
2378
2379        {
2380            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a0);
2381            if (it != kvmap.end()) {
2382                it->second->convert(a1);
2383            }
2384        }
2385
2386        {
2387            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a2);
2388            if (it != kvmap.end()) {
2389                it->second->convert(a3);
2390            }
2391        }
2392
2393        {
2394            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a4);
2395            if (it != kvmap.end()) {
2396                it->second->convert(a5);
2397            }
2398        }
2399
2400        {
2401            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a6);
2402            if (it != kvmap.end()) {
2403                it->second->convert(a7);
2404            }
2405        }
2406
2407        {
2408            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a8);
2409            if (it != kvmap.end()) {
2410                it->second->convert(a9);
2411            }
2412        }
2413
2414        {
2415            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a10);
2416            if (it != kvmap.end()) {
2417                it->second->convert(a11);
2418            }
2419        }
2420
2421        {
2422            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a12);
2423            if (it != kvmap.end()) {
2424                it->second->convert(a13);
2425            }
2426        }
2427
2428        {
2429            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a14);
2430            if (it != kvmap.end()) {
2431                it->second->convert(a15);
2432            }
2433        }
2434
2435        {
2436            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a16);
2437            if (it != kvmap.end()) {
2438                it->second->convert(a17);
2439            }
2440        }
2441
2442        {
2443            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a18);
2444            if (it != kvmap.end()) {
2445                it->second->convert(a19);
2446            }
2447        }
2448
2449        {
2450            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a20);
2451            if (it != kvmap.end()) {
2452                it->second->convert(a21);
2453            }
2454        }
2455
2456        {
2457            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a22);
2458            if (it != kvmap.end()) {
2459                it->second->convert(a23);
2460            }
2461        }
2462
2463        {
2464            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a24);
2465            if (it != kvmap.end()) {
2466                it->second->convert(a25);
2467            }
2468        }
2469
2470        {
2471            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a26);
2472            if (it != kvmap.end()) {
2473                it->second->convert(a27);
2474            }
2475        }
2476
2477        {
2478            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a28);
2479            if (it != kvmap.end()) {
2480                it->second->convert(a29);
2481            }
2482        }
2483
2484        {
2485            std::map<std::string, msgpack::object const*>::const_iterator it = kvmap.find(a30);
2486            if (it != kvmap.end()) {
2487                it->second->convert(a31);
2488            }
2489        }
2490
2491    }
2492    void msgpack_object(msgpack::object* o, msgpack::zone& z) const
2493    {
2494        o->type = msgpack::type::MAP;
2495        o->via.map.ptr = static_cast<msgpack::object_kv*>(z.allocate_align(sizeof(msgpack::object_kv)*16));
2496        o->via.map.size = 16;
2497
2498        o->via.map.ptr[0].key = msgpack::object(a0, z);
2499        o->via.map.ptr[0].val = msgpack::object(a1, z);
2500
2501        o->via.map.ptr[1].key = msgpack::object(a2, z);
2502        o->via.map.ptr[1].val = msgpack::object(a3, z);
2503
2504        o->via.map.ptr[2].key = msgpack::object(a4, z);
2505        o->via.map.ptr[2].val = msgpack::object(a5, z);
2506
2507        o->via.map.ptr[3].key = msgpack::object(a6, z);
2508        o->via.map.ptr[3].val = msgpack::object(a7, z);
2509
2510        o->via.map.ptr[4].key = msgpack::object(a8, z);
2511        o->via.map.ptr[4].val = msgpack::object(a9, z);
2512
2513        o->via.map.ptr[5].key = msgpack::object(a10, z);
2514        o->via.map.ptr[5].val = msgpack::object(a11, z);
2515
2516        o->via.map.ptr[6].key = msgpack::object(a12, z);
2517        o->via.map.ptr[6].val = msgpack::object(a13, z);
2518
2519        o->via.map.ptr[7].key = msgpack::object(a14, z);
2520        o->via.map.ptr[7].val = msgpack::object(a15, z);
2521
2522        o->via.map.ptr[8].key = msgpack::object(a16, z);
2523        o->via.map.ptr[8].val = msgpack::object(a17, z);
2524
2525        o->via.map.ptr[9].key = msgpack::object(a18, z);
2526        o->via.map.ptr[9].val = msgpack::object(a19, z);
2527
2528        o->via.map.ptr[10].key = msgpack::object(a20, z);
2529        o->via.map.ptr[10].val = msgpack::object(a21, z);
2530
2531        o->via.map.ptr[11].key = msgpack::object(a22, z);
2532        o->via.map.ptr[11].val = msgpack::object(a23, z);
2533
2534        o->via.map.ptr[12].key = msgpack::object(a24, z);
2535        o->via.map.ptr[12].val = msgpack::object(a25, z);
2536
2537        o->via.map.ptr[13].key = msgpack::object(a26, z);
2538        o->via.map.ptr[13].val = msgpack::object(a27, z);
2539
2540        o->via.map.ptr[14].key = msgpack::object(a28, z);
2541        o->via.map.ptr[14].val = msgpack::object(a29, z);
2542
2543        o->via.map.ptr[15].key = msgpack::object(a30, z);
2544        o->via.map.ptr[15].val = msgpack::object(a31, z);
2545
2546    }
2547
2548    A0& a0;
2549    A1& a1;
2550    A2& a2;
2551    A3& a3;
2552    A4& a4;
2553    A5& a5;
2554    A6& a6;
2555    A7& a7;
2556    A8& a8;
2557    A9& a9;
2558    A10& a10;
2559    A11& a11;
2560    A12& a12;
2561    A13& a13;
2562    A14& a14;
2563    A15& a15;
2564    A16& a16;
2565    A17& a17;
2566    A18& a18;
2567    A19& a19;
2568    A20& a20;
2569    A21& a21;
2570    A22& a22;
2571    A23& a23;
2572    A24& a24;
2573    A25& a25;
2574    A26& a26;
2575    A27& a27;
2576    A28& a28;
2577    A29& a29;
2578    A30& a30;
2579    A31& a31;
2580};
2581
2582/// @endcond
2583
2584inline define_map<> make_define_map()
2585{
2586    return define_map<>();
2587}
2588
2589/// @cond
2590
2591template <typename A0>
2592inline define_map<A0> make_define_map(A0& a0)
2593{
2594    return define_map<A0>(a0);
2595}
2596
2597template <typename A0, typename A1>
2598inline define_map<A0, A1> make_define_map(A0& a0, A1& a1)
2599{
2600    return define_map<A0, A1>(a0, a1);
2601}
2602
2603template <typename A0, typename A1, typename A2>
2604inline define_map<A0, A1, A2> make_define_map(A0& a0, A1& a1, A2& a2)
2605{
2606    return define_map<A0, A1, A2>(a0, a1, a2);
2607}
2608
2609template <typename A0, typename A1, typename A2, typename A3>
2610inline define_map<A0, A1, A2, A3> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3)
2611{
2612    return define_map<A0, A1, A2, A3>(a0, a1, a2, a3);
2613}
2614
2615template <typename A0, typename A1, typename A2, typename A3, typename A4>
2616inline define_map<A0, A1, A2, A3, A4> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4)
2617{
2618    return define_map<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
2619}
2620
2621template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
2622inline define_map<A0, A1, A2, A3, A4, A5> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5)
2623{
2624    return define_map<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
2625}
2626
2627template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
2628inline define_map<A0, A1, A2, A3, A4, A5, A6> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6)
2629{
2630    return define_map<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
2631}
2632
2633template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
2634inline define_map<A0, A1, A2, A3, A4, A5, A6, A7> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7)
2635{
2636    return define_map<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
2637}
2638
2639template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
2640inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8)
2641{
2642    return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
2643}
2644
2645template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
2646inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9)
2647{
2648    return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
2649}
2650
2651template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
2652inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10)
2653{
2654    return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
2655}
2656
2657template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
2658inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11)
2659{
2660    return define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
2661}
2662
2663template <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>
2664inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12)
2665{
2666    return define_map<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);
2667}
2668
2669template <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>
2670inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13)
2671{
2672    return define_map<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);
2673}
2674
2675template <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>
2676inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> make_define_map(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10, A11& a11, A12& a12, A13& a13, A14& a14)
2677{
2678    return define_map<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);
2679}
2680
2681template <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>
2682inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2683{
2684    return define_map<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);
2685}
2686
2687template <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>
2688inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2689{
2690    return define_map<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);
2691}
2692
2693template <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>
2694inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2695{
2696    return define_map<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);
2697}
2698
2699template <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>
2700inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2701{
2702    return define_map<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);
2703}
2704
2705template <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>
2706inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2707{
2708    return define_map<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);
2709}
2710
2711template <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>
2712inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2713{
2714    return define_map<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);
2715}
2716
2717template <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>
2718inline define_map<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> make_define_map(A0& a0, A1& a1, A2& a2, 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)
2719{
2720    return define_map<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);
2721}
2722
2723template <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>
2724inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2725{
2726    return define_map<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);
2727}
2728
2729template <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>
2730inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2731{
2732    return define_map<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);
2733}
2734
2735template <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>
2736inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2737{
2738    return define_map<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);
2739}
2740
2741template <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>
2742inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2743{
2744    return define_map<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);
2745}
2746
2747template <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>
2748inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2749{
2750    return define_map<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);
2751}
2752
2753template <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>
2754inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2755{
2756    return define_map<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);
2757}
2758
2759template <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>
2760inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2761{
2762    return define_map<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);
2763}
2764
2765template <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>
2766inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2767{
2768    return define_map<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);
2769}
2770
2771template <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>
2772inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2773{
2774    return define_map<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);
2775}
2776
2777template <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>
2778inline define_map<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_map(A0& a0, A1& a1, A2& a2, 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)
2779{
2780    return define_map<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);
2781}
2782
2783/// @endcond
2784
2785}  // namespace type
2786/// @cond
2787}  // MSGPACK_API_VERSION_NAMESPACE(v1)
2788/// @endcond
2789}  // namespace msgpack
2790
2791#endif // MSGPACK_CPP03_DEFINE_MAP_HPP
2792