annotate DEPENDENCIES/generic/include/boost/spirit/home/classic/attribute/closure.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /*=============================================================================
Chris@16 2 Copyright (c) 2001-2003 Joel de Guzman
Chris@16 3 Copyright (c) 2002-2003 Hartmut Kaiser
Chris@16 4 http://spirit.sourceforge.net/
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 BOOST_SPIRIT_CLOSURE_HPP
Chris@16 10 #define BOOST_SPIRIT_CLOSURE_HPP
Chris@16 11
Chris@16 12 ///////////////////////////////////////////////////////////////////////////////
Chris@16 13 #include <boost/spirit/home/classic/namespace.hpp>
Chris@16 14 #include <boost/spirit/home/classic/core/parser.hpp>
Chris@16 15 #include <boost/spirit/home/classic/core/composite/composite.hpp>
Chris@16 16 #include <boost/spirit/home/classic/core/non_terminal/parser_context.hpp>
Chris@16 17 #include <boost/spirit/home/classic/attribute/parametric.hpp>
Chris@16 18 #include <boost/spirit/home/classic/attribute/closure_context.hpp>
Chris@16 19 #include <boost/spirit/home/classic/attribute/closure_fwd.hpp>
Chris@16 20
Chris@16 21 #include <boost/spirit/home/classic/phoenix/closures.hpp>
Chris@16 22 #include <boost/spirit/home/classic/phoenix/primitives.hpp>
Chris@16 23 #include <boost/spirit/home/classic/phoenix/casts.hpp>
Chris@16 24 #include <boost/spirit/home/classic/phoenix/operators.hpp>
Chris@16 25 #include <boost/spirit/home/classic/phoenix/tuple_helpers.hpp>
Chris@16 26
Chris@16 27 #include <boost/static_assert.hpp>
Chris@16 28
Chris@16 29 ///////////////////////////////////////////////////////////////////////////////
Chris@16 30 //
Chris@16 31 // Spirit predefined maximum closure limit. This limit defines the maximum
Chris@16 32 // number of elements a closure can hold. This number defaults to 3. The
Chris@16 33 // actual maximum is rounded up in multiples of 3. Thus, if this value
Chris@16 34 // is 4, the actual limit is 6. The ultimate maximum limit in this
Chris@16 35 // implementation is 15.
Chris@16 36 //
Chris@16 37 // It should NOT be greater than PHOENIX_LIMIT!
Chris@16 38 //
Chris@16 39 ///////////////////////////////////////////////////////////////////////////////
Chris@16 40
Chris@16 41 #if !defined(BOOST_SPIRIT_CLOSURE_LIMIT)
Chris@16 42 #define BOOST_SPIRIT_CLOSURE_LIMIT PHOENIX_LIMIT
Chris@16 43 #endif
Chris@16 44
Chris@16 45 ///////////////////////////////////////////////////////////////////////////////
Chris@16 46 //
Chris@16 47 // ensure BOOST_SPIRIT_CLOSURE_LIMIT <= PHOENIX_LIMIT and SPIRIT_CLOSURE_LIMIT <= 15
Chris@16 48 //
Chris@16 49 ///////////////////////////////////////////////////////////////////////////////
Chris@16 50 BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLOSURE_LIMIT <= PHOENIX_LIMIT);
Chris@16 51 BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLOSURE_LIMIT <= 15);
Chris@16 52
Chris@16 53 ///////////////////////////////////////////////////////////////////////////////
Chris@16 54 namespace boost { namespace spirit {
Chris@16 55
Chris@16 56 BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
Chris@16 57
Chris@16 58 ///////////////////////////////////////////////////////////////////////////
Chris@16 59 //
Chris@16 60 // closure_context class
Chris@16 61 //
Chris@16 62 ///////////////////////////////////////////////////////////////////////////
Chris@16 63 template <typename ClosureT>
Chris@16 64 class closure_context : public parser_context_base
Chris@16 65 {
Chris@16 66 public:
Chris@16 67
Chris@16 68 typedef typename ::phoenix::tuple_element<0,
Chris@16 69 typename ClosureT::tuple_t>::type attr_t;
Chris@16 70 typedef ClosureT base_t;
Chris@16 71 typedef closure_context_linker<closure_context<ClosureT> >
Chris@16 72 context_linker_t;
Chris@16 73
Chris@16 74 closure_context(ClosureT const& clos)
Chris@16 75 : frame(clos) {}
Chris@16 76
Chris@16 77 ~closure_context() {}
Chris@16 78
Chris@16 79 template <typename ParserT, typename ScannerT>
Chris@16 80 void pre_parse(ParserT const&, ScannerT const&) {}
Chris@16 81
Chris@16 82 template <typename ResultT, typename ParserT, typename ScannerT>
Chris@16 83 ResultT& post_parse(ResultT& hit, ParserT const&, ScannerT const&)
Chris@16 84 { hit.value(frame[::phoenix::tuple_index<0>()]); return hit; }
Chris@16 85
Chris@16 86 private:
Chris@16 87
Chris@16 88 ::phoenix::closure_frame<typename ClosureT::phoenix_closure_t> frame;
Chris@16 89 };
Chris@16 90
Chris@16 91 ///////////////////////////////////////////////////////////////////////////
Chris@16 92 //
Chris@16 93 // init_closure_context class
Chris@16 94 //
Chris@16 95 // The init_closure_context class is a special parser context type
Chris@16 96 // which additionally initializes a closure contained in the derived
Chris@16 97 // parser with values from a given tuple. Please note, that this
Chris@16 98 // given tuple does not contain the required values directly, it
Chris@16 99 // contains phoenix::actor objects. These actors have to be
Chris@16 100 // dereferenced to gain the values to be used for initialization
Chris@16 101 // (this is done by the help of the phoenix::convert_actors<>
Chris@16 102 // template).
Chris@16 103 //
Chris@16 104 ///////////////////////////////////////////////////////////////////////////
Chris@16 105
Chris@16 106 template <typename ClosureT>
Chris@16 107 class init_closure_context : public parser_context_base
Chris@16 108 {
Chris@16 109 typedef typename ClosureT::tuple_t tuple_t;
Chris@16 110 typedef typename ClosureT::closure_t closure_t;
Chris@16 111
Chris@16 112 public:
Chris@16 113
Chris@16 114 init_closure_context(ClosureT const& clos)
Chris@16 115 : frame(clos.subject(), ::phoenix::convert_actors<tuple_t>(clos.init)) {}
Chris@16 116
Chris@16 117 ~init_closure_context() {}
Chris@16 118
Chris@16 119 template <typename ParserT, typename ScannerT>
Chris@16 120 void pre_parse(ParserT const& /*p*/, ScannerT const&) {}
Chris@16 121
Chris@16 122 template <typename ResultT, typename ParserT, typename ScannerT>
Chris@16 123 ResultT& post_parse(ResultT& hit, ParserT const&, ScannerT const&)
Chris@16 124 { hit.value(frame[::phoenix::tuple_index<0>()]); return hit; }
Chris@16 125
Chris@16 126 private:
Chris@16 127
Chris@16 128 ::phoenix::closure_frame<closure_t> frame;
Chris@16 129 };
Chris@16 130
Chris@16 131 ///////////////////////////////////////////////////////////////////////////
Chris@16 132 //
Chris@16 133 // init_closure_parser class
Chris@16 134 //
Chris@16 135 ///////////////////////////////////////////////////////////////////////////
Chris@16 136 template <typename ParserT, typename ActorTupleT>
Chris@16 137 struct init_closure_parser
Chris@16 138 : public unary<ParserT, parser<init_closure_parser<ParserT, ActorTupleT> > >
Chris@16 139 {
Chris@16 140 typedef init_closure_parser<ParserT, ActorTupleT> self_t;
Chris@16 141 typedef unary<ParserT, parser<self_t> > base_t;
Chris@16 142 typedef typename ParserT::phoenix_closure_t closure_t;
Chris@16 143 typedef typename ParserT::tuple_t tuple_t;
Chris@16 144 typedef typename ::phoenix::tuple_element<0, tuple_t>::type attr_t;
Chris@16 145
Chris@16 146 template <typename ScannerT>
Chris@16 147 struct result
Chris@16 148 {
Chris@16 149 typedef typename match_result<ScannerT, attr_t>::type type;
Chris@16 150 };
Chris@16 151
Chris@16 152 init_closure_parser(ParserT const& p, ActorTupleT const& init_)
Chris@16 153 : base_t(p), init(init_) {}
Chris@16 154
Chris@16 155 template <typename ScannerT>
Chris@16 156 typename parser_result<self_t, ScannerT>::type
Chris@16 157 parse_main(ScannerT const& scan) const
Chris@16 158 {
Chris@16 159 return this->subject().parse_main(scan);
Chris@16 160 }
Chris@16 161
Chris@16 162 template <typename ScannerT>
Chris@16 163 typename parser_result<self_t, ScannerT>::type
Chris@16 164 parse(ScannerT const& scan) const
Chris@16 165 {
Chris@16 166 typedef init_closure_context<self_t> init_context_t;
Chris@16 167 typedef parser_scanner_linker<ScannerT> scanner_t;
Chris@16 168 typedef closure_context_linker<init_context_t> context_t;
Chris@16 169 typedef typename parser_result<self_t, ScannerT>::type result_t;
Chris@16 170 BOOST_SPIRIT_CONTEXT_PARSE(
Chris@16 171 scan, *this, scanner_t, context_t, result_t);
Chris@16 172 }
Chris@16 173
Chris@16 174 ActorTupleT init;
Chris@16 175 };
Chris@16 176
Chris@16 177 ///////////////////////////////////////////////////////////////////////////
Chris@16 178 //
Chris@16 179 // closure class
Chris@16 180 //
Chris@16 181 ///////////////////////////////////////////////////////////////////////////
Chris@16 182 template <
Chris@16 183 typename DerivedT
Chris@16 184 , typename T0
Chris@16 185 , typename T1
Chris@16 186 , typename T2
Chris@16 187
Chris@16 188 #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
Chris@16 189 , typename T3
Chris@16 190 , typename T4
Chris@16 191 , typename T5
Chris@16 192
Chris@16 193 #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
Chris@16 194 , typename T6
Chris@16 195 , typename T7
Chris@16 196 , typename T8
Chris@16 197
Chris@16 198 #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
Chris@16 199 , typename T9
Chris@16 200 , typename T10
Chris@16 201 , typename T11
Chris@16 202
Chris@16 203 #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
Chris@16 204 , typename T12
Chris@16 205 , typename T13
Chris@16 206 , typename T14
Chris@16 207 #endif
Chris@16 208 #endif
Chris@16 209 #endif
Chris@16 210 #endif
Chris@16 211 >
Chris@16 212 struct closure :
Chris@16 213 public ::phoenix::closure<
Chris@16 214 T0, T1, T2
Chris@16 215 #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
Chris@16 216 , T3, T4, T5
Chris@16 217 #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
Chris@16 218 , T6, T7, T8
Chris@16 219 #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
Chris@16 220 , T9, T10, T11
Chris@16 221 #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
Chris@16 222 , T12, T13, T14
Chris@16 223 #endif
Chris@16 224 #endif
Chris@16 225 #endif
Chris@16 226 #endif
Chris@16 227 >
Chris@16 228 {
Chris@16 229 typedef ::phoenix::closure<
Chris@16 230 T0, T1, T2
Chris@16 231 #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
Chris@16 232 , T3, T4, T5
Chris@16 233 #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
Chris@16 234 , T6, T7, T8
Chris@16 235 #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
Chris@16 236 , T9, T10, T11
Chris@16 237 #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
Chris@16 238 , T12, T13, T14
Chris@16 239 #endif
Chris@16 240 #endif
Chris@16 241 #endif
Chris@16 242 #endif
Chris@16 243 > phoenix_closure_t;
Chris@16 244
Chris@16 245 typedef closure_context<DerivedT> context_t;
Chris@16 246
Chris@16 247 template <typename DerivedT2>
Chris@16 248 struct aux
Chris@16 249 {
Chris@16 250 DerivedT2& aux_derived()
Chris@16 251 { return *static_cast<DerivedT2*>(this); }
Chris@16 252
Chris@16 253 DerivedT2 const& aux_derived() const
Chris@16 254 { return *static_cast<DerivedT2 const*>(this); }
Chris@16 255
Chris@16 256 // initialization functions
Chris@16 257 template <typename A>
Chris@16 258 init_closure_parser<
Chris@16 259 DerivedT2,
Chris@16 260 ::phoenix::tuple<
Chris@16 261 typename ::phoenix::as_actor<A>::type
Chris@16 262 >
Chris@16 263 >
Chris@16 264 operator()(A const &a) const
Chris@16 265 {
Chris@16 266 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 267 typedef ::phoenix::tuple<a_t> actor_tuple_t;
Chris@16 268
Chris@16 269 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 270 aux_derived(),
Chris@16 271 actor_tuple_t(
Chris@16 272 ::phoenix::as_actor<A>::convert(a)
Chris@16 273 )
Chris@16 274 );
Chris@16 275 }
Chris@16 276
Chris@16 277 template <typename A, typename B>
Chris@16 278 init_closure_parser<
Chris@16 279 DerivedT2,
Chris@16 280 ::phoenix::tuple<
Chris@16 281 typename ::phoenix::as_actor<A>::type,
Chris@16 282 typename ::phoenix::as_actor<B>::type
Chris@16 283 >
Chris@16 284 >
Chris@16 285 operator()(A const &a, B const &b) const
Chris@16 286 {
Chris@16 287 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 288 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 289 typedef ::phoenix::tuple<a_t, b_t> actor_tuple_t;
Chris@16 290
Chris@16 291 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 292 aux_derived(),
Chris@16 293 actor_tuple_t(
Chris@16 294 ::phoenix::as_actor<A>::convert(a),
Chris@16 295 ::phoenix::as_actor<B>::convert(b)
Chris@16 296 )
Chris@16 297 );
Chris@16 298 }
Chris@16 299
Chris@16 300 template <typename A, typename B, typename C>
Chris@16 301 init_closure_parser<
Chris@16 302 DerivedT2,
Chris@16 303 ::phoenix::tuple<
Chris@16 304 typename ::phoenix::as_actor<A>::type,
Chris@16 305 typename ::phoenix::as_actor<B>::type,
Chris@16 306 typename ::phoenix::as_actor<C>::type
Chris@16 307 >
Chris@16 308 >
Chris@16 309 operator()(A const &a, B const &b, C const &c) const
Chris@16 310 {
Chris@16 311 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 312 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 313 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 314 typedef ::phoenix::tuple<a_t, b_t, c_t> actor_tuple_t;
Chris@16 315
Chris@16 316 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 317 aux_derived(),
Chris@16 318 actor_tuple_t(
Chris@16 319 ::phoenix::as_actor<A>::convert(a),
Chris@16 320 ::phoenix::as_actor<B>::convert(b),
Chris@16 321 ::phoenix::as_actor<C>::convert(c)
Chris@16 322 )
Chris@16 323 );
Chris@16 324 }
Chris@16 325
Chris@16 326 #if BOOST_SPIRIT_CLOSURE_LIMIT > 3
Chris@16 327
Chris@16 328 template <
Chris@16 329 typename A, typename B, typename C, typename D
Chris@16 330 >
Chris@16 331 init_closure_parser<
Chris@16 332 DerivedT2,
Chris@16 333 ::phoenix::tuple<
Chris@16 334 typename ::phoenix::as_actor<A>::type,
Chris@16 335 typename ::phoenix::as_actor<B>::type,
Chris@16 336 typename ::phoenix::as_actor<C>::type,
Chris@16 337 typename ::phoenix::as_actor<D>::type
Chris@16 338 >
Chris@16 339 >
Chris@16 340 operator()(
Chris@16 341 A const &a, B const &b, C const &c, D const &d
Chris@16 342 ) const
Chris@16 343 {
Chris@16 344 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 345 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 346 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 347 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 348 typedef ::phoenix::tuple<
Chris@16 349 a_t, b_t, c_t, d_t
Chris@16 350 > actor_tuple_t;
Chris@16 351
Chris@16 352 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 353 aux_derived(),
Chris@16 354 actor_tuple_t(
Chris@16 355 ::phoenix::as_actor<A>::convert(a),
Chris@16 356 ::phoenix::as_actor<B>::convert(b),
Chris@16 357 ::phoenix::as_actor<C>::convert(c),
Chris@16 358 ::phoenix::as_actor<D>::convert(d)
Chris@16 359 )
Chris@16 360 );
Chris@16 361 }
Chris@16 362
Chris@16 363 template <
Chris@16 364 typename A, typename B, typename C, typename D, typename E
Chris@16 365 >
Chris@16 366 init_closure_parser<
Chris@16 367 DerivedT2,
Chris@16 368 ::phoenix::tuple<
Chris@16 369 typename ::phoenix::as_actor<A>::type,
Chris@16 370 typename ::phoenix::as_actor<B>::type,
Chris@16 371 typename ::phoenix::as_actor<C>::type,
Chris@16 372 typename ::phoenix::as_actor<D>::type,
Chris@16 373 typename ::phoenix::as_actor<E>::type
Chris@16 374 >
Chris@16 375 >
Chris@16 376 operator()(
Chris@16 377 A const &a, B const &b, C const &c, D const &d, E const &e
Chris@16 378 ) const
Chris@16 379 {
Chris@16 380 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 381 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 382 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 383 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 384 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 385 typedef ::phoenix::tuple<
Chris@16 386 a_t, b_t, c_t, d_t, e_t
Chris@16 387 > actor_tuple_t;
Chris@16 388
Chris@16 389 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 390 aux_derived(),
Chris@16 391 actor_tuple_t(
Chris@16 392 ::phoenix::as_actor<A>::convert(a),
Chris@16 393 ::phoenix::as_actor<B>::convert(b),
Chris@16 394 ::phoenix::as_actor<C>::convert(c),
Chris@16 395 ::phoenix::as_actor<D>::convert(d),
Chris@16 396 ::phoenix::as_actor<E>::convert(e)
Chris@16 397 )
Chris@16 398 );
Chris@16 399 }
Chris@16 400
Chris@16 401 template <
Chris@16 402 typename A, typename B, typename C, typename D, typename E,
Chris@16 403 typename F
Chris@16 404 >
Chris@16 405 init_closure_parser<
Chris@16 406 DerivedT2,
Chris@16 407 ::phoenix::tuple<
Chris@16 408 typename ::phoenix::as_actor<A>::type,
Chris@16 409 typename ::phoenix::as_actor<B>::type,
Chris@16 410 typename ::phoenix::as_actor<C>::type,
Chris@16 411 typename ::phoenix::as_actor<D>::type,
Chris@16 412 typename ::phoenix::as_actor<E>::type,
Chris@16 413 typename ::phoenix::as_actor<F>::type
Chris@16 414 >
Chris@16 415 >
Chris@16 416 operator()(
Chris@16 417 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 418 F const &f
Chris@16 419 ) const
Chris@16 420 {
Chris@16 421 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 422 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 423 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 424 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 425 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 426 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 427 typedef ::phoenix::tuple<
Chris@16 428 a_t, b_t, c_t, d_t, e_t, f_t
Chris@16 429 > actor_tuple_t;
Chris@16 430
Chris@16 431 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 432 aux_derived(),
Chris@16 433 actor_tuple_t(
Chris@16 434 ::phoenix::as_actor<A>::convert(a),
Chris@16 435 ::phoenix::as_actor<B>::convert(b),
Chris@16 436 ::phoenix::as_actor<C>::convert(c),
Chris@16 437 ::phoenix::as_actor<D>::convert(d),
Chris@16 438 ::phoenix::as_actor<E>::convert(e),
Chris@16 439 ::phoenix::as_actor<F>::convert(f)
Chris@16 440 )
Chris@16 441 );
Chris@16 442 }
Chris@16 443
Chris@16 444 #if BOOST_SPIRIT_CLOSURE_LIMIT > 6
Chris@16 445
Chris@16 446 template <
Chris@16 447 typename A, typename B, typename C, typename D, typename E,
Chris@16 448 typename F, typename G
Chris@16 449 >
Chris@16 450 init_closure_parser<
Chris@16 451 DerivedT2,
Chris@16 452 ::phoenix::tuple<
Chris@16 453 typename ::phoenix::as_actor<A>::type,
Chris@16 454 typename ::phoenix::as_actor<B>::type,
Chris@16 455 typename ::phoenix::as_actor<C>::type,
Chris@16 456 typename ::phoenix::as_actor<D>::type,
Chris@16 457 typename ::phoenix::as_actor<E>::type,
Chris@16 458 typename ::phoenix::as_actor<F>::type,
Chris@16 459 typename ::phoenix::as_actor<G>::type
Chris@16 460 >
Chris@16 461 >
Chris@16 462 operator()(
Chris@16 463 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 464 F const &f, G const &g
Chris@16 465 ) const
Chris@16 466 {
Chris@16 467 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 468 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 469 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 470 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 471 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 472 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 473 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 474 typedef ::phoenix::tuple<
Chris@16 475 a_t, b_t, c_t, d_t, e_t, f_t, g_t
Chris@16 476 > actor_tuple_t;
Chris@16 477
Chris@16 478 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 479 aux_derived(),
Chris@16 480 actor_tuple_t(
Chris@16 481 ::phoenix::as_actor<A>::convert(a),
Chris@16 482 ::phoenix::as_actor<B>::convert(b),
Chris@16 483 ::phoenix::as_actor<C>::convert(c),
Chris@16 484 ::phoenix::as_actor<D>::convert(d),
Chris@16 485 ::phoenix::as_actor<E>::convert(e),
Chris@16 486 ::phoenix::as_actor<F>::convert(f),
Chris@16 487 ::phoenix::as_actor<G>::convert(g)
Chris@16 488 )
Chris@16 489 );
Chris@16 490 }
Chris@16 491
Chris@16 492 template <
Chris@16 493 typename A, typename B, typename C, typename D, typename E,
Chris@16 494 typename F, typename G, typename H
Chris@16 495 >
Chris@16 496 init_closure_parser<
Chris@16 497 DerivedT2,
Chris@16 498 ::phoenix::tuple<
Chris@16 499 typename ::phoenix::as_actor<A>::type,
Chris@16 500 typename ::phoenix::as_actor<B>::type,
Chris@16 501 typename ::phoenix::as_actor<C>::type,
Chris@16 502 typename ::phoenix::as_actor<D>::type,
Chris@16 503 typename ::phoenix::as_actor<E>::type,
Chris@16 504 typename ::phoenix::as_actor<F>::type,
Chris@16 505 typename ::phoenix::as_actor<G>::type,
Chris@16 506 typename ::phoenix::as_actor<H>::type
Chris@16 507 >
Chris@16 508 >
Chris@16 509 operator()(
Chris@16 510 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 511 F const &f, G const &g, H const &h
Chris@16 512 ) const
Chris@16 513 {
Chris@16 514 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 515 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 516 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 517 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 518 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 519 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 520 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 521 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 522 typedef ::phoenix::tuple<
Chris@16 523 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t
Chris@16 524 > actor_tuple_t;
Chris@16 525
Chris@16 526 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 527 aux_derived(),
Chris@16 528 actor_tuple_t(
Chris@16 529 ::phoenix::as_actor<A>::convert(a),
Chris@16 530 ::phoenix::as_actor<B>::convert(b),
Chris@16 531 ::phoenix::as_actor<C>::convert(c),
Chris@16 532 ::phoenix::as_actor<D>::convert(d),
Chris@16 533 ::phoenix::as_actor<E>::convert(e),
Chris@16 534 ::phoenix::as_actor<F>::convert(f),
Chris@16 535 ::phoenix::as_actor<G>::convert(g),
Chris@16 536 ::phoenix::as_actor<H>::convert(h)
Chris@16 537 )
Chris@16 538 );
Chris@16 539 }
Chris@16 540
Chris@16 541 template <
Chris@16 542 typename A, typename B, typename C, typename D, typename E,
Chris@16 543 typename F, typename G, typename H, typename I
Chris@16 544 >
Chris@16 545 init_closure_parser<
Chris@16 546 DerivedT2,
Chris@16 547 ::phoenix::tuple<
Chris@16 548 typename ::phoenix::as_actor<A>::type,
Chris@16 549 typename ::phoenix::as_actor<B>::type,
Chris@16 550 typename ::phoenix::as_actor<C>::type,
Chris@16 551 typename ::phoenix::as_actor<D>::type,
Chris@16 552 typename ::phoenix::as_actor<E>::type,
Chris@16 553 typename ::phoenix::as_actor<F>::type,
Chris@16 554 typename ::phoenix::as_actor<G>::type,
Chris@16 555 typename ::phoenix::as_actor<H>::type,
Chris@16 556 typename ::phoenix::as_actor<I>::type
Chris@16 557 >
Chris@16 558 >
Chris@16 559 operator()(
Chris@16 560 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 561 F const &f, G const &g, H const &h, I const &i
Chris@16 562 ) const
Chris@16 563 {
Chris@16 564 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 565 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 566 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 567 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 568 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 569 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 570 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 571 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 572 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 573 typedef ::phoenix::tuple<
Chris@16 574 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t
Chris@16 575 > actor_tuple_t;
Chris@16 576
Chris@16 577 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 578 aux_derived(),
Chris@16 579 actor_tuple_t(
Chris@16 580 ::phoenix::as_actor<A>::convert(a),
Chris@16 581 ::phoenix::as_actor<B>::convert(b),
Chris@16 582 ::phoenix::as_actor<C>::convert(c),
Chris@16 583 ::phoenix::as_actor<D>::convert(d),
Chris@16 584 ::phoenix::as_actor<E>::convert(e),
Chris@16 585 ::phoenix::as_actor<F>::convert(f),
Chris@16 586 ::phoenix::as_actor<G>::convert(g),
Chris@16 587 ::phoenix::as_actor<H>::convert(h),
Chris@16 588 ::phoenix::as_actor<I>::convert(i)
Chris@16 589 )
Chris@16 590 );
Chris@16 591 }
Chris@16 592
Chris@16 593 #if BOOST_SPIRIT_CLOSURE_LIMIT > 9
Chris@16 594
Chris@16 595 template <
Chris@16 596 typename A, typename B, typename C, typename D, typename E,
Chris@16 597 typename F, typename G, typename H, typename I, typename J
Chris@16 598 >
Chris@16 599 init_closure_parser<
Chris@16 600 DerivedT2,
Chris@16 601 ::phoenix::tuple<
Chris@16 602 typename ::phoenix::as_actor<A>::type,
Chris@16 603 typename ::phoenix::as_actor<B>::type,
Chris@16 604 typename ::phoenix::as_actor<C>::type,
Chris@16 605 typename ::phoenix::as_actor<D>::type,
Chris@16 606 typename ::phoenix::as_actor<E>::type,
Chris@16 607 typename ::phoenix::as_actor<F>::type,
Chris@16 608 typename ::phoenix::as_actor<G>::type,
Chris@16 609 typename ::phoenix::as_actor<H>::type,
Chris@16 610 typename ::phoenix::as_actor<I>::type,
Chris@16 611 typename ::phoenix::as_actor<J>::type
Chris@16 612 >
Chris@16 613 >
Chris@16 614 operator()(
Chris@16 615 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 616 F const &f, G const &g, H const &h, I const &i, J const &j
Chris@16 617 ) const
Chris@16 618 {
Chris@16 619 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 620 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 621 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 622 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 623 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 624 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 625 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 626 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 627 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 628 typedef typename ::phoenix::as_actor<J>::type j_t;
Chris@16 629 typedef ::phoenix::tuple<
Chris@16 630 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t
Chris@16 631 > actor_tuple_t;
Chris@16 632
Chris@16 633 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 634 aux_derived(),
Chris@16 635 actor_tuple_t(
Chris@16 636 ::phoenix::as_actor<A>::convert(a),
Chris@16 637 ::phoenix::as_actor<B>::convert(b),
Chris@16 638 ::phoenix::as_actor<C>::convert(c),
Chris@16 639 ::phoenix::as_actor<D>::convert(d),
Chris@16 640 ::phoenix::as_actor<E>::convert(e),
Chris@16 641 ::phoenix::as_actor<F>::convert(f),
Chris@16 642 ::phoenix::as_actor<G>::convert(g),
Chris@16 643 ::phoenix::as_actor<H>::convert(h),
Chris@16 644 ::phoenix::as_actor<I>::convert(i),
Chris@16 645 ::phoenix::as_actor<J>::convert(j)
Chris@16 646 )
Chris@16 647 );
Chris@16 648 }
Chris@16 649
Chris@16 650 template <
Chris@16 651 typename A, typename B, typename C, typename D, typename E,
Chris@16 652 typename F, typename G, typename H, typename I, typename J,
Chris@16 653 typename K
Chris@16 654 >
Chris@16 655 init_closure_parser<
Chris@16 656 DerivedT2,
Chris@16 657 ::phoenix::tuple<
Chris@16 658 typename ::phoenix::as_actor<A>::type,
Chris@16 659 typename ::phoenix::as_actor<B>::type,
Chris@16 660 typename ::phoenix::as_actor<C>::type,
Chris@16 661 typename ::phoenix::as_actor<D>::type,
Chris@16 662 typename ::phoenix::as_actor<E>::type,
Chris@16 663 typename ::phoenix::as_actor<F>::type,
Chris@16 664 typename ::phoenix::as_actor<G>::type,
Chris@16 665 typename ::phoenix::as_actor<H>::type,
Chris@16 666 typename ::phoenix::as_actor<I>::type,
Chris@16 667 typename ::phoenix::as_actor<J>::type,
Chris@16 668 typename ::phoenix::as_actor<K>::type
Chris@16 669 >
Chris@16 670 >
Chris@16 671 operator()(
Chris@16 672 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 673 F const &f, G const &g, H const &h, I const &i, J const &j,
Chris@16 674 K const &k
Chris@16 675 ) const
Chris@16 676 {
Chris@16 677 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 678 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 679 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 680 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 681 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 682 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 683 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 684 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 685 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 686 typedef typename ::phoenix::as_actor<J>::type j_t;
Chris@16 687 typedef typename ::phoenix::as_actor<K>::type k_t;
Chris@16 688 typedef ::phoenix::tuple<
Chris@16 689 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
Chris@16 690 k_t
Chris@16 691 > actor_tuple_t;
Chris@16 692
Chris@16 693 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 694 aux_derived(),
Chris@16 695 actor_tuple_t(
Chris@16 696 ::phoenix::as_actor<A>::convert(a),
Chris@16 697 ::phoenix::as_actor<B>::convert(b),
Chris@16 698 ::phoenix::as_actor<C>::convert(c),
Chris@16 699 ::phoenix::as_actor<D>::convert(d),
Chris@16 700 ::phoenix::as_actor<E>::convert(e),
Chris@16 701 ::phoenix::as_actor<F>::convert(f),
Chris@16 702 ::phoenix::as_actor<G>::convert(g),
Chris@16 703 ::phoenix::as_actor<H>::convert(h),
Chris@16 704 ::phoenix::as_actor<I>::convert(i),
Chris@16 705 ::phoenix::as_actor<J>::convert(j),
Chris@16 706 ::phoenix::as_actor<K>::convert(k)
Chris@16 707 )
Chris@16 708 );
Chris@16 709 }
Chris@16 710
Chris@16 711 template <
Chris@16 712 typename A, typename B, typename C, typename D, typename E,
Chris@16 713 typename F, typename G, typename H, typename I, typename J,
Chris@16 714 typename K, typename L
Chris@16 715 >
Chris@16 716 init_closure_parser<
Chris@16 717 DerivedT2,
Chris@16 718 ::phoenix::tuple<
Chris@16 719 typename ::phoenix::as_actor<A>::type,
Chris@16 720 typename ::phoenix::as_actor<B>::type,
Chris@16 721 typename ::phoenix::as_actor<C>::type,
Chris@16 722 typename ::phoenix::as_actor<D>::type,
Chris@16 723 typename ::phoenix::as_actor<E>::type,
Chris@16 724 typename ::phoenix::as_actor<F>::type,
Chris@16 725 typename ::phoenix::as_actor<G>::type,
Chris@16 726 typename ::phoenix::as_actor<H>::type,
Chris@16 727 typename ::phoenix::as_actor<I>::type,
Chris@16 728 typename ::phoenix::as_actor<J>::type,
Chris@16 729 typename ::phoenix::as_actor<K>::type,
Chris@16 730 typename ::phoenix::as_actor<L>::type
Chris@16 731 >
Chris@16 732 >
Chris@16 733 operator()(
Chris@16 734 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 735 F const &f, G const &g, H const &h, I const &i, J const &j,
Chris@16 736 K const &k, L const &l
Chris@16 737 ) const
Chris@16 738 {
Chris@16 739 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 740 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 741 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 742 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 743 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 744 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 745 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 746 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 747 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 748 typedef typename ::phoenix::as_actor<J>::type j_t;
Chris@16 749 typedef typename ::phoenix::as_actor<K>::type k_t;
Chris@16 750 typedef typename ::phoenix::as_actor<L>::type l_t;
Chris@16 751 typedef ::phoenix::tuple<
Chris@16 752 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
Chris@16 753 k_t, l_t
Chris@16 754 > actor_tuple_t;
Chris@16 755
Chris@16 756 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 757 aux_derived(),
Chris@16 758 actor_tuple_t(
Chris@16 759 ::phoenix::as_actor<A>::convert(a),
Chris@16 760 ::phoenix::as_actor<B>::convert(b),
Chris@16 761 ::phoenix::as_actor<C>::convert(c),
Chris@16 762 ::phoenix::as_actor<D>::convert(d),
Chris@16 763 ::phoenix::as_actor<E>::convert(e),
Chris@16 764 ::phoenix::as_actor<F>::convert(f),
Chris@16 765 ::phoenix::as_actor<G>::convert(g),
Chris@16 766 ::phoenix::as_actor<H>::convert(h),
Chris@16 767 ::phoenix::as_actor<I>::convert(i),
Chris@16 768 ::phoenix::as_actor<J>::convert(j),
Chris@16 769 ::phoenix::as_actor<K>::convert(k),
Chris@16 770 ::phoenix::as_actor<L>::convert(l)
Chris@16 771 )
Chris@16 772 );
Chris@16 773 }
Chris@16 774
Chris@16 775 #if BOOST_SPIRIT_CLOSURE_LIMIT > 12
Chris@16 776
Chris@16 777 template <
Chris@16 778 typename A, typename B, typename C, typename D, typename E,
Chris@16 779 typename F, typename G, typename H, typename I, typename J,
Chris@16 780 typename K, typename L, typename M
Chris@16 781 >
Chris@16 782 init_closure_parser<
Chris@16 783 DerivedT2,
Chris@16 784 ::phoenix::tuple<
Chris@16 785 typename ::phoenix::as_actor<A>::type,
Chris@16 786 typename ::phoenix::as_actor<B>::type,
Chris@16 787 typename ::phoenix::as_actor<C>::type,
Chris@16 788 typename ::phoenix::as_actor<D>::type,
Chris@16 789 typename ::phoenix::as_actor<E>::type,
Chris@16 790 typename ::phoenix::as_actor<F>::type,
Chris@16 791 typename ::phoenix::as_actor<G>::type,
Chris@16 792 typename ::phoenix::as_actor<H>::type,
Chris@16 793 typename ::phoenix::as_actor<I>::type,
Chris@16 794 typename ::phoenix::as_actor<J>::type,
Chris@16 795 typename ::phoenix::as_actor<K>::type,
Chris@16 796 typename ::phoenix::as_actor<L>::type,
Chris@16 797 typename ::phoenix::as_actor<M>::type
Chris@16 798 >
Chris@16 799 >
Chris@16 800 operator()(
Chris@16 801 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 802 F const &f, G const &g, H const &h, I const &i, J const &j,
Chris@16 803 K const &k, L const &l, M const &m
Chris@16 804 ) const
Chris@16 805 {
Chris@16 806 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 807 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 808 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 809 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 810 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 811 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 812 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 813 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 814 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 815 typedef typename ::phoenix::as_actor<J>::type j_t;
Chris@16 816 typedef typename ::phoenix::as_actor<K>::type k_t;
Chris@16 817 typedef typename ::phoenix::as_actor<L>::type l_t;
Chris@16 818 typedef typename ::phoenix::as_actor<M>::type m_t;
Chris@16 819 typedef ::phoenix::tuple<
Chris@16 820 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
Chris@16 821 k_t, l_t, m_t
Chris@16 822 > actor_tuple_t;
Chris@16 823
Chris@16 824 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 825 aux_derived(),
Chris@16 826 actor_tuple_t(
Chris@16 827 ::phoenix::as_actor<A>::convert(a),
Chris@16 828 ::phoenix::as_actor<B>::convert(b),
Chris@16 829 ::phoenix::as_actor<C>::convert(c),
Chris@16 830 ::phoenix::as_actor<D>::convert(d),
Chris@16 831 ::phoenix::as_actor<E>::convert(e),
Chris@16 832 ::phoenix::as_actor<F>::convert(f),
Chris@16 833 ::phoenix::as_actor<G>::convert(g),
Chris@16 834 ::phoenix::as_actor<H>::convert(h),
Chris@16 835 ::phoenix::as_actor<I>::convert(i),
Chris@16 836 ::phoenix::as_actor<J>::convert(j),
Chris@16 837 ::phoenix::as_actor<K>::convert(k),
Chris@16 838 ::phoenix::as_actor<L>::convert(l),
Chris@16 839 ::phoenix::as_actor<M>::convert(m)
Chris@16 840 )
Chris@16 841 );
Chris@16 842 }
Chris@16 843
Chris@16 844 template <
Chris@16 845 typename A, typename B, typename C, typename D, typename E,
Chris@16 846 typename F, typename G, typename H, typename I, typename J,
Chris@16 847 typename K, typename L, typename M, typename N
Chris@16 848 >
Chris@16 849 init_closure_parser<
Chris@16 850 DerivedT2,
Chris@16 851 ::phoenix::tuple<
Chris@16 852 typename ::phoenix::as_actor<A>::type,
Chris@16 853 typename ::phoenix::as_actor<B>::type,
Chris@16 854 typename ::phoenix::as_actor<C>::type,
Chris@16 855 typename ::phoenix::as_actor<D>::type,
Chris@16 856 typename ::phoenix::as_actor<E>::type,
Chris@16 857 typename ::phoenix::as_actor<F>::type,
Chris@16 858 typename ::phoenix::as_actor<G>::type,
Chris@16 859 typename ::phoenix::as_actor<H>::type,
Chris@16 860 typename ::phoenix::as_actor<I>::type,
Chris@16 861 typename ::phoenix::as_actor<J>::type,
Chris@16 862 typename ::phoenix::as_actor<K>::type,
Chris@16 863 typename ::phoenix::as_actor<L>::type,
Chris@16 864 typename ::phoenix::as_actor<M>::type,
Chris@16 865 typename ::phoenix::as_actor<N>::type
Chris@16 866 >
Chris@16 867 >
Chris@16 868 operator()(
Chris@16 869 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 870 F const &f, G const &g, H const &h, I const &i, J const &j,
Chris@16 871 K const &k, L const &l, M const &m, N const &n
Chris@16 872 ) const
Chris@16 873 {
Chris@16 874 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 875 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 876 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 877 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 878 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 879 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 880 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 881 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 882 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 883 typedef typename ::phoenix::as_actor<J>::type j_t;
Chris@16 884 typedef typename ::phoenix::as_actor<K>::type k_t;
Chris@16 885 typedef typename ::phoenix::as_actor<L>::type l_t;
Chris@16 886 typedef typename ::phoenix::as_actor<M>::type m_t;
Chris@16 887 typedef typename ::phoenix::as_actor<N>::type n_t;
Chris@16 888 typedef ::phoenix::tuple<
Chris@16 889 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
Chris@16 890 k_t, l_t, m_t, n_t
Chris@16 891 > actor_tuple_t;
Chris@16 892
Chris@16 893 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 894 aux_derived(),
Chris@16 895 actor_tuple_t(
Chris@16 896 ::phoenix::as_actor<A>::convert(a),
Chris@16 897 ::phoenix::as_actor<B>::convert(b),
Chris@16 898 ::phoenix::as_actor<C>::convert(c),
Chris@16 899 ::phoenix::as_actor<D>::convert(d),
Chris@16 900 ::phoenix::as_actor<E>::convert(e),
Chris@16 901 ::phoenix::as_actor<F>::convert(f),
Chris@16 902 ::phoenix::as_actor<G>::convert(g),
Chris@16 903 ::phoenix::as_actor<H>::convert(h),
Chris@16 904 ::phoenix::as_actor<I>::convert(i),
Chris@16 905 ::phoenix::as_actor<J>::convert(j),
Chris@16 906 ::phoenix::as_actor<K>::convert(k),
Chris@16 907 ::phoenix::as_actor<L>::convert(l),
Chris@16 908 ::phoenix::as_actor<M>::convert(m),
Chris@16 909 ::phoenix::as_actor<N>::convert(n)
Chris@16 910 )
Chris@16 911 );
Chris@16 912 }
Chris@16 913
Chris@16 914 template <
Chris@16 915 typename A, typename B, typename C, typename D, typename E,
Chris@16 916 typename F, typename G, typename H, typename I, typename J,
Chris@16 917 typename K, typename L, typename M, typename N, typename O
Chris@16 918 >
Chris@16 919 init_closure_parser<
Chris@16 920 DerivedT2,
Chris@16 921 ::phoenix::tuple<
Chris@16 922 typename ::phoenix::as_actor<A>::type,
Chris@16 923 typename ::phoenix::as_actor<B>::type,
Chris@16 924 typename ::phoenix::as_actor<C>::type,
Chris@16 925 typename ::phoenix::as_actor<D>::type,
Chris@16 926 typename ::phoenix::as_actor<E>::type,
Chris@16 927 typename ::phoenix::as_actor<F>::type,
Chris@16 928 typename ::phoenix::as_actor<G>::type,
Chris@16 929 typename ::phoenix::as_actor<H>::type,
Chris@16 930 typename ::phoenix::as_actor<I>::type,
Chris@16 931 typename ::phoenix::as_actor<J>::type,
Chris@16 932 typename ::phoenix::as_actor<K>::type,
Chris@16 933 typename ::phoenix::as_actor<L>::type,
Chris@16 934 typename ::phoenix::as_actor<M>::type,
Chris@16 935 typename ::phoenix::as_actor<N>::type,
Chris@16 936 typename ::phoenix::as_actor<O>::type
Chris@16 937 >
Chris@16 938 >
Chris@16 939 operator()(
Chris@16 940 A const &a, B const &b, C const &c, D const &d, E const &e,
Chris@16 941 F const &f, G const &g, H const &h, I const &i, J const &j,
Chris@16 942 K const &k, L const &l, M const &m, N const &n, O const &o
Chris@16 943 ) const
Chris@16 944 {
Chris@16 945 typedef typename ::phoenix::as_actor<A>::type a_t;
Chris@16 946 typedef typename ::phoenix::as_actor<B>::type b_t;
Chris@16 947 typedef typename ::phoenix::as_actor<C>::type c_t;
Chris@16 948 typedef typename ::phoenix::as_actor<D>::type d_t;
Chris@16 949 typedef typename ::phoenix::as_actor<E>::type e_t;
Chris@16 950 typedef typename ::phoenix::as_actor<F>::type f_t;
Chris@16 951 typedef typename ::phoenix::as_actor<G>::type g_t;
Chris@16 952 typedef typename ::phoenix::as_actor<H>::type h_t;
Chris@16 953 typedef typename ::phoenix::as_actor<I>::type i_t;
Chris@16 954 typedef typename ::phoenix::as_actor<J>::type j_t;
Chris@16 955 typedef typename ::phoenix::as_actor<K>::type k_t;
Chris@16 956 typedef typename ::phoenix::as_actor<L>::type l_t;
Chris@16 957 typedef typename ::phoenix::as_actor<M>::type m_t;
Chris@16 958 typedef typename ::phoenix::as_actor<N>::type n_t;
Chris@16 959 typedef typename ::phoenix::as_actor<O>::type o_t;
Chris@16 960 typedef ::phoenix::tuple<
Chris@16 961 a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t,
Chris@16 962 k_t, l_t, m_t, n_t, o_t
Chris@16 963 > actor_tuple_t;
Chris@16 964
Chris@16 965 return init_closure_parser<DerivedT2, actor_tuple_t>(
Chris@16 966 aux_derived(),
Chris@16 967 actor_tuple_t(
Chris@16 968 ::phoenix::as_actor<A>::convert(a),
Chris@16 969 ::phoenix::as_actor<B>::convert(b),
Chris@16 970 ::phoenix::as_actor<C>::convert(c),
Chris@16 971 ::phoenix::as_actor<D>::convert(d),
Chris@16 972 ::phoenix::as_actor<E>::convert(e),
Chris@16 973 ::phoenix::as_actor<F>::convert(f),
Chris@16 974 ::phoenix::as_actor<G>::convert(g),
Chris@16 975 ::phoenix::as_actor<H>::convert(h),
Chris@16 976 ::phoenix::as_actor<I>::convert(i),
Chris@16 977 ::phoenix::as_actor<J>::convert(j),
Chris@16 978 ::phoenix::as_actor<K>::convert(k),
Chris@16 979 ::phoenix::as_actor<L>::convert(l),
Chris@16 980 ::phoenix::as_actor<M>::convert(m),
Chris@16 981 ::phoenix::as_actor<N>::convert(n),
Chris@16 982 ::phoenix::as_actor<O>::convert(o)
Chris@16 983 )
Chris@16 984 );
Chris@16 985 }
Chris@16 986
Chris@16 987 #endif
Chris@16 988 #endif
Chris@16 989 #endif
Chris@16 990 #endif
Chris@16 991 };
Chris@16 992
Chris@16 993 ~closure() {}
Chris@16 994 };
Chris@16 995
Chris@16 996 ///////////////////////////////////////////////////////////////////////////
Chris@16 997 //
Chris@16 998 // overloads for chseq_p and str_p taking in phoenix actors
Chris@16 999 //
Chris@16 1000 ///////////////////////////////////////////////////////////////////////////
Chris@16 1001 template <typename ActorT>
Chris@16 1002 struct container_begin
Chris@16 1003 {
Chris@16 1004 typedef container_begin<ActorT> self_t;
Chris@16 1005
Chris@16 1006 template <typename TupleT>
Chris@16 1007 struct result
Chris@16 1008 {
Chris@16 1009 typedef typename ::phoenix::actor_result<ActorT, TupleT>
Chris@16 1010 ::plain_type::iterator type;
Chris@16 1011 };
Chris@16 1012
Chris@16 1013 container_begin(ActorT actor_)
Chris@16 1014 : actor(actor_) {}
Chris@16 1015
Chris@16 1016 template <typename TupleT>
Chris@16 1017 typename ::phoenix::actor_result<self_t, TupleT>::type
Chris@16 1018 eval(TupleT const& /*args*/) const
Chris@16 1019 { return actor().begin(); }
Chris@16 1020
Chris@16 1021 ActorT actor;
Chris@16 1022 };
Chris@16 1023
Chris@16 1024 template <typename ActorT>
Chris@16 1025 struct container_end
Chris@16 1026 {
Chris@16 1027 typedef container_begin<ActorT> self_t;
Chris@16 1028
Chris@16 1029 template <typename TupleT>
Chris@16 1030 struct result
Chris@16 1031 {
Chris@16 1032 typedef typename ::phoenix::actor_result<ActorT, TupleT>
Chris@16 1033 ::plain_type::iterator type;
Chris@16 1034 };
Chris@16 1035
Chris@16 1036 container_end(ActorT actor_)
Chris@16 1037 : actor(actor_) {}
Chris@16 1038
Chris@16 1039 template <typename TupleT>
Chris@16 1040 typename ::phoenix::actor_result<self_t, TupleT>::type
Chris@16 1041 eval(TupleT const& /*args*/) const
Chris@16 1042 { return actor().end(); }
Chris@16 1043
Chris@16 1044 ActorT actor;
Chris@16 1045 };
Chris@16 1046
Chris@16 1047 template <typename BaseT>
Chris@16 1048 inline f_chseq<
Chris@16 1049 ::phoenix::actor<container_begin< ::phoenix::actor<BaseT> > >,
Chris@16 1050 ::phoenix::actor<container_end< ::phoenix::actor<BaseT> > >
Chris@16 1051 >
Chris@16 1052 f_chseq_p(::phoenix::actor<BaseT> const& a)
Chris@16 1053 {
Chris@16 1054 typedef ::phoenix::actor<container_begin< ::phoenix::actor<BaseT> > >
Chris@16 1055 container_begin_t;
Chris@16 1056 typedef ::phoenix::actor<container_end< ::phoenix::actor<BaseT> > >
Chris@16 1057 container_end_t;
Chris@16 1058 typedef f_chseq<container_begin_t, container_end_t> result_t;
Chris@16 1059
Chris@16 1060 return result_t(container_begin_t(a), container_end_t(a));
Chris@16 1061 }
Chris@16 1062
Chris@16 1063 template <typename BaseT>
Chris@16 1064 inline f_strlit<
Chris@16 1065 ::phoenix::actor<container_begin< ::phoenix::actor<BaseT> > >,
Chris@16 1066 ::phoenix::actor<container_end< ::phoenix::actor<BaseT> > >
Chris@16 1067 >
Chris@16 1068 f_str_p(::phoenix::actor<BaseT> const& a)
Chris@16 1069 {
Chris@16 1070 typedef ::phoenix::actor<container_begin< ::phoenix::actor<BaseT> > >
Chris@16 1071 container_begin_t;
Chris@16 1072 typedef ::phoenix::actor<container_end< ::phoenix::actor<BaseT> > >
Chris@16 1073 container_end_t;
Chris@16 1074 typedef f_strlit<container_begin_t, container_end_t> result_t;
Chris@16 1075
Chris@16 1076 return result_t(container_begin_t(a), container_end_t(a));
Chris@16 1077 }
Chris@16 1078
Chris@16 1079 BOOST_SPIRIT_CLASSIC_NAMESPACE_END
Chris@16 1080
Chris@16 1081 }} // namespace BOOST_SPIRIT_CLASSIC_NS
Chris@16 1082
Chris@16 1083 #endif