annotate DEPENDENCIES/generic/include/boost/spirit/home/classic/phoenix/tuple_helpers.hpp @ 118:770eb830ec19 emscripten

Typo fix
author Chris Cannam
date Wed, 18 May 2016 16:14:08 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /*=============================================================================
Chris@16 2 Phoenix V1.2.1
Chris@16 3 Copyright (c) 2002 Joel de Guzman
Chris@16 4 Copyright (c) 2002-2003 Hartmut Kaiser
Chris@16 5
Chris@16 6 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@16 7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8 ==============================================================================*/
Chris@16 9 #ifndef PHOENIX_TUPLEHELPERS_HPP
Chris@16 10 #define PHOENIX_TUPLEHELPERS_HPP
Chris@16 11
Chris@16 12 ///////////////////////////////////////////////////////////////////////////////
Chris@16 13 #include <cassert>
Chris@16 14 #include <boost/spirit/home/classic/phoenix/tuples.hpp>
Chris@16 15
Chris@16 16 ///////////////////////////////////////////////////////////////////////////////
Chris@16 17 namespace phoenix
Chris@16 18 {
Chris@16 19
Chris@16 20 ///////////////////////////////////////////////////////////////////////////////
Chris@16 21 //
Chris@16 22 // make_tuple template class
Chris@16 23 //
Chris@16 24 // This template class is used to calculate a tuple type required to hold
Chris@16 25 // the given template parameter type
Chris@16 26 //
Chris@16 27 ///////////////////////////////////////////////////////////////////////////////
Chris@16 28
Chris@16 29 ///////////////////////////////////////////////////////////////////////////////
Chris@16 30 // normal (non-tuple types are wrapped into a tuple)
Chris@16 31 template <typename ResultT>
Chris@16 32 struct make_tuple {
Chris@16 33
Chris@16 34 typedef tuple<ResultT> type;
Chris@16 35 };
Chris@16 36
Chris@16 37 ///////////////////////////////////////////////////////////////////////////////
Chris@16 38 // nil_t is converted to an empty tuple type
Chris@16 39 template <>
Chris@16 40 struct make_tuple<nil_t> {
Chris@16 41
Chris@16 42 typedef tuple<> type;
Chris@16 43 };
Chris@16 44
Chris@16 45 ///////////////////////////////////////////////////////////////////////////////
Chris@16 46 // tuple types are left alone without any refactoring
Chris@16 47 template <
Chris@16 48 typename A, typename B, typename C
Chris@16 49 #if PHOENIX_LIMIT > 3
Chris@16 50 , typename D, typename E, typename F
Chris@16 51 #if PHOENIX_LIMIT > 6
Chris@16 52 , typename G, typename H, typename I
Chris@16 53 #if PHOENIX_LIMIT > 9
Chris@16 54 , typename J, typename K, typename L
Chris@16 55 #if PHOENIX_LIMIT > 12
Chris@16 56 , typename M, typename N, typename O
Chris@16 57 #endif
Chris@16 58 #endif
Chris@16 59 #endif
Chris@16 60 #endif
Chris@16 61 >
Chris@16 62 struct make_tuple<tuple<A, B, C
Chris@16 63 #if PHOENIX_LIMIT > 3
Chris@16 64 , D, E, F
Chris@16 65 #if PHOENIX_LIMIT > 6
Chris@16 66 , G, H, I
Chris@16 67 #if PHOENIX_LIMIT > 9
Chris@16 68 , J, K, L
Chris@16 69 #if PHOENIX_LIMIT > 12
Chris@16 70 , M, N, O
Chris@16 71 #endif
Chris@16 72 #endif
Chris@16 73 #endif
Chris@16 74 #endif
Chris@16 75 > > {
Chris@16 76
Chris@16 77 // the tuple parameter itself is the required tuple type
Chris@16 78 typedef tuple<A, B, C
Chris@16 79 #if PHOENIX_LIMIT > 3
Chris@16 80 , D, E, F
Chris@16 81 #if PHOENIX_LIMIT > 6
Chris@16 82 , G, H, I
Chris@16 83 #if PHOENIX_LIMIT > 9
Chris@16 84 , J, K, L
Chris@16 85 #if PHOENIX_LIMIT > 12
Chris@16 86 , M, N, O
Chris@16 87 #endif
Chris@16 88 #endif
Chris@16 89 #endif
Chris@16 90 #endif
Chris@16 91 > type;
Chris@16 92 };
Chris@16 93
Chris@16 94 ///////////////////////////////////////////////////////////////////////////////
Chris@16 95 //
Chris@16 96 // concat_tuple type computer
Chris@16 97 //
Chris@16 98 // This class returns the type of a tuple, which is constructed by
Chris@16 99 // concatenating a tuple with a given type
Chris@16 100 //
Chris@16 101 ///////////////////////////////////////////////////////////////////////////////
Chris@16 102 template <typename TupleT, typename AppendT>
Chris@16 103 struct concat_tuple;
Chris@16 104
Chris@16 105 ///////////////////////////////////////////////////////////////////////////////
Chris@16 106 //
Chris@16 107 // concat tuple <0 member> class
Chris@16 108 //
Chris@16 109 ///////////////////////////////////////////////////////////////////////////////
Chris@16 110 template <typename AppendT>
Chris@16 111 struct concat_tuple<tuple<>, AppendT> {
Chris@16 112
Chris@16 113 typedef tuple<AppendT> type;
Chris@16 114 };
Chris@16 115
Chris@16 116 template <>
Chris@16 117 struct concat_tuple<tuple<>, nil_t> {
Chris@16 118
Chris@16 119 typedef tuple<> type;
Chris@16 120 };
Chris@16 121
Chris@16 122 ///////////////////////////////////////////////////////////////////////////////
Chris@16 123 //
Chris@16 124 // concat tuple <1 member> class
Chris@16 125 //
Chris@16 126 ///////////////////////////////////////////////////////////////////////////////
Chris@16 127 template <typename A, typename AppendT>
Chris@16 128 struct concat_tuple<tuple<A>, AppendT> {
Chris@16 129
Chris@16 130 typedef tuple<A, AppendT> type;
Chris@16 131 };
Chris@16 132
Chris@16 133 template <typename A>
Chris@16 134 struct concat_tuple<tuple<A>, nil_t> {
Chris@16 135
Chris@16 136 typedef tuple<A> type;
Chris@16 137 };
Chris@16 138
Chris@16 139 ///////////////////////////////////////////////////////////////////////////////
Chris@16 140 //
Chris@16 141 // concat tuple <2 member> class
Chris@16 142 //
Chris@16 143 ///////////////////////////////////////////////////////////////////////////////
Chris@16 144 template <typename A, typename B, typename AppendT>
Chris@16 145 struct concat_tuple<tuple<A, B>, AppendT> {
Chris@16 146
Chris@16 147 typedef tuple<A, B, AppendT> type;
Chris@16 148 };
Chris@16 149
Chris@16 150 template <typename A, typename B>
Chris@16 151 struct concat_tuple<tuple<A, B>, nil_t> {
Chris@16 152
Chris@16 153 typedef tuple<A, B> type;
Chris@16 154 };
Chris@16 155
Chris@16 156 #if PHOENIX_LIMIT > 3
Chris@16 157 ///////////////////////////////////////////////////////////////////////////////
Chris@16 158 //
Chris@16 159 // concat tuple <3 member> class
Chris@16 160 //
Chris@16 161 ///////////////////////////////////////////////////////////////////////////////
Chris@16 162 template <
Chris@16 163 typename A, typename B, typename C,
Chris@16 164 typename AppendT
Chris@16 165 >
Chris@16 166 struct concat_tuple<tuple<A, B, C>, AppendT> {
Chris@16 167
Chris@16 168 typedef tuple<A, B, C, AppendT> type;
Chris@16 169 };
Chris@16 170
Chris@16 171 template <
Chris@16 172 typename A, typename B, typename C
Chris@16 173 >
Chris@16 174 struct concat_tuple<tuple<A, B, C>, nil_t> {
Chris@16 175
Chris@16 176 typedef tuple<A, B, C> type;
Chris@16 177 };
Chris@16 178
Chris@16 179 ///////////////////////////////////////////////////////////////////////////////
Chris@16 180 //
Chris@16 181 // concat tuple <4 member> class
Chris@16 182 //
Chris@16 183 ///////////////////////////////////////////////////////////////////////////////
Chris@16 184 template <
Chris@16 185 typename A, typename B, typename C, typename D,
Chris@16 186 typename AppendT
Chris@16 187 >
Chris@16 188 struct concat_tuple<tuple<A, B, C, D>, AppendT> {
Chris@16 189
Chris@16 190 typedef tuple<A, B, C, D, AppendT> type;
Chris@16 191 };
Chris@16 192
Chris@16 193 template <
Chris@16 194 typename A, typename B, typename C, typename D
Chris@16 195 >
Chris@16 196 struct concat_tuple<tuple<A, B, C, D>, nil_t> {
Chris@16 197
Chris@16 198 typedef tuple<A, B, C, D> type;
Chris@16 199 };
Chris@16 200
Chris@16 201 ///////////////////////////////////////////////////////////////////////////////
Chris@16 202 //
Chris@16 203 // concat tuple <5 member> class
Chris@16 204 //
Chris@16 205 ///////////////////////////////////////////////////////////////////////////////
Chris@16 206 template <
Chris@16 207 typename A, typename B, typename C, typename D, typename E,
Chris@16 208 typename AppendT
Chris@16 209 >
Chris@16 210 struct concat_tuple<tuple<A, B, C, D, E>, AppendT> {
Chris@16 211
Chris@16 212 typedef tuple<A, B, C, D, E, AppendT> type;
Chris@16 213 };
Chris@16 214
Chris@16 215 template <
Chris@16 216 typename A, typename B, typename C, typename D, typename E
Chris@16 217 >
Chris@16 218 struct concat_tuple<tuple<A, B, C, D, E>, nil_t> {
Chris@16 219
Chris@16 220 typedef tuple<A, B, C, D, E> type;
Chris@16 221 };
Chris@16 222
Chris@16 223 #if PHOENIX_LIMIT > 6
Chris@16 224 ///////////////////////////////////////////////////////////////////////////////
Chris@16 225 //
Chris@16 226 // concat tuple <6 member> class
Chris@16 227 //
Chris@16 228 ///////////////////////////////////////////////////////////////////////////////
Chris@16 229 template <
Chris@16 230 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 231 typename AppendT
Chris@16 232 >
Chris@16 233 struct concat_tuple<tuple<A, B, C, D, E, F>, AppendT> {
Chris@16 234
Chris@16 235 typedef tuple<A, B, C, D, E, F, AppendT> type;
Chris@16 236 };
Chris@16 237
Chris@16 238 template <
Chris@16 239 typename A, typename B, typename C, typename D, typename E, typename F
Chris@16 240 >
Chris@16 241 struct concat_tuple<tuple<A, B, C, D, E, F>, nil_t> {
Chris@16 242
Chris@16 243 typedef tuple<A, B, C, D, E, F> type;
Chris@16 244 };
Chris@16 245
Chris@16 246 ///////////////////////////////////////////////////////////////////////////////
Chris@16 247 //
Chris@16 248 // concat tuple <7 member> class
Chris@16 249 //
Chris@16 250 ///////////////////////////////////////////////////////////////////////////////
Chris@16 251 template <
Chris@16 252 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 253 typename G,
Chris@16 254 typename AppendT
Chris@16 255 >
Chris@16 256 struct concat_tuple<tuple<A, B, C, D, E, F, G>, AppendT> {
Chris@16 257
Chris@16 258 typedef tuple<A, B, C, D, E, F, G, AppendT> type;
Chris@16 259 };
Chris@16 260
Chris@16 261 template <
Chris@16 262 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 263 typename G
Chris@16 264 >
Chris@16 265 struct concat_tuple<tuple<A, B, C, D, E, F, G>, nil_t> {
Chris@16 266
Chris@16 267 typedef tuple<A, B, C, D, E, F, G> type;
Chris@16 268 };
Chris@16 269
Chris@16 270 ///////////////////////////////////////////////////////////////////////////////
Chris@16 271 //
Chris@16 272 // concat tuple <8 member> class
Chris@16 273 //
Chris@16 274 ///////////////////////////////////////////////////////////////////////////////
Chris@16 275 template <
Chris@16 276 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 277 typename G, typename H,
Chris@16 278 typename AppendT
Chris@16 279 >
Chris@16 280 struct concat_tuple<tuple<A, B, C, D, E, F, G, H>, AppendT> {
Chris@16 281
Chris@16 282 typedef tuple<A, B, C, D, E, F, G, H, AppendT> type;
Chris@16 283 };
Chris@16 284
Chris@16 285 template <
Chris@16 286 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 287 typename G, typename H
Chris@16 288 >
Chris@16 289 struct concat_tuple<tuple<A, B, C, D, E, F, G, H>, nil_t> {
Chris@16 290
Chris@16 291 typedef tuple<A, B, C, D, E, F, G, H> type;
Chris@16 292 };
Chris@16 293
Chris@16 294 #if PHOENIX_LIMIT > 9
Chris@16 295 ///////////////////////////////////////////////////////////////////////////////
Chris@16 296 //
Chris@16 297 // concat tuple <9 member> class
Chris@16 298 //
Chris@16 299 ///////////////////////////////////////////////////////////////////////////////
Chris@16 300 template <
Chris@16 301 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 302 typename G, typename H, typename I,
Chris@16 303 typename AppendT
Chris@16 304 >
Chris@16 305 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I>, AppendT> {
Chris@16 306
Chris@16 307 typedef tuple<A, B, C, D, E, F, G, H, I, AppendT> type;
Chris@16 308 };
Chris@16 309
Chris@16 310 template <
Chris@16 311 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 312 typename G, typename H, typename I
Chris@16 313 >
Chris@16 314 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I>, nil_t> {
Chris@16 315
Chris@16 316 typedef tuple<A, B, C, D, E, F, G, H, I> type;
Chris@16 317 };
Chris@16 318
Chris@16 319 ///////////////////////////////////////////////////////////////////////////////
Chris@16 320 //
Chris@16 321 // concat tuple <10 member> class
Chris@16 322 //
Chris@16 323 ///////////////////////////////////////////////////////////////////////////////
Chris@16 324 template <
Chris@16 325 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 326 typename G, typename H, typename I, typename J,
Chris@16 327 typename AppendT
Chris@16 328 >
Chris@16 329 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J>, AppendT> {
Chris@16 330
Chris@16 331 typedef tuple<A, B, C, D, E, F, G, H, I, J, AppendT> type;
Chris@16 332 };
Chris@16 333
Chris@16 334 template <
Chris@16 335 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 336 typename G, typename H, typename I, typename J
Chris@16 337 >
Chris@16 338 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J>, nil_t> {
Chris@16 339
Chris@16 340 typedef tuple<A, B, C, D, E, F, G, H, I, J> type;
Chris@16 341 };
Chris@16 342
Chris@16 343 ///////////////////////////////////////////////////////////////////////////////
Chris@16 344 //
Chris@16 345 // concat tuple <11 member> class
Chris@16 346 //
Chris@16 347 ///////////////////////////////////////////////////////////////////////////////
Chris@16 348 template <
Chris@16 349 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 350 typename G, typename H, typename I, typename J, typename K,
Chris@16 351 typename AppendT
Chris@16 352 >
Chris@16 353 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K>, AppendT> {
Chris@16 354
Chris@16 355 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, AppendT> type;
Chris@16 356 };
Chris@16 357
Chris@16 358 template <
Chris@16 359 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 360 typename G, typename H, typename I, typename J, typename K
Chris@16 361 >
Chris@16 362 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K>, nil_t> {
Chris@16 363
Chris@16 364 typedef tuple<A, B, C, D, E, F, G, H, I, J, K> type;
Chris@16 365 };
Chris@16 366
Chris@16 367 #if PHOENIX_LIMIT > 12
Chris@16 368 ///////////////////////////////////////////////////////////////////////////////
Chris@16 369 //
Chris@16 370 // concat tuple <12 member> class
Chris@16 371 //
Chris@16 372 ///////////////////////////////////////////////////////////////////////////////
Chris@16 373 template <
Chris@16 374 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 375 typename G, typename H, typename I, typename J, typename K, typename L,
Chris@16 376 typename AppendT
Chris@16 377 >
Chris@16 378 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L>, AppendT> {
Chris@16 379
Chris@16 380 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, AppendT> type;
Chris@16 381 };
Chris@16 382
Chris@16 383 template <
Chris@16 384 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 385 typename G, typename H, typename I, typename J, typename K, typename L
Chris@16 386 >
Chris@16 387 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L>, nil_t> {
Chris@16 388
Chris@16 389 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L> type;
Chris@16 390 };
Chris@16 391
Chris@16 392 ///////////////////////////////////////////////////////////////////////////////
Chris@16 393 //
Chris@16 394 // concat tuple <13 member> class
Chris@16 395 //
Chris@16 396 ///////////////////////////////////////////////////////////////////////////////
Chris@16 397 template <
Chris@16 398 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 399 typename G, typename H, typename I, typename J, typename K, typename L,
Chris@16 400 typename M,
Chris@16 401 typename AppendT
Chris@16 402 >
Chris@16 403 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M>, AppendT> {
Chris@16 404
Chris@16 405 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, AppendT> type;
Chris@16 406 };
Chris@16 407
Chris@16 408 template <
Chris@16 409 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 410 typename G, typename H, typename I, typename J, typename K, typename L,
Chris@16 411 typename M
Chris@16 412 >
Chris@16 413 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M>, nil_t> {
Chris@16 414
Chris@16 415 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M> type;
Chris@16 416 };
Chris@16 417
Chris@16 418 ///////////////////////////////////////////////////////////////////////////////
Chris@16 419 //
Chris@16 420 // concat tuple <14 member> class
Chris@16 421 //
Chris@16 422 ///////////////////////////////////////////////////////////////////////////////
Chris@16 423 template <
Chris@16 424 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 425 typename G, typename H, typename I, typename J, typename K, typename L,
Chris@16 426 typename M, typename N,
Chris@16 427 typename AppendT
Chris@16 428 >
Chris@16 429 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N>, AppendT> {
Chris@16 430
Chris@16 431 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, AppendT> type;
Chris@16 432 };
Chris@16 433
Chris@16 434 template <
Chris@16 435 typename A, typename B, typename C, typename D, typename E, typename F,
Chris@16 436 typename G, typename H, typename I, typename J, typename K, typename L,
Chris@16 437 typename M, typename N
Chris@16 438 >
Chris@16 439 struct concat_tuple<tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N>, nil_t> {
Chris@16 440
Chris@16 441 typedef tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N> type;
Chris@16 442 };
Chris@16 443
Chris@16 444 #endif
Chris@16 445 #endif
Chris@16 446 #endif
Chris@16 447 #endif
Chris@16 448
Chris@16 449 ///////////////////////////////////////////////////////////////////////////////
Chris@16 450 //
Chris@16 451 // concat_tuples type computer
Chris@16 452 //
Chris@16 453 // This template class returns the type of a tuple built from the
Chris@16 454 // concatenation of two given tuples.
Chris@16 455 //
Chris@16 456 ///////////////////////////////////////////////////////////////////////////////
Chris@16 457 template <typename TupleT1, typename TupleT2, int N, typename AppendT>
Chris@16 458 struct concat_tuple_element {
Chris@16 459
Chris@16 460 typedef
Chris@16 461 typename concat_tuple_element<
Chris@16 462 typename concat_tuple<TupleT1, AppendT>::type, TupleT2, N+1,
Chris@16 463 typename tuple_element<N+1, TupleT2>::type
Chris@16 464 >::type
Chris@16 465 type;
Chris@16 466 };
Chris@16 467
Chris@16 468 template <typename TupleT1, typename TupleT2, int N>
Chris@16 469 struct concat_tuple_element<TupleT1, TupleT2, N, nil_t> {
Chris@16 470
Chris@16 471 typedef TupleT1 type;
Chris@16 472 };
Chris@16 473
Chris@16 474 template <typename TupleT1, typename TupleT2>
Chris@16 475 struct concat_tuples {
Chris@16 476
Chris@16 477 typedef
Chris@16 478 typename concat_tuple_element<
Chris@16 479 TupleT1, TupleT2, 0,
Chris@16 480 typename tuple_element<0, TupleT2>::type
Chris@16 481 >::type
Chris@16 482 type;
Chris@16 483 };
Chris@16 484
Chris@16 485 ///////////////////////////////////////////////////////////////////////////////
Chris@16 486 //
Chris@16 487 // convert_actors template function
Chris@16 488 //
Chris@16 489 // The convert_actors template functions constructs a new tuple object
Chris@16 490 // composed of the elements returned by the actors contained in the
Chris@16 491 // input tuple. (i.e. the given tuple type 'actor_tuple' contains a set
Chris@16 492 // of actors to evaluate and the resulting tuple contains the results of
Chris@16 493 // evaluating the actors.)
Chris@16 494 //
Chris@16 495 ///////////////////////////////////////////////////////////////////////////////
Chris@16 496 template <typename ActorT, typename TupleT>
Chris@16 497 struct actor_result; // forward declaration
Chris@16 498
Chris@16 499 namespace impl
Chris@16 500 {
Chris@16 501 template <unsigned N>
Chris@16 502 struct convert_actors_ {};
Chris@16 503 }
Chris@16 504
Chris@16 505 template <typename TupleResultT, typename ActorTupleT>
Chris@16 506 TupleResultT
Chris@16 507 convert_actors(ActorTupleT const& actor_tuple)
Chris@16 508 {
Chris@16 509 BOOST_STATIC_ASSERT(ActorTupleT::length <= TupleResultT::length);
Chris@16 510 BOOST_STATIC_CONSTANT(int, length = TupleResultT::length);
Chris@16 511 return impl::convert_actors_<length>
Chris@16 512 ::template apply<TupleResultT, ActorTupleT>::do_(actor_tuple);
Chris@16 513 }
Chris@16 514
Chris@16 515 namespace impl
Chris@16 516 {
Chris@16 517 template <int N, typename TupleResultT, typename ActorTupleT>
Chris@16 518 struct convert_actor
Chris@16 519 {
Chris@16 520 typedef typename tuple_element<N, TupleResultT>::type type;
Chris@16 521
Chris@16 522 template <bool C>
Chris@16 523 struct is_default_t {};
Chris@16 524 typedef is_default_t<true> is_default;
Chris@16 525 typedef is_default_t<false> is_not_default;
Chris@16 526
Chris@16 527 static type
Chris@16 528 actor_element(ActorTupleT const& /*actor_tuple*/, is_default)
Chris@16 529 {
Chris@16 530 return type(); // default construct
Chris@16 531 }
Chris@16 532
Chris@16 533 static type
Chris@16 534 actor_element(ActorTupleT const& actor_tuple, is_not_default)
Chris@16 535 {
Chris@16 536 BOOST_STATIC_ASSERT(ActorTupleT::length <= TupleResultT::length);
Chris@16 537 return actor_tuple[tuple_index<N>()](); // apply the actor
Chris@16 538 }
Chris@16 539
Chris@16 540 static type
Chris@16 541 do_(ActorTupleT const& actor_tuple)
Chris@16 542 {
Chris@16 543 return actor_element(
Chris@16 544 actor_tuple, is_default_t<(N >= ActorTupleT::length)>());
Chris@16 545 }
Chris@16 546 };
Chris@16 547
Chris@16 548 ///////////////////////////////////////
Chris@16 549 template <>
Chris@16 550 struct convert_actors_<1>
Chris@16 551 {
Chris@16 552 template <typename TupleResultT, typename ActorTupleT>
Chris@16 553 struct apply
Chris@16 554 {
Chris@16 555 static TupleResultT
Chris@16 556 do_(ActorTupleT const& actor_tuple)
Chris@16 557 {
Chris@16 558 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 559
Chris@16 560 return TupleResultT(
Chris@16 561 converter0::do_(actor_tuple)
Chris@16 562 );
Chris@16 563 }
Chris@16 564 };
Chris@16 565 };
Chris@16 566
Chris@16 567 ///////////////////////////////////////
Chris@16 568 template <>
Chris@16 569 struct convert_actors_<2>
Chris@16 570 {
Chris@16 571 template <typename TupleResultT, typename ActorTupleT>
Chris@16 572 struct apply
Chris@16 573 {
Chris@16 574 static TupleResultT
Chris@16 575 do_(ActorTupleT const& actor_tuple)
Chris@16 576 {
Chris@16 577 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 578 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 579
Chris@16 580 using namespace tuple_index_names;
Chris@16 581 return TupleResultT(
Chris@16 582 converter0::do_(actor_tuple)
Chris@16 583 , converter1::do_(actor_tuple)
Chris@16 584 );
Chris@16 585 }
Chris@16 586 };
Chris@16 587 };
Chris@16 588
Chris@16 589 ///////////////////////////////////////
Chris@16 590 template <>
Chris@16 591 struct convert_actors_<3>
Chris@16 592 {
Chris@16 593 template <typename TupleResultT, typename ActorTupleT>
Chris@16 594 struct apply
Chris@16 595 {
Chris@16 596 static TupleResultT
Chris@16 597 do_(ActorTupleT const& actor_tuple)
Chris@16 598 {
Chris@16 599 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 600 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 601 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 602
Chris@16 603 using namespace tuple_index_names;
Chris@16 604 return TupleResultT(
Chris@16 605 converter0::do_(actor_tuple)
Chris@16 606 , converter1::do_(actor_tuple)
Chris@16 607 , converter2::do_(actor_tuple)
Chris@16 608 );
Chris@16 609 }
Chris@16 610 };
Chris@16 611 };
Chris@16 612
Chris@16 613 #if PHOENIX_LIMIT > 3
Chris@16 614
Chris@16 615 /////////////////////////////////////
Chris@16 616 template <>
Chris@16 617 struct convert_actors_<4>
Chris@16 618 {
Chris@16 619 template <typename TupleResultT, typename ActorTupleT>
Chris@16 620 struct apply
Chris@16 621 {
Chris@16 622 static TupleResultT
Chris@16 623 do_(ActorTupleT const& actor_tuple)
Chris@16 624 {
Chris@16 625 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 626 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 627 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 628 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 629
Chris@16 630 using namespace tuple_index_names;
Chris@16 631 return TupleResultT(
Chris@16 632 converter0::do_(actor_tuple)
Chris@16 633 , converter1::do_(actor_tuple)
Chris@16 634 , converter2::do_(actor_tuple)
Chris@16 635 , converter3::do_(actor_tuple)
Chris@16 636 );
Chris@16 637 }
Chris@16 638 };
Chris@16 639 };
Chris@16 640
Chris@16 641 /////////////////////////////////////
Chris@16 642 template <>
Chris@16 643 struct convert_actors_<5>
Chris@16 644 {
Chris@16 645 template <typename TupleResultT, typename ActorTupleT>
Chris@16 646 struct apply
Chris@16 647 {
Chris@16 648 static TupleResultT
Chris@16 649 do_(ActorTupleT const& actor_tuple)
Chris@16 650 {
Chris@16 651 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 652 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 653 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 654 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 655 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 656
Chris@16 657 using namespace tuple_index_names;
Chris@16 658 return TupleResultT(
Chris@16 659 converter0::do_(actor_tuple)
Chris@16 660 , converter1::do_(actor_tuple)
Chris@16 661 , converter2::do_(actor_tuple)
Chris@16 662 , converter3::do_(actor_tuple)
Chris@16 663 , converter4::do_(actor_tuple)
Chris@16 664 );
Chris@16 665 }
Chris@16 666 };
Chris@16 667 };
Chris@16 668
Chris@16 669 /////////////////////////////////////
Chris@16 670 template <>
Chris@16 671 struct convert_actors_<6>
Chris@16 672 {
Chris@16 673 template <typename TupleResultT, typename ActorTupleT>
Chris@16 674 struct apply
Chris@16 675 {
Chris@16 676 static TupleResultT
Chris@16 677 do_(ActorTupleT const& actor_tuple)
Chris@16 678 {
Chris@16 679 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 680 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 681 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 682 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 683 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 684 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 685
Chris@16 686 using namespace tuple_index_names;
Chris@16 687 return TupleResultT(
Chris@16 688 converter0::do_(actor_tuple)
Chris@16 689 , converter1::do_(actor_tuple)
Chris@16 690 , converter2::do_(actor_tuple)
Chris@16 691 , converter3::do_(actor_tuple)
Chris@16 692 , converter4::do_(actor_tuple)
Chris@16 693 , converter5::do_(actor_tuple)
Chris@16 694 );
Chris@16 695 }
Chris@16 696 };
Chris@16 697 };
Chris@16 698
Chris@16 699 #if PHOENIX_LIMIT > 6
Chris@16 700
Chris@16 701 /////////////////////////////////////
Chris@16 702 template <>
Chris@16 703 struct convert_actors_<7>
Chris@16 704 {
Chris@16 705 template <typename TupleResultT, typename ActorTupleT>
Chris@16 706 struct apply
Chris@16 707 {
Chris@16 708 static TupleResultT
Chris@16 709 do_(ActorTupleT const& actor_tuple)
Chris@16 710 {
Chris@16 711 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 712 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 713 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 714 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 715 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 716 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 717 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 718
Chris@16 719 using namespace tuple_index_names;
Chris@16 720 return TupleResultT(
Chris@16 721 converter0::do_(actor_tuple)
Chris@16 722 , converter1::do_(actor_tuple)
Chris@16 723 , converter2::do_(actor_tuple)
Chris@16 724 , converter3::do_(actor_tuple)
Chris@16 725 , converter4::do_(actor_tuple)
Chris@16 726 , converter5::do_(actor_tuple)
Chris@16 727 , converter6::do_(actor_tuple)
Chris@16 728 );
Chris@16 729 }
Chris@16 730 };
Chris@16 731 };
Chris@16 732
Chris@16 733 /////////////////////////////////////
Chris@16 734 template <>
Chris@16 735 struct convert_actors_<8>
Chris@16 736 {
Chris@16 737 template <typename TupleResultT, typename ActorTupleT>
Chris@16 738 struct apply
Chris@16 739 {
Chris@16 740 static TupleResultT
Chris@16 741 do_(ActorTupleT const& actor_tuple)
Chris@16 742 {
Chris@16 743 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 744 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 745 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 746 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 747 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 748 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 749 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 750 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 751
Chris@16 752 using namespace tuple_index_names;
Chris@16 753 return TupleResultT(
Chris@16 754 converter0::do_(actor_tuple)
Chris@16 755 , converter1::do_(actor_tuple)
Chris@16 756 , converter2::do_(actor_tuple)
Chris@16 757 , converter3::do_(actor_tuple)
Chris@16 758 , converter4::do_(actor_tuple)
Chris@16 759 , converter5::do_(actor_tuple)
Chris@16 760 , converter6::do_(actor_tuple)
Chris@16 761 , converter7::do_(actor_tuple)
Chris@16 762 );
Chris@16 763 }
Chris@16 764 };
Chris@16 765 };
Chris@16 766
Chris@16 767 /////////////////////////////////////
Chris@16 768 template <>
Chris@16 769 struct convert_actors_<9>
Chris@16 770 {
Chris@16 771 template <typename TupleResultT, typename ActorTupleT>
Chris@16 772 struct apply
Chris@16 773 {
Chris@16 774 static TupleResultT
Chris@16 775 do_(ActorTupleT const& actor_tuple)
Chris@16 776 {
Chris@16 777 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 778 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 779 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 780 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 781 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 782 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 783 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 784 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 785 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 786
Chris@16 787 using namespace tuple_index_names;
Chris@16 788 return TupleResultT(
Chris@16 789 converter0::do_(actor_tuple)
Chris@16 790 , converter1::do_(actor_tuple)
Chris@16 791 , converter2::do_(actor_tuple)
Chris@16 792 , converter3::do_(actor_tuple)
Chris@16 793 , converter4::do_(actor_tuple)
Chris@16 794 , converter5::do_(actor_tuple)
Chris@16 795 , converter6::do_(actor_tuple)
Chris@16 796 , converter7::do_(actor_tuple)
Chris@16 797 , converter8::do_(actor_tuple)
Chris@16 798 );
Chris@16 799 }
Chris@16 800 };
Chris@16 801 };
Chris@16 802
Chris@16 803 #if PHOENIX_LIMIT > 9
Chris@16 804
Chris@16 805 /////////////////////////////////////
Chris@16 806 template <>
Chris@16 807 struct convert_actors_<10>
Chris@16 808 {
Chris@16 809 template <typename TupleResultT, typename ActorTupleT>
Chris@16 810 struct apply
Chris@16 811 {
Chris@16 812 static TupleResultT
Chris@16 813 do_(ActorTupleT const& actor_tuple)
Chris@16 814 {
Chris@16 815 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 816 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 817 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 818 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 819 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 820 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 821 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 822 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 823 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 824 typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
Chris@16 825
Chris@16 826 using namespace tuple_index_names;
Chris@16 827 return TupleResultT(
Chris@16 828 converter0::do_(actor_tuple)
Chris@16 829 , converter1::do_(actor_tuple)
Chris@16 830 , converter2::do_(actor_tuple)
Chris@16 831 , converter3::do_(actor_tuple)
Chris@16 832 , converter4::do_(actor_tuple)
Chris@16 833 , converter5::do_(actor_tuple)
Chris@16 834 , converter6::do_(actor_tuple)
Chris@16 835 , converter7::do_(actor_tuple)
Chris@16 836 , converter8::do_(actor_tuple)
Chris@16 837 , converter9::do_(actor_tuple)
Chris@16 838 );
Chris@16 839 }
Chris@16 840 };
Chris@16 841 };
Chris@16 842
Chris@16 843 /////////////////////////////////////
Chris@16 844 template <>
Chris@16 845 struct convert_actors_<11>
Chris@16 846 {
Chris@16 847 template <typename TupleResultT, typename ActorTupleT>
Chris@16 848 struct apply
Chris@16 849 {
Chris@16 850 static TupleResultT
Chris@16 851 do_(ActorTupleT const& actor_tuple)
Chris@16 852 {
Chris@16 853 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 854 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 855 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 856 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 857 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 858 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 859 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 860 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 861 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 862 typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
Chris@16 863 typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
Chris@16 864
Chris@16 865 using namespace tuple_index_names;
Chris@16 866 return TupleResultT(
Chris@16 867 converter0::do_(actor_tuple)
Chris@16 868 , converter1::do_(actor_tuple)
Chris@16 869 , converter2::do_(actor_tuple)
Chris@16 870 , converter3::do_(actor_tuple)
Chris@16 871 , converter4::do_(actor_tuple)
Chris@16 872 , converter5::do_(actor_tuple)
Chris@16 873 , converter6::do_(actor_tuple)
Chris@16 874 , converter7::do_(actor_tuple)
Chris@16 875 , converter8::do_(actor_tuple)
Chris@16 876 , converter9::do_(actor_tuple)
Chris@16 877 , converter10::do_(actor_tuple)
Chris@16 878 );
Chris@16 879 }
Chris@16 880 };
Chris@16 881 };
Chris@16 882
Chris@16 883 /////////////////////////////////////
Chris@16 884 template <>
Chris@16 885 struct convert_actors_<12>
Chris@16 886 {
Chris@16 887 template <typename TupleResultT, typename ActorTupleT>
Chris@16 888 struct apply
Chris@16 889 {
Chris@16 890 static TupleResultT
Chris@16 891 do_(ActorTupleT const& actor_tuple)
Chris@16 892 {
Chris@16 893 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 894 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 895 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 896 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 897 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 898 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 899 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 900 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 901 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 902 typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
Chris@16 903 typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
Chris@16 904 typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
Chris@16 905
Chris@16 906 using namespace tuple_index_names;
Chris@16 907 return TupleResultT(
Chris@16 908 converter0::do_(actor_tuple)
Chris@16 909 , converter1::do_(actor_tuple)
Chris@16 910 , converter2::do_(actor_tuple)
Chris@16 911 , converter3::do_(actor_tuple)
Chris@16 912 , converter4::do_(actor_tuple)
Chris@16 913 , converter5::do_(actor_tuple)
Chris@16 914 , converter6::do_(actor_tuple)
Chris@16 915 , converter7::do_(actor_tuple)
Chris@16 916 , converter8::do_(actor_tuple)
Chris@16 917 , converter9::do_(actor_tuple)
Chris@16 918 , converter10::do_(actor_tuple)
Chris@16 919 , converter11::do_(actor_tuple)
Chris@16 920 );
Chris@16 921 }
Chris@16 922 };
Chris@16 923 };
Chris@16 924
Chris@16 925 #if PHOENIX_LIMIT > 12
Chris@16 926
Chris@16 927 /////////////////////////////////////
Chris@16 928 template <>
Chris@16 929 struct convert_actors_<13>
Chris@16 930 {
Chris@16 931 template <typename TupleResultT, typename ActorTupleT>
Chris@16 932 struct apply
Chris@16 933 {
Chris@16 934 static TupleResultT
Chris@16 935 do_(ActorTupleT const& actor_tuple)
Chris@16 936 {
Chris@16 937 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 938 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 939 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 940 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 941 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 942 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 943 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 944 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 945 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 946 typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
Chris@16 947 typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
Chris@16 948 typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
Chris@16 949 typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12;
Chris@16 950
Chris@16 951 using namespace tuple_index_names;
Chris@16 952 return TupleResultT(
Chris@16 953 converter0::do_(actor_tuple)
Chris@16 954 , converter1::do_(actor_tuple)
Chris@16 955 , converter2::do_(actor_tuple)
Chris@16 956 , converter3::do_(actor_tuple)
Chris@16 957 , converter4::do_(actor_tuple)
Chris@16 958 , converter5::do_(actor_tuple)
Chris@16 959 , converter6::do_(actor_tuple)
Chris@16 960 , converter7::do_(actor_tuple)
Chris@16 961 , converter8::do_(actor_tuple)
Chris@16 962 , converter9::do_(actor_tuple)
Chris@16 963 , converter10::do_(actor_tuple)
Chris@16 964 , converter11::do_(actor_tuple)
Chris@16 965 , converter12::do_(actor_tuple)
Chris@16 966 );
Chris@16 967 }
Chris@16 968 };
Chris@16 969 };
Chris@16 970
Chris@16 971 ///////////////////////////////////////
Chris@16 972 template <>
Chris@16 973 struct convert_actors_<14>
Chris@16 974 {
Chris@16 975 template <typename TupleResultT, typename ActorTupleT>
Chris@16 976 struct apply
Chris@16 977 {
Chris@16 978 static TupleResultT
Chris@16 979 do_(ActorTupleT const& actor_tuple)
Chris@16 980 {
Chris@16 981 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 982 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 983 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 984 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 985 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 986 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 987 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 988 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 989 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 990 typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
Chris@16 991 typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
Chris@16 992 typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
Chris@16 993 typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12;
Chris@16 994 typedef impl::convert_actor<13, TupleResultT, ActorTupleT> converter13;
Chris@16 995
Chris@16 996 using namespace tuple_index_names;
Chris@16 997 return TupleResultT(
Chris@16 998 converter0::do_(actor_tuple)
Chris@16 999 , converter1::do_(actor_tuple)
Chris@16 1000 , converter2::do_(actor_tuple)
Chris@16 1001 , converter3::do_(actor_tuple)
Chris@16 1002 , converter4::do_(actor_tuple)
Chris@16 1003 , converter5::do_(actor_tuple)
Chris@16 1004 , converter6::do_(actor_tuple)
Chris@16 1005 , converter7::do_(actor_tuple)
Chris@16 1006 , converter8::do_(actor_tuple)
Chris@16 1007 , converter9::do_(actor_tuple)
Chris@16 1008 , converter10::do_(actor_tuple)
Chris@16 1009 , converter11::do_(actor_tuple)
Chris@16 1010 , converter12::do_(actor_tuple)
Chris@16 1011 , converter13::do_(actor_tuple)
Chris@16 1012 );
Chris@16 1013 }
Chris@16 1014 };
Chris@16 1015 };
Chris@16 1016
Chris@16 1017 ///////////////////////////////////////
Chris@16 1018 template <>
Chris@16 1019 struct convert_actors_<15>
Chris@16 1020 {
Chris@16 1021 template <typename TupleResultT, typename ActorTupleT>
Chris@16 1022 struct apply
Chris@16 1023 {
Chris@16 1024 static TupleResultT
Chris@16 1025 do_(ActorTupleT const& actor_tuple)
Chris@16 1026 {
Chris@16 1027 typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0;
Chris@16 1028 typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1;
Chris@16 1029 typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2;
Chris@16 1030 typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3;
Chris@16 1031 typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4;
Chris@16 1032 typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5;
Chris@16 1033 typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6;
Chris@16 1034 typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7;
Chris@16 1035 typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8;
Chris@16 1036 typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9;
Chris@16 1037 typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10;
Chris@16 1038 typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11;
Chris@16 1039 typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12;
Chris@16 1040 typedef impl::convert_actor<13, TupleResultT, ActorTupleT> converter13;
Chris@16 1041 typedef impl::convert_actor<14, TupleResultT, ActorTupleT> converter14;
Chris@16 1042
Chris@16 1043 using namespace tuple_index_names;
Chris@16 1044 return TupleResultT(
Chris@16 1045 converter0::do_(actor_tuple)
Chris@16 1046 , converter1::do_(actor_tuple)
Chris@16 1047 , converter2::do_(actor_tuple)
Chris@16 1048 , converter3::do_(actor_tuple)
Chris@16 1049 , converter4::do_(actor_tuple)
Chris@16 1050 , converter5::do_(actor_tuple)
Chris@16 1051 , converter6::do_(actor_tuple)
Chris@16 1052 , converter7::do_(actor_tuple)
Chris@16 1053 , converter8::do_(actor_tuple)
Chris@16 1054 , converter9::do_(actor_tuple)
Chris@16 1055 , converter10::do_(actor_tuple)
Chris@16 1056 , converter11::do_(actor_tuple)
Chris@16 1057 , converter12::do_(actor_tuple)
Chris@16 1058 , converter13::do_(actor_tuple)
Chris@16 1059 , converter14::do_(actor_tuple)
Chris@16 1060 );
Chris@16 1061 }
Chris@16 1062 };
Chris@16 1063 };
Chris@16 1064
Chris@16 1065 #endif
Chris@16 1066 #endif
Chris@16 1067 #endif
Chris@16 1068 #endif
Chris@16 1069 } // namespace impl
Chris@16 1070
Chris@16 1071
Chris@16 1072 ///////////////////////////////////////////////////////////////////////////////
Chris@16 1073 } // namespace phoenix
Chris@16 1074
Chris@16 1075 #endif // PHOENIX_TUPLEHELPERS_HPP