File indexing completed on 2025-01-18 09:41:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 namespace boost { namespace mpl {
0013
0014 namespace aux {
0015 template< int N >
0016 struct map_chooser;
0017
0018 }
0019
0020 namespace aux {
0021
0022 template<>
0023 struct map_chooser<0>
0024 {
0025 template<
0026 typename T0, typename T1, typename T2, typename T3, typename T4
0027 , typename T5, typename T6, typename T7, typename T8, typename T9
0028 , typename T10, typename T11, typename T12, typename T13, typename T14
0029 , typename T15, typename T16, typename T17, typename T18, typename T19
0030 >
0031 struct result_
0032 {
0033 typedef map0<
0034
0035 >::type type;
0036
0037 };
0038 };
0039
0040 }
0041
0042 namespace aux {
0043
0044 template<>
0045 struct map_chooser<1>
0046 {
0047 template<
0048 typename T0, typename T1, typename T2, typename T3, typename T4
0049 , typename T5, typename T6, typename T7, typename T8, typename T9
0050 , typename T10, typename T11, typename T12, typename T13, typename T14
0051 , typename T15, typename T16, typename T17, typename T18, typename T19
0052 >
0053 struct result_
0054 {
0055 typedef typename map1<
0056 T0
0057 >::type type;
0058
0059 };
0060 };
0061
0062 }
0063
0064 namespace aux {
0065
0066 template<>
0067 struct map_chooser<2>
0068 {
0069 template<
0070 typename T0, typename T1, typename T2, typename T3, typename T4
0071 , typename T5, typename T6, typename T7, typename T8, typename T9
0072 , typename T10, typename T11, typename T12, typename T13, typename T14
0073 , typename T15, typename T16, typename T17, typename T18, typename T19
0074 >
0075 struct result_
0076 {
0077 typedef typename map2<
0078 T0, T1
0079 >::type type;
0080
0081 };
0082 };
0083
0084 }
0085
0086 namespace aux {
0087
0088 template<>
0089 struct map_chooser<3>
0090 {
0091 template<
0092 typename T0, typename T1, typename T2, typename T3, typename T4
0093 , typename T5, typename T6, typename T7, typename T8, typename T9
0094 , typename T10, typename T11, typename T12, typename T13, typename T14
0095 , typename T15, typename T16, typename T17, typename T18, typename T19
0096 >
0097 struct result_
0098 {
0099 typedef typename map3<
0100 T0, T1, T2
0101 >::type type;
0102
0103 };
0104 };
0105
0106 }
0107
0108 namespace aux {
0109
0110 template<>
0111 struct map_chooser<4>
0112 {
0113 template<
0114 typename T0, typename T1, typename T2, typename T3, typename T4
0115 , typename T5, typename T6, typename T7, typename T8, typename T9
0116 , typename T10, typename T11, typename T12, typename T13, typename T14
0117 , typename T15, typename T16, typename T17, typename T18, typename T19
0118 >
0119 struct result_
0120 {
0121 typedef typename map4<
0122 T0, T1, T2, T3
0123 >::type type;
0124
0125 };
0126 };
0127
0128 }
0129
0130 namespace aux {
0131
0132 template<>
0133 struct map_chooser<5>
0134 {
0135 template<
0136 typename T0, typename T1, typename T2, typename T3, typename T4
0137 , typename T5, typename T6, typename T7, typename T8, typename T9
0138 , typename T10, typename T11, typename T12, typename T13, typename T14
0139 , typename T15, typename T16, typename T17, typename T18, typename T19
0140 >
0141 struct result_
0142 {
0143 typedef typename map5<
0144 T0, T1, T2, T3, T4
0145 >::type type;
0146
0147 };
0148 };
0149
0150 }
0151
0152 namespace aux {
0153
0154 template<>
0155 struct map_chooser<6>
0156 {
0157 template<
0158 typename T0, typename T1, typename T2, typename T3, typename T4
0159 , typename T5, typename T6, typename T7, typename T8, typename T9
0160 , typename T10, typename T11, typename T12, typename T13, typename T14
0161 , typename T15, typename T16, typename T17, typename T18, typename T19
0162 >
0163 struct result_
0164 {
0165 typedef typename map6<
0166 T0, T1, T2, T3, T4, T5
0167 >::type type;
0168
0169 };
0170 };
0171
0172 }
0173
0174 namespace aux {
0175
0176 template<>
0177 struct map_chooser<7>
0178 {
0179 template<
0180 typename T0, typename T1, typename T2, typename T3, typename T4
0181 , typename T5, typename T6, typename T7, typename T8, typename T9
0182 , typename T10, typename T11, typename T12, typename T13, typename T14
0183 , typename T15, typename T16, typename T17, typename T18, typename T19
0184 >
0185 struct result_
0186 {
0187 typedef typename map7<
0188 T0, T1, T2, T3, T4, T5, T6
0189 >::type type;
0190
0191 };
0192 };
0193
0194 }
0195
0196 namespace aux {
0197
0198 template<>
0199 struct map_chooser<8>
0200 {
0201 template<
0202 typename T0, typename T1, typename T2, typename T3, typename T4
0203 , typename T5, typename T6, typename T7, typename T8, typename T9
0204 , typename T10, typename T11, typename T12, typename T13, typename T14
0205 , typename T15, typename T16, typename T17, typename T18, typename T19
0206 >
0207 struct result_
0208 {
0209 typedef typename map8<
0210 T0, T1, T2, T3, T4, T5, T6, T7
0211 >::type type;
0212
0213 };
0214 };
0215
0216 }
0217
0218 namespace aux {
0219
0220 template<>
0221 struct map_chooser<9>
0222 {
0223 template<
0224 typename T0, typename T1, typename T2, typename T3, typename T4
0225 , typename T5, typename T6, typename T7, typename T8, typename T9
0226 , typename T10, typename T11, typename T12, typename T13, typename T14
0227 , typename T15, typename T16, typename T17, typename T18, typename T19
0228 >
0229 struct result_
0230 {
0231 typedef typename map9<
0232 T0, T1, T2, T3, T4, T5, T6, T7, T8
0233 >::type type;
0234
0235 };
0236 };
0237
0238 }
0239
0240 namespace aux {
0241
0242 template<>
0243 struct map_chooser<10>
0244 {
0245 template<
0246 typename T0, typename T1, typename T2, typename T3, typename T4
0247 , typename T5, typename T6, typename T7, typename T8, typename T9
0248 , typename T10, typename T11, typename T12, typename T13, typename T14
0249 , typename T15, typename T16, typename T17, typename T18, typename T19
0250 >
0251 struct result_
0252 {
0253 typedef typename map10<
0254 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
0255 >::type type;
0256
0257 };
0258 };
0259
0260 }
0261
0262 namespace aux {
0263
0264 template<>
0265 struct map_chooser<11>
0266 {
0267 template<
0268 typename T0, typename T1, typename T2, typename T3, typename T4
0269 , typename T5, typename T6, typename T7, typename T8, typename T9
0270 , typename T10, typename T11, typename T12, typename T13, typename T14
0271 , typename T15, typename T16, typename T17, typename T18, typename T19
0272 >
0273 struct result_
0274 {
0275 typedef typename map11<
0276 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
0277 >::type type;
0278
0279 };
0280 };
0281
0282 }
0283
0284 namespace aux {
0285
0286 template<>
0287 struct map_chooser<12>
0288 {
0289 template<
0290 typename T0, typename T1, typename T2, typename T3, typename T4
0291 , typename T5, typename T6, typename T7, typename T8, typename T9
0292 , typename T10, typename T11, typename T12, typename T13, typename T14
0293 , typename T15, typename T16, typename T17, typename T18, typename T19
0294 >
0295 struct result_
0296 {
0297 typedef typename map12<
0298 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
0299 >::type type;
0300
0301 };
0302 };
0303
0304 }
0305
0306 namespace aux {
0307
0308 template<>
0309 struct map_chooser<13>
0310 {
0311 template<
0312 typename T0, typename T1, typename T2, typename T3, typename T4
0313 , typename T5, typename T6, typename T7, typename T8, typename T9
0314 , typename T10, typename T11, typename T12, typename T13, typename T14
0315 , typename T15, typename T16, typename T17, typename T18, typename T19
0316 >
0317 struct result_
0318 {
0319 typedef typename map13<
0320 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
0321 >::type type;
0322
0323 };
0324 };
0325
0326 }
0327
0328 namespace aux {
0329
0330 template<>
0331 struct map_chooser<14>
0332 {
0333 template<
0334 typename T0, typename T1, typename T2, typename T3, typename T4
0335 , typename T5, typename T6, typename T7, typename T8, typename T9
0336 , typename T10, typename T11, typename T12, typename T13, typename T14
0337 , typename T15, typename T16, typename T17, typename T18, typename T19
0338 >
0339 struct result_
0340 {
0341 typedef typename map14<
0342 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
0343 >::type type;
0344
0345 };
0346 };
0347
0348 }
0349
0350 namespace aux {
0351
0352 template<>
0353 struct map_chooser<15>
0354 {
0355 template<
0356 typename T0, typename T1, typename T2, typename T3, typename T4
0357 , typename T5, typename T6, typename T7, typename T8, typename T9
0358 , typename T10, typename T11, typename T12, typename T13, typename T14
0359 , typename T15, typename T16, typename T17, typename T18, typename T19
0360 >
0361 struct result_
0362 {
0363 typedef typename map15<
0364 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
0365 >::type type;
0366
0367 };
0368 };
0369
0370 }
0371
0372 namespace aux {
0373
0374 template<>
0375 struct map_chooser<16>
0376 {
0377 template<
0378 typename T0, typename T1, typename T2, typename T3, typename T4
0379 , typename T5, typename T6, typename T7, typename T8, typename T9
0380 , typename T10, typename T11, typename T12, typename T13, typename T14
0381 , typename T15, typename T16, typename T17, typename T18, typename T19
0382 >
0383 struct result_
0384 {
0385 typedef typename map16<
0386 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
0387 >::type type;
0388
0389 };
0390 };
0391
0392 }
0393
0394 namespace aux {
0395
0396 template<>
0397 struct map_chooser<17>
0398 {
0399 template<
0400 typename T0, typename T1, typename T2, typename T3, typename T4
0401 , typename T5, typename T6, typename T7, typename T8, typename T9
0402 , typename T10, typename T11, typename T12, typename T13, typename T14
0403 , typename T15, typename T16, typename T17, typename T18, typename T19
0404 >
0405 struct result_
0406 {
0407 typedef typename map17<
0408 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
0409 >::type type;
0410
0411 };
0412 };
0413
0414 }
0415
0416 namespace aux {
0417
0418 template<>
0419 struct map_chooser<18>
0420 {
0421 template<
0422 typename T0, typename T1, typename T2, typename T3, typename T4
0423 , typename T5, typename T6, typename T7, typename T8, typename T9
0424 , typename T10, typename T11, typename T12, typename T13, typename T14
0425 , typename T15, typename T16, typename T17, typename T18, typename T19
0426 >
0427 struct result_
0428 {
0429 typedef typename map18<
0430 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
0431 >::type type;
0432
0433 };
0434 };
0435
0436 }
0437
0438 namespace aux {
0439
0440 template<>
0441 struct map_chooser<19>
0442 {
0443 template<
0444 typename T0, typename T1, typename T2, typename T3, typename T4
0445 , typename T5, typename T6, typename T7, typename T8, typename T9
0446 , typename T10, typename T11, typename T12, typename T13, typename T14
0447 , typename T15, typename T16, typename T17, typename T18, typename T19
0448 >
0449 struct result_
0450 {
0451 typedef typename map19<
0452 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
0453 >::type type;
0454
0455 };
0456 };
0457
0458 }
0459
0460 namespace aux {
0461
0462 template<>
0463 struct map_chooser<20>
0464 {
0465 template<
0466 typename T0, typename T1, typename T2, typename T3, typename T4
0467 , typename T5, typename T6, typename T7, typename T8, typename T9
0468 , typename T10, typename T11, typename T12, typename T13, typename T14
0469 , typename T15, typename T16, typename T17, typename T18, typename T19
0470 >
0471 struct result_
0472 {
0473 typedef typename map20<
0474 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
0475 >::type type;
0476
0477 };
0478 };
0479
0480 }
0481
0482 namespace aux {
0483
0484 template< typename T >
0485 struct is_map_arg
0486 {
0487 BOOST_STATIC_CONSTANT(bool, value = true);
0488 };
0489
0490 template<>
0491 struct is_map_arg<na>
0492 {
0493 BOOST_STATIC_CONSTANT(bool, value = false);
0494 };
0495
0496 template<
0497 typename T1, typename T2, typename T3, typename T4, typename T5
0498 , typename T6, typename T7, typename T8, typename T9, typename T10
0499 , typename T11, typename T12, typename T13, typename T14, typename T15
0500 , typename T16, typename T17, typename T18, typename T19, typename T20
0501 >
0502 struct map_count_args
0503 {
0504 BOOST_STATIC_CONSTANT(int, value =
0505 is_map_arg<T1>::value + is_map_arg<T2>::value
0506 + is_map_arg<T3>::value + is_map_arg<T4>::value
0507 + is_map_arg<T5>::value + is_map_arg<T6>::value
0508 + is_map_arg<T7>::value + is_map_arg<T8>::value
0509 + is_map_arg<T9>::value + is_map_arg<T10>::value
0510 + is_map_arg<T11>::value + is_map_arg<T12>::value
0511 + is_map_arg<T13>::value + is_map_arg<T14>::value
0512 + is_map_arg<T15>::value + is_map_arg<T16>::value
0513 + is_map_arg<T17>::value + is_map_arg<T18>::value
0514 + is_map_arg<T19>::value + is_map_arg<T20>::value
0515 );
0516
0517 };
0518
0519 template<
0520 typename T0, typename T1, typename T2, typename T3, typename T4
0521 , typename T5, typename T6, typename T7, typename T8, typename T9
0522 , typename T10, typename T11, typename T12, typename T13, typename T14
0523 , typename T15, typename T16, typename T17, typename T18, typename T19
0524 >
0525 struct map_impl
0526 {
0527 typedef aux::map_count_args<
0528 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
0529 > arg_num_;
0530
0531 typedef typename aux::map_chooser< arg_num_::value >
0532 ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
0533 };
0534
0535 }
0536
0537 template<
0538 typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
0539 , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
0540 , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
0541 , typename T12 = na, typename T13 = na, typename T14 = na
0542 , typename T15 = na, typename T16 = na, typename T17 = na
0543 , typename T18 = na, typename T19 = na
0544 >
0545 struct map
0546 : aux::map_impl<
0547 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
0548 >::type
0549 {
0550 typedef typename aux::map_impl<
0551 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
0552 >::type type;
0553 };
0554
0555 }}
0556