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.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_chooser; 17 18 } 19 20 namespace aux { 21 22 template<> 23 struct set_chooser<0> 24 { 25 template< 26 typename T0, typename T1, typename T2, typename T3, typename T4 27 , typename T5, typename T6, typename T7, typename T8, typename T9 28 , typename T10, typename T11, typename T12, typename T13, typename T14 29 , typename T15, typename T16, typename T17, typename T18, typename T19 30 > 31 struct result_ 32 { 33 typedef set0< 34 35 >::type type; 36 37 }; 38 }; 39 40 } // namespace aux 41 42 namespace aux { 43 44 template<> 45 struct set_chooser<1> 46 { 47 template< 48 typename T0, typename T1, typename T2, typename T3, typename T4 49 , typename T5, typename T6, typename T7, typename T8, typename T9 50 , typename T10, typename T11, typename T12, typename T13, typename T14 51 , typename T15, typename T16, typename T17, typename T18, typename T19 52 > 53 struct result_ 54 { 55 typedef typename set1< 56 T0 57 >::type type; 58 59 }; 60 }; 61 62 } // namespace aux 63 64 namespace aux { 65 66 template<> 67 struct set_chooser<2> 68 { 69 template< 70 typename T0, typename T1, typename T2, typename T3, typename T4 71 , typename T5, typename T6, typename T7, typename T8, typename T9 72 , typename T10, typename T11, typename T12, typename T13, typename T14 73 , typename T15, typename T16, typename T17, typename T18, typename T19 74 > 75 struct result_ 76 { 77 typedef typename set2< 78 T0, T1 79 >::type type; 80 81 }; 82 }; 83 84 } // namespace aux 85 86 namespace aux { 87 88 template<> 89 struct set_chooser<3> 90 { 91 template< 92 typename T0, typename T1, typename T2, typename T3, typename T4 93 , typename T5, typename T6, typename T7, typename T8, typename T9 94 , typename T10, typename T11, typename T12, typename T13, typename T14 95 , typename T15, typename T16, typename T17, typename T18, typename T19 96 > 97 struct result_ 98 { 99 typedef typename set3< 100 T0, T1, T2 101 >::type type; 102 103 }; 104 }; 105 106 } // namespace aux 107 108 namespace aux { 109 110 template<> 111 struct set_chooser<4> 112 { 113 template< 114 typename T0, typename T1, typename T2, typename T3, typename T4 115 , typename T5, typename T6, typename T7, typename T8, typename T9 116 , typename T10, typename T11, typename T12, typename T13, typename T14 117 , typename T15, typename T16, typename T17, typename T18, typename T19 118 > 119 struct result_ 120 { 121 typedef typename set4< 122 T0, T1, T2, T3 123 >::type type; 124 125 }; 126 }; 127 128 } // namespace aux 129 130 namespace aux { 131 132 template<> 133 struct set_chooser<5> 134 { 135 template< 136 typename T0, typename T1, typename T2, typename T3, typename T4 137 , typename T5, typename T6, typename T7, typename T8, typename T9 138 , typename T10, typename T11, typename T12, typename T13, typename T14 139 , typename T15, typename T16, typename T17, typename T18, typename T19 140 > 141 struct result_ 142 { 143 typedef typename set5< 144 T0, T1, T2, T3, T4 145 >::type type; 146 147 }; 148 }; 149 150 } // namespace aux 151 152 namespace aux { 153 154 template<> 155 struct set_chooser<6> 156 { 157 template< 158 typename T0, typename T1, typename T2, typename T3, typename T4 159 , typename T5, typename T6, typename T7, typename T8, typename T9 160 , typename T10, typename T11, typename T12, typename T13, typename T14 161 , typename T15, typename T16, typename T17, typename T18, typename T19 162 > 163 struct result_ 164 { 165 typedef typename set6< 166 T0, T1, T2, T3, T4, T5 167 >::type type; 168 169 }; 170 }; 171 172 } // namespace aux 173 174 namespace aux { 175 176 template<> 177 struct set_chooser<7> 178 { 179 template< 180 typename T0, typename T1, typename T2, typename T3, typename T4 181 , typename T5, typename T6, typename T7, typename T8, typename T9 182 , typename T10, typename T11, typename T12, typename T13, typename T14 183 , typename T15, typename T16, typename T17, typename T18, typename T19 184 > 185 struct result_ 186 { 187 typedef typename set7< 188 T0, T1, T2, T3, T4, T5, T6 189 >::type type; 190 191 }; 192 }; 193 194 } // namespace aux 195 196 namespace aux { 197 198 template<> 199 struct set_chooser<8> 200 { 201 template< 202 typename T0, typename T1, typename T2, typename T3, typename T4 203 , typename T5, typename T6, typename T7, typename T8, typename T9 204 , typename T10, typename T11, typename T12, typename T13, typename T14 205 , typename T15, typename T16, typename T17, typename T18, typename T19 206 > 207 struct result_ 208 { 209 typedef typename set8< 210 T0, T1, T2, T3, T4, T5, T6, T7 211 >::type type; 212 213 }; 214 }; 215 216 } // namespace aux 217 218 namespace aux { 219 220 template<> 221 struct set_chooser<9> 222 { 223 template< 224 typename T0, typename T1, typename T2, typename T3, typename T4 225 , typename T5, typename T6, typename T7, typename T8, typename T9 226 , typename T10, typename T11, typename T12, typename T13, typename T14 227 , typename T15, typename T16, typename T17, typename T18, typename T19 228 > 229 struct result_ 230 { 231 typedef typename set9< 232 T0, T1, T2, T3, T4, T5, T6, T7, T8 233 >::type type; 234 235 }; 236 }; 237 238 } // namespace aux 239 240 namespace aux { 241 242 template<> 243 struct set_chooser<10> 244 { 245 template< 246 typename T0, typename T1, typename T2, typename T3, typename T4 247 , typename T5, typename T6, typename T7, typename T8, typename T9 248 , typename T10, typename T11, typename T12, typename T13, typename T14 249 , typename T15, typename T16, typename T17, typename T18, typename T19 250 > 251 struct result_ 252 { 253 typedef typename set10< 254 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 255 >::type type; 256 257 }; 258 }; 259 260 } // namespace aux 261 262 namespace aux { 263 264 template<> 265 struct set_chooser<11> 266 { 267 template< 268 typename T0, typename T1, typename T2, typename T3, typename T4 269 , typename T5, typename T6, typename T7, typename T8, typename T9 270 , typename T10, typename T11, typename T12, typename T13, typename T14 271 , typename T15, typename T16, typename T17, typename T18, typename T19 272 > 273 struct result_ 274 { 275 typedef typename set11< 276 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 277 >::type type; 278 279 }; 280 }; 281 282 } // namespace aux 283 284 namespace aux { 285 286 template<> 287 struct set_chooser<12> 288 { 289 template< 290 typename T0, typename T1, typename T2, typename T3, typename T4 291 , typename T5, typename T6, typename T7, typename T8, typename T9 292 , typename T10, typename T11, typename T12, typename T13, typename T14 293 , typename T15, typename T16, typename T17, typename T18, typename T19 294 > 295 struct result_ 296 { 297 typedef typename set12< 298 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 299 >::type type; 300 301 }; 302 }; 303 304 } // namespace aux 305 306 namespace aux { 307 308 template<> 309 struct set_chooser<13> 310 { 311 template< 312 typename T0, typename T1, typename T2, typename T3, typename T4 313 , typename T5, typename T6, typename T7, typename T8, typename T9 314 , typename T10, typename T11, typename T12, typename T13, typename T14 315 , typename T15, typename T16, typename T17, typename T18, typename T19 316 > 317 struct result_ 318 { 319 typedef typename set13< 320 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 321 >::type type; 322 323 }; 324 }; 325 326 } // namespace aux 327 328 namespace aux { 329 330 template<> 331 struct set_chooser<14> 332 { 333 template< 334 typename T0, typename T1, typename T2, typename T3, typename T4 335 , typename T5, typename T6, typename T7, typename T8, typename T9 336 , typename T10, typename T11, typename T12, typename T13, typename T14 337 , typename T15, typename T16, typename T17, typename T18, typename T19 338 > 339 struct result_ 340 { 341 typedef typename set14< 342 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 343 >::type type; 344 345 }; 346 }; 347 348 } // namespace aux 349 350 namespace aux { 351 352 template<> 353 struct set_chooser<15> 354 { 355 template< 356 typename T0, typename T1, typename T2, typename T3, typename T4 357 , typename T5, typename T6, typename T7, typename T8, typename T9 358 , typename T10, typename T11, typename T12, typename T13, typename T14 359 , typename T15, typename T16, typename T17, typename T18, typename T19 360 > 361 struct result_ 362 { 363 typedef typename set15< 364 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 365 >::type type; 366 367 }; 368 }; 369 370 } // namespace aux 371 372 namespace aux { 373 374 template<> 375 struct set_chooser<16> 376 { 377 template< 378 typename T0, typename T1, typename T2, typename T3, typename T4 379 , typename T5, typename T6, typename T7, typename T8, typename T9 380 , typename T10, typename T11, typename T12, typename T13, typename T14 381 , typename T15, typename T16, typename T17, typename T18, typename T19 382 > 383 struct result_ 384 { 385 typedef typename set16< 386 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 387 >::type type; 388 389 }; 390 }; 391 392 } // namespace aux 393 394 namespace aux { 395 396 template<> 397 struct set_chooser<17> 398 { 399 template< 400 typename T0, typename T1, typename T2, typename T3, typename T4 401 , typename T5, typename T6, typename T7, typename T8, typename T9 402 , typename T10, typename T11, typename T12, typename T13, typename T14 403 , typename T15, typename T16, typename T17, typename T18, typename T19 404 > 405 struct result_ 406 { 407 typedef typename set17< 408 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 409 >::type type; 410 411 }; 412 }; 413 414 } // namespace aux 415 416 namespace aux { 417 418 template<> 419 struct set_chooser<18> 420 { 421 template< 422 typename T0, typename T1, typename T2, typename T3, typename T4 423 , typename T5, typename T6, typename T7, typename T8, typename T9 424 , typename T10, typename T11, typename T12, typename T13, typename T14 425 , typename T15, typename T16, typename T17, typename T18, typename T19 426 > 427 struct result_ 428 { 429 typedef typename set18< 430 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 431 >::type type; 432 433 }; 434 }; 435 436 } // namespace aux 437 438 namespace aux { 439 440 template<> 441 struct set_chooser<19> 442 { 443 template< 444 typename T0, typename T1, typename T2, typename T3, typename T4 445 , typename T5, typename T6, typename T7, typename T8, typename T9 446 , typename T10, typename T11, typename T12, typename T13, typename T14 447 , typename T15, typename T16, typename T17, typename T18, typename T19 448 > 449 struct result_ 450 { 451 typedef typename set19< 452 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 453 >::type type; 454 455 }; 456 }; 457 458 } // namespace aux 459 460 namespace aux { 461 462 template<> 463 struct set_chooser<20> 464 { 465 template< 466 typename T0, typename T1, typename T2, typename T3, typename T4 467 , typename T5, typename T6, typename T7, typename T8, typename T9 468 , typename T10, typename T11, typename T12, typename T13, typename T14 469 , typename T15, typename T16, typename T17, typename T18, typename T19 470 > 471 struct result_ 472 { 473 typedef typename set20< 474 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 475 >::type type; 476 477 }; 478 }; 479 480 } // namespace aux 481 482 namespace aux { 483 484 template< typename T > 485 struct is_set_arg 486 { 487 BOOST_STATIC_CONSTANT(bool, value = true); 488 }; 489 490 template<> 491 struct is_set_arg<na> 492 { 493 BOOST_STATIC_CONSTANT(bool, value = false); 494 }; 495 496 template< 497 typename T1, typename T2, typename T3, typename T4, typename T5 498 , typename T6, typename T7, typename T8, typename T9, typename T10 499 , typename T11, typename T12, typename T13, typename T14, typename T15 500 , typename T16, typename T17, typename T18, typename T19, typename T20 501 > 502 struct set_count_args 503 { 504 BOOST_STATIC_CONSTANT(int, value = 505 is_set_arg<T1>::value + is_set_arg<T2>::value 506 + is_set_arg<T3>::value + is_set_arg<T4>::value 507 + is_set_arg<T5>::value + is_set_arg<T6>::value 508 + is_set_arg<T7>::value + is_set_arg<T8>::value 509 + is_set_arg<T9>::value + is_set_arg<T10>::value 510 + is_set_arg<T11>::value + is_set_arg<T12>::value 511 + is_set_arg<T13>::value + is_set_arg<T14>::value 512 + is_set_arg<T15>::value + is_set_arg<T16>::value 513 + is_set_arg<T17>::value + is_set_arg<T18>::value 514 + is_set_arg<T19>::value + is_set_arg<T20>::value 515 ); 516 517 }; 518 519 template< 520 typename T0, typename T1, typename T2, typename T3, typename T4 521 , typename T5, typename T6, typename T7, typename T8, typename T9 522 , typename T10, typename T11, typename T12, typename T13, typename T14 523 , typename T15, typename T16, typename T17, typename T18, typename T19 524 > 525 struct set_impl 526 { 527 typedef aux::set_count_args< 528 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 529 > arg_num_; 530 531 typedef typename aux::set_chooser< arg_num_::value > 532 ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type; 533 }; 534 535 } // namespace aux 536 537 template< 538 typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na 539 , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na 540 , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na 541 , typename T12 = na, typename T13 = na, typename T14 = na 542 , typename T15 = na, typename T16 = na, typename T17 = na 543 , typename T18 = na, typename T19 = na 544 > 545 struct set 546 : aux::set_impl< 547 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 548 >::type 549 { 550 typedef typename aux::set_impl< 551 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 552 >::type type; 553 }; 554 555 }} 556 557