OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 template<typename R, typename A1, typename A2, typename A3, typename A4, typenam
e A5, typename A6> | 418 template<typename R, typename A1, typename A2, typename A3, typename A4, typenam
e A5, typename A6> |
419 class FunctionImpl<R(A1, A2, A3, A4, A5, A6)> : public FunctionImplBase { | 419 class FunctionImpl<R(A1, A2, A3, A4, A5, A6)> : public FunctionImplBase { |
420 public: | 420 public: |
421 virtual R operator()(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) = 0; | 421 virtual R operator()(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) = 0; |
422 }; | 422 }; |
423 | 423 |
424 template<typename FunctionWrapper, typename FunctionType> | 424 template<typename FunctionWrapper, typename FunctionType> |
425 class UnboundFunctionImpl; | 425 class UnboundFunctionImpl; |
426 | 426 |
427 template<typename FunctionWrapper, typename R, typename P1> | 427 template<typename FunctionWrapper, typename R, typename P1> |
428 class UnboundFunctionImpl<FunctionWrapper, R(P1)> FINAL : public FunctionImpl<ty
pename FunctionWrapper::ResultType(P1)> { | 428 class UnboundFunctionImpl<FunctionWrapper, R(P1)> final : public FunctionImpl<ty
pename FunctionWrapper::ResultType(P1)> { |
429 public: | 429 public: |
430 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 430 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
431 : m_functionWrapper(functionWrapper) | 431 : m_functionWrapper(functionWrapper) |
432 { | 432 { |
433 } | 433 } |
434 | 434 |
435 virtual typename FunctionWrapper::ResultType operator()(P1 p1) OVERRIDE | 435 virtual typename FunctionWrapper::ResultType operator()(P1 p1) override |
436 { | 436 { |
437 return m_functionWrapper(p1); | 437 return m_functionWrapper(p1); |
438 } | 438 } |
439 | 439 |
440 private: | 440 private: |
441 FunctionWrapper m_functionWrapper; | 441 FunctionWrapper m_functionWrapper; |
442 }; | 442 }; |
443 | 443 |
444 template<typename FunctionWrapper, typename R, typename P1, typename P2> | 444 template<typename FunctionWrapper, typename R, typename P1, typename P2> |
445 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2)> FINAL : public FunctionImp
l<typename FunctionWrapper::ResultType(P1, P2)> { | 445 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2)> final : public FunctionImp
l<typename FunctionWrapper::ResultType(P1, P2)> { |
446 public: | 446 public: |
447 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 447 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
448 : m_functionWrapper(functionWrapper) | 448 : m_functionWrapper(functionWrapper) |
449 { | 449 { |
450 } | 450 } |
451 | 451 |
452 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2) OVERRI
DE | 452 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2) overri
de |
453 { | 453 { |
454 return m_functionWrapper(p1, p2); | 454 return m_functionWrapper(p1, p2); |
455 } | 455 } |
456 | 456 |
457 private: | 457 private: |
458 FunctionWrapper m_functionWrapper; | 458 FunctionWrapper m_functionWrapper; |
459 }; | 459 }; |
460 | 460 |
461 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 461 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
462 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public Functio
nImpl<typename FunctionWrapper::ResultType(P1, P2, P3)> { | 462 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public Functio
nImpl<typename FunctionWrapper::ResultType(P1, P2, P3)> { |
463 public: | 463 public: |
464 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 464 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
465 : m_functionWrapper(functionWrapper) | 465 : m_functionWrapper(functionWrapper) |
466 { | 466 { |
467 } | 467 } |
468 | 468 |
469 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3)
OVERRIDE | 469 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3)
override |
470 { | 470 { |
471 return m_functionWrapper(p1, p2, p3); | 471 return m_functionWrapper(p1, p2, p3); |
472 } | 472 } |
473 | 473 |
474 private: | 474 private: |
475 FunctionWrapper m_functionWrapper; | 475 FunctionWrapper m_functionWrapper; |
476 }; | 476 }; |
477 | 477 |
478 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 478 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
479 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4)> { | 479 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4)> { |
480 public: | 480 public: |
481 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 481 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
482 : m_functionWrapper(functionWrapper) | 482 : m_functionWrapper(functionWrapper) |
483 { | 483 { |
484 } | 484 } |
485 | 485 |
486 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4) OVERRIDE | 486 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4) override |
487 { | 487 { |
488 return m_functionWrapper(p1, p2, p3, p4); | 488 return m_functionWrapper(p1, p2, p3, p4); |
489 } | 489 } |
490 | 490 |
491 private: | 491 private: |
492 FunctionWrapper m_functionWrapper; | 492 FunctionWrapper m_functionWrapper; |
493 }; | 493 }; |
494 | 494 |
495 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 495 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
496 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL : public
FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5)> { | 496 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final : public
FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5)> { |
497 public: | 497 public: |
498 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 498 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
499 : m_functionWrapper(functionWrapper) | 499 : m_functionWrapper(functionWrapper) |
500 { | 500 { |
501 } | 501 } |
502 | 502 |
503 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5) OVERRIDE | 503 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5) override |
504 { | 504 { |
505 return m_functionWrapper(p1, p2, p3, p4, p5); | 505 return m_functionWrapper(p1, p2, p3, p4, p5); |
506 } | 506 } |
507 | 507 |
508 private: | 508 private: |
509 FunctionWrapper m_functionWrapper; | 509 FunctionWrapper m_functionWrapper; |
510 }; | 510 }; |
511 | 511 |
512 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 512 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
513 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FINAL : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5, P6)>
{ | 513 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> final : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5, P6)>
{ |
514 public: | 514 public: |
515 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 515 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
516 : m_functionWrapper(functionWrapper) | 516 : m_functionWrapper(functionWrapper) |
517 { | 517 { |
518 } | 518 } |
519 | 519 |
520 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5, P6 p6) OVERRIDE | 520 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5, P6 p6) override |
521 { | 521 { |
522 return m_functionWrapper(p1, p2, p3, p4, p5, p6); | 522 return m_functionWrapper(p1, p2, p3, p4, p5, p6); |
523 } | 523 } |
524 | 524 |
525 private: | 525 private: |
526 FunctionWrapper m_functionWrapper; | 526 FunctionWrapper m_functionWrapper; |
527 }; | 527 }; |
528 | 528 |
529 template<typename FunctionWrapper, typename FunctionType> | 529 template<typename FunctionWrapper, typename FunctionType> |
530 class OneArgPartBoundFunctionImpl; | 530 class OneArgPartBoundFunctionImpl; |
531 | 531 |
532 template<typename FunctionWrapper, typename R, typename P1, typename P2> | 532 template<typename FunctionWrapper, typename R, typename P1, typename P2> |
533 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2)> FINAL : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P2)> { | 533 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2)> final : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P2)> { |
534 public: | 534 public: |
535 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 535 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
536 : m_functionWrapper(functionWrapper) | 536 : m_functionWrapper(functionWrapper) |
537 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 537 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
538 { | 538 { |
539 } | 539 } |
540 | 540 |
541 virtual typename FunctionWrapper::ResultType operator()(P2 p2) OVERRIDE | 541 virtual typename FunctionWrapper::ResultType operator()(P2 p2) override |
542 { | 542 { |
543 return m_functionWrapper(m_p1, p2); | 543 return m_functionWrapper(m_p1, p2); |
544 } | 544 } |
545 | 545 |
546 private: | 546 private: |
547 FunctionWrapper m_functionWrapper; | 547 FunctionWrapper m_functionWrapper; |
548 typename ParamStorageTraits<P1>::StorageType m_p1; | 548 typename ParamStorageTraits<P1>::StorageType m_p1; |
549 }; | 549 }; |
550 | 550 |
551 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 551 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
552 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public
FunctionImpl<typename FunctionWrapper::ResultType(P2, P3)> { | 552 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public
FunctionImpl<typename FunctionWrapper::ResultType(P2, P3)> { |
553 public: | 553 public: |
554 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 554 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
555 : m_functionWrapper(functionWrapper) | 555 : m_functionWrapper(functionWrapper) |
556 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 556 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
557 { | 557 { |
558 } | 558 } |
559 | 559 |
560 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3) OVERRI
DE | 560 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3) overri
de |
561 { | 561 { |
562 return m_functionWrapper(m_p1, p2, p3); | 562 return m_functionWrapper(m_p1, p2, p3); |
563 } | 563 } |
564 | 564 |
565 private: | 565 private: |
566 FunctionWrapper m_functionWrapper; | 566 FunctionWrapper m_functionWrapper; |
567 typename ParamStorageTraits<P1>::StorageType m_p1; | 567 typename ParamStorageTraits<P1>::StorageType m_p1; |
568 }; | 568 }; |
569 | 569 |
570 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 570 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
571 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4)> { | 571 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4)> { |
572 public: | 572 public: |
573 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 573 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
574 : m_functionWrapper(functionWrapper) | 574 : m_functionWrapper(functionWrapper) |
575 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 575 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
576 { | 576 { |
577 } | 577 } |
578 | 578 |
579 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4)
OVERRIDE | 579 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4)
override |
580 { | 580 { |
581 return m_functionWrapper(m_p1, p2, p3, p4); | 581 return m_functionWrapper(m_p1, p2, p3, p4); |
582 } | 582 } |
583 | 583 |
584 private: | 584 private: |
585 FunctionWrapper m_functionWrapper; | 585 FunctionWrapper m_functionWrapper; |
586 typename ParamStorageTraits<P1>::StorageType m_p1; | 586 typename ParamStorageTraits<P1>::StorageType m_p1; |
587 }; | 587 }; |
588 | 588 |
589 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 589 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
590 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL
: public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5)> { | 590 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final
: public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5)> { |
591 public: | 591 public: |
592 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 592 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
593 : m_functionWrapper(functionWrapper) | 593 : m_functionWrapper(functionWrapper) |
594 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 594 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
595 { | 595 { |
596 } | 596 } |
597 | 597 |
598 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5) OVERRIDE | 598 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5) override |
599 { | 599 { |
600 return m_functionWrapper(m_p1, p2, p3, p4, p5); | 600 return m_functionWrapper(m_p1, p2, p3, p4, p5); |
601 } | 601 } |
602 | 602 |
603 private: | 603 private: |
604 FunctionWrapper m_functionWrapper; | 604 FunctionWrapper m_functionWrapper; |
605 typename ParamStorageTraits<P1>::StorageType m_p1; | 605 typename ParamStorageTraits<P1>::StorageType m_p1; |
606 }; | 606 }; |
607 | 607 |
608 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 608 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
609 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FI
NAL : public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5, P
6)> { | 609 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> fi
nal : public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5, P
6)> { |
610 public: | 610 public: |
611 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 611 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
612 : m_functionWrapper(functionWrapper) | 612 : m_functionWrapper(functionWrapper) |
613 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 613 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
614 { | 614 { |
615 } | 615 } |
616 | 616 |
617 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5, P6 p6) OVERRIDE | 617 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5, P6 p6) override |
618 { | 618 { |
619 return m_functionWrapper(m_p1, p2, p3, p4, p5, p6); | 619 return m_functionWrapper(m_p1, p2, p3, p4, p5, p6); |
620 } | 620 } |
621 | 621 |
622 private: | 622 private: |
623 FunctionWrapper m_functionWrapper; | 623 FunctionWrapper m_functionWrapper; |
624 typename ParamStorageTraits<P1>::StorageType m_p1; | 624 typename ParamStorageTraits<P1>::StorageType m_p1; |
625 }; | 625 }; |
626 | 626 |
627 template<typename FunctionWrapper, typename FunctionType> | 627 template<typename FunctionWrapper, typename FunctionType> |
628 class TwoArgPartBoundFunctionImpl; | 628 class TwoArgPartBoundFunctionImpl; |
629 | 629 |
630 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 630 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
631 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public
FunctionImpl<typename FunctionWrapper::ResultType(P3)> { | 631 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public
FunctionImpl<typename FunctionWrapper::ResultType(P3)> { |
632 public: | 632 public: |
633 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 633 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
634 : m_functionWrapper(functionWrapper) | 634 : m_functionWrapper(functionWrapper) |
635 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 635 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
636 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 636 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
637 { | 637 { |
638 } | 638 } |
639 | 639 |
640 virtual typename FunctionWrapper::ResultType operator()(P3 p3) OVERRIDE | 640 virtual typename FunctionWrapper::ResultType operator()(P3 p3) override |
641 { | 641 { |
642 return m_functionWrapper(m_p1, m_p2, p3); | 642 return m_functionWrapper(m_p1, m_p2, p3); |
643 } | 643 } |
644 | 644 |
645 private: | 645 private: |
646 FunctionWrapper m_functionWrapper; | 646 FunctionWrapper m_functionWrapper; |
647 typename ParamStorageTraits<P1>::StorageType m_p1; | 647 typename ParamStorageTraits<P1>::StorageType m_p1; |
648 typename ParamStorageTraits<P2>::StorageType m_p2; | 648 typename ParamStorageTraits<P2>::StorageType m_p2; |
649 }; | 649 }; |
650 | 650 |
651 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 651 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
652 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P3, P4)> { | 652 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P3, P4)> { |
653 public: | 653 public: |
654 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 654 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
655 : m_functionWrapper(functionWrapper) | 655 : m_functionWrapper(functionWrapper) |
656 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 656 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
657 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 657 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
658 { | 658 { |
659 } | 659 } |
660 | 660 |
661 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4) OVERRI
DE | 661 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4) overri
de |
662 { | 662 { |
663 return m_functionWrapper(m_p1, m_p2, p3, p4); | 663 return m_functionWrapper(m_p1, m_p2, p3, p4); |
664 } | 664 } |
665 | 665 |
666 private: | 666 private: |
667 FunctionWrapper m_functionWrapper; | 667 FunctionWrapper m_functionWrapper; |
668 typename ParamStorageTraits<P1>::StorageType m_p1; | 668 typename ParamStorageTraits<P1>::StorageType m_p1; |
669 typename ParamStorageTraits<P2>::StorageType m_p2; | 669 typename ParamStorageTraits<P2>::StorageType m_p2; |
670 }; | 670 }; |
671 | 671 |
672 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 672 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
673 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL
: public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5)> { | 673 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final
: public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5)> { |
674 public: | 674 public: |
675 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 675 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
676 : m_functionWrapper(functionWrapper) | 676 : m_functionWrapper(functionWrapper) |
677 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 677 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
678 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 678 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
679 { | 679 { |
680 } | 680 } |
681 | 681 |
682 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5)
OVERRIDE | 682 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5)
override |
683 { | 683 { |
684 return m_functionWrapper(m_p1, m_p2, p3, p4, p5); | 684 return m_functionWrapper(m_p1, m_p2, p3, p4, p5); |
685 } | 685 } |
686 | 686 |
687 private: | 687 private: |
688 FunctionWrapper m_functionWrapper; | 688 FunctionWrapper m_functionWrapper; |
689 typename ParamStorageTraits<P1>::StorageType m_p1; | 689 typename ParamStorageTraits<P1>::StorageType m_p1; |
690 typename ParamStorageTraits<P2>::StorageType m_p2; | 690 typename ParamStorageTraits<P2>::StorageType m_p2; |
691 }; | 691 }; |
692 | 692 |
693 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 693 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
694 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FI
NAL : public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5, P6)>
{ | 694 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> fi
nal : public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5, P6)>
{ |
695 public: | 695 public: |
696 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 696 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
697 : m_functionWrapper(functionWrapper) | 697 : m_functionWrapper(functionWrapper) |
698 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 698 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
699 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 699 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
700 { | 700 { |
701 } | 701 } |
702 | 702 |
703 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5,
P6 p6) OVERRIDE | 703 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5,
P6 p6) override |
704 { | 704 { |
705 return m_functionWrapper(m_p1, m_p2, p3, p4, p5, p6); | 705 return m_functionWrapper(m_p1, m_p2, p3, p4, p5, p6); |
706 } | 706 } |
707 | 707 |
708 private: | 708 private: |
709 FunctionWrapper m_functionWrapper; | 709 FunctionWrapper m_functionWrapper; |
710 typename ParamStorageTraits<P1>::StorageType m_p1; | 710 typename ParamStorageTraits<P1>::StorageType m_p1; |
711 typename ParamStorageTraits<P2>::StorageType m_p2; | 711 typename ParamStorageTraits<P2>::StorageType m_p2; |
712 }; | 712 }; |
713 | 713 |
714 template<typename FunctionWrapper, typename FunctionType> | 714 template<typename FunctionWrapper, typename FunctionType> |
715 class ThreeArgPartBoundFunctionImpl; | 715 class ThreeArgPartBoundFunctionImpl; |
716 | 716 |
717 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 717 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
718 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL :
public FunctionImpl<typename FunctionWrapper::ResultType(P4)> { | 718 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final :
public FunctionImpl<typename FunctionWrapper::ResultType(P4)> { |
719 public: | 719 public: |
720 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) | 720 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) |
721 : m_functionWrapper(functionWrapper) | 721 : m_functionWrapper(functionWrapper) |
722 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 722 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
723 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 723 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
724 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 724 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
725 { | 725 { |
726 } | 726 } |
727 | 727 |
728 virtual typename FunctionWrapper::ResultType operator()(P4 p4) OVERRIDE | 728 virtual typename FunctionWrapper::ResultType operator()(P4 p4) override |
729 { | 729 { |
730 return m_functionWrapper(m_p1, m_p2, m_p3, p4); | 730 return m_functionWrapper(m_p1, m_p2, m_p3, p4); |
731 } | 731 } |
732 | 732 |
733 private: | 733 private: |
734 FunctionWrapper m_functionWrapper; | 734 FunctionWrapper m_functionWrapper; |
735 typename ParamStorageTraits<P1>::StorageType m_p1; | 735 typename ParamStorageTraits<P1>::StorageType m_p1; |
736 typename ParamStorageTraits<P2>::StorageType m_p2; | 736 typename ParamStorageTraits<P2>::StorageType m_p2; |
737 typename ParamStorageTraits<P3>::StorageType m_p3; | 737 typename ParamStorageTraits<P3>::StorageType m_p3; |
738 }; | 738 }; |
739 | 739 |
740 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 740 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
741 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINA
L : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5)> { | 741 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> fina
l : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5)> { |
742 public: | 742 public: |
743 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) | 743 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) |
744 : m_functionWrapper(functionWrapper) | 744 : m_functionWrapper(functionWrapper) |
745 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 745 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
746 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 746 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
747 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 747 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
748 { | 748 { |
749 } | 749 } |
750 | 750 |
751 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5) OVERRI
DE | 751 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5) overri
de |
752 { | 752 { |
753 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5); | 753 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5); |
754 } | 754 } |
755 | 755 |
756 private: | 756 private: |
757 FunctionWrapper m_functionWrapper; | 757 FunctionWrapper m_functionWrapper; |
758 typename ParamStorageTraits<P1>::StorageType m_p1; | 758 typename ParamStorageTraits<P1>::StorageType m_p1; |
759 typename ParamStorageTraits<P2>::StorageType m_p2; | 759 typename ParamStorageTraits<P2>::StorageType m_p2; |
760 typename ParamStorageTraits<P3>::StorageType m_p3; | 760 typename ParamStorageTraits<P3>::StorageType m_p3; |
761 }; | 761 }; |
762 | 762 |
763 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 763 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
764 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)>
FINAL : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5, P6)> { | 764 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)>
final : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5, P6)> { |
765 public: | 765 public: |
766 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) | 766 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) |
767 : m_functionWrapper(functionWrapper) | 767 : m_functionWrapper(functionWrapper) |
768 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 768 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
769 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 769 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
770 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 770 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
771 { | 771 { |
772 } | 772 } |
773 | 773 |
774 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5, P6 p6)
OVERRIDE | 774 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5, P6 p6)
override |
775 { | 775 { |
776 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5, p6); | 776 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5, p6); |
777 } | 777 } |
778 | 778 |
779 private: | 779 private: |
780 FunctionWrapper m_functionWrapper; | 780 FunctionWrapper m_functionWrapper; |
781 typename ParamStorageTraits<P1>::StorageType m_p1; | 781 typename ParamStorageTraits<P1>::StorageType m_p1; |
782 typename ParamStorageTraits<P2>::StorageType m_p2; | 782 typename ParamStorageTraits<P2>::StorageType m_p2; |
783 typename ParamStorageTraits<P3>::StorageType m_p3; | 783 typename ParamStorageTraits<P3>::StorageType m_p3; |
784 }; | 784 }; |
785 | 785 |
786 template<typename FunctionWrapper, typename FunctionType> | 786 template<typename FunctionWrapper, typename FunctionType> |
787 class FourArgPartBoundFunctionImpl; | 787 class FourArgPartBoundFunctionImpl; |
788 | 788 |
789 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 789 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
790 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL
: public FunctionImpl<typename FunctionWrapper::ResultType(P5)> { | 790 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final
: public FunctionImpl<typename FunctionWrapper::ResultType(P5)> { |
791 public: | 791 public: |
792 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) | 792 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) |
793 : m_functionWrapper(functionWrapper) | 793 : m_functionWrapper(functionWrapper) |
794 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 794 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
795 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 795 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
796 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 796 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
797 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 797 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
798 { | 798 { |
799 } | 799 } |
800 | 800 |
801 virtual typename FunctionWrapper::ResultType operator()(P5 p5) OVERRIDE | 801 virtual typename FunctionWrapper::ResultType operator()(P5 p5) override |
802 { | 802 { |
803 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5); | 803 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5); |
804 } | 804 } |
805 | 805 |
806 private: | 806 private: |
807 FunctionWrapper m_functionWrapper; | 807 FunctionWrapper m_functionWrapper; |
808 typename ParamStorageTraits<P1>::StorageType m_p1; | 808 typename ParamStorageTraits<P1>::StorageType m_p1; |
809 typename ParamStorageTraits<P2>::StorageType m_p2; | 809 typename ParamStorageTraits<P2>::StorageType m_p2; |
810 typename ParamStorageTraits<P3>::StorageType m_p3; | 810 typename ParamStorageTraits<P3>::StorageType m_p3; |
811 typename ParamStorageTraits<P4>::StorageType m_p4; | 811 typename ParamStorageTraits<P4>::StorageType m_p4; |
812 }; | 812 }; |
813 | 813 |
814 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 814 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
815 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> F
INAL : public FunctionImpl<typename FunctionWrapper::ResultType(P5, P6)> { | 815 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> f
inal : public FunctionImpl<typename FunctionWrapper::ResultType(P5, P6)> { |
816 public: | 816 public: |
817 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) | 817 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) |
818 : m_functionWrapper(functionWrapper) | 818 : m_functionWrapper(functionWrapper) |
819 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 819 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
820 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 820 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
821 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 821 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
822 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 822 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
823 { | 823 { |
824 } | 824 } |
825 | 825 |
826 virtual typename FunctionWrapper::ResultType operator()(P5 p5, P6 p6) OVERRI
DE | 826 virtual typename FunctionWrapper::ResultType operator()(P5 p5, P6 p6) overri
de |
827 { | 827 { |
828 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5, p6); | 828 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5, p6); |
829 } | 829 } |
830 | 830 |
831 private: | 831 private: |
832 FunctionWrapper m_functionWrapper; | 832 FunctionWrapper m_functionWrapper; |
833 typename ParamStorageTraits<P1>::StorageType m_p1; | 833 typename ParamStorageTraits<P1>::StorageType m_p1; |
834 typename ParamStorageTraits<P2>::StorageType m_p2; | 834 typename ParamStorageTraits<P2>::StorageType m_p2; |
835 typename ParamStorageTraits<P3>::StorageType m_p3; | 835 typename ParamStorageTraits<P3>::StorageType m_p3; |
836 typename ParamStorageTraits<P4>::StorageType m_p4; | 836 typename ParamStorageTraits<P4>::StorageType m_p4; |
837 }; | 837 }; |
838 | 838 |
839 template<typename FunctionWrapper, typename FunctionType> | 839 template<typename FunctionWrapper, typename FunctionType> |
840 class FiveArgPartBoundFunctionImpl; | 840 class FiveArgPartBoundFunctionImpl; |
841 | 841 |
842 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 842 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
843 class FiveArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> F
INAL : public FunctionImpl<typename FunctionWrapper::ResultType(P6)> { | 843 class FiveArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> f
inal : public FunctionImpl<typename FunctionWrapper::ResultType(P6)> { |
844 public: | 844 public: |
845 FiveArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4, const P5& p5) | 845 FiveArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4, const P5& p5) |
846 : m_functionWrapper(functionWrapper) | 846 : m_functionWrapper(functionWrapper) |
847 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 847 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
848 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 848 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
849 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 849 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
850 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 850 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
851 , m_p5(ParamStorageTraits<P5>::wrap(p5)) | 851 , m_p5(ParamStorageTraits<P5>::wrap(p5)) |
852 { | 852 { |
853 } | 853 } |
854 | 854 |
855 virtual typename FunctionWrapper::ResultType operator()(P6 p6) OVERRIDE | 855 virtual typename FunctionWrapper::ResultType operator()(P6 p6) override |
856 { | 856 { |
857 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, m_p5, p6); | 857 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, m_p5, p6); |
858 } | 858 } |
859 | 859 |
860 private: | 860 private: |
861 FunctionWrapper m_functionWrapper; | 861 FunctionWrapper m_functionWrapper; |
862 typename ParamStorageTraits<P1>::StorageType m_p1; | 862 typename ParamStorageTraits<P1>::StorageType m_p1; |
863 typename ParamStorageTraits<P2>::StorageType m_p2; | 863 typename ParamStorageTraits<P2>::StorageType m_p2; |
864 typename ParamStorageTraits<P3>::StorageType m_p3; | 864 typename ParamStorageTraits<P3>::StorageType m_p3; |
865 typename ParamStorageTraits<P4>::StorageType m_p4; | 865 typename ParamStorageTraits<P4>::StorageType m_p4; |
866 typename ParamStorageTraits<P5>::StorageType m_p5; | 866 typename ParamStorageTraits<P5>::StorageType m_p5; |
867 }; | 867 }; |
868 | 868 |
869 template<typename FunctionWrapper, typename FunctionType> | 869 template<typename FunctionWrapper, typename FunctionType> |
870 class BoundFunctionImpl; | 870 class BoundFunctionImpl; |
871 | 871 |
872 template<typename FunctionWrapper, typename R> | 872 template<typename FunctionWrapper, typename R> |
873 class BoundFunctionImpl<FunctionWrapper, R()> FINAL : public FunctionImpl<typena
me FunctionWrapper::ResultType()> { | 873 class BoundFunctionImpl<FunctionWrapper, R()> final : public FunctionImpl<typena
me FunctionWrapper::ResultType()> { |
874 public: | 874 public: |
875 explicit BoundFunctionImpl(FunctionWrapper functionWrapper) | 875 explicit BoundFunctionImpl(FunctionWrapper functionWrapper) |
876 : m_functionWrapper(functionWrapper) | 876 : m_functionWrapper(functionWrapper) |
877 { | 877 { |
878 } | 878 } |
879 | 879 |
880 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 880 virtual typename FunctionWrapper::ResultType operator()() override |
881 { | 881 { |
882 return m_functionWrapper(); | 882 return m_functionWrapper(); |
883 } | 883 } |
884 | 884 |
885 private: | 885 private: |
886 FunctionWrapper m_functionWrapper; | 886 FunctionWrapper m_functionWrapper; |
887 }; | 887 }; |
888 | 888 |
889 template<typename FunctionWrapper, typename R, typename P1> | 889 template<typename FunctionWrapper, typename R, typename P1> |
890 class BoundFunctionImpl<FunctionWrapper, R(P1)> FINAL : public FunctionImpl<type
name FunctionWrapper::ResultType()> { | 890 class BoundFunctionImpl<FunctionWrapper, R(P1)> final : public FunctionImpl<type
name FunctionWrapper::ResultType()> { |
891 public: | 891 public: |
892 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 892 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
893 : m_functionWrapper(functionWrapper) | 893 : m_functionWrapper(functionWrapper) |
894 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 894 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
895 { | 895 { |
896 } | 896 } |
897 | 897 |
898 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 898 virtual typename FunctionWrapper::ResultType operator()() override |
899 { | 899 { |
900 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1)); | 900 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1)); |
901 } | 901 } |
902 | 902 |
903 private: | 903 private: |
904 FunctionWrapper m_functionWrapper; | 904 FunctionWrapper m_functionWrapper; |
905 typename ParamStorageTraits<P1>::StorageType m_p1; | 905 typename ParamStorageTraits<P1>::StorageType m_p1; |
906 }; | 906 }; |
907 | 907 |
908 template<typename FunctionWrapper, typename R, typename P1, typename P2> | 908 template<typename FunctionWrapper, typename R, typename P1, typename P2> |
909 class BoundFunctionImpl<FunctionWrapper, R(P1, P2)> FINAL : public FunctionImpl<
typename FunctionWrapper::ResultType()> { | 909 class BoundFunctionImpl<FunctionWrapper, R(P1, P2)> final : public FunctionImpl<
typename FunctionWrapper::ResultType()> { |
910 public: | 910 public: |
911 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2) | 911 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2) |
912 : m_functionWrapper(functionWrapper) | 912 : m_functionWrapper(functionWrapper) |
913 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 913 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
914 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 914 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
915 { | 915 { |
916 } | 916 } |
917 | 917 |
918 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 918 virtual typename FunctionWrapper::ResultType operator()() override |
919 { | 919 { |
920 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2)); | 920 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2)); |
921 } | 921 } |
922 | 922 |
923 private: | 923 private: |
924 FunctionWrapper m_functionWrapper; | 924 FunctionWrapper m_functionWrapper; |
925 typename ParamStorageTraits<P1>::StorageType m_p1; | 925 typename ParamStorageTraits<P1>::StorageType m_p1; |
926 typename ParamStorageTraits<P2>::StorageType m_p2; | 926 typename ParamStorageTraits<P2>::StorageType m_p2; |
927 }; | 927 }; |
928 | 928 |
929 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 929 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
930 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public FunctionI
mpl<typename FunctionWrapper::ResultType()> { | 930 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public FunctionI
mpl<typename FunctionWrapper::ResultType()> { |
931 public: | 931 public: |
932 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3) | 932 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3) |
933 : m_functionWrapper(functionWrapper) | 933 : m_functionWrapper(functionWrapper) |
934 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 934 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
935 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 935 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
936 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 936 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
937 { | 937 { |
938 } | 938 } |
939 | 939 |
940 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 940 virtual typename FunctionWrapper::ResultType operator()() override |
941 { | 941 { |
942 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3)); | 942 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3)); |
943 } | 943 } |
944 | 944 |
945 private: | 945 private: |
946 FunctionWrapper m_functionWrapper; | 946 FunctionWrapper m_functionWrapper; |
947 typename ParamStorageTraits<P1>::StorageType m_p1; | 947 typename ParamStorageTraits<P1>::StorageType m_p1; |
948 typename ParamStorageTraits<P2>::StorageType m_p2; | 948 typename ParamStorageTraits<P2>::StorageType m_p2; |
949 typename ParamStorageTraits<P3>::StorageType m_p3; | 949 typename ParamStorageTraits<P3>::StorageType m_p3; |
950 }; | 950 }; |
951 | 951 |
952 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 952 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
953 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : public Funct
ionImpl<typename FunctionWrapper::ResultType()> { | 953 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : public Funct
ionImpl<typename FunctionWrapper::ResultType()> { |
954 public: | 954 public: |
955 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4) | 955 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4) |
956 : m_functionWrapper(functionWrapper) | 956 : m_functionWrapper(functionWrapper) |
957 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 957 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
958 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 958 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
959 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 959 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
960 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 960 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
961 { | 961 { |
962 } | 962 } |
963 | 963 |
964 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 964 virtual typename FunctionWrapper::ResultType operator()() override |
965 { | 965 { |
966 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4)); | 966 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4)); |
967 } | 967 } |
968 | 968 |
969 private: | 969 private: |
970 FunctionWrapper m_functionWrapper; | 970 FunctionWrapper m_functionWrapper; |
971 typename ParamStorageTraits<P1>::StorageType m_p1; | 971 typename ParamStorageTraits<P1>::StorageType m_p1; |
972 typename ParamStorageTraits<P2>::StorageType m_p2; | 972 typename ParamStorageTraits<P2>::StorageType m_p2; |
973 typename ParamStorageTraits<P3>::StorageType m_p3; | 973 typename ParamStorageTraits<P3>::StorageType m_p3; |
974 typename ParamStorageTraits<P4>::StorageType m_p4; | 974 typename ParamStorageTraits<P4>::StorageType m_p4; |
975 }; | 975 }; |
976 | 976 |
977 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 977 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
978 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL : public F
unctionImpl<typename FunctionWrapper::ResultType()> { | 978 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final : public F
unctionImpl<typename FunctionWrapper::ResultType()> { |
979 public: | 979 public: |
980 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5) | 980 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5) |
981 : m_functionWrapper(functionWrapper) | 981 : m_functionWrapper(functionWrapper) |
982 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 982 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
983 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 983 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
984 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 984 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
985 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 985 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
986 , m_p5(ParamStorageTraits<P5>::wrap(p5)) | 986 , m_p5(ParamStorageTraits<P5>::wrap(p5)) |
987 { | 987 { |
988 } | 988 } |
989 | 989 |
990 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 990 virtual typename FunctionWrapper::ResultType operator()() override |
991 { | 991 { |
992 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5)); | 992 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5)); |
993 } | 993 } |
994 | 994 |
995 private: | 995 private: |
996 FunctionWrapper m_functionWrapper; | 996 FunctionWrapper m_functionWrapper; |
997 typename ParamStorageTraits<P1>::StorageType m_p1; | 997 typename ParamStorageTraits<P1>::StorageType m_p1; |
998 typename ParamStorageTraits<P2>::StorageType m_p2; | 998 typename ParamStorageTraits<P2>::StorageType m_p2; |
999 typename ParamStorageTraits<P3>::StorageType m_p3; | 999 typename ParamStorageTraits<P3>::StorageType m_p3; |
1000 typename ParamStorageTraits<P4>::StorageType m_p4; | 1000 typename ParamStorageTraits<P4>::StorageType m_p4; |
1001 typename ParamStorageTraits<P5>::StorageType m_p5; | 1001 typename ParamStorageTraits<P5>::StorageType m_p5; |
1002 }; | 1002 }; |
1003 | 1003 |
1004 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 1004 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
1005 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FINAL : publ
ic FunctionImpl<typename FunctionWrapper::ResultType()> { | 1005 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> final : publ
ic FunctionImpl<typename FunctionWrapper::ResultType()> { |
1006 public: | 1006 public: |
1007 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) | 1007 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) |
1008 : m_functionWrapper(functionWrapper) | 1008 : m_functionWrapper(functionWrapper) |
1009 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 1009 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
1010 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 1010 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
1011 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 1011 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
1012 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 1012 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
1013 , m_p5(ParamStorageTraits<P5>::wrap(p5)) | 1013 , m_p5(ParamStorageTraits<P5>::wrap(p5)) |
1014 , m_p6(ParamStorageTraits<P6>::wrap(p6)) | 1014 , m_p6(ParamStorageTraits<P6>::wrap(p6)) |
1015 { | 1015 { |
1016 } | 1016 } |
1017 | 1017 |
1018 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 1018 virtual typename FunctionWrapper::ResultType operator()() override |
1019 { | 1019 { |
1020 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5), ParamStorageTrait
s<P6>::unwrap(m_p6)); | 1020 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5), ParamStorageTrait
s<P6>::unwrap(m_p6)); |
1021 } | 1021 } |
1022 | 1022 |
1023 private: | 1023 private: |
1024 FunctionWrapper m_functionWrapper; | 1024 FunctionWrapper m_functionWrapper; |
1025 typename ParamStorageTraits<P1>::StorageType m_p1; | 1025 typename ParamStorageTraits<P1>::StorageType m_p1; |
1026 typename ParamStorageTraits<P2>::StorageType m_p2; | 1026 typename ParamStorageTraits<P2>::StorageType m_p2; |
1027 typename ParamStorageTraits<P3>::StorageType m_p3; | 1027 typename ParamStorageTraits<P3>::StorageType m_p3; |
1028 typename ParamStorageTraits<P4>::StorageType m_p4; | 1028 typename ParamStorageTraits<P4>::StorageType m_p4; |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1365 | 1365 |
1366 typedef Function<void()> Closure; | 1366 typedef Function<void()> Closure; |
1367 | 1367 |
1368 } | 1368 } |
1369 | 1369 |
1370 using WTF::Function; | 1370 using WTF::Function; |
1371 using WTF::bind; | 1371 using WTF::bind; |
1372 using WTF::Closure; | 1372 using WTF::Closure; |
1373 | 1373 |
1374 #endif // WTF_Functional_h | 1374 #endif // WTF_Functional_h |
OLD | NEW |