1 2 // Copyright Aleksey Gurtovoy 2000-2004 3 // 4 // Distributed under the Boost Software License, Version 1.0. 5 // (See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt) 7 // 8 9 // Preprocessed version of "boost/mpl/set_c.hpp" header 10 // -- DO NOT modify by hand! 11 12 namespace boost { namespace mpl { 13 14 namespace aux { 15 template< int N > 16 struct set_c_chooser; 17 18 } 19 20 namespace aux { 21 22 template<> 23 struct set_c_chooser<0> 24 { 25 template< 26 typename T, long C0, long C1, long C2, long C3, long C4, long C5 27 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 28 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 29 > 30 struct result_ 31 { 32 typedef typename set0_c< 33 T 34 >::type type; 35 36 }; 37 }; 38 39 } // namespace aux 40 41 namespace aux { 42 43 template<> 44 struct set_c_chooser<1> 45 { 46 template< 47 typename T, long C0, long C1, long C2, long C3, long C4, long C5 48 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 49 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 50 > 51 struct result_ 52 { 53 typedef typename set1_c< 54 T, C0 55 >::type type; 56 57 }; 58 }; 59 60 } // namespace aux 61 62 namespace aux { 63 64 template<> 65 struct set_c_chooser<2> 66 { 67 template< 68 typename T, long C0, long C1, long C2, long C3, long C4, long C5 69 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 70 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 71 > 72 struct result_ 73 { 74 typedef typename set2_c< 75 T, C0, C1 76 >::type type; 77 78 }; 79 }; 80 81 } // namespace aux 82 83 namespace aux { 84 85 template<> 86 struct set_c_chooser<3> 87 { 88 template< 89 typename T, long C0, long C1, long C2, long C3, long C4, long C5 90 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 91 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 92 > 93 struct result_ 94 { 95 typedef typename set3_c< 96 T, C0, C1, C2 97 >::type type; 98 99 }; 100 }; 101 102 } // namespace aux 103 104 namespace aux { 105 106 template<> 107 struct set_c_chooser<4> 108 { 109 template< 110 typename T, long C0, long C1, long C2, long C3, long C4, long C5 111 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 112 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 113 > 114 struct result_ 115 { 116 typedef typename set4_c< 117 T, C0, C1, C2, C3 118 >::type type; 119 120 }; 121 }; 122 123 } // namespace aux 124 125 namespace aux { 126 127 template<> 128 struct set_c_chooser<5> 129 { 130 template< 131 typename T, long C0, long C1, long C2, long C3, long C4, long C5 132 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 133 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 134 > 135 struct result_ 136 { 137 typedef typename set5_c< 138 T, C0, C1, C2, C3, C4 139 >::type type; 140 141 }; 142 }; 143 144 } // namespace aux 145 146 namespace aux { 147 148 template<> 149 struct set_c_chooser<6> 150 { 151 template< 152 typename T, long C0, long C1, long C2, long C3, long C4, long C5 153 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 154 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 155 > 156 struct result_ 157 { 158 typedef typename set6_c< 159 T, C0, C1, C2, C3, C4, C5 160 >::type type; 161 162 }; 163 }; 164 165 } // namespace aux 166 167 namespace aux { 168 169 template<> 170 struct set_c_chooser<7> 171 { 172 template< 173 typename T, long C0, long C1, long C2, long C3, long C4, long C5 174 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 175 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 176 > 177 struct result_ 178 { 179 typedef typename set7_c< 180 T, C0, C1, C2, C3, C4, C5, C6 181 >::type type; 182 183 }; 184 }; 185 186 } // namespace aux 187 188 namespace aux { 189 190 template<> 191 struct set_c_chooser<8> 192 { 193 template< 194 typename T, long C0, long C1, long C2, long C3, long C4, long C5 195 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 196 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 197 > 198 struct result_ 199 { 200 typedef typename set8_c< 201 T, C0, C1, C2, C3, C4, C5, C6, C7 202 >::type type; 203 204 }; 205 }; 206 207 } // namespace aux 208 209 namespace aux { 210 211 template<> 212 struct set_c_chooser<9> 213 { 214 template< 215 typename T, long C0, long C1, long C2, long C3, long C4, long C5 216 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 217 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 218 > 219 struct result_ 220 { 221 typedef typename set9_c< 222 T, C0, C1, C2, C3, C4, C5, C6, C7, C8 223 >::type type; 224 225 }; 226 }; 227 228 } // namespace aux 229 230 namespace aux { 231 232 template<> 233 struct set_c_chooser<10> 234 { 235 template< 236 typename T, long C0, long C1, long C2, long C3, long C4, long C5 237 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 238 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 239 > 240 struct result_ 241 { 242 typedef typename set10_c< 243 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9 244 >::type type; 245 246 }; 247 }; 248 249 } // namespace aux 250 251 namespace aux { 252 253 template<> 254 struct set_c_chooser<11> 255 { 256 template< 257 typename T, long C0, long C1, long C2, long C3, long C4, long C5 258 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 259 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 260 > 261 struct result_ 262 { 263 typedef typename set11_c< 264 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10 265 >::type type; 266 267 }; 268 }; 269 270 } // namespace aux 271 272 namespace aux { 273 274 template<> 275 struct set_c_chooser<12> 276 { 277 template< 278 typename T, long C0, long C1, long C2, long C3, long C4, long C5 279 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 280 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 281 > 282 struct result_ 283 { 284 typedef typename set12_c< 285 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11 286 >::type type; 287 288 }; 289 }; 290 291 } // namespace aux 292 293 namespace aux { 294 295 template<> 296 struct set_c_chooser<13> 297 { 298 template< 299 typename T, long C0, long C1, long C2, long C3, long C4, long C5 300 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 301 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 302 > 303 struct result_ 304 { 305 typedef typename set13_c< 306 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12 307 >::type type; 308 309 }; 310 }; 311 312 } // namespace aux 313 314 namespace aux { 315 316 template<> 317 struct set_c_chooser<14> 318 { 319 template< 320 typename T, long C0, long C1, long C2, long C3, long C4, long C5 321 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 322 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 323 > 324 struct result_ 325 { 326 typedef typename set14_c< 327 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13 328 >::type type; 329 330 }; 331 }; 332 333 } // namespace aux 334 335 namespace aux { 336 337 template<> 338 struct set_c_chooser<15> 339 { 340 template< 341 typename T, long C0, long C1, long C2, long C3, long C4, long C5 342 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 343 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 344 > 345 struct result_ 346 { 347 typedef typename set15_c< 348 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14 349 >::type type; 350 351 }; 352 }; 353 354 } // namespace aux 355 356 namespace aux { 357 358 template<> 359 struct set_c_chooser<16> 360 { 361 template< 362 typename T, long C0, long C1, long C2, long C3, long C4, long C5 363 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 364 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 365 > 366 struct result_ 367 { 368 typedef typename set16_c< 369 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15 370 >::type type; 371 372 }; 373 }; 374 375 } // namespace aux 376 377 namespace aux { 378 379 template<> 380 struct set_c_chooser<17> 381 { 382 template< 383 typename T, long C0, long C1, long C2, long C3, long C4, long C5 384 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 385 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 386 > 387 struct result_ 388 { 389 typedef typename set17_c< 390 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16 391 >::type type; 392 393 }; 394 }; 395 396 } // namespace aux 397 398 namespace aux { 399 400 template<> 401 struct set_c_chooser<18> 402 { 403 template< 404 typename T, long C0, long C1, long C2, long C3, long C4, long C5 405 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 406 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 407 > 408 struct result_ 409 { 410 typedef typename set18_c< 411 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17 412 >::type type; 413 414 }; 415 }; 416 417 } // namespace aux 418 419 namespace aux { 420 421 template<> 422 struct set_c_chooser<19> 423 { 424 template< 425 typename T, long C0, long C1, long C2, long C3, long C4, long C5 426 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 427 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 428 > 429 struct result_ 430 { 431 typedef typename set19_c< 432 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18 433 >::type type; 434 435 }; 436 }; 437 438 } // namespace aux 439 440 namespace aux { 441 442 template<> 443 struct set_c_chooser<20> 444 { 445 template< 446 typename T, long C0, long C1, long C2, long C3, long C4, long C5 447 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 448 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 449 > 450 struct result_ 451 { 452 typedef typename set20_c< 453 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19 454 >::type type; 455 456 }; 457 }; 458 459 } // namespace aux 460 461 namespace aux { 462 463 template< long C > 464 struct is_set_c_arg 465 { 466 BOOST_STATIC_CONSTANT(bool, value = true); 467 }; 468 469 template<> 470 struct is_set_c_arg<LONG_MAX> 471 { 472 BOOST_STATIC_CONSTANT(bool, value = false); 473 }; 474 475 template< 476 long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8 477 , long C9, long C10, long C11, long C12, long C13, long C14, long C15 478 , long C16, long C17, long C18, long C19, long C20 479 > 480 struct set_c_count_args 481 { 482 BOOST_STATIC_CONSTANT(int, value = 483 is_set_c_arg<C1>::value + is_set_c_arg<C2>::value 484 + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value 485 + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value 486 + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value 487 + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value 488 + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value 489 + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value 490 + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value 491 + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value 492 + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value 493 ); 494 495 }; 496 497 template< 498 typename T, long C0, long C1, long C2, long C3, long C4, long C5 499 , long C6, long C7, long C8, long C9, long C10, long C11, long C12 500 , long C13, long C14, long C15, long C16, long C17, long C18, long C19 501 > 502 struct set_c_impl 503 { 504 typedef aux::set_c_count_args< 505 C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19 506 > arg_num_; 507 508 typedef typename aux::set_c_chooser< arg_num_::value > 509 ::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; 510 }; 511 512 } // namespace aux 513 514 template< 515 typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX 516 , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX 517 , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX 518 , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX 519 , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX 520 , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX 521 , long C18 = LONG_MAX, long C19 = LONG_MAX 522 > 523 struct set_c 524 : aux::set_c_impl< 525 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19 526 >::type 527 { 528 typedef typename aux::set_c_impl< 529 T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19 530 >::type type; 531 }; 532 533 }} 534 535