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