File indexing completed on 2025-01-18 09:41:30
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 vector_c_chooser;
0017
0018 }
0019
0020 namespace aux {
0021
0022 template<>
0023 struct vector_c_chooser<0>
0024 {
0025 template<
0026 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0027 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0028 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0029 >
0030 struct result_
0031 {
0032 typedef typename vector0_c<
0033 T
0034 >::type type;
0035
0036 };
0037 };
0038
0039 }
0040
0041 namespace aux {
0042
0043 template<>
0044 struct vector_c_chooser<1>
0045 {
0046 template<
0047 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0048 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0049 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0050 >
0051 struct result_
0052 {
0053 typedef typename vector1_c<
0054 T, T(C0)
0055 >::type type;
0056
0057 };
0058 };
0059
0060 }
0061
0062 namespace aux {
0063
0064 template<>
0065 struct vector_c_chooser<2>
0066 {
0067 template<
0068 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0069 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0070 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0071 >
0072 struct result_
0073 {
0074 typedef typename vector2_c<
0075 T, T(C0), T(C1)
0076 >::type type;
0077
0078 };
0079 };
0080
0081 }
0082
0083 namespace aux {
0084
0085 template<>
0086 struct vector_c_chooser<3>
0087 {
0088 template<
0089 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0090 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0091 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0092 >
0093 struct result_
0094 {
0095 typedef typename vector3_c<
0096 T, T(C0), T(C1), T(C2)
0097 >::type type;
0098
0099 };
0100 };
0101
0102 }
0103
0104 namespace aux {
0105
0106 template<>
0107 struct vector_c_chooser<4>
0108 {
0109 template<
0110 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0111 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0112 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0113 >
0114 struct result_
0115 {
0116 typedef typename vector4_c<
0117 T, T(C0), T(C1), T(C2), T(C3)
0118 >::type type;
0119
0120 };
0121 };
0122
0123 }
0124
0125 namespace aux {
0126
0127 template<>
0128 struct vector_c_chooser<5>
0129 {
0130 template<
0131 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0132 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0133 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0134 >
0135 struct result_
0136 {
0137 typedef typename vector5_c<
0138 T, T(C0), T(C1), T(C2), T(C3), T(C4)
0139 >::type type;
0140
0141 };
0142 };
0143
0144 }
0145
0146 namespace aux {
0147
0148 template<>
0149 struct vector_c_chooser<6>
0150 {
0151 template<
0152 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0153 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0154 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0155 >
0156 struct result_
0157 {
0158 typedef typename vector6_c<
0159 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
0160 >::type type;
0161
0162 };
0163 };
0164
0165 }
0166
0167 namespace aux {
0168
0169 template<>
0170 struct vector_c_chooser<7>
0171 {
0172 template<
0173 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0174 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0175 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0176 >
0177 struct result_
0178 {
0179 typedef typename vector7_c<
0180 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
0181 >::type type;
0182
0183 };
0184 };
0185
0186 }
0187
0188 namespace aux {
0189
0190 template<>
0191 struct vector_c_chooser<8>
0192 {
0193 template<
0194 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0195 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0196 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0197 >
0198 struct result_
0199 {
0200 typedef typename vector8_c<
0201 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
0202 >::type type;
0203
0204 };
0205 };
0206
0207 }
0208
0209 namespace aux {
0210
0211 template<>
0212 struct vector_c_chooser<9>
0213 {
0214 template<
0215 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0216 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0217 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0218 >
0219 struct result_
0220 {
0221 typedef typename vector9_c<
0222 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
0223 >::type type;
0224
0225 };
0226 };
0227
0228 }
0229
0230 namespace aux {
0231
0232 template<>
0233 struct vector_c_chooser<10>
0234 {
0235 template<
0236 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0237 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0238 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0239 >
0240 struct result_
0241 {
0242 typedef typename vector10_c<
0243 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
0244 >::type type;
0245
0246 };
0247 };
0248
0249 }
0250
0251 namespace aux {
0252
0253 template<>
0254 struct vector_c_chooser<11>
0255 {
0256 template<
0257 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0258 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0259 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0260 >
0261 struct result_
0262 {
0263 typedef typename vector11_c<
0264 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
0265 >::type type;
0266
0267 };
0268 };
0269
0270 }
0271
0272 namespace aux {
0273
0274 template<>
0275 struct vector_c_chooser<12>
0276 {
0277 template<
0278 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0279 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0280 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0281 >
0282 struct result_
0283 {
0284 typedef typename vector12_c<
0285 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
0286 >::type type;
0287
0288 };
0289 };
0290
0291 }
0292
0293 namespace aux {
0294
0295 template<>
0296 struct vector_c_chooser<13>
0297 {
0298 template<
0299 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0300 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0301 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0302 >
0303 struct result_
0304 {
0305 typedef typename vector13_c<
0306 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
0307 >::type type;
0308
0309 };
0310 };
0311
0312 }
0313
0314 namespace aux {
0315
0316 template<>
0317 struct vector_c_chooser<14>
0318 {
0319 template<
0320 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0321 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0322 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0323 >
0324 struct result_
0325 {
0326 typedef typename vector14_c<
0327 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
0328 >::type type;
0329
0330 };
0331 };
0332
0333 }
0334
0335 namespace aux {
0336
0337 template<>
0338 struct vector_c_chooser<15>
0339 {
0340 template<
0341 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0342 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0343 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0344 >
0345 struct result_
0346 {
0347 typedef typename vector15_c<
0348 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
0349 >::type type;
0350
0351 };
0352 };
0353
0354 }
0355
0356 namespace aux {
0357
0358 template<>
0359 struct vector_c_chooser<16>
0360 {
0361 template<
0362 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0363 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0364 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0365 >
0366 struct result_
0367 {
0368 typedef typename vector16_c<
0369 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
0370 >::type type;
0371
0372 };
0373 };
0374
0375 }
0376
0377 namespace aux {
0378
0379 template<>
0380 struct vector_c_chooser<17>
0381 {
0382 template<
0383 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0384 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0385 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0386 >
0387 struct result_
0388 {
0389 typedef typename vector17_c<
0390 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
0391 >::type type;
0392
0393 };
0394 };
0395
0396 }
0397
0398 namespace aux {
0399
0400 template<>
0401 struct vector_c_chooser<18>
0402 {
0403 template<
0404 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0405 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0406 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0407 >
0408 struct result_
0409 {
0410 typedef typename vector18_c<
0411 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
0412 >::type type;
0413
0414 };
0415 };
0416
0417 }
0418
0419 namespace aux {
0420
0421 template<>
0422 struct vector_c_chooser<19>
0423 {
0424 template<
0425 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0426 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0427 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0428 >
0429 struct result_
0430 {
0431 typedef typename vector19_c<
0432 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
0433 >::type type;
0434
0435 };
0436 };
0437
0438 }
0439
0440 namespace aux {
0441
0442 template<>
0443 struct vector_c_chooser<20>
0444 {
0445 template<
0446 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0447 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0448 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0449 >
0450 struct result_
0451 {
0452 typedef typename vector20_c<
0453 T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
0454 >::type type;
0455
0456 };
0457 };
0458
0459 }
0460
0461 namespace aux {
0462
0463 template< long C >
0464 struct is_vector_c_arg
0465 {
0466 BOOST_STATIC_CONSTANT(bool, value = true);
0467 };
0468
0469 template<>
0470 struct is_vector_c_arg<LONG_MAX>
0471 {
0472 BOOST_STATIC_CONSTANT(bool, value = false);
0473 };
0474
0475 template<
0476 long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
0477 , long C9, long C10, long C11, long C12, long C13, long C14, long C15
0478 , long C16, long C17, long C18, long C19, long C20
0479 >
0480 struct vector_c_count_args
0481 {
0482 BOOST_STATIC_CONSTANT(int, value =
0483 is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value
0484 + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value
0485 + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value
0486 + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value
0487 + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value
0488 + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value
0489 + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value
0490 + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value
0491 + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value
0492 + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
0493 );
0494
0495 };
0496
0497 template<
0498 typename T, long C0, long C1, long C2, long C3, long C4, long C5
0499 , long C6, long C7, long C8, long C9, long C10, long C11, long C12
0500 , long C13, long C14, long C15, long C16, long C17, long C18, long C19
0501 >
0502 struct vector_c_impl
0503 {
0504 typedef aux::vector_c_count_args<
0505 C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
0506 > arg_num_;
0507
0508 typedef typename aux::vector_c_chooser< arg_num_::value >
0509 ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
0510 };
0511
0512 }
0513
0514 template<
0515 typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
0516 , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
0517 , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
0518 , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
0519 , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
0520 , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
0521 , long C18 = LONG_MAX, long C19 = LONG_MAX
0522 >
0523 struct vector_c
0524 : aux::vector_c_impl<
0525 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
0526 >::type
0527 {
0528 typedef typename aux::vector_c_impl<
0529 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
0530 >::type type;
0531 };
0532
0533 }}
0534