1 /*============================================================================== 2 Copyright (c) 2005-2010 Joel de Guzman 3 Copyright (c) 2010 Thomas Heller 4 5 Distributed under the Boost Software License, Version 1.0. (See accompanying 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 ==============================================================================*/ 8 9 10 11 12 13 14 15 16 17 template <typename Fun, typename Expr, typename State, typename Data> 18 struct call_impl<Fun, Expr, State, Data, 1> 19 : proto::transform_impl<Expr, State, Data> 20 { 21 typedef 22 typename boost::phoenix::result_of::context<State, Data>::type 23 context_type; 24 typedef typename proto::result_of::child_c<Expr, 0>::type A0; 25 typedef 26 typename boost::result_of< 27 Fun(A0, context_type) 28 >::type 29 result_type; operator ()call_impl30 result_type operator()( 31 typename call_impl::expr_param e 32 , typename call_impl::state_param s 33 , typename call_impl::data_param d 34 ) const 35 { 36 return 37 Fun()( 38 proto::child_c< 0>(e) 39 , boost::phoenix::context(s, d) 40 ); 41 } 42 }; 43 44 45 46 47 48 49 50 51 template <typename Fun, typename Expr, typename State, typename Data> 52 struct call_impl<Fun, Expr, State, Data, 2> 53 : proto::transform_impl<Expr, State, Data> 54 { 55 typedef 56 typename boost::phoenix::result_of::context<State, Data>::type 57 context_type; 58 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; 59 typedef 60 typename boost::result_of< 61 Fun(A0 , A1, context_type) 62 >::type 63 result_type; operator ()call_impl64 result_type operator()( 65 typename call_impl::expr_param e 66 , typename call_impl::state_param s 67 , typename call_impl::data_param d 68 ) const 69 { 70 return 71 Fun()( 72 proto::child_c< 0>(e) , proto::child_c< 1>(e) 73 , boost::phoenix::context(s, d) 74 ); 75 } 76 }; 77 78 79 80 81 82 83 84 85 template <typename Fun, typename Expr, typename State, typename Data> 86 struct call_impl<Fun, Expr, State, Data, 3> 87 : proto::transform_impl<Expr, State, Data> 88 { 89 typedef 90 typename boost::phoenix::result_of::context<State, Data>::type 91 context_type; 92 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; 93 typedef 94 typename boost::result_of< 95 Fun(A0 , A1 , A2, context_type) 96 >::type 97 result_type; operator ()call_impl98 result_type operator()( 99 typename call_impl::expr_param e 100 , typename call_impl::state_param s 101 , typename call_impl::data_param d 102 ) const 103 { 104 return 105 Fun()( 106 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) 107 , boost::phoenix::context(s, d) 108 ); 109 } 110 }; 111 112 113 114 115 116 117 118 119 template <typename Fun, typename Expr, typename State, typename Data> 120 struct call_impl<Fun, Expr, State, Data, 4> 121 : proto::transform_impl<Expr, State, Data> 122 { 123 typedef 124 typename boost::phoenix::result_of::context<State, Data>::type 125 context_type; 126 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; 127 typedef 128 typename boost::result_of< 129 Fun(A0 , A1 , A2 , A3, context_type) 130 >::type 131 result_type; operator ()call_impl132 result_type operator()( 133 typename call_impl::expr_param e 134 , typename call_impl::state_param s 135 , typename call_impl::data_param d 136 ) const 137 { 138 return 139 Fun()( 140 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) 141 , boost::phoenix::context(s, d) 142 ); 143 } 144 }; 145 146 147 148 149 150 151 152 153 template <typename Fun, typename Expr, typename State, typename Data> 154 struct call_impl<Fun, Expr, State, Data, 5> 155 : proto::transform_impl<Expr, State, Data> 156 { 157 typedef 158 typename boost::phoenix::result_of::context<State, Data>::type 159 context_type; 160 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; 161 typedef 162 typename boost::result_of< 163 Fun(A0 , A1 , A2 , A3 , A4, context_type) 164 >::type 165 result_type; operator ()call_impl166 result_type operator()( 167 typename call_impl::expr_param e 168 , typename call_impl::state_param s 169 , typename call_impl::data_param d 170 ) const 171 { 172 return 173 Fun()( 174 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) 175 , boost::phoenix::context(s, d) 176 ); 177 } 178 }; 179 180 181 182 183 184 185 186 187 template <typename Fun, typename Expr, typename State, typename Data> 188 struct call_impl<Fun, Expr, State, Data, 6> 189 : proto::transform_impl<Expr, State, Data> 190 { 191 typedef 192 typename boost::phoenix::result_of::context<State, Data>::type 193 context_type; 194 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; 195 typedef 196 typename boost::result_of< 197 Fun(A0 , A1 , A2 , A3 , A4 , A5, context_type) 198 >::type 199 result_type; operator ()call_impl200 result_type operator()( 201 typename call_impl::expr_param e 202 , typename call_impl::state_param s 203 , typename call_impl::data_param d 204 ) const 205 { 206 return 207 Fun()( 208 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) 209 , boost::phoenix::context(s, d) 210 ); 211 } 212 }; 213 214 215 216 217 218 219 220 221 template <typename Fun, typename Expr, typename State, typename Data> 222 struct call_impl<Fun, Expr, State, Data, 7> 223 : proto::transform_impl<Expr, State, Data> 224 { 225 typedef 226 typename boost::phoenix::result_of::context<State, Data>::type 227 context_type; 228 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; 229 typedef 230 typename boost::result_of< 231 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6, context_type) 232 >::type 233 result_type; operator ()call_impl234 result_type operator()( 235 typename call_impl::expr_param e 236 , typename call_impl::state_param s 237 , typename call_impl::data_param d 238 ) const 239 { 240 return 241 Fun()( 242 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) 243 , boost::phoenix::context(s, d) 244 ); 245 } 246 }; 247 248 249 250 251 252 253 254 255 template <typename Fun, typename Expr, typename State, typename Data> 256 struct call_impl<Fun, Expr, State, Data, 8> 257 : proto::transform_impl<Expr, State, Data> 258 { 259 typedef 260 typename boost::phoenix::result_of::context<State, Data>::type 261 context_type; 262 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; 263 typedef 264 typename boost::result_of< 265 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7, context_type) 266 >::type 267 result_type; operator ()call_impl268 result_type operator()( 269 typename call_impl::expr_param e 270 , typename call_impl::state_param s 271 , typename call_impl::data_param d 272 ) const 273 { 274 return 275 Fun()( 276 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) 277 , boost::phoenix::context(s, d) 278 ); 279 } 280 }; 281 282 283 284 285 286 287 288 289 template <typename Fun, typename Expr, typename State, typename Data> 290 struct call_impl<Fun, Expr, State, Data, 9> 291 : proto::transform_impl<Expr, State, Data> 292 { 293 typedef 294 typename boost::phoenix::result_of::context<State, Data>::type 295 context_type; 296 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; 297 typedef 298 typename boost::result_of< 299 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8, context_type) 300 >::type 301 result_type; operator ()call_impl302 result_type operator()( 303 typename call_impl::expr_param e 304 , typename call_impl::state_param s 305 , typename call_impl::data_param d 306 ) const 307 { 308 return 309 Fun()( 310 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) 311 , boost::phoenix::context(s, d) 312 ); 313 } 314 }; 315 316 317 318 319 320 321 322 323 template <typename Fun, typename Expr, typename State, typename Data> 324 struct call_impl<Fun, Expr, State, Data, 10> 325 : proto::transform_impl<Expr, State, Data> 326 { 327 typedef 328 typename boost::phoenix::result_of::context<State, Data>::type 329 context_type; 330 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; 331 typedef 332 typename boost::result_of< 333 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9, context_type) 334 >::type 335 result_type; operator ()call_impl336 result_type operator()( 337 typename call_impl::expr_param e 338 , typename call_impl::state_param s 339 , typename call_impl::data_param d 340 ) const 341 { 342 return 343 Fun()( 344 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) 345 , boost::phoenix::context(s, d) 346 ); 347 } 348 }; 349 350 351 352 353 354 355 356 357 template <typename Fun, typename Expr, typename State, typename Data> 358 struct call_impl<Fun, Expr, State, Data, 11> 359 : proto::transform_impl<Expr, State, Data> 360 { 361 typedef 362 typename boost::phoenix::result_of::context<State, Data>::type 363 context_type; 364 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; 365 typedef 366 typename boost::result_of< 367 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10, context_type) 368 >::type 369 result_type; operator ()call_impl370 result_type operator()( 371 typename call_impl::expr_param e 372 , typename call_impl::state_param s 373 , typename call_impl::data_param d 374 ) const 375 { 376 return 377 Fun()( 378 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) 379 , boost::phoenix::context(s, d) 380 ); 381 } 382 }; 383 384 385 386 387 388 389 390 391 template <typename Fun, typename Expr, typename State, typename Data> 392 struct call_impl<Fun, Expr, State, Data, 12> 393 : proto::transform_impl<Expr, State, Data> 394 { 395 typedef 396 typename boost::phoenix::result_of::context<State, Data>::type 397 context_type; 398 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; 399 typedef 400 typename boost::result_of< 401 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11, context_type) 402 >::type 403 result_type; operator ()call_impl404 result_type operator()( 405 typename call_impl::expr_param e 406 , typename call_impl::state_param s 407 , typename call_impl::data_param d 408 ) const 409 { 410 return 411 Fun()( 412 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) 413 , boost::phoenix::context(s, d) 414 ); 415 } 416 }; 417 418 419 420 421 422 423 424 425 template <typename Fun, typename Expr, typename State, typename Data> 426 struct call_impl<Fun, Expr, State, Data, 13> 427 : proto::transform_impl<Expr, State, Data> 428 { 429 typedef 430 typename boost::phoenix::result_of::context<State, Data>::type 431 context_type; 432 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; 433 typedef 434 typename boost::result_of< 435 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12, context_type) 436 >::type 437 result_type; operator ()call_impl438 result_type operator()( 439 typename call_impl::expr_param e 440 , typename call_impl::state_param s 441 , typename call_impl::data_param d 442 ) const 443 { 444 return 445 Fun()( 446 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) 447 , boost::phoenix::context(s, d) 448 ); 449 } 450 }; 451 452 453 454 455 456 457 458 459 template <typename Fun, typename Expr, typename State, typename Data> 460 struct call_impl<Fun, Expr, State, Data, 14> 461 : proto::transform_impl<Expr, State, Data> 462 { 463 typedef 464 typename boost::phoenix::result_of::context<State, Data>::type 465 context_type; 466 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; 467 typedef 468 typename boost::result_of< 469 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13, context_type) 470 >::type 471 result_type; operator ()call_impl472 result_type operator()( 473 typename call_impl::expr_param e 474 , typename call_impl::state_param s 475 , typename call_impl::data_param d 476 ) const 477 { 478 return 479 Fun()( 480 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) 481 , boost::phoenix::context(s, d) 482 ); 483 } 484 }; 485 486 487 488 489 490 491 492 493 template <typename Fun, typename Expr, typename State, typename Data> 494 struct call_impl<Fun, Expr, State, Data, 15> 495 : proto::transform_impl<Expr, State, Data> 496 { 497 typedef 498 typename boost::phoenix::result_of::context<State, Data>::type 499 context_type; 500 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; 501 typedef 502 typename boost::result_of< 503 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14, context_type) 504 >::type 505 result_type; operator ()call_impl506 result_type operator()( 507 typename call_impl::expr_param e 508 , typename call_impl::state_param s 509 , typename call_impl::data_param d 510 ) const 511 { 512 return 513 Fun()( 514 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) 515 , boost::phoenix::context(s, d) 516 ); 517 } 518 }; 519 520 521 522 523 524 525 526 527 template <typename Fun, typename Expr, typename State, typename Data> 528 struct call_impl<Fun, Expr, State, Data, 16> 529 : proto::transform_impl<Expr, State, Data> 530 { 531 typedef 532 typename boost::phoenix::result_of::context<State, Data>::type 533 context_type; 534 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; 535 typedef 536 typename boost::result_of< 537 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15, context_type) 538 >::type 539 result_type; operator ()call_impl540 result_type operator()( 541 typename call_impl::expr_param e 542 , typename call_impl::state_param s 543 , typename call_impl::data_param d 544 ) const 545 { 546 return 547 Fun()( 548 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) 549 , boost::phoenix::context(s, d) 550 ); 551 } 552 }; 553 554 555 556 557 558 559 560 561 template <typename Fun, typename Expr, typename State, typename Data> 562 struct call_impl<Fun, Expr, State, Data, 17> 563 : proto::transform_impl<Expr, State, Data> 564 { 565 typedef 566 typename boost::phoenix::result_of::context<State, Data>::type 567 context_type; 568 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; 569 typedef 570 typename boost::result_of< 571 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16, context_type) 572 >::type 573 result_type; operator ()call_impl574 result_type operator()( 575 typename call_impl::expr_param e 576 , typename call_impl::state_param s 577 , typename call_impl::data_param d 578 ) const 579 { 580 return 581 Fun()( 582 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) 583 , boost::phoenix::context(s, d) 584 ); 585 } 586 }; 587 588 589 590 591 592 593 594 595 template <typename Fun, typename Expr, typename State, typename Data> 596 struct call_impl<Fun, Expr, State, Data, 18> 597 : proto::transform_impl<Expr, State, Data> 598 { 599 typedef 600 typename boost::phoenix::result_of::context<State, Data>::type 601 context_type; 602 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; 603 typedef 604 typename boost::result_of< 605 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17, context_type) 606 >::type 607 result_type; operator ()call_impl608 result_type operator()( 609 typename call_impl::expr_param e 610 , typename call_impl::state_param s 611 , typename call_impl::data_param d 612 ) const 613 { 614 return 615 Fun()( 616 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) , proto::child_c< 17>(e) 617 , boost::phoenix::context(s, d) 618 ); 619 } 620 }; 621 622 623 624 625 626 627 628 629 template <typename Fun, typename Expr, typename State, typename Data> 630 struct call_impl<Fun, Expr, State, Data, 19> 631 : proto::transform_impl<Expr, State, Data> 632 { 633 typedef 634 typename boost::phoenix::result_of::context<State, Data>::type 635 context_type; 636 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; 637 typedef 638 typename boost::result_of< 639 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18, context_type) 640 >::type 641 result_type; operator ()call_impl642 result_type operator()( 643 typename call_impl::expr_param e 644 , typename call_impl::state_param s 645 , typename call_impl::data_param d 646 ) const 647 { 648 return 649 Fun()( 650 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) , proto::child_c< 17>(e) , proto::child_c< 18>(e) 651 , boost::phoenix::context(s, d) 652 ); 653 } 654 }; 655 656 657 658 659 660 661 662 663 template <typename Fun, typename Expr, typename State, typename Data> 664 struct call_impl<Fun, Expr, State, Data, 20> 665 : proto::transform_impl<Expr, State, Data> 666 { 667 typedef 668 typename boost::phoenix::result_of::context<State, Data>::type 669 context_type; 670 typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typedef typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; 671 typedef 672 typename boost::result_of< 673 Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19, context_type) 674 >::type 675 result_type; operator ()call_impl676 result_type operator()( 677 typename call_impl::expr_param e 678 , typename call_impl::state_param s 679 , typename call_impl::data_param d 680 ) const 681 { 682 return 683 Fun()( 684 proto::child_c< 0>(e) , proto::child_c< 1>(e) , proto::child_c< 2>(e) , proto::child_c< 3>(e) , proto::child_c< 4>(e) , proto::child_c< 5>(e) , proto::child_c< 6>(e) , proto::child_c< 7>(e) , proto::child_c< 8>(e) , proto::child_c< 9>(e) , proto::child_c< 10>(e) , proto::child_c< 11>(e) , proto::child_c< 12>(e) , proto::child_c< 13>(e) , proto::child_c< 14>(e) , proto::child_c< 15>(e) , proto::child_c< 16>(e) , proto::child_c< 17>(e) , proto::child_c< 18>(e) , proto::child_c< 19>(e) 685 , boost::phoenix::context(s, d) 686 ); 687 } 688 }; 689