annotate DEPENDENCIES/generic/include/boost/proto/detail/preprocessed/basic_expr.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 /// \file basic_expr.hpp
Chris@16 3 /// Contains definition of basic_expr\<\> class template.
Chris@16 4 //
Chris@16 5 // Copyright 2008 Eric Niebler. Distributed under the Boost
Chris@16 6 // Software License, Version 1.0. (See accompanying file
Chris@16 7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8
Chris@16 9
Chris@16 10
Chris@16 11
Chris@16 12
Chris@16 13
Chris@16 14
Chris@16 15
Chris@16 16
Chris@16 17
Chris@16 18
Chris@16 19
Chris@16 20
Chris@16 21
Chris@16 22
Chris@16 23
Chris@16 24
Chris@16 25
Chris@16 26
Chris@16 27
Chris@16 28
Chris@16 29
Chris@16 30
Chris@16 31
Chris@16 32
Chris@16 33
Chris@16 34
Chris@16 35
Chris@16 36 template<typename Tag, typename Arg0>
Chris@16 37 struct basic_expr<Tag, term<Arg0>, 0>
Chris@16 38 {
Chris@16 39 typedef Tag proto_tag;
Chris@16 40 static const long proto_arity_c = 0;
Chris@16 41 typedef mpl::long_<0 > proto_arity;
Chris@16 42 typedef basic_expr proto_base_expr;
Chris@16 43 typedef term<Arg0> proto_args;
Chris@16 44 typedef basic_expr proto_grammar;
Chris@16 45 typedef basic_default_domain proto_domain;
Chris@16 46 typedef default_generator proto_generator;
Chris@16 47 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 48 typedef basic_expr proto_derived_expr;
Chris@16 49 typedef void proto_is_expr_;
Chris@16 50 typedef Arg0 proto_child0; proto_child0 child0;
Chris@16 51 typedef void proto_child1; typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 52
Chris@16 53
Chris@16 54 BOOST_FORCEINLINE
Chris@16 55 basic_expr const &proto_base() const
Chris@16 56 {
Chris@16 57 return *this;
Chris@16 58 }
Chris@16 59
Chris@16 60
Chris@16 61 BOOST_FORCEINLINE
Chris@16 62 basic_expr &proto_base()
Chris@16 63 {
Chris@16 64 return *this;
Chris@16 65 }
Chris@16 66
Chris@16 67
Chris@16 68
Chris@16 69 template<typename A0>
Chris@16 70 BOOST_FORCEINLINE
Chris@16 71 static basic_expr const make(A0 &a0)
Chris@16 72 {
Chris@16 73 return detail::make_terminal(a0, static_cast<basic_expr *>(0), static_cast<proto_args *>(0));
Chris@16 74 }
Chris@16 75
Chris@16 76
Chris@16 77 template<typename A0>
Chris@16 78 BOOST_FORCEINLINE
Chris@16 79 static basic_expr const make(A0 const &a0)
Chris@16 80 {
Chris@16 81 return detail::make_terminal(a0, static_cast<basic_expr *>(0), static_cast<proto_args *>(0));
Chris@16 82 }
Chris@16 83
Chris@16 84
Chris@16 85 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 86 };
Chris@16 87
Chris@16 88
Chris@16 89
Chris@16 90
Chris@16 91
Chris@16 92
Chris@16 93
Chris@16 94
Chris@16 95
Chris@16 96
Chris@16 97
Chris@16 98
Chris@16 99
Chris@16 100
Chris@16 101
Chris@16 102
Chris@16 103
Chris@16 104
Chris@16 105
Chris@16 106
Chris@16 107
Chris@16 108
Chris@16 109
Chris@16 110
Chris@16 111
Chris@16 112
Chris@16 113
Chris@16 114 template<typename Tag , typename Arg0>
Chris@16 115 struct basic_expr<Tag, list1<Arg0>, 1 >
Chris@16 116 {
Chris@16 117 typedef Tag proto_tag;
Chris@16 118 static const long proto_arity_c = 1;
Chris@16 119 typedef mpl::long_<1 > proto_arity;
Chris@16 120 typedef basic_expr proto_base_expr;
Chris@16 121 typedef list1<Arg0> proto_args;
Chris@16 122 typedef basic_expr proto_grammar;
Chris@16 123 typedef basic_default_domain proto_domain;
Chris@16 124 typedef default_generator proto_generator;
Chris@16 125 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 126 typedef basic_expr proto_derived_expr;
Chris@16 127 typedef void proto_is_expr_;
Chris@16 128 typedef Arg0 proto_child0; proto_child0 child0;
Chris@16 129 typedef void proto_child1; typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 130
Chris@16 131
Chris@16 132 BOOST_FORCEINLINE
Chris@16 133 basic_expr const &proto_base() const
Chris@16 134 {
Chris@16 135 return *this;
Chris@16 136 }
Chris@16 137
Chris@16 138
Chris@16 139 BOOST_FORCEINLINE
Chris@16 140 basic_expr &proto_base()
Chris@16 141 {
Chris@16 142 return *this;
Chris@16 143 }
Chris@16 144
Chris@16 145
Chris@16 146
Chris@16 147 template<typename A0>
Chris@16 148 BOOST_FORCEINLINE
Chris@16 149 static basic_expr const make(A0 const &a0)
Chris@16 150 {
Chris@16 151 basic_expr that = {a0};
Chris@16 152 return that;
Chris@16 153 }
Chris@16 154
Chris@16 155
Chris@16 156
Chris@16 157 typedef typename detail::address_of_hack<Tag, proto_child0>::type address_of_hack_type_;
Chris@16 158
Chris@16 159
Chris@16 160
Chris@16 161
Chris@16 162
Chris@16 163
Chris@16 164
Chris@16 165 BOOST_FORCEINLINE
Chris@16 166 operator address_of_hack_type_() const
Chris@16 167 {
Chris@16 168 return boost::addressof(this->child0);
Chris@16 169 }
Chris@16 170 };
Chris@16 171
Chris@16 172
Chris@16 173
Chris@16 174
Chris@16 175
Chris@16 176
Chris@16 177
Chris@16 178
Chris@16 179
Chris@16 180
Chris@16 181
Chris@16 182
Chris@16 183
Chris@16 184
Chris@16 185
Chris@16 186
Chris@16 187
Chris@16 188
Chris@16 189
Chris@16 190
Chris@16 191
Chris@16 192
Chris@16 193
Chris@16 194
Chris@16 195
Chris@16 196
Chris@16 197
Chris@16 198 template<typename Tag , typename Arg0 , typename Arg1>
Chris@16 199 struct basic_expr<Tag, list2<Arg0 , Arg1>, 2 >
Chris@16 200 {
Chris@16 201 typedef Tag proto_tag;
Chris@16 202 static const long proto_arity_c = 2;
Chris@16 203 typedef mpl::long_<2 > proto_arity;
Chris@16 204 typedef basic_expr proto_base_expr;
Chris@16 205 typedef list2<Arg0 , Arg1> proto_args;
Chris@16 206 typedef basic_expr proto_grammar;
Chris@16 207 typedef basic_default_domain proto_domain;
Chris@16 208 typedef default_generator proto_generator;
Chris@16 209 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 210 typedef basic_expr proto_derived_expr;
Chris@16 211 typedef void proto_is_expr_;
Chris@16 212 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1;
Chris@16 213 typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 214
Chris@16 215
Chris@16 216 BOOST_FORCEINLINE
Chris@16 217 basic_expr const &proto_base() const
Chris@16 218 {
Chris@16 219 return *this;
Chris@16 220 }
Chris@16 221
Chris@16 222
Chris@16 223 BOOST_FORCEINLINE
Chris@16 224 basic_expr &proto_base()
Chris@16 225 {
Chris@16 226 return *this;
Chris@16 227 }
Chris@16 228
Chris@16 229
Chris@16 230
Chris@16 231 template<typename A0 , typename A1>
Chris@16 232 BOOST_FORCEINLINE
Chris@16 233 static basic_expr const make(A0 const &a0 , A1 const &a1)
Chris@16 234 {
Chris@16 235 basic_expr that = {a0 , a1};
Chris@16 236 return that;
Chris@16 237 }
Chris@16 238
Chris@16 239
Chris@16 240 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 241 };
Chris@16 242
Chris@16 243
Chris@16 244
Chris@16 245
Chris@16 246
Chris@16 247
Chris@16 248
Chris@16 249
Chris@16 250
Chris@16 251
Chris@16 252
Chris@16 253
Chris@16 254
Chris@16 255
Chris@16 256
Chris@16 257
Chris@16 258
Chris@16 259
Chris@16 260
Chris@16 261
Chris@16 262
Chris@16 263
Chris@16 264
Chris@16 265
Chris@16 266
Chris@16 267
Chris@16 268
Chris@16 269 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2>
Chris@16 270 struct basic_expr<Tag, list3<Arg0 , Arg1 , Arg2>, 3 >
Chris@16 271 {
Chris@16 272 typedef Tag proto_tag;
Chris@16 273 static const long proto_arity_c = 3;
Chris@16 274 typedef mpl::long_<3 > proto_arity;
Chris@16 275 typedef basic_expr proto_base_expr;
Chris@16 276 typedef list3<Arg0 , Arg1 , Arg2> proto_args;
Chris@16 277 typedef basic_expr proto_grammar;
Chris@16 278 typedef basic_default_domain proto_domain;
Chris@16 279 typedef default_generator proto_generator;
Chris@16 280 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 281 typedef basic_expr proto_derived_expr;
Chris@16 282 typedef void proto_is_expr_;
Chris@16 283 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2;
Chris@16 284 typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 285
Chris@16 286
Chris@16 287 BOOST_FORCEINLINE
Chris@16 288 basic_expr const &proto_base() const
Chris@16 289 {
Chris@16 290 return *this;
Chris@16 291 }
Chris@16 292
Chris@16 293
Chris@16 294 BOOST_FORCEINLINE
Chris@16 295 basic_expr &proto_base()
Chris@16 296 {
Chris@16 297 return *this;
Chris@16 298 }
Chris@16 299
Chris@16 300
Chris@16 301
Chris@16 302 template<typename A0 , typename A1 , typename A2>
Chris@16 303 BOOST_FORCEINLINE
Chris@16 304 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2)
Chris@16 305 {
Chris@16 306 basic_expr that = {a0 , a1 , a2};
Chris@16 307 return that;
Chris@16 308 }
Chris@16 309
Chris@16 310
Chris@16 311 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 312 };
Chris@16 313
Chris@16 314
Chris@16 315
Chris@16 316
Chris@16 317
Chris@16 318
Chris@16 319
Chris@16 320
Chris@16 321
Chris@16 322
Chris@16 323
Chris@16 324
Chris@16 325
Chris@16 326
Chris@16 327
Chris@16 328
Chris@16 329
Chris@16 330
Chris@16 331
Chris@16 332
Chris@16 333
Chris@16 334
Chris@16 335
Chris@16 336
Chris@16 337
Chris@16 338
Chris@16 339
Chris@16 340 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3>
Chris@16 341 struct basic_expr<Tag, list4<Arg0 , Arg1 , Arg2 , Arg3>, 4 >
Chris@16 342 {
Chris@16 343 typedef Tag proto_tag;
Chris@16 344 static const long proto_arity_c = 4;
Chris@16 345 typedef mpl::long_<4 > proto_arity;
Chris@16 346 typedef basic_expr proto_base_expr;
Chris@16 347 typedef list4<Arg0 , Arg1 , Arg2 , Arg3> proto_args;
Chris@16 348 typedef basic_expr proto_grammar;
Chris@16 349 typedef basic_default_domain proto_domain;
Chris@16 350 typedef default_generator proto_generator;
Chris@16 351 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 352 typedef basic_expr proto_derived_expr;
Chris@16 353 typedef void proto_is_expr_;
Chris@16 354 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3;
Chris@16 355 typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 356
Chris@16 357
Chris@16 358 BOOST_FORCEINLINE
Chris@16 359 basic_expr const &proto_base() const
Chris@16 360 {
Chris@16 361 return *this;
Chris@16 362 }
Chris@16 363
Chris@16 364
Chris@16 365 BOOST_FORCEINLINE
Chris@16 366 basic_expr &proto_base()
Chris@16 367 {
Chris@16 368 return *this;
Chris@16 369 }
Chris@16 370
Chris@16 371
Chris@16 372
Chris@16 373 template<typename A0 , typename A1 , typename A2 , typename A3>
Chris@16 374 BOOST_FORCEINLINE
Chris@16 375 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3)
Chris@16 376 {
Chris@16 377 basic_expr that = {a0 , a1 , a2 , a3};
Chris@16 378 return that;
Chris@16 379 }
Chris@16 380
Chris@16 381
Chris@16 382 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 383 };
Chris@16 384
Chris@16 385
Chris@16 386
Chris@16 387
Chris@16 388
Chris@16 389
Chris@16 390
Chris@16 391
Chris@16 392
Chris@16 393
Chris@16 394
Chris@16 395
Chris@16 396
Chris@16 397
Chris@16 398
Chris@16 399
Chris@16 400
Chris@16 401
Chris@16 402
Chris@16 403
Chris@16 404
Chris@16 405
Chris@16 406
Chris@16 407
Chris@16 408
Chris@16 409
Chris@16 410
Chris@16 411 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4>
Chris@16 412 struct basic_expr<Tag, list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>, 5 >
Chris@16 413 {
Chris@16 414 typedef Tag proto_tag;
Chris@16 415 static const long proto_arity_c = 5;
Chris@16 416 typedef mpl::long_<5 > proto_arity;
Chris@16 417 typedef basic_expr proto_base_expr;
Chris@16 418 typedef list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4> proto_args;
Chris@16 419 typedef basic_expr proto_grammar;
Chris@16 420 typedef basic_default_domain proto_domain;
Chris@16 421 typedef default_generator proto_generator;
Chris@16 422 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 423 typedef basic_expr proto_derived_expr;
Chris@16 424 typedef void proto_is_expr_;
Chris@16 425 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4;
Chris@16 426 typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 427
Chris@16 428
Chris@16 429 BOOST_FORCEINLINE
Chris@16 430 basic_expr const &proto_base() const
Chris@16 431 {
Chris@16 432 return *this;
Chris@16 433 }
Chris@16 434
Chris@16 435
Chris@16 436 BOOST_FORCEINLINE
Chris@16 437 basic_expr &proto_base()
Chris@16 438 {
Chris@16 439 return *this;
Chris@16 440 }
Chris@16 441
Chris@16 442
Chris@16 443
Chris@16 444 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
Chris@16 445 BOOST_FORCEINLINE
Chris@16 446 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4)
Chris@16 447 {
Chris@16 448 basic_expr that = {a0 , a1 , a2 , a3 , a4};
Chris@16 449 return that;
Chris@16 450 }
Chris@16 451
Chris@16 452
Chris@16 453 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 454 };
Chris@16 455
Chris@16 456
Chris@16 457
Chris@16 458
Chris@16 459
Chris@16 460
Chris@16 461
Chris@16 462
Chris@16 463
Chris@16 464
Chris@16 465
Chris@16 466
Chris@16 467
Chris@16 468
Chris@16 469
Chris@16 470
Chris@16 471
Chris@16 472
Chris@16 473
Chris@16 474
Chris@16 475
Chris@16 476
Chris@16 477
Chris@16 478
Chris@16 479
Chris@16 480
Chris@16 481
Chris@16 482 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5>
Chris@16 483 struct basic_expr<Tag, list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>, 6 >
Chris@16 484 {
Chris@16 485 typedef Tag proto_tag;
Chris@16 486 static const long proto_arity_c = 6;
Chris@16 487 typedef mpl::long_<6 > proto_arity;
Chris@16 488 typedef basic_expr proto_base_expr;
Chris@16 489 typedef list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5> proto_args;
Chris@16 490 typedef basic_expr proto_grammar;
Chris@16 491 typedef basic_default_domain proto_domain;
Chris@16 492 typedef default_generator proto_generator;
Chris@16 493 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 494 typedef basic_expr proto_derived_expr;
Chris@16 495 typedef void proto_is_expr_;
Chris@16 496 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5;
Chris@16 497 typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 498
Chris@16 499
Chris@16 500 BOOST_FORCEINLINE
Chris@16 501 basic_expr const &proto_base() const
Chris@16 502 {
Chris@16 503 return *this;
Chris@16 504 }
Chris@16 505
Chris@16 506
Chris@16 507 BOOST_FORCEINLINE
Chris@16 508 basic_expr &proto_base()
Chris@16 509 {
Chris@16 510 return *this;
Chris@16 511 }
Chris@16 512
Chris@16 513
Chris@16 514
Chris@16 515 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
Chris@16 516 BOOST_FORCEINLINE
Chris@16 517 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5)
Chris@16 518 {
Chris@16 519 basic_expr that = {a0 , a1 , a2 , a3 , a4 , a5};
Chris@16 520 return that;
Chris@16 521 }
Chris@16 522
Chris@16 523
Chris@16 524 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 525 };
Chris@16 526
Chris@16 527
Chris@16 528
Chris@16 529
Chris@16 530
Chris@16 531
Chris@16 532
Chris@16 533
Chris@16 534
Chris@16 535
Chris@16 536
Chris@16 537
Chris@16 538
Chris@16 539
Chris@16 540
Chris@16 541
Chris@16 542
Chris@16 543
Chris@16 544
Chris@16 545
Chris@16 546
Chris@16 547
Chris@16 548
Chris@16 549
Chris@16 550
Chris@16 551
Chris@16 552
Chris@16 553 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6>
Chris@16 554 struct basic_expr<Tag, list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>, 7 >
Chris@16 555 {
Chris@16 556 typedef Tag proto_tag;
Chris@16 557 static const long proto_arity_c = 7;
Chris@16 558 typedef mpl::long_<7 > proto_arity;
Chris@16 559 typedef basic_expr proto_base_expr;
Chris@16 560 typedef list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6> proto_args;
Chris@16 561 typedef basic_expr proto_grammar;
Chris@16 562 typedef basic_default_domain proto_domain;
Chris@16 563 typedef default_generator proto_generator;
Chris@16 564 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 565 typedef basic_expr proto_derived_expr;
Chris@16 566 typedef void proto_is_expr_;
Chris@16 567 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6;
Chris@16 568 typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
Chris@16 569
Chris@16 570
Chris@16 571 BOOST_FORCEINLINE
Chris@16 572 basic_expr const &proto_base() const
Chris@16 573 {
Chris@16 574 return *this;
Chris@16 575 }
Chris@16 576
Chris@16 577
Chris@16 578 BOOST_FORCEINLINE
Chris@16 579 basic_expr &proto_base()
Chris@16 580 {
Chris@16 581 return *this;
Chris@16 582 }
Chris@16 583
Chris@16 584
Chris@16 585
Chris@16 586 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
Chris@16 587 BOOST_FORCEINLINE
Chris@16 588 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6)
Chris@16 589 {
Chris@16 590 basic_expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6};
Chris@16 591 return that;
Chris@16 592 }
Chris@16 593
Chris@16 594
Chris@16 595 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 596 };
Chris@16 597
Chris@16 598
Chris@16 599
Chris@16 600
Chris@16 601
Chris@16 602
Chris@16 603
Chris@16 604
Chris@16 605
Chris@16 606
Chris@16 607
Chris@16 608
Chris@16 609
Chris@16 610
Chris@16 611
Chris@16 612
Chris@16 613
Chris@16 614
Chris@16 615
Chris@16 616
Chris@16 617
Chris@16 618
Chris@16 619
Chris@16 620
Chris@16 621
Chris@16 622
Chris@16 623
Chris@16 624 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7>
Chris@16 625 struct basic_expr<Tag, list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>, 8 >
Chris@16 626 {
Chris@16 627 typedef Tag proto_tag;
Chris@16 628 static const long proto_arity_c = 8;
Chris@16 629 typedef mpl::long_<8 > proto_arity;
Chris@16 630 typedef basic_expr proto_base_expr;
Chris@16 631 typedef list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7> proto_args;
Chris@16 632 typedef basic_expr proto_grammar;
Chris@16 633 typedef basic_default_domain proto_domain;
Chris@16 634 typedef default_generator proto_generator;
Chris@16 635 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 636 typedef basic_expr proto_derived_expr;
Chris@16 637 typedef void proto_is_expr_;
Chris@16 638 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7;
Chris@16 639 typedef void proto_child8; typedef void proto_child9;
Chris@16 640
Chris@16 641
Chris@16 642 BOOST_FORCEINLINE
Chris@16 643 basic_expr const &proto_base() const
Chris@16 644 {
Chris@16 645 return *this;
Chris@16 646 }
Chris@16 647
Chris@16 648
Chris@16 649 BOOST_FORCEINLINE
Chris@16 650 basic_expr &proto_base()
Chris@16 651 {
Chris@16 652 return *this;
Chris@16 653 }
Chris@16 654
Chris@16 655
Chris@16 656
Chris@16 657 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
Chris@16 658 BOOST_FORCEINLINE
Chris@16 659 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7)
Chris@16 660 {
Chris@16 661 basic_expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
Chris@16 662 return that;
Chris@16 663 }
Chris@16 664
Chris@16 665
Chris@16 666 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 667 };
Chris@16 668
Chris@16 669
Chris@16 670
Chris@16 671
Chris@16 672
Chris@16 673
Chris@16 674
Chris@16 675
Chris@16 676
Chris@16 677
Chris@16 678
Chris@16 679
Chris@16 680
Chris@16 681
Chris@16 682
Chris@16 683
Chris@16 684
Chris@16 685
Chris@16 686
Chris@16 687
Chris@16 688
Chris@16 689
Chris@16 690
Chris@16 691
Chris@16 692
Chris@16 693
Chris@16 694
Chris@16 695 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8>
Chris@16 696 struct basic_expr<Tag, list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>, 9 >
Chris@16 697 {
Chris@16 698 typedef Tag proto_tag;
Chris@16 699 static const long proto_arity_c = 9;
Chris@16 700 typedef mpl::long_<9 > proto_arity;
Chris@16 701 typedef basic_expr proto_base_expr;
Chris@16 702 typedef list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8> proto_args;
Chris@16 703 typedef basic_expr proto_grammar;
Chris@16 704 typedef basic_default_domain proto_domain;
Chris@16 705 typedef default_generator proto_generator;
Chris@16 706 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 707 typedef basic_expr proto_derived_expr;
Chris@16 708 typedef void proto_is_expr_;
Chris@16 709 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8;
Chris@16 710 typedef void proto_child9;
Chris@16 711
Chris@16 712
Chris@16 713 BOOST_FORCEINLINE
Chris@16 714 basic_expr const &proto_base() const
Chris@16 715 {
Chris@16 716 return *this;
Chris@16 717 }
Chris@16 718
Chris@16 719
Chris@16 720 BOOST_FORCEINLINE
Chris@16 721 basic_expr &proto_base()
Chris@16 722 {
Chris@16 723 return *this;
Chris@16 724 }
Chris@16 725
Chris@16 726
Chris@16 727
Chris@16 728 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
Chris@16 729 BOOST_FORCEINLINE
Chris@16 730 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8)
Chris@16 731 {
Chris@16 732 basic_expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
Chris@16 733 return that;
Chris@16 734 }
Chris@16 735
Chris@16 736
Chris@16 737 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 738 };
Chris@16 739
Chris@16 740
Chris@16 741
Chris@16 742
Chris@16 743
Chris@16 744
Chris@16 745
Chris@16 746
Chris@16 747
Chris@16 748
Chris@16 749
Chris@16 750
Chris@16 751
Chris@16 752
Chris@16 753
Chris@16 754
Chris@16 755
Chris@16 756
Chris@16 757
Chris@16 758
Chris@16 759
Chris@16 760
Chris@16 761
Chris@16 762
Chris@16 763
Chris@16 764
Chris@16 765
Chris@16 766 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9>
Chris@16 767 struct basic_expr<Tag, list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>, 10 >
Chris@16 768 {
Chris@16 769 typedef Tag proto_tag;
Chris@16 770 static const long proto_arity_c = 10;
Chris@16 771 typedef mpl::long_<10 > proto_arity;
Chris@16 772 typedef basic_expr proto_base_expr;
Chris@16 773 typedef list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9> proto_args;
Chris@16 774 typedef basic_expr proto_grammar;
Chris@16 775 typedef basic_default_domain proto_domain;
Chris@16 776 typedef default_generator proto_generator;
Chris@16 777 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
Chris@16 778 typedef basic_expr proto_derived_expr;
Chris@16 779 typedef void proto_is_expr_;
Chris@16 780 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; typedef Arg9 proto_child9; proto_child9 child9;
Chris@16 781
Chris@16 782
Chris@16 783
Chris@16 784 BOOST_FORCEINLINE
Chris@16 785 basic_expr const &proto_base() const
Chris@16 786 {
Chris@16 787 return *this;
Chris@16 788 }
Chris@16 789
Chris@16 790
Chris@16 791 BOOST_FORCEINLINE
Chris@16 792 basic_expr &proto_base()
Chris@16 793 {
Chris@16 794 return *this;
Chris@16 795 }
Chris@16 796
Chris@16 797
Chris@16 798
Chris@16 799 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
Chris@16 800 BOOST_FORCEINLINE
Chris@16 801 static basic_expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8 , A9 const &a9)
Chris@16 802 {
Chris@16 803 basic_expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
Chris@16 804 return that;
Chris@16 805 }
Chris@16 806
Chris@16 807
Chris@16 808 typedef detail::not_a_valid_type address_of_hack_type_;
Chris@16 809 };