OLD | NEW |
1 // This file was GENERATED by command: | 1 // This file was GENERATED by command: |
2 // pump.py bind_internal.h.pump | 2 // pump.py bind_internal.h.pump |
3 // DO NOT EDIT BY HAND!!! | 3 // DO NOT EDIT BY HAND!!! |
4 | 4 |
5 | 5 |
6 | 6 |
7 // TODO(ajwong): If you create an fully unbound method, is there a way to | 7 // TODO(ajwong): If you create an fully unbound method, is there a way to |
8 // enforce the first argument must be refcounted? Or do we just say | 8 // enforce the first argument must be refcounted? Or do we just say |
9 // "oh well"? | 9 // "oh well"? |
10 // | 10 // |
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 typename CallbackParamTraits<A4>::ForwardType a4, | 545 typename CallbackParamTraits<A4>::ForwardType a4, |
546 typename CallbackParamTraits<A5>::ForwardType a5, | 546 typename CallbackParamTraits<A5>::ForwardType a5, |
547 typename CallbackParamTraits<A6>::ForwardType a6) { | 547 typename CallbackParamTraits<A6>::ForwardType a6) { |
548 return (object->*method_)(a1, a2, a3, a4, a5, a6); | 548 return (object->*method_)(a1, a2, a3, a4, a5, a6); |
549 } | 549 } |
550 | 550 |
551 private: | 551 private: |
552 R (T::*method_)(A1, A2, A3, A4, A5, A6) const; | 552 R (T::*method_)(A1, A2, A3, A4, A5, A6) const; |
553 }; | 553 }; |
554 | 554 |
| 555 // Function: Arity 7. |
| 556 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 557 typename A5, typename A6, typename A7> |
| 558 class RunnableAdapter<R(*)(A1, A2, A3, A4, A5, A6, A7)> { |
| 559 public: |
| 560 typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7); |
| 561 |
| 562 explicit RunnableAdapter(R(*function)(A1, A2, A3, A4, A5, A6, A7)) |
| 563 : function_(function) { |
| 564 } |
| 565 |
| 566 R Run(typename CallbackParamTraits<A1>::ForwardType a1, |
| 567 typename CallbackParamTraits<A2>::ForwardType a2, |
| 568 typename CallbackParamTraits<A3>::ForwardType a3, |
| 569 typename CallbackParamTraits<A4>::ForwardType a4, |
| 570 typename CallbackParamTraits<A5>::ForwardType a5, |
| 571 typename CallbackParamTraits<A6>::ForwardType a6, |
| 572 typename CallbackParamTraits<A7>::ForwardType a7) { |
| 573 return function_(a1, a2, a3, a4, a5, a6, a7); |
| 574 } |
| 575 |
| 576 private: |
| 577 R (*function_)(A1, A2, A3, A4, A5, A6, A7); |
| 578 }; |
| 579 |
| 580 // Method: Arity 7. |
| 581 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 582 typename A4, typename A5, typename A6, typename A7> |
| 583 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7)> { |
| 584 public: |
| 585 typedef R (RunType)(T*, A1, A2, A3, A4, A5, A6, A7); |
| 586 typedef true_type IsMethod; |
| 587 |
| 588 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7)) |
| 589 : method_(method) { |
| 590 } |
| 591 |
| 592 R Run(T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 593 typename CallbackParamTraits<A2>::ForwardType a2, |
| 594 typename CallbackParamTraits<A3>::ForwardType a3, |
| 595 typename CallbackParamTraits<A4>::ForwardType a4, |
| 596 typename CallbackParamTraits<A5>::ForwardType a5, |
| 597 typename CallbackParamTraits<A6>::ForwardType a6, |
| 598 typename CallbackParamTraits<A7>::ForwardType a7) { |
| 599 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7); |
| 600 } |
| 601 |
| 602 private: |
| 603 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7); |
| 604 }; |
| 605 |
| 606 // Const Method: Arity 7. |
| 607 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 608 typename A4, typename A5, typename A6, typename A7> |
| 609 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7) const> { |
| 610 public: |
| 611 typedef R (RunType)(const T*, A1, A2, A3, A4, A5, A6, A7); |
| 612 typedef true_type IsMethod; |
| 613 |
| 614 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7) const) |
| 615 : method_(method) { |
| 616 } |
| 617 |
| 618 R Run(const T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 619 typename CallbackParamTraits<A2>::ForwardType a2, |
| 620 typename CallbackParamTraits<A3>::ForwardType a3, |
| 621 typename CallbackParamTraits<A4>::ForwardType a4, |
| 622 typename CallbackParamTraits<A5>::ForwardType a5, |
| 623 typename CallbackParamTraits<A6>::ForwardType a6, |
| 624 typename CallbackParamTraits<A7>::ForwardType a7) { |
| 625 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7); |
| 626 } |
| 627 |
| 628 private: |
| 629 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7) const; |
| 630 }; |
| 631 |
| 632 // Function: Arity 8. |
| 633 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 634 typename A5, typename A6, typename A7, typename A8> |
| 635 class RunnableAdapter<R(*)(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 636 public: |
| 637 typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7, A8); |
| 638 |
| 639 explicit RunnableAdapter(R(*function)(A1, A2, A3, A4, A5, A6, A7, A8)) |
| 640 : function_(function) { |
| 641 } |
| 642 |
| 643 R Run(typename CallbackParamTraits<A1>::ForwardType a1, |
| 644 typename CallbackParamTraits<A2>::ForwardType a2, |
| 645 typename CallbackParamTraits<A3>::ForwardType a3, |
| 646 typename CallbackParamTraits<A4>::ForwardType a4, |
| 647 typename CallbackParamTraits<A5>::ForwardType a5, |
| 648 typename CallbackParamTraits<A6>::ForwardType a6, |
| 649 typename CallbackParamTraits<A7>::ForwardType a7, |
| 650 typename CallbackParamTraits<A8>::ForwardType a8) { |
| 651 return function_(a1, a2, a3, a4, a5, a6, a7, a8); |
| 652 } |
| 653 |
| 654 private: |
| 655 R (*function_)(A1, A2, A3, A4, A5, A6, A7, A8); |
| 656 }; |
| 657 |
| 658 // Method: Arity 8. |
| 659 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 660 typename A4, typename A5, typename A6, typename A7, typename A8> |
| 661 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 662 public: |
| 663 typedef R (RunType)(T*, A1, A2, A3, A4, A5, A6, A7, A8); |
| 664 typedef true_type IsMethod; |
| 665 |
| 666 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8)) |
| 667 : method_(method) { |
| 668 } |
| 669 |
| 670 R Run(T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 671 typename CallbackParamTraits<A2>::ForwardType a2, |
| 672 typename CallbackParamTraits<A3>::ForwardType a3, |
| 673 typename CallbackParamTraits<A4>::ForwardType a4, |
| 674 typename CallbackParamTraits<A5>::ForwardType a5, |
| 675 typename CallbackParamTraits<A6>::ForwardType a6, |
| 676 typename CallbackParamTraits<A7>::ForwardType a7, |
| 677 typename CallbackParamTraits<A8>::ForwardType a8) { |
| 678 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8); |
| 679 } |
| 680 |
| 681 private: |
| 682 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8); |
| 683 }; |
| 684 |
| 685 // Const Method: Arity 8. |
| 686 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 687 typename A4, typename A5, typename A6, typename A7, typename A8> |
| 688 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8) const> { |
| 689 public: |
| 690 typedef R (RunType)(const T*, A1, A2, A3, A4, A5, A6, A7, A8); |
| 691 typedef true_type IsMethod; |
| 692 |
| 693 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8) const) |
| 694 : method_(method) { |
| 695 } |
| 696 |
| 697 R Run(const T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 698 typename CallbackParamTraits<A2>::ForwardType a2, |
| 699 typename CallbackParamTraits<A3>::ForwardType a3, |
| 700 typename CallbackParamTraits<A4>::ForwardType a4, |
| 701 typename CallbackParamTraits<A5>::ForwardType a5, |
| 702 typename CallbackParamTraits<A6>::ForwardType a6, |
| 703 typename CallbackParamTraits<A7>::ForwardType a7, |
| 704 typename CallbackParamTraits<A8>::ForwardType a8) { |
| 705 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8); |
| 706 } |
| 707 |
| 708 private: |
| 709 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8) const; |
| 710 }; |
| 711 |
| 712 // Function: Arity 9. |
| 713 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 714 typename A5, typename A6, typename A7, typename A8, typename A9> |
| 715 class RunnableAdapter<R(*)(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 716 public: |
| 717 typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9); |
| 718 |
| 719 explicit RunnableAdapter(R(*function)(A1, A2, A3, A4, A5, A6, A7, A8, A9)) |
| 720 : function_(function) { |
| 721 } |
| 722 |
| 723 R Run(typename CallbackParamTraits<A1>::ForwardType a1, |
| 724 typename CallbackParamTraits<A2>::ForwardType a2, |
| 725 typename CallbackParamTraits<A3>::ForwardType a3, |
| 726 typename CallbackParamTraits<A4>::ForwardType a4, |
| 727 typename CallbackParamTraits<A5>::ForwardType a5, |
| 728 typename CallbackParamTraits<A6>::ForwardType a6, |
| 729 typename CallbackParamTraits<A7>::ForwardType a7, |
| 730 typename CallbackParamTraits<A8>::ForwardType a8, |
| 731 typename CallbackParamTraits<A9>::ForwardType a9) { |
| 732 return function_(a1, a2, a3, a4, a5, a6, a7, a8, a9); |
| 733 } |
| 734 |
| 735 private: |
| 736 R (*function_)(A1, A2, A3, A4, A5, A6, A7, A8, A9); |
| 737 }; |
| 738 |
| 739 // Method: Arity 9. |
| 740 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 741 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 742 typename A9> |
| 743 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 744 public: |
| 745 typedef R (RunType)(T*, A1, A2, A3, A4, A5, A6, A7, A8, A9); |
| 746 typedef true_type IsMethod; |
| 747 |
| 748 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9)) |
| 749 : method_(method) { |
| 750 } |
| 751 |
| 752 R Run(T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 753 typename CallbackParamTraits<A2>::ForwardType a2, |
| 754 typename CallbackParamTraits<A3>::ForwardType a3, |
| 755 typename CallbackParamTraits<A4>::ForwardType a4, |
| 756 typename CallbackParamTraits<A5>::ForwardType a5, |
| 757 typename CallbackParamTraits<A6>::ForwardType a6, |
| 758 typename CallbackParamTraits<A7>::ForwardType a7, |
| 759 typename CallbackParamTraits<A8>::ForwardType a8, |
| 760 typename CallbackParamTraits<A9>::ForwardType a9) { |
| 761 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8, a9); |
| 762 } |
| 763 |
| 764 private: |
| 765 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8, A9); |
| 766 }; |
| 767 |
| 768 // Const Method: Arity 9. |
| 769 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 770 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 771 typename A9> |
| 772 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8, A9) const> { |
| 773 public: |
| 774 typedef R (RunType)(const T*, A1, A2, A3, A4, A5, A6, A7, A8, A9); |
| 775 typedef true_type IsMethod; |
| 776 |
| 777 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8, |
| 778 A9) const) |
| 779 : method_(method) { |
| 780 } |
| 781 |
| 782 R Run(const T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 783 typename CallbackParamTraits<A2>::ForwardType a2, |
| 784 typename CallbackParamTraits<A3>::ForwardType a3, |
| 785 typename CallbackParamTraits<A4>::ForwardType a4, |
| 786 typename CallbackParamTraits<A5>::ForwardType a5, |
| 787 typename CallbackParamTraits<A6>::ForwardType a6, |
| 788 typename CallbackParamTraits<A7>::ForwardType a7, |
| 789 typename CallbackParamTraits<A8>::ForwardType a8, |
| 790 typename CallbackParamTraits<A9>::ForwardType a9) { |
| 791 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8, a9); |
| 792 } |
| 793 |
| 794 private: |
| 795 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8, A9) const; |
| 796 }; |
| 797 |
| 798 // Function: Arity 10. |
| 799 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 800 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 801 typename A10> |
| 802 class RunnableAdapter<R(*)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 803 public: |
| 804 typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
| 805 |
| 806 explicit RunnableAdapter(R(*function)(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
| 807 A10)) |
| 808 : function_(function) { |
| 809 } |
| 810 |
| 811 R Run(typename CallbackParamTraits<A1>::ForwardType a1, |
| 812 typename CallbackParamTraits<A2>::ForwardType a2, |
| 813 typename CallbackParamTraits<A3>::ForwardType a3, |
| 814 typename CallbackParamTraits<A4>::ForwardType a4, |
| 815 typename CallbackParamTraits<A5>::ForwardType a5, |
| 816 typename CallbackParamTraits<A6>::ForwardType a6, |
| 817 typename CallbackParamTraits<A7>::ForwardType a7, |
| 818 typename CallbackParamTraits<A8>::ForwardType a8, |
| 819 typename CallbackParamTraits<A9>::ForwardType a9, |
| 820 typename CallbackParamTraits<A10>::ForwardType a10) { |
| 821 return function_(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); |
| 822 } |
| 823 |
| 824 private: |
| 825 R (*function_)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
| 826 }; |
| 827 |
| 828 // Method: Arity 10. |
| 829 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 830 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 831 typename A9, typename A10> |
| 832 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 833 public: |
| 834 typedef R (RunType)(T*, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
| 835 typedef true_type IsMethod; |
| 836 |
| 837 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
| 838 A10)) |
| 839 : method_(method) { |
| 840 } |
| 841 |
| 842 R Run(T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 843 typename CallbackParamTraits<A2>::ForwardType a2, |
| 844 typename CallbackParamTraits<A3>::ForwardType a3, |
| 845 typename CallbackParamTraits<A4>::ForwardType a4, |
| 846 typename CallbackParamTraits<A5>::ForwardType a5, |
| 847 typename CallbackParamTraits<A6>::ForwardType a6, |
| 848 typename CallbackParamTraits<A7>::ForwardType a7, |
| 849 typename CallbackParamTraits<A8>::ForwardType a8, |
| 850 typename CallbackParamTraits<A9>::ForwardType a9, |
| 851 typename CallbackParamTraits<A10>::ForwardType a10) { |
| 852 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); |
| 853 } |
| 854 |
| 855 private: |
| 856 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
| 857 }; |
| 858 |
| 859 // Const Method: Arity 10. |
| 860 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 861 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 862 typename A9, typename A10> |
| 863 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const> { |
| 864 public: |
| 865 typedef R (RunType)(const T*, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
| 866 typedef true_type IsMethod; |
| 867 |
| 868 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
| 869 A10) const) |
| 870 : method_(method) { |
| 871 } |
| 872 |
| 873 R Run(const T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 874 typename CallbackParamTraits<A2>::ForwardType a2, |
| 875 typename CallbackParamTraits<A3>::ForwardType a3, |
| 876 typename CallbackParamTraits<A4>::ForwardType a4, |
| 877 typename CallbackParamTraits<A5>::ForwardType a5, |
| 878 typename CallbackParamTraits<A6>::ForwardType a6, |
| 879 typename CallbackParamTraits<A7>::ForwardType a7, |
| 880 typename CallbackParamTraits<A8>::ForwardType a8, |
| 881 typename CallbackParamTraits<A9>::ForwardType a9, |
| 882 typename CallbackParamTraits<A10>::ForwardType a10) { |
| 883 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); |
| 884 } |
| 885 |
| 886 private: |
| 887 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const; |
| 888 }; |
| 889 |
| 890 // Function: Arity 11. |
| 891 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 892 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 893 typename A10, typename A11> |
| 894 class RunnableAdapter<R(*)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 895 public: |
| 896 typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
| 897 |
| 898 explicit RunnableAdapter(R(*function)(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
| 899 A10, A11)) |
| 900 : function_(function) { |
| 901 } |
| 902 |
| 903 R Run(typename CallbackParamTraits<A1>::ForwardType a1, |
| 904 typename CallbackParamTraits<A2>::ForwardType a2, |
| 905 typename CallbackParamTraits<A3>::ForwardType a3, |
| 906 typename CallbackParamTraits<A4>::ForwardType a4, |
| 907 typename CallbackParamTraits<A5>::ForwardType a5, |
| 908 typename CallbackParamTraits<A6>::ForwardType a6, |
| 909 typename CallbackParamTraits<A7>::ForwardType a7, |
| 910 typename CallbackParamTraits<A8>::ForwardType a8, |
| 911 typename CallbackParamTraits<A9>::ForwardType a9, |
| 912 typename CallbackParamTraits<A10>::ForwardType a10, |
| 913 typename CallbackParamTraits<A11>::ForwardType a11) { |
| 914 return function_(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); |
| 915 } |
| 916 |
| 917 private: |
| 918 R (*function_)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
| 919 }; |
| 920 |
| 921 // Method: Arity 11. |
| 922 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 923 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 924 typename A9, typename A10, typename A11> |
| 925 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 926 public: |
| 927 typedef R (RunType)(T*, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
| 928 typedef true_type IsMethod; |
| 929 |
| 930 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
| 931 A10, A11)) |
| 932 : method_(method) { |
| 933 } |
| 934 |
| 935 R Run(T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 936 typename CallbackParamTraits<A2>::ForwardType a2, |
| 937 typename CallbackParamTraits<A3>::ForwardType a3, |
| 938 typename CallbackParamTraits<A4>::ForwardType a4, |
| 939 typename CallbackParamTraits<A5>::ForwardType a5, |
| 940 typename CallbackParamTraits<A6>::ForwardType a6, |
| 941 typename CallbackParamTraits<A7>::ForwardType a7, |
| 942 typename CallbackParamTraits<A8>::ForwardType a8, |
| 943 typename CallbackParamTraits<A9>::ForwardType a9, |
| 944 typename CallbackParamTraits<A10>::ForwardType a10, |
| 945 typename CallbackParamTraits<A11>::ForwardType a11) { |
| 946 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); |
| 947 } |
| 948 |
| 949 private: |
| 950 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
| 951 }; |
| 952 |
| 953 // Const Method: Arity 11. |
| 954 template <typename R, typename T, typename A1, typename A2, typename A3, |
| 955 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 956 typename A9, typename A10, typename A11> |
| 957 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, |
| 958 A11) const> { |
| 959 public: |
| 960 typedef R (RunType)(const T*, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
| 961 typedef true_type IsMethod; |
| 962 |
| 963 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
| 964 A10, A11) const) |
| 965 : method_(method) { |
| 966 } |
| 967 |
| 968 R Run(const T* object, typename CallbackParamTraits<A1>::ForwardType a1, |
| 969 typename CallbackParamTraits<A2>::ForwardType a2, |
| 970 typename CallbackParamTraits<A3>::ForwardType a3, |
| 971 typename CallbackParamTraits<A4>::ForwardType a4, |
| 972 typename CallbackParamTraits<A5>::ForwardType a5, |
| 973 typename CallbackParamTraits<A6>::ForwardType a6, |
| 974 typename CallbackParamTraits<A7>::ForwardType a7, |
| 975 typename CallbackParamTraits<A8>::ForwardType a8, |
| 976 typename CallbackParamTraits<A9>::ForwardType a9, |
| 977 typename CallbackParamTraits<A10>::ForwardType a10, |
| 978 typename CallbackParamTraits<A11>::ForwardType a11) { |
| 979 return (object->*method_)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); |
| 980 } |
| 981 |
| 982 private: |
| 983 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const; |
| 984 }; |
| 985 |
555 | 986 |
556 // FunctionTraits<> | 987 // FunctionTraits<> |
557 // | 988 // |
558 // Breaks a function signature apart into typedefs for easier introspection. | 989 // Breaks a function signature apart into typedefs for easier introspection. |
559 template <typename Sig> | 990 template <typename Sig> |
560 struct FunctionTraits; | 991 struct FunctionTraits; |
561 | 992 |
562 template <typename R> | 993 template <typename R> |
563 struct FunctionTraits<R()> { | 994 struct FunctionTraits<R()> { |
564 typedef R ReturnType; | 995 typedef R ReturnType; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6)> { | 1041 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6)> { |
611 typedef R ReturnType; | 1042 typedef R ReturnType; |
612 typedef A1 A1Type; | 1043 typedef A1 A1Type; |
613 typedef A2 A2Type; | 1044 typedef A2 A2Type; |
614 typedef A3 A3Type; | 1045 typedef A3 A3Type; |
615 typedef A4 A4Type; | 1046 typedef A4 A4Type; |
616 typedef A5 A5Type; | 1047 typedef A5 A5Type; |
617 typedef A6 A6Type; | 1048 typedef A6 A6Type; |
618 }; | 1049 }; |
619 | 1050 |
| 1051 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1052 typename A5, typename A6, typename A7> |
| 1053 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6, A7)> { |
| 1054 typedef R ReturnType; |
| 1055 typedef A1 A1Type; |
| 1056 typedef A2 A2Type; |
| 1057 typedef A3 A3Type; |
| 1058 typedef A4 A4Type; |
| 1059 typedef A5 A5Type; |
| 1060 typedef A6 A6Type; |
| 1061 typedef A7 A7Type; |
| 1062 }; |
| 1063 |
| 1064 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1065 typename A5, typename A6, typename A7, typename A8> |
| 1066 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 1067 typedef R ReturnType; |
| 1068 typedef A1 A1Type; |
| 1069 typedef A2 A2Type; |
| 1070 typedef A3 A3Type; |
| 1071 typedef A4 A4Type; |
| 1072 typedef A5 A5Type; |
| 1073 typedef A6 A6Type; |
| 1074 typedef A7 A7Type; |
| 1075 typedef A8 A8Type; |
| 1076 }; |
| 1077 |
| 1078 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1079 typename A5, typename A6, typename A7, typename A8, typename A9> |
| 1080 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 1081 typedef R ReturnType; |
| 1082 typedef A1 A1Type; |
| 1083 typedef A2 A2Type; |
| 1084 typedef A3 A3Type; |
| 1085 typedef A4 A4Type; |
| 1086 typedef A5 A5Type; |
| 1087 typedef A6 A6Type; |
| 1088 typedef A7 A7Type; |
| 1089 typedef A8 A8Type; |
| 1090 typedef A9 A9Type; |
| 1091 }; |
| 1092 |
| 1093 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1094 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 1095 typename A10> |
| 1096 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 1097 typedef R ReturnType; |
| 1098 typedef A1 A1Type; |
| 1099 typedef A2 A2Type; |
| 1100 typedef A3 A3Type; |
| 1101 typedef A4 A4Type; |
| 1102 typedef A5 A5Type; |
| 1103 typedef A6 A6Type; |
| 1104 typedef A7 A7Type; |
| 1105 typedef A8 A8Type; |
| 1106 typedef A9 A9Type; |
| 1107 typedef A10 A10Type; |
| 1108 }; |
| 1109 |
| 1110 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1111 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 1112 typename A10, typename A11> |
| 1113 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 1114 typedef R ReturnType; |
| 1115 typedef A1 A1Type; |
| 1116 typedef A2 A2Type; |
| 1117 typedef A3 A3Type; |
| 1118 typedef A4 A4Type; |
| 1119 typedef A5 A5Type; |
| 1120 typedef A6 A6Type; |
| 1121 typedef A7 A7Type; |
| 1122 typedef A8 A8Type; |
| 1123 typedef A9 A9Type; |
| 1124 typedef A10 A10Type; |
| 1125 typedef A11 A11Type; |
| 1126 }; |
| 1127 |
620 | 1128 |
621 // ForceVoidReturn<> | 1129 // ForceVoidReturn<> |
622 // | 1130 // |
623 // Set of templates that support forcing the function return type to void. | 1131 // Set of templates that support forcing the function return type to void. |
624 template <typename Sig> | 1132 template <typename Sig> |
625 struct ForceVoidReturn; | 1133 struct ForceVoidReturn; |
626 | 1134 |
627 template <typename R> | 1135 template <typename R> |
628 struct ForceVoidReturn<R()> { | 1136 struct ForceVoidReturn<R()> { |
629 typedef void(RunType)(); | 1137 typedef void(RunType)(); |
(...skipping 24 matching lines...) Expand all Loading... |
654 struct ForceVoidReturn<R(A1, A2, A3, A4, A5)> { | 1162 struct ForceVoidReturn<R(A1, A2, A3, A4, A5)> { |
655 typedef void(RunType)(A1, A2, A3, A4, A5); | 1163 typedef void(RunType)(A1, A2, A3, A4, A5); |
656 }; | 1164 }; |
657 | 1165 |
658 template <typename R, typename A1, typename A2, typename A3, typename A4, | 1166 template <typename R, typename A1, typename A2, typename A3, typename A4, |
659 typename A5, typename A6> | 1167 typename A5, typename A6> |
660 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6)> { | 1168 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6)> { |
661 typedef void(RunType)(A1, A2, A3, A4, A5, A6); | 1169 typedef void(RunType)(A1, A2, A3, A4, A5, A6); |
662 }; | 1170 }; |
663 | 1171 |
| 1172 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1173 typename A5, typename A6, typename A7> |
| 1174 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7)> { |
| 1175 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7); |
| 1176 }; |
| 1177 |
| 1178 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1179 typename A5, typename A6, typename A7, typename A8> |
| 1180 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 1181 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7, A8); |
| 1182 }; |
| 1183 |
| 1184 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1185 typename A5, typename A6, typename A7, typename A8, typename A9> |
| 1186 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 1187 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9); |
| 1188 }; |
| 1189 |
| 1190 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1191 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 1192 typename A10> |
| 1193 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 1194 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
| 1195 }; |
| 1196 |
| 1197 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 1198 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 1199 typename A10, typename A11> |
| 1200 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 1201 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
| 1202 }; |
| 1203 |
664 | 1204 |
665 // FunctorTraits<> | 1205 // FunctorTraits<> |
666 // | 1206 // |
667 // See description at top of file. | 1207 // See description at top of file. |
668 template <typename T> | 1208 template <typename T> |
669 struct FunctorTraits { | 1209 struct FunctorTraits { |
670 typedef RunnableAdapter<T> RunnableType; | 1210 typedef RunnableAdapter<T> RunnableType; |
671 typedef typename RunnableType::RunType RunType; | 1211 typedef typename RunnableType::RunType RunType; |
672 }; | 1212 }; |
673 | 1213 |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, | 1457 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
918 A6 a6) { | 1458 A6 a6) { |
919 if (!a1.get()) { | 1459 if (!a1.get()) { |
920 return; | 1460 return; |
921 } | 1461 } |
922 | 1462 |
923 runnable.Run(a1, a2, a3, a4, a5, a6); | 1463 runnable.Run(a1, a2, a3, a4, a5, a6); |
924 } | 1464 } |
925 }; | 1465 }; |
926 | 1466 |
| 1467 template <typename ReturnType, typename Runnable,typename A1, typename A2, |
| 1468 typename A3, typename A4, typename A5, typename A6, typename A7> |
| 1469 struct InvokeHelper<false, ReturnType, Runnable, |
| 1470 void(A1, A2, A3, A4, A5, A6, A7)> { |
| 1471 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, |
| 1472 A5 a5, A6 a6, A7 a7) { |
| 1473 return runnable.Run(a1, a2, a3, a4, a5, a6, a7); |
| 1474 } |
| 1475 }; |
| 1476 |
| 1477 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, |
| 1478 typename A5, typename A6, typename A7> |
| 1479 struct InvokeHelper<false, void, Runnable, |
| 1480 void(A1, A2, A3, A4, A5, A6, A7)> { |
| 1481 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1482 A6 a6, A7 a7) { |
| 1483 runnable.Run(a1, a2, a3, a4, a5, a6, a7); |
| 1484 } |
| 1485 }; |
| 1486 |
| 1487 template <typename Runnable, typename A1, typename A2, typename A3, |
| 1488 typename A4, typename A5, typename A6, typename A7> |
| 1489 struct InvokeHelper<true, void, Runnable, |
| 1490 void(A1, A2, A3, A4, A5, A6, A7)> { |
| 1491 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1492 A6 a6, A7 a7) { |
| 1493 if (!a1.get()) { |
| 1494 return; |
| 1495 } |
| 1496 |
| 1497 runnable.Run(a1, a2, a3, a4, a5, a6, a7); |
| 1498 } |
| 1499 }; |
| 1500 |
| 1501 template <typename ReturnType, typename Runnable,typename A1, typename A2, |
| 1502 typename A3, typename A4, typename A5, typename A6, typename A7, |
| 1503 typename A8> |
| 1504 struct InvokeHelper<false, ReturnType, Runnable, |
| 1505 void(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 1506 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, |
| 1507 A5 a5, A6 a6, A7 a7, A8 a8) { |
| 1508 return runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8); |
| 1509 } |
| 1510 }; |
| 1511 |
| 1512 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, |
| 1513 typename A5, typename A6, typename A7, typename A8> |
| 1514 struct InvokeHelper<false, void, Runnable, |
| 1515 void(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 1516 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1517 A6 a6, A7 a7, A8 a8) { |
| 1518 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8); |
| 1519 } |
| 1520 }; |
| 1521 |
| 1522 template <typename Runnable, typename A1, typename A2, typename A3, |
| 1523 typename A4, typename A5, typename A6, typename A7, typename A8> |
| 1524 struct InvokeHelper<true, void, Runnable, |
| 1525 void(A1, A2, A3, A4, A5, A6, A7, A8)> { |
| 1526 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1527 A6 a6, A7 a7, A8 a8) { |
| 1528 if (!a1.get()) { |
| 1529 return; |
| 1530 } |
| 1531 |
| 1532 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8); |
| 1533 } |
| 1534 }; |
| 1535 |
| 1536 template <typename ReturnType, typename Runnable,typename A1, typename A2, |
| 1537 typename A3, typename A4, typename A5, typename A6, typename A7, |
| 1538 typename A8, typename A9> |
| 1539 struct InvokeHelper<false, ReturnType, Runnable, |
| 1540 void(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 1541 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, |
| 1542 A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) { |
| 1543 return runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9); |
| 1544 } |
| 1545 }; |
| 1546 |
| 1547 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, |
| 1548 typename A5, typename A6, typename A7, typename A8, typename A9> |
| 1549 struct InvokeHelper<false, void, Runnable, |
| 1550 void(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 1551 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1552 A6 a6, A7 a7, A8 a8, A9 a9) { |
| 1553 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9); |
| 1554 } |
| 1555 }; |
| 1556 |
| 1557 template <typename Runnable, typename A1, typename A2, typename A3, |
| 1558 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 1559 typename A9> |
| 1560 struct InvokeHelper<true, void, Runnable, |
| 1561 void(A1, A2, A3, A4, A5, A6, A7, A8, A9)> { |
| 1562 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1563 A6 a6, A7 a7, A8 a8, A9 a9) { |
| 1564 if (!a1.get()) { |
| 1565 return; |
| 1566 } |
| 1567 |
| 1568 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9); |
| 1569 } |
| 1570 }; |
| 1571 |
| 1572 template <typename ReturnType, typename Runnable,typename A1, typename A2, |
| 1573 typename A3, typename A4, typename A5, typename A6, typename A7, |
| 1574 typename A8, typename A9, typename A10> |
| 1575 struct InvokeHelper<false, ReturnType, Runnable, |
| 1576 void(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 1577 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, |
| 1578 A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) { |
| 1579 return runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); |
| 1580 } |
| 1581 }; |
| 1582 |
| 1583 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, |
| 1584 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 1585 typename A10> |
| 1586 struct InvokeHelper<false, void, Runnable, |
| 1587 void(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 1588 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1589 A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) { |
| 1590 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); |
| 1591 } |
| 1592 }; |
| 1593 |
| 1594 template <typename Runnable, typename A1, typename A2, typename A3, |
| 1595 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 1596 typename A9, typename A10> |
| 1597 struct InvokeHelper<true, void, Runnable, |
| 1598 void(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> { |
| 1599 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1600 A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) { |
| 1601 if (!a1.get()) { |
| 1602 return; |
| 1603 } |
| 1604 |
| 1605 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); |
| 1606 } |
| 1607 }; |
| 1608 |
| 1609 template <typename ReturnType, typename Runnable,typename A1, typename A2, |
| 1610 typename A3, typename A4, typename A5, typename A6, typename A7, |
| 1611 typename A8, typename A9, typename A10, typename A11> |
| 1612 struct InvokeHelper<false, ReturnType, Runnable, |
| 1613 void(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 1614 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, |
| 1615 A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) { |
| 1616 return runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); |
| 1617 } |
| 1618 }; |
| 1619 |
| 1620 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, |
| 1621 typename A5, typename A6, typename A7, typename A8, typename A9, |
| 1622 typename A10, typename A11> |
| 1623 struct InvokeHelper<false, void, Runnable, |
| 1624 void(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 1625 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1626 A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) { |
| 1627 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); |
| 1628 } |
| 1629 }; |
| 1630 |
| 1631 template <typename Runnable, typename A1, typename A2, typename A3, |
| 1632 typename A4, typename A5, typename A6, typename A7, typename A8, |
| 1633 typename A9, typename A10, typename A11> |
| 1634 struct InvokeHelper<true, void, Runnable, |
| 1635 void(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> { |
| 1636 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1637 A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) { |
| 1638 if (!a1.get()) { |
| 1639 return; |
| 1640 } |
| 1641 |
| 1642 runnable.Run(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); |
| 1643 } |
| 1644 }; |
| 1645 |
927 #if !defined(_MSC_VER) | 1646 #if !defined(_MSC_VER) |
928 | 1647 |
929 template <typename ReturnType, typename Runnable, typename ArgsType> | 1648 template <typename ReturnType, typename Runnable, typename ArgsType> |
930 struct InvokeHelper<true, ReturnType, Runnable, ArgsType> { | 1649 struct InvokeHelper<true, ReturnType, Runnable, ArgsType> { |
931 // WeakCalls are only supported for functions with a void return type. | 1650 // WeakCalls are only supported for functions with a void return type. |
932 // Otherwise, the function result would be undefined if the the WeakPtr<> | 1651 // Otherwise, the function result would be undefined if the the WeakPtr<> |
933 // is invalidated. | 1652 // is invalidated. |
934 COMPILE_ASSERT(is_void<ReturnType>::value, | 1653 COMPILE_ASSERT(is_void<ReturnType>::value, |
935 weak_ptrs_can_only_bind_to_methods_without_return_values); | 1654 weak_ptrs_can_only_bind_to_methods_without_return_values); |
936 }; | 1655 }; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 ::MakeItSo(storage->runnable_, x1); | 1705 ::MakeItSo(storage->runnable_, x1); |
987 } | 1706 } |
988 }; | 1707 }; |
989 | 1708 |
990 // Arity 1 -> 0. | 1709 // Arity 1 -> 0. |
991 template <typename StorageType, typename R,typename X1> | 1710 template <typename StorageType, typename R,typename X1> |
992 struct Invoker<1, StorageType, R(X1)> { | 1711 struct Invoker<1, StorageType, R(X1)> { |
993 typedef R(RunType)(BindStateBase*); | 1712 typedef R(RunType)(BindStateBase*); |
994 | 1713 |
995 typedef R(UnboundRunType)(); | 1714 typedef R(UnboundRunType)(); |
| 1715 |
| 1716 static R Run(BindStateBase* base) { |
| 1717 StorageType* storage = static_cast<StorageType*>(base); |
| 1718 |
| 1719 // Local references to make debugger stepping easier. If in a debugger, |
| 1720 // you really want to warp ahead and step through the |
| 1721 // InvokeHelper<>::MakeItSo() call below. |
| 1722 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1723 |
| 1724 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1725 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1726 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1727 typename StorageType::RunnableType, |
| 1728 void(typename Bound1UnwrapTraits::ForwardType)> |
| 1729 ::MakeItSo(storage->runnable_, x1); |
| 1730 } |
| 1731 }; |
| 1732 |
| 1733 // Arity 2 -> 2. |
| 1734 template <typename StorageType, typename R,typename X1, typename X2> |
| 1735 struct Invoker<0, StorageType, R(X1, X2)> { |
| 1736 typedef R(RunType)(BindStateBase*, |
| 1737 typename CallbackParamTraits<X1>::ForwardType, |
| 1738 typename CallbackParamTraits<X2>::ForwardType); |
| 1739 |
| 1740 typedef R(UnboundRunType)(X1, X2); |
| 1741 |
| 1742 static R Run(BindStateBase* base, |
| 1743 typename CallbackParamTraits<X1>::ForwardType x1, |
| 1744 typename CallbackParamTraits<X2>::ForwardType x2) { |
| 1745 StorageType* storage = static_cast<StorageType*>(base); |
| 1746 |
| 1747 // Local references to make debugger stepping easier. If in a debugger, |
| 1748 // you really want to warp ahead and step through the |
| 1749 // InvokeHelper<>::MakeItSo() call below. |
| 1750 |
| 1751 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1752 typename StorageType::RunnableType, |
| 1753 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 1754 typename CallbackParamTraits<X2>::ForwardType x2)> |
| 1755 ::MakeItSo(storage->runnable_, x1, x2); |
| 1756 } |
| 1757 }; |
| 1758 |
| 1759 // Arity 2 -> 1. |
| 1760 template <typename StorageType, typename R,typename X1, typename X2> |
| 1761 struct Invoker<1, StorageType, R(X1, X2)> { |
| 1762 typedef R(RunType)(BindStateBase*, |
| 1763 typename CallbackParamTraits<X2>::ForwardType); |
| 1764 |
| 1765 typedef R(UnboundRunType)(X2); |
| 1766 |
| 1767 static R Run(BindStateBase* base, |
| 1768 typename CallbackParamTraits<X2>::ForwardType x2) { |
| 1769 StorageType* storage = static_cast<StorageType*>(base); |
| 1770 |
| 1771 // Local references to make debugger stepping easier. If in a debugger, |
| 1772 // you really want to warp ahead and step through the |
| 1773 // InvokeHelper<>::MakeItSo() call below. |
| 1774 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1775 |
| 1776 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1777 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1778 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1779 typename StorageType::RunnableType, |
| 1780 void(typename Bound1UnwrapTraits::ForwardType, |
| 1781 typename CallbackParamTraits<X2>::ForwardType x2)> |
| 1782 ::MakeItSo(storage->runnable_, x1, x2); |
| 1783 } |
| 1784 }; |
| 1785 |
| 1786 // Arity 2 -> 0. |
| 1787 template <typename StorageType, typename R,typename X1, typename X2> |
| 1788 struct Invoker<2, StorageType, R(X1, X2)> { |
| 1789 typedef R(RunType)(BindStateBase*); |
| 1790 |
| 1791 typedef R(UnboundRunType)(); |
| 1792 |
| 1793 static R Run(BindStateBase* base) { |
| 1794 StorageType* storage = static_cast<StorageType*>(base); |
| 1795 |
| 1796 // Local references to make debugger stepping easier. If in a debugger, |
| 1797 // you really want to warp ahead and step through the |
| 1798 // InvokeHelper<>::MakeItSo() call below. |
| 1799 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1800 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 1801 |
| 1802 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1803 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1804 typename Bound2UnwrapTraits::ForwardType x2 = |
| 1805 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 1806 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1807 typename StorageType::RunnableType, |
| 1808 void(typename Bound1UnwrapTraits::ForwardType, |
| 1809 typename Bound2UnwrapTraits::ForwardType)> |
| 1810 ::MakeItSo(storage->runnable_, x1, x2); |
| 1811 } |
| 1812 }; |
| 1813 |
| 1814 // Arity 3 -> 3. |
| 1815 template <typename StorageType, typename R,typename X1, typename X2, |
| 1816 typename X3> |
| 1817 struct Invoker<0, StorageType, R(X1, X2, X3)> { |
| 1818 typedef R(RunType)(BindStateBase*, |
| 1819 typename CallbackParamTraits<X1>::ForwardType, |
| 1820 typename CallbackParamTraits<X2>::ForwardType, |
| 1821 typename CallbackParamTraits<X3>::ForwardType); |
| 1822 |
| 1823 typedef R(UnboundRunType)(X1, X2, X3); |
| 1824 |
| 1825 static R Run(BindStateBase* base, |
| 1826 typename CallbackParamTraits<X1>::ForwardType x1, |
| 1827 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1828 typename CallbackParamTraits<X3>::ForwardType x3) { |
| 1829 StorageType* storage = static_cast<StorageType*>(base); |
| 1830 |
| 1831 // Local references to make debugger stepping easier. If in a debugger, |
| 1832 // you really want to warp ahead and step through the |
| 1833 // InvokeHelper<>::MakeItSo() call below. |
| 1834 |
| 1835 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1836 typename StorageType::RunnableType, |
| 1837 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 1838 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1839 typename CallbackParamTraits<X3>::ForwardType x3)> |
| 1840 ::MakeItSo(storage->runnable_, x1, x2, x3); |
| 1841 } |
| 1842 }; |
| 1843 |
| 1844 // Arity 3 -> 2. |
| 1845 template <typename StorageType, typename R,typename X1, typename X2, |
| 1846 typename X3> |
| 1847 struct Invoker<1, StorageType, R(X1, X2, X3)> { |
| 1848 typedef R(RunType)(BindStateBase*, |
| 1849 typename CallbackParamTraits<X2>::ForwardType, |
| 1850 typename CallbackParamTraits<X3>::ForwardType); |
| 1851 |
| 1852 typedef R(UnboundRunType)(X2, X3); |
| 1853 |
| 1854 static R Run(BindStateBase* base, |
| 1855 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1856 typename CallbackParamTraits<X3>::ForwardType x3) { |
| 1857 StorageType* storage = static_cast<StorageType*>(base); |
| 1858 |
| 1859 // Local references to make debugger stepping easier. If in a debugger, |
| 1860 // you really want to warp ahead and step through the |
| 1861 // InvokeHelper<>::MakeItSo() call below. |
| 1862 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1863 |
| 1864 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1865 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1866 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1867 typename StorageType::RunnableType, |
| 1868 void(typename Bound1UnwrapTraits::ForwardType, |
| 1869 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1870 typename CallbackParamTraits<X3>::ForwardType x3)> |
| 1871 ::MakeItSo(storage->runnable_, x1, x2, x3); |
| 1872 } |
| 1873 }; |
| 1874 |
| 1875 // Arity 3 -> 1. |
| 1876 template <typename StorageType, typename R,typename X1, typename X2, |
| 1877 typename X3> |
| 1878 struct Invoker<2, StorageType, R(X1, X2, X3)> { |
| 1879 typedef R(RunType)(BindStateBase*, |
| 1880 typename CallbackParamTraits<X3>::ForwardType); |
| 1881 |
| 1882 typedef R(UnboundRunType)(X3); |
| 1883 |
| 1884 static R Run(BindStateBase* base, |
| 1885 typename CallbackParamTraits<X3>::ForwardType x3) { |
| 1886 StorageType* storage = static_cast<StorageType*>(base); |
| 1887 |
| 1888 // Local references to make debugger stepping easier. If in a debugger, |
| 1889 // you really want to warp ahead and step through the |
| 1890 // InvokeHelper<>::MakeItSo() call below. |
| 1891 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1892 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 1893 |
| 1894 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1895 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1896 typename Bound2UnwrapTraits::ForwardType x2 = |
| 1897 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 1898 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1899 typename StorageType::RunnableType, |
| 1900 void(typename Bound1UnwrapTraits::ForwardType, |
| 1901 typename Bound2UnwrapTraits::ForwardType, |
| 1902 typename CallbackParamTraits<X3>::ForwardType x3)> |
| 1903 ::MakeItSo(storage->runnable_, x1, x2, x3); |
| 1904 } |
| 1905 }; |
| 1906 |
| 1907 // Arity 3 -> 0. |
| 1908 template <typename StorageType, typename R,typename X1, typename X2, |
| 1909 typename X3> |
| 1910 struct Invoker<3, StorageType, R(X1, X2, X3)> { |
| 1911 typedef R(RunType)(BindStateBase*); |
| 1912 |
| 1913 typedef R(UnboundRunType)(); |
| 1914 |
| 1915 static R Run(BindStateBase* base) { |
| 1916 StorageType* storage = static_cast<StorageType*>(base); |
| 1917 |
| 1918 // Local references to make debugger stepping easier. If in a debugger, |
| 1919 // you really want to warp ahead and step through the |
| 1920 // InvokeHelper<>::MakeItSo() call below. |
| 1921 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1922 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 1923 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 1924 |
| 1925 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1926 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1927 typename Bound2UnwrapTraits::ForwardType x2 = |
| 1928 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 1929 typename Bound3UnwrapTraits::ForwardType x3 = |
| 1930 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 1931 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1932 typename StorageType::RunnableType, |
| 1933 void(typename Bound1UnwrapTraits::ForwardType, |
| 1934 typename Bound2UnwrapTraits::ForwardType, |
| 1935 typename Bound3UnwrapTraits::ForwardType)> |
| 1936 ::MakeItSo(storage->runnable_, x1, x2, x3); |
| 1937 } |
| 1938 }; |
| 1939 |
| 1940 // Arity 4 -> 4. |
| 1941 template <typename StorageType, typename R,typename X1, typename X2, |
| 1942 typename X3, typename X4> |
| 1943 struct Invoker<0, StorageType, R(X1, X2, X3, X4)> { |
| 1944 typedef R(RunType)(BindStateBase*, |
| 1945 typename CallbackParamTraits<X1>::ForwardType, |
| 1946 typename CallbackParamTraits<X2>::ForwardType, |
| 1947 typename CallbackParamTraits<X3>::ForwardType, |
| 1948 typename CallbackParamTraits<X4>::ForwardType); |
| 1949 |
| 1950 typedef R(UnboundRunType)(X1, X2, X3, X4); |
| 1951 |
| 1952 static R Run(BindStateBase* base, |
| 1953 typename CallbackParamTraits<X1>::ForwardType x1, |
| 1954 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1955 typename CallbackParamTraits<X3>::ForwardType x3, |
| 1956 typename CallbackParamTraits<X4>::ForwardType x4) { |
| 1957 StorageType* storage = static_cast<StorageType*>(base); |
| 1958 |
| 1959 // Local references to make debugger stepping easier. If in a debugger, |
| 1960 // you really want to warp ahead and step through the |
| 1961 // InvokeHelper<>::MakeItSo() call below. |
| 1962 |
| 1963 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1964 typename StorageType::RunnableType, |
| 1965 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 1966 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1967 typename CallbackParamTraits<X3>::ForwardType x3, |
| 1968 typename CallbackParamTraits<X4>::ForwardType x4)> |
| 1969 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
| 1970 } |
| 1971 }; |
| 1972 |
| 1973 // Arity 4 -> 3. |
| 1974 template <typename StorageType, typename R,typename X1, typename X2, |
| 1975 typename X3, typename X4> |
| 1976 struct Invoker<1, StorageType, R(X1, X2, X3, X4)> { |
| 1977 typedef R(RunType)(BindStateBase*, |
| 1978 typename CallbackParamTraits<X2>::ForwardType, |
| 1979 typename CallbackParamTraits<X3>::ForwardType, |
| 1980 typename CallbackParamTraits<X4>::ForwardType); |
| 1981 |
| 1982 typedef R(UnboundRunType)(X2, X3, X4); |
| 1983 |
| 1984 static R Run(BindStateBase* base, |
| 1985 typename CallbackParamTraits<X2>::ForwardType x2, |
| 1986 typename CallbackParamTraits<X3>::ForwardType x3, |
| 1987 typename CallbackParamTraits<X4>::ForwardType x4) { |
| 1988 StorageType* storage = static_cast<StorageType*>(base); |
| 1989 |
| 1990 // Local references to make debugger stepping easier. If in a debugger, |
| 1991 // you really want to warp ahead and step through the |
| 1992 // InvokeHelper<>::MakeItSo() call below. |
| 1993 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 1994 |
| 1995 typename Bound1UnwrapTraits::ForwardType x1 = |
| 1996 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 1997 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 1998 typename StorageType::RunnableType, |
| 1999 void(typename Bound1UnwrapTraits::ForwardType, |
| 2000 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2001 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2002 typename CallbackParamTraits<X4>::ForwardType x4)> |
| 2003 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
| 2004 } |
| 2005 }; |
| 2006 |
| 2007 // Arity 4 -> 2. |
| 2008 template <typename StorageType, typename R,typename X1, typename X2, |
| 2009 typename X3, typename X4> |
| 2010 struct Invoker<2, StorageType, R(X1, X2, X3, X4)> { |
| 2011 typedef R(RunType)(BindStateBase*, |
| 2012 typename CallbackParamTraits<X3>::ForwardType, |
| 2013 typename CallbackParamTraits<X4>::ForwardType); |
| 2014 |
| 2015 typedef R(UnboundRunType)(X3, X4); |
| 2016 |
| 2017 static R Run(BindStateBase* base, |
| 2018 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2019 typename CallbackParamTraits<X4>::ForwardType x4) { |
| 2020 StorageType* storage = static_cast<StorageType*>(base); |
| 2021 |
| 2022 // Local references to make debugger stepping easier. If in a debugger, |
| 2023 // you really want to warp ahead and step through the |
| 2024 // InvokeHelper<>::MakeItSo() call below. |
| 2025 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2026 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2027 |
| 2028 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2029 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2030 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2031 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2032 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2033 typename StorageType::RunnableType, |
| 2034 void(typename Bound1UnwrapTraits::ForwardType, |
| 2035 typename Bound2UnwrapTraits::ForwardType, |
| 2036 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2037 typename CallbackParamTraits<X4>::ForwardType x4)> |
| 2038 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
| 2039 } |
| 2040 }; |
| 2041 |
| 2042 // Arity 4 -> 1. |
| 2043 template <typename StorageType, typename R,typename X1, typename X2, |
| 2044 typename X3, typename X4> |
| 2045 struct Invoker<3, StorageType, R(X1, X2, X3, X4)> { |
| 2046 typedef R(RunType)(BindStateBase*, |
| 2047 typename CallbackParamTraits<X4>::ForwardType); |
| 2048 |
| 2049 typedef R(UnboundRunType)(X4); |
| 2050 |
| 2051 static R Run(BindStateBase* base, |
| 2052 typename CallbackParamTraits<X4>::ForwardType x4) { |
| 2053 StorageType* storage = static_cast<StorageType*>(base); |
| 2054 |
| 2055 // Local references to make debugger stepping easier. If in a debugger, |
| 2056 // you really want to warp ahead and step through the |
| 2057 // InvokeHelper<>::MakeItSo() call below. |
| 2058 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2059 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2060 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2061 |
| 2062 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2063 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2064 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2065 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2066 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2067 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2068 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2069 typename StorageType::RunnableType, |
| 2070 void(typename Bound1UnwrapTraits::ForwardType, |
| 2071 typename Bound2UnwrapTraits::ForwardType, |
| 2072 typename Bound3UnwrapTraits::ForwardType, |
| 2073 typename CallbackParamTraits<X4>::ForwardType x4)> |
| 2074 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
| 2075 } |
| 2076 }; |
| 2077 |
| 2078 // Arity 4 -> 0. |
| 2079 template <typename StorageType, typename R,typename X1, typename X2, |
| 2080 typename X3, typename X4> |
| 2081 struct Invoker<4, StorageType, R(X1, X2, X3, X4)> { |
| 2082 typedef R(RunType)(BindStateBase*); |
| 2083 |
| 2084 typedef R(UnboundRunType)(); |
| 2085 |
| 2086 static R Run(BindStateBase* base) { |
| 2087 StorageType* storage = static_cast<StorageType*>(base); |
| 2088 |
| 2089 // Local references to make debugger stepping easier. If in a debugger, |
| 2090 // you really want to warp ahead and step through the |
| 2091 // InvokeHelper<>::MakeItSo() call below. |
| 2092 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2093 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2094 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2095 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2096 |
| 2097 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2098 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2099 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2100 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2101 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2102 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2103 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2104 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2105 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2106 typename StorageType::RunnableType, |
| 2107 void(typename Bound1UnwrapTraits::ForwardType, |
| 2108 typename Bound2UnwrapTraits::ForwardType, |
| 2109 typename Bound3UnwrapTraits::ForwardType, |
| 2110 typename Bound4UnwrapTraits::ForwardType)> |
| 2111 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
| 2112 } |
| 2113 }; |
| 2114 |
| 2115 // Arity 5 -> 5. |
| 2116 template <typename StorageType, typename R,typename X1, typename X2, |
| 2117 typename X3, typename X4, typename X5> |
| 2118 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5)> { |
| 2119 typedef R(RunType)(BindStateBase*, |
| 2120 typename CallbackParamTraits<X1>::ForwardType, |
| 2121 typename CallbackParamTraits<X2>::ForwardType, |
| 2122 typename CallbackParamTraits<X3>::ForwardType, |
| 2123 typename CallbackParamTraits<X4>::ForwardType, |
| 2124 typename CallbackParamTraits<X5>::ForwardType); |
| 2125 |
| 2126 typedef R(UnboundRunType)(X1, X2, X3, X4, X5); |
| 2127 |
| 2128 static R Run(BindStateBase* base, |
| 2129 typename CallbackParamTraits<X1>::ForwardType x1, |
| 2130 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2131 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2132 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2133 typename CallbackParamTraits<X5>::ForwardType x5) { |
| 2134 StorageType* storage = static_cast<StorageType*>(base); |
| 2135 |
| 2136 // Local references to make debugger stepping easier. If in a debugger, |
| 2137 // you really want to warp ahead and step through the |
| 2138 // InvokeHelper<>::MakeItSo() call below. |
| 2139 |
| 2140 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2141 typename StorageType::RunnableType, |
| 2142 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 2143 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2144 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2145 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2146 typename CallbackParamTraits<X5>::ForwardType x5)> |
| 2147 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
| 2148 } |
| 2149 }; |
| 2150 |
| 2151 // Arity 5 -> 4. |
| 2152 template <typename StorageType, typename R,typename X1, typename X2, |
| 2153 typename X3, typename X4, typename X5> |
| 2154 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5)> { |
| 2155 typedef R(RunType)(BindStateBase*, |
| 2156 typename CallbackParamTraits<X2>::ForwardType, |
| 2157 typename CallbackParamTraits<X3>::ForwardType, |
| 2158 typename CallbackParamTraits<X4>::ForwardType, |
| 2159 typename CallbackParamTraits<X5>::ForwardType); |
| 2160 |
| 2161 typedef R(UnboundRunType)(X2, X3, X4, X5); |
| 2162 |
| 2163 static R Run(BindStateBase* base, |
| 2164 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2165 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2166 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2167 typename CallbackParamTraits<X5>::ForwardType x5) { |
| 2168 StorageType* storage = static_cast<StorageType*>(base); |
| 2169 |
| 2170 // Local references to make debugger stepping easier. If in a debugger, |
| 2171 // you really want to warp ahead and step through the |
| 2172 // InvokeHelper<>::MakeItSo() call below. |
| 2173 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2174 |
| 2175 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2176 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2177 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2178 typename StorageType::RunnableType, |
| 2179 void(typename Bound1UnwrapTraits::ForwardType, |
| 2180 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2181 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2182 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2183 typename CallbackParamTraits<X5>::ForwardType x5)> |
| 2184 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
| 2185 } |
| 2186 }; |
| 2187 |
| 2188 // Arity 5 -> 3. |
| 2189 template <typename StorageType, typename R,typename X1, typename X2, |
| 2190 typename X3, typename X4, typename X5> |
| 2191 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5)> { |
| 2192 typedef R(RunType)(BindStateBase*, |
| 2193 typename CallbackParamTraits<X3>::ForwardType, |
| 2194 typename CallbackParamTraits<X4>::ForwardType, |
| 2195 typename CallbackParamTraits<X5>::ForwardType); |
| 2196 |
| 2197 typedef R(UnboundRunType)(X3, X4, X5); |
| 2198 |
| 2199 static R Run(BindStateBase* base, |
| 2200 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2201 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2202 typename CallbackParamTraits<X5>::ForwardType x5) { |
| 2203 StorageType* storage = static_cast<StorageType*>(base); |
| 2204 |
| 2205 // Local references to make debugger stepping easier. If in a debugger, |
| 2206 // you really want to warp ahead and step through the |
| 2207 // InvokeHelper<>::MakeItSo() call below. |
| 2208 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2209 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2210 |
| 2211 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2212 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2213 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2214 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2215 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2216 typename StorageType::RunnableType, |
| 2217 void(typename Bound1UnwrapTraits::ForwardType, |
| 2218 typename Bound2UnwrapTraits::ForwardType, |
| 2219 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2220 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2221 typename CallbackParamTraits<X5>::ForwardType x5)> |
| 2222 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
| 2223 } |
| 2224 }; |
| 2225 |
| 2226 // Arity 5 -> 2. |
| 2227 template <typename StorageType, typename R,typename X1, typename X2, |
| 2228 typename X3, typename X4, typename X5> |
| 2229 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5)> { |
| 2230 typedef R(RunType)(BindStateBase*, |
| 2231 typename CallbackParamTraits<X4>::ForwardType, |
| 2232 typename CallbackParamTraits<X5>::ForwardType); |
| 2233 |
| 2234 typedef R(UnboundRunType)(X4, X5); |
| 2235 |
| 2236 static R Run(BindStateBase* base, |
| 2237 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2238 typename CallbackParamTraits<X5>::ForwardType x5) { |
| 2239 StorageType* storage = static_cast<StorageType*>(base); |
| 2240 |
| 2241 // Local references to make debugger stepping easier. If in a debugger, |
| 2242 // you really want to warp ahead and step through the |
| 2243 // InvokeHelper<>::MakeItSo() call below. |
| 2244 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2245 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2246 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2247 |
| 2248 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2249 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2250 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2251 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2252 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2253 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2254 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2255 typename StorageType::RunnableType, |
| 2256 void(typename Bound1UnwrapTraits::ForwardType, |
| 2257 typename Bound2UnwrapTraits::ForwardType, |
| 2258 typename Bound3UnwrapTraits::ForwardType, |
| 2259 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2260 typename CallbackParamTraits<X5>::ForwardType x5)> |
| 2261 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
| 2262 } |
| 2263 }; |
| 2264 |
| 2265 // Arity 5 -> 1. |
| 2266 template <typename StorageType, typename R,typename X1, typename X2, |
| 2267 typename X3, typename X4, typename X5> |
| 2268 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5)> { |
| 2269 typedef R(RunType)(BindStateBase*, |
| 2270 typename CallbackParamTraits<X5>::ForwardType); |
| 2271 |
| 2272 typedef R(UnboundRunType)(X5); |
| 2273 |
| 2274 static R Run(BindStateBase* base, |
| 2275 typename CallbackParamTraits<X5>::ForwardType x5) { |
| 2276 StorageType* storage = static_cast<StorageType*>(base); |
| 2277 |
| 2278 // Local references to make debugger stepping easier. If in a debugger, |
| 2279 // you really want to warp ahead and step through the |
| 2280 // InvokeHelper<>::MakeItSo() call below. |
| 2281 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2282 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2283 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2284 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2285 |
| 2286 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2287 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2288 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2289 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2290 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2291 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2292 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2293 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2294 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2295 typename StorageType::RunnableType, |
| 2296 void(typename Bound1UnwrapTraits::ForwardType, |
| 2297 typename Bound2UnwrapTraits::ForwardType, |
| 2298 typename Bound3UnwrapTraits::ForwardType, |
| 2299 typename Bound4UnwrapTraits::ForwardType, |
| 2300 typename CallbackParamTraits<X5>::ForwardType x5)> |
| 2301 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
| 2302 } |
| 2303 }; |
| 2304 |
| 2305 // Arity 5 -> 0. |
| 2306 template <typename StorageType, typename R,typename X1, typename X2, |
| 2307 typename X3, typename X4, typename X5> |
| 2308 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5)> { |
| 2309 typedef R(RunType)(BindStateBase*); |
| 2310 |
| 2311 typedef R(UnboundRunType)(); |
| 2312 |
| 2313 static R Run(BindStateBase* base) { |
| 2314 StorageType* storage = static_cast<StorageType*>(base); |
| 2315 |
| 2316 // Local references to make debugger stepping easier. If in a debugger, |
| 2317 // you really want to warp ahead and step through the |
| 2318 // InvokeHelper<>::MakeItSo() call below. |
| 2319 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2320 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2321 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2322 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2323 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 2324 |
| 2325 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2326 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2327 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2328 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2329 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2330 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2331 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2332 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2333 typename Bound5UnwrapTraits::ForwardType x5 = |
| 2334 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 2335 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2336 typename StorageType::RunnableType, |
| 2337 void(typename Bound1UnwrapTraits::ForwardType, |
| 2338 typename Bound2UnwrapTraits::ForwardType, |
| 2339 typename Bound3UnwrapTraits::ForwardType, |
| 2340 typename Bound4UnwrapTraits::ForwardType, |
| 2341 typename Bound5UnwrapTraits::ForwardType)> |
| 2342 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
| 2343 } |
| 2344 }; |
| 2345 |
| 2346 // Arity 6 -> 6. |
| 2347 template <typename StorageType, typename R,typename X1, typename X2, |
| 2348 typename X3, typename X4, typename X5, typename X6> |
| 2349 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2350 typedef R(RunType)(BindStateBase*, |
| 2351 typename CallbackParamTraits<X1>::ForwardType, |
| 2352 typename CallbackParamTraits<X2>::ForwardType, |
| 2353 typename CallbackParamTraits<X3>::ForwardType, |
| 2354 typename CallbackParamTraits<X4>::ForwardType, |
| 2355 typename CallbackParamTraits<X5>::ForwardType, |
| 2356 typename CallbackParamTraits<X6>::ForwardType); |
| 2357 |
| 2358 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6); |
| 2359 |
| 2360 static R Run(BindStateBase* base, |
| 2361 typename CallbackParamTraits<X1>::ForwardType x1, |
| 2362 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2363 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2364 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2365 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2366 typename CallbackParamTraits<X6>::ForwardType x6) { |
| 2367 StorageType* storage = static_cast<StorageType*>(base); |
| 2368 |
| 2369 // Local references to make debugger stepping easier. If in a debugger, |
| 2370 // you really want to warp ahead and step through the |
| 2371 // InvokeHelper<>::MakeItSo() call below. |
| 2372 |
| 2373 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2374 typename StorageType::RunnableType, |
| 2375 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 2376 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2377 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2378 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2379 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2380 typename CallbackParamTraits<X6>::ForwardType x6)> |
| 2381 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2382 } |
| 2383 }; |
| 2384 |
| 2385 // Arity 6 -> 5. |
| 2386 template <typename StorageType, typename R,typename X1, typename X2, |
| 2387 typename X3, typename X4, typename X5, typename X6> |
| 2388 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2389 typedef R(RunType)(BindStateBase*, |
| 2390 typename CallbackParamTraits<X2>::ForwardType, |
| 2391 typename CallbackParamTraits<X3>::ForwardType, |
| 2392 typename CallbackParamTraits<X4>::ForwardType, |
| 2393 typename CallbackParamTraits<X5>::ForwardType, |
| 2394 typename CallbackParamTraits<X6>::ForwardType); |
| 2395 |
| 2396 typedef R(UnboundRunType)(X2, X3, X4, X5, X6); |
| 2397 |
| 2398 static R Run(BindStateBase* base, |
| 2399 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2400 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2401 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2402 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2403 typename CallbackParamTraits<X6>::ForwardType x6) { |
| 2404 StorageType* storage = static_cast<StorageType*>(base); |
| 2405 |
| 2406 // Local references to make debugger stepping easier. If in a debugger, |
| 2407 // you really want to warp ahead and step through the |
| 2408 // InvokeHelper<>::MakeItSo() call below. |
| 2409 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2410 |
| 2411 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2412 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2413 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2414 typename StorageType::RunnableType, |
| 2415 void(typename Bound1UnwrapTraits::ForwardType, |
| 2416 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2417 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2418 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2419 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2420 typename CallbackParamTraits<X6>::ForwardType x6)> |
| 2421 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2422 } |
| 2423 }; |
| 2424 |
| 2425 // Arity 6 -> 4. |
| 2426 template <typename StorageType, typename R,typename X1, typename X2, |
| 2427 typename X3, typename X4, typename X5, typename X6> |
| 2428 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2429 typedef R(RunType)(BindStateBase*, |
| 2430 typename CallbackParamTraits<X3>::ForwardType, |
| 2431 typename CallbackParamTraits<X4>::ForwardType, |
| 2432 typename CallbackParamTraits<X5>::ForwardType, |
| 2433 typename CallbackParamTraits<X6>::ForwardType); |
| 2434 |
| 2435 typedef R(UnboundRunType)(X3, X4, X5, X6); |
| 2436 |
| 2437 static R Run(BindStateBase* base, |
| 2438 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2439 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2440 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2441 typename CallbackParamTraits<X6>::ForwardType x6) { |
| 2442 StorageType* storage = static_cast<StorageType*>(base); |
| 2443 |
| 2444 // Local references to make debugger stepping easier. If in a debugger, |
| 2445 // you really want to warp ahead and step through the |
| 2446 // InvokeHelper<>::MakeItSo() call below. |
| 2447 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2448 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2449 |
| 2450 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2451 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2452 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2453 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2454 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2455 typename StorageType::RunnableType, |
| 2456 void(typename Bound1UnwrapTraits::ForwardType, |
| 2457 typename Bound2UnwrapTraits::ForwardType, |
| 2458 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2459 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2460 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2461 typename CallbackParamTraits<X6>::ForwardType x6)> |
| 2462 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2463 } |
| 2464 }; |
| 2465 |
| 2466 // Arity 6 -> 3. |
| 2467 template <typename StorageType, typename R,typename X1, typename X2, |
| 2468 typename X3, typename X4, typename X5, typename X6> |
| 2469 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2470 typedef R(RunType)(BindStateBase*, |
| 2471 typename CallbackParamTraits<X4>::ForwardType, |
| 2472 typename CallbackParamTraits<X5>::ForwardType, |
| 2473 typename CallbackParamTraits<X6>::ForwardType); |
| 2474 |
| 2475 typedef R(UnboundRunType)(X4, X5, X6); |
| 2476 |
| 2477 static R Run(BindStateBase* base, |
| 2478 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2479 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2480 typename CallbackParamTraits<X6>::ForwardType x6) { |
| 2481 StorageType* storage = static_cast<StorageType*>(base); |
| 2482 |
| 2483 // Local references to make debugger stepping easier. If in a debugger, |
| 2484 // you really want to warp ahead and step through the |
| 2485 // InvokeHelper<>::MakeItSo() call below. |
| 2486 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2487 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2488 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2489 |
| 2490 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2491 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2492 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2493 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2494 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2495 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2496 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2497 typename StorageType::RunnableType, |
| 2498 void(typename Bound1UnwrapTraits::ForwardType, |
| 2499 typename Bound2UnwrapTraits::ForwardType, |
| 2500 typename Bound3UnwrapTraits::ForwardType, |
| 2501 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2502 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2503 typename CallbackParamTraits<X6>::ForwardType x6)> |
| 2504 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2505 } |
| 2506 }; |
| 2507 |
| 2508 // Arity 6 -> 2. |
| 2509 template <typename StorageType, typename R,typename X1, typename X2, |
| 2510 typename X3, typename X4, typename X5, typename X6> |
| 2511 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2512 typedef R(RunType)(BindStateBase*, |
| 2513 typename CallbackParamTraits<X5>::ForwardType, |
| 2514 typename CallbackParamTraits<X6>::ForwardType); |
| 2515 |
| 2516 typedef R(UnboundRunType)(X5, X6); |
| 2517 |
| 2518 static R Run(BindStateBase* base, |
| 2519 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2520 typename CallbackParamTraits<X6>::ForwardType x6) { |
| 2521 StorageType* storage = static_cast<StorageType*>(base); |
| 2522 |
| 2523 // Local references to make debugger stepping easier. If in a debugger, |
| 2524 // you really want to warp ahead and step through the |
| 2525 // InvokeHelper<>::MakeItSo() call below. |
| 2526 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2527 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2528 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2529 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2530 |
| 2531 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2532 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2533 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2534 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2535 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2536 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2537 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2538 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2539 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2540 typename StorageType::RunnableType, |
| 2541 void(typename Bound1UnwrapTraits::ForwardType, |
| 2542 typename Bound2UnwrapTraits::ForwardType, |
| 2543 typename Bound3UnwrapTraits::ForwardType, |
| 2544 typename Bound4UnwrapTraits::ForwardType, |
| 2545 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2546 typename CallbackParamTraits<X6>::ForwardType x6)> |
| 2547 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2548 } |
| 2549 }; |
| 2550 |
| 2551 // Arity 6 -> 1. |
| 2552 template <typename StorageType, typename R,typename X1, typename X2, |
| 2553 typename X3, typename X4, typename X5, typename X6> |
| 2554 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2555 typedef R(RunType)(BindStateBase*, |
| 2556 typename CallbackParamTraits<X6>::ForwardType); |
| 2557 |
| 2558 typedef R(UnboundRunType)(X6); |
| 2559 |
| 2560 static R Run(BindStateBase* base, |
| 2561 typename CallbackParamTraits<X6>::ForwardType x6) { |
| 2562 StorageType* storage = static_cast<StorageType*>(base); |
| 2563 |
| 2564 // Local references to make debugger stepping easier. If in a debugger, |
| 2565 // you really want to warp ahead and step through the |
| 2566 // InvokeHelper<>::MakeItSo() call below. |
| 2567 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2568 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2569 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2570 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2571 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 2572 |
| 2573 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2574 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2575 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2576 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2577 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2578 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2579 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2580 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2581 typename Bound5UnwrapTraits::ForwardType x5 = |
| 2582 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 2583 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2584 typename StorageType::RunnableType, |
| 2585 void(typename Bound1UnwrapTraits::ForwardType, |
| 2586 typename Bound2UnwrapTraits::ForwardType, |
| 2587 typename Bound3UnwrapTraits::ForwardType, |
| 2588 typename Bound4UnwrapTraits::ForwardType, |
| 2589 typename Bound5UnwrapTraits::ForwardType, |
| 2590 typename CallbackParamTraits<X6>::ForwardType x6)> |
| 2591 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2592 } |
| 2593 }; |
| 2594 |
| 2595 // Arity 6 -> 0. |
| 2596 template <typename StorageType, typename R,typename X1, typename X2, |
| 2597 typename X3, typename X4, typename X5, typename X6> |
| 2598 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
| 2599 typedef R(RunType)(BindStateBase*); |
| 2600 |
| 2601 typedef R(UnboundRunType)(); |
| 2602 |
| 2603 static R Run(BindStateBase* base) { |
| 2604 StorageType* storage = static_cast<StorageType*>(base); |
| 2605 |
| 2606 // Local references to make debugger stepping easier. If in a debugger, |
| 2607 // you really want to warp ahead and step through the |
| 2608 // InvokeHelper<>::MakeItSo() call below. |
| 2609 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2610 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2611 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2612 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2613 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 2614 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 2615 |
| 2616 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2617 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2618 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2619 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2620 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2621 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2622 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2623 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2624 typename Bound5UnwrapTraits::ForwardType x5 = |
| 2625 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 2626 typename Bound6UnwrapTraits::ForwardType x6 = |
| 2627 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 2628 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2629 typename StorageType::RunnableType, |
| 2630 void(typename Bound1UnwrapTraits::ForwardType, |
| 2631 typename Bound2UnwrapTraits::ForwardType, |
| 2632 typename Bound3UnwrapTraits::ForwardType, |
| 2633 typename Bound4UnwrapTraits::ForwardType, |
| 2634 typename Bound5UnwrapTraits::ForwardType, |
| 2635 typename Bound6UnwrapTraits::ForwardType)> |
| 2636 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
| 2637 } |
| 2638 }; |
| 2639 |
| 2640 // Arity 7 -> 7. |
| 2641 template <typename StorageType, typename R,typename X1, typename X2, |
| 2642 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2643 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2644 typedef R(RunType)(BindStateBase*, |
| 2645 typename CallbackParamTraits<X1>::ForwardType, |
| 2646 typename CallbackParamTraits<X2>::ForwardType, |
| 2647 typename CallbackParamTraits<X3>::ForwardType, |
| 2648 typename CallbackParamTraits<X4>::ForwardType, |
| 2649 typename CallbackParamTraits<X5>::ForwardType, |
| 2650 typename CallbackParamTraits<X6>::ForwardType, |
| 2651 typename CallbackParamTraits<X7>::ForwardType); |
| 2652 |
| 2653 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7); |
| 2654 |
| 2655 static R Run(BindStateBase* base, |
| 2656 typename CallbackParamTraits<X1>::ForwardType x1, |
| 2657 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2658 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2659 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2660 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2661 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2662 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2663 StorageType* storage = static_cast<StorageType*>(base); |
| 2664 |
| 2665 // Local references to make debugger stepping easier. If in a debugger, |
| 2666 // you really want to warp ahead and step through the |
| 2667 // InvokeHelper<>::MakeItSo() call below. |
| 2668 |
| 2669 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2670 typename StorageType::RunnableType, |
| 2671 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 2672 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2673 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2674 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2675 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2676 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2677 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2678 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2679 } |
| 2680 }; |
| 2681 |
| 2682 // Arity 7 -> 6. |
| 2683 template <typename StorageType, typename R,typename X1, typename X2, |
| 2684 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2685 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2686 typedef R(RunType)(BindStateBase*, |
| 2687 typename CallbackParamTraits<X2>::ForwardType, |
| 2688 typename CallbackParamTraits<X3>::ForwardType, |
| 2689 typename CallbackParamTraits<X4>::ForwardType, |
| 2690 typename CallbackParamTraits<X5>::ForwardType, |
| 2691 typename CallbackParamTraits<X6>::ForwardType, |
| 2692 typename CallbackParamTraits<X7>::ForwardType); |
| 2693 |
| 2694 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7); |
| 2695 |
| 2696 static R Run(BindStateBase* base, |
| 2697 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2698 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2699 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2700 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2701 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2702 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2703 StorageType* storage = static_cast<StorageType*>(base); |
| 2704 |
| 2705 // Local references to make debugger stepping easier. If in a debugger, |
| 2706 // you really want to warp ahead and step through the |
| 2707 // InvokeHelper<>::MakeItSo() call below. |
| 2708 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2709 |
| 2710 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2711 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2712 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2713 typename StorageType::RunnableType, |
| 2714 void(typename Bound1UnwrapTraits::ForwardType, |
| 2715 typename CallbackParamTraits<X2>::ForwardType x2, |
| 2716 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2717 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2718 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2719 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2720 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2721 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2722 } |
| 2723 }; |
| 2724 |
| 2725 // Arity 7 -> 5. |
| 2726 template <typename StorageType, typename R,typename X1, typename X2, |
| 2727 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2728 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2729 typedef R(RunType)(BindStateBase*, |
| 2730 typename CallbackParamTraits<X3>::ForwardType, |
| 2731 typename CallbackParamTraits<X4>::ForwardType, |
| 2732 typename CallbackParamTraits<X5>::ForwardType, |
| 2733 typename CallbackParamTraits<X6>::ForwardType, |
| 2734 typename CallbackParamTraits<X7>::ForwardType); |
| 2735 |
| 2736 typedef R(UnboundRunType)(X3, X4, X5, X6, X7); |
| 2737 |
| 2738 static R Run(BindStateBase* base, |
| 2739 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2740 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2741 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2742 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2743 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2744 StorageType* storage = static_cast<StorageType*>(base); |
| 2745 |
| 2746 // Local references to make debugger stepping easier. If in a debugger, |
| 2747 // you really want to warp ahead and step through the |
| 2748 // InvokeHelper<>::MakeItSo() call below. |
| 2749 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2750 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2751 |
| 2752 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2753 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2754 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2755 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2756 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2757 typename StorageType::RunnableType, |
| 2758 void(typename Bound1UnwrapTraits::ForwardType, |
| 2759 typename Bound2UnwrapTraits::ForwardType, |
| 2760 typename CallbackParamTraits<X3>::ForwardType x3, |
| 2761 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2762 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2763 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2764 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2765 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2766 } |
| 2767 }; |
| 2768 |
| 2769 // Arity 7 -> 4. |
| 2770 template <typename StorageType, typename R,typename X1, typename X2, |
| 2771 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2772 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2773 typedef R(RunType)(BindStateBase*, |
| 2774 typename CallbackParamTraits<X4>::ForwardType, |
| 2775 typename CallbackParamTraits<X5>::ForwardType, |
| 2776 typename CallbackParamTraits<X6>::ForwardType, |
| 2777 typename CallbackParamTraits<X7>::ForwardType); |
| 2778 |
| 2779 typedef R(UnboundRunType)(X4, X5, X6, X7); |
| 2780 |
| 2781 static R Run(BindStateBase* base, |
| 2782 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2783 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2784 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2785 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2786 StorageType* storage = static_cast<StorageType*>(base); |
| 2787 |
| 2788 // Local references to make debugger stepping easier. If in a debugger, |
| 2789 // you really want to warp ahead and step through the |
| 2790 // InvokeHelper<>::MakeItSo() call below. |
| 2791 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2792 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2793 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2794 |
| 2795 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2796 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2797 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2798 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2799 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2800 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2801 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2802 typename StorageType::RunnableType, |
| 2803 void(typename Bound1UnwrapTraits::ForwardType, |
| 2804 typename Bound2UnwrapTraits::ForwardType, |
| 2805 typename Bound3UnwrapTraits::ForwardType, |
| 2806 typename CallbackParamTraits<X4>::ForwardType x4, |
| 2807 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2808 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2809 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2810 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2811 } |
| 2812 }; |
| 2813 |
| 2814 // Arity 7 -> 3. |
| 2815 template <typename StorageType, typename R,typename X1, typename X2, |
| 2816 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2817 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2818 typedef R(RunType)(BindStateBase*, |
| 2819 typename CallbackParamTraits<X5>::ForwardType, |
| 2820 typename CallbackParamTraits<X6>::ForwardType, |
| 2821 typename CallbackParamTraits<X7>::ForwardType); |
| 2822 |
| 2823 typedef R(UnboundRunType)(X5, X6, X7); |
| 2824 |
| 2825 static R Run(BindStateBase* base, |
| 2826 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2827 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2828 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2829 StorageType* storage = static_cast<StorageType*>(base); |
| 2830 |
| 2831 // Local references to make debugger stepping easier. If in a debugger, |
| 2832 // you really want to warp ahead and step through the |
| 2833 // InvokeHelper<>::MakeItSo() call below. |
| 2834 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2835 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2836 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2837 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2838 |
| 2839 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2840 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2841 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2842 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2843 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2844 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2845 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2846 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2847 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2848 typename StorageType::RunnableType, |
| 2849 void(typename Bound1UnwrapTraits::ForwardType, |
| 2850 typename Bound2UnwrapTraits::ForwardType, |
| 2851 typename Bound3UnwrapTraits::ForwardType, |
| 2852 typename Bound4UnwrapTraits::ForwardType, |
| 2853 typename CallbackParamTraits<X5>::ForwardType x5, |
| 2854 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2855 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2856 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2857 } |
| 2858 }; |
| 2859 |
| 2860 // Arity 7 -> 2. |
| 2861 template <typename StorageType, typename R,typename X1, typename X2, |
| 2862 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2863 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2864 typedef R(RunType)(BindStateBase*, |
| 2865 typename CallbackParamTraits<X6>::ForwardType, |
| 2866 typename CallbackParamTraits<X7>::ForwardType); |
| 2867 |
| 2868 typedef R(UnboundRunType)(X6, X7); |
| 2869 |
| 2870 static R Run(BindStateBase* base, |
| 2871 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2872 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2873 StorageType* storage = static_cast<StorageType*>(base); |
| 2874 |
| 2875 // Local references to make debugger stepping easier. If in a debugger, |
| 2876 // you really want to warp ahead and step through the |
| 2877 // InvokeHelper<>::MakeItSo() call below. |
| 2878 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2879 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2880 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2881 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2882 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 2883 |
| 2884 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2885 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2886 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2887 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2888 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2889 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2890 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2891 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2892 typename Bound5UnwrapTraits::ForwardType x5 = |
| 2893 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 2894 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2895 typename StorageType::RunnableType, |
| 2896 void(typename Bound1UnwrapTraits::ForwardType, |
| 2897 typename Bound2UnwrapTraits::ForwardType, |
| 2898 typename Bound3UnwrapTraits::ForwardType, |
| 2899 typename Bound4UnwrapTraits::ForwardType, |
| 2900 typename Bound5UnwrapTraits::ForwardType, |
| 2901 typename CallbackParamTraits<X6>::ForwardType x6, |
| 2902 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2903 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2904 } |
| 2905 }; |
| 2906 |
| 2907 // Arity 7 -> 1. |
| 2908 template <typename StorageType, typename R,typename X1, typename X2, |
| 2909 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2910 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2911 typedef R(RunType)(BindStateBase*, |
| 2912 typename CallbackParamTraits<X7>::ForwardType); |
| 2913 |
| 2914 typedef R(UnboundRunType)(X7); |
| 2915 |
| 2916 static R Run(BindStateBase* base, |
| 2917 typename CallbackParamTraits<X7>::ForwardType x7) { |
| 2918 StorageType* storage = static_cast<StorageType*>(base); |
| 2919 |
| 2920 // Local references to make debugger stepping easier. If in a debugger, |
| 2921 // you really want to warp ahead and step through the |
| 2922 // InvokeHelper<>::MakeItSo() call below. |
| 2923 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2924 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2925 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2926 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2927 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 2928 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 2929 |
| 2930 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2931 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2932 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2933 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2934 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2935 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2936 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2937 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2938 typename Bound5UnwrapTraits::ForwardType x5 = |
| 2939 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 2940 typename Bound6UnwrapTraits::ForwardType x6 = |
| 2941 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 2942 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2943 typename StorageType::RunnableType, |
| 2944 void(typename Bound1UnwrapTraits::ForwardType, |
| 2945 typename Bound2UnwrapTraits::ForwardType, |
| 2946 typename Bound3UnwrapTraits::ForwardType, |
| 2947 typename Bound4UnwrapTraits::ForwardType, |
| 2948 typename Bound5UnwrapTraits::ForwardType, |
| 2949 typename Bound6UnwrapTraits::ForwardType, |
| 2950 typename CallbackParamTraits<X7>::ForwardType x7)> |
| 2951 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 2952 } |
| 2953 }; |
| 2954 |
| 2955 // Arity 7 -> 0. |
| 2956 template <typename StorageType, typename R,typename X1, typename X2, |
| 2957 typename X3, typename X4, typename X5, typename X6, typename X7> |
| 2958 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7)> { |
| 2959 typedef R(RunType)(BindStateBase*); |
| 2960 |
| 2961 typedef R(UnboundRunType)(); |
| 2962 |
| 2963 static R Run(BindStateBase* base) { |
| 2964 StorageType* storage = static_cast<StorageType*>(base); |
| 2965 |
| 2966 // Local references to make debugger stepping easier. If in a debugger, |
| 2967 // you really want to warp ahead and step through the |
| 2968 // InvokeHelper<>::MakeItSo() call below. |
| 2969 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 2970 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 2971 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 2972 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 2973 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 2974 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 2975 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 2976 |
| 2977 typename Bound1UnwrapTraits::ForwardType x1 = |
| 2978 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 2979 typename Bound2UnwrapTraits::ForwardType x2 = |
| 2980 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 2981 typename Bound3UnwrapTraits::ForwardType x3 = |
| 2982 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 2983 typename Bound4UnwrapTraits::ForwardType x4 = |
| 2984 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 2985 typename Bound5UnwrapTraits::ForwardType x5 = |
| 2986 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 2987 typename Bound6UnwrapTraits::ForwardType x6 = |
| 2988 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 2989 typename Bound7UnwrapTraits::ForwardType x7 = |
| 2990 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 2991 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 2992 typename StorageType::RunnableType, |
| 2993 void(typename Bound1UnwrapTraits::ForwardType, |
| 2994 typename Bound2UnwrapTraits::ForwardType, |
| 2995 typename Bound3UnwrapTraits::ForwardType, |
| 2996 typename Bound4UnwrapTraits::ForwardType, |
| 2997 typename Bound5UnwrapTraits::ForwardType, |
| 2998 typename Bound6UnwrapTraits::ForwardType, |
| 2999 typename Bound7UnwrapTraits::ForwardType)> |
| 3000 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7); |
| 3001 } |
| 3002 }; |
| 3003 |
| 3004 // Arity 8 -> 8. |
| 3005 template <typename StorageType, typename R,typename X1, typename X2, |
| 3006 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3007 typename X8> |
| 3008 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3009 typedef R(RunType)(BindStateBase*, |
| 3010 typename CallbackParamTraits<X1>::ForwardType, |
| 3011 typename CallbackParamTraits<X2>::ForwardType, |
| 3012 typename CallbackParamTraits<X3>::ForwardType, |
| 3013 typename CallbackParamTraits<X4>::ForwardType, |
| 3014 typename CallbackParamTraits<X5>::ForwardType, |
| 3015 typename CallbackParamTraits<X6>::ForwardType, |
| 3016 typename CallbackParamTraits<X7>::ForwardType, |
| 3017 typename CallbackParamTraits<X8>::ForwardType); |
| 3018 |
| 3019 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8); |
| 3020 |
| 3021 static R Run(BindStateBase* base, |
| 3022 typename CallbackParamTraits<X1>::ForwardType x1, |
| 3023 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3024 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3025 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3026 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3027 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3028 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3029 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3030 StorageType* storage = static_cast<StorageType*>(base); |
| 3031 |
| 3032 // Local references to make debugger stepping easier. If in a debugger, |
| 3033 // you really want to warp ahead and step through the |
| 3034 // InvokeHelper<>::MakeItSo() call below. |
| 3035 |
| 3036 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3037 typename StorageType::RunnableType, |
| 3038 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 3039 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3040 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3041 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3042 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3043 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3044 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3045 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3046 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3047 } |
| 3048 }; |
| 3049 |
| 3050 // Arity 8 -> 7. |
| 3051 template <typename StorageType, typename R,typename X1, typename X2, |
| 3052 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3053 typename X8> |
| 3054 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3055 typedef R(RunType)(BindStateBase*, |
| 3056 typename CallbackParamTraits<X2>::ForwardType, |
| 3057 typename CallbackParamTraits<X3>::ForwardType, |
| 3058 typename CallbackParamTraits<X4>::ForwardType, |
| 3059 typename CallbackParamTraits<X5>::ForwardType, |
| 3060 typename CallbackParamTraits<X6>::ForwardType, |
| 3061 typename CallbackParamTraits<X7>::ForwardType, |
| 3062 typename CallbackParamTraits<X8>::ForwardType); |
| 3063 |
| 3064 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8); |
| 3065 |
| 3066 static R Run(BindStateBase* base, |
| 3067 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3068 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3069 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3070 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3071 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3072 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3073 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3074 StorageType* storage = static_cast<StorageType*>(base); |
| 3075 |
| 3076 // Local references to make debugger stepping easier. If in a debugger, |
| 3077 // you really want to warp ahead and step through the |
| 3078 // InvokeHelper<>::MakeItSo() call below. |
| 3079 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3080 |
| 3081 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3082 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3083 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3084 typename StorageType::RunnableType, |
| 3085 void(typename Bound1UnwrapTraits::ForwardType, |
| 3086 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3087 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3088 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3089 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3090 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3091 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3092 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3093 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3094 } |
| 3095 }; |
| 3096 |
| 3097 // Arity 8 -> 6. |
| 3098 template <typename StorageType, typename R,typename X1, typename X2, |
| 3099 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3100 typename X8> |
| 3101 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3102 typedef R(RunType)(BindStateBase*, |
| 3103 typename CallbackParamTraits<X3>::ForwardType, |
| 3104 typename CallbackParamTraits<X4>::ForwardType, |
| 3105 typename CallbackParamTraits<X5>::ForwardType, |
| 3106 typename CallbackParamTraits<X6>::ForwardType, |
| 3107 typename CallbackParamTraits<X7>::ForwardType, |
| 3108 typename CallbackParamTraits<X8>::ForwardType); |
| 3109 |
| 3110 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8); |
| 3111 |
| 3112 static R Run(BindStateBase* base, |
| 3113 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3114 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3115 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3116 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3117 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3118 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3119 StorageType* storage = static_cast<StorageType*>(base); |
| 3120 |
| 3121 // Local references to make debugger stepping easier. If in a debugger, |
| 3122 // you really want to warp ahead and step through the |
| 3123 // InvokeHelper<>::MakeItSo() call below. |
| 3124 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3125 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3126 |
| 3127 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3128 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3129 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3130 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3131 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3132 typename StorageType::RunnableType, |
| 3133 void(typename Bound1UnwrapTraits::ForwardType, |
| 3134 typename Bound2UnwrapTraits::ForwardType, |
| 3135 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3136 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3137 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3138 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3139 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3140 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3141 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3142 } |
| 3143 }; |
| 3144 |
| 3145 // Arity 8 -> 5. |
| 3146 template <typename StorageType, typename R,typename X1, typename X2, |
| 3147 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3148 typename X8> |
| 3149 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3150 typedef R(RunType)(BindStateBase*, |
| 3151 typename CallbackParamTraits<X4>::ForwardType, |
| 3152 typename CallbackParamTraits<X5>::ForwardType, |
| 3153 typename CallbackParamTraits<X6>::ForwardType, |
| 3154 typename CallbackParamTraits<X7>::ForwardType, |
| 3155 typename CallbackParamTraits<X8>::ForwardType); |
| 3156 |
| 3157 typedef R(UnboundRunType)(X4, X5, X6, X7, X8); |
| 3158 |
| 3159 static R Run(BindStateBase* base, |
| 3160 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3161 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3162 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3163 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3164 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3165 StorageType* storage = static_cast<StorageType*>(base); |
| 3166 |
| 3167 // Local references to make debugger stepping easier. If in a debugger, |
| 3168 // you really want to warp ahead and step through the |
| 3169 // InvokeHelper<>::MakeItSo() call below. |
| 3170 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3171 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3172 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3173 |
| 3174 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3175 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3176 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3177 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3178 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3179 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3180 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3181 typename StorageType::RunnableType, |
| 3182 void(typename Bound1UnwrapTraits::ForwardType, |
| 3183 typename Bound2UnwrapTraits::ForwardType, |
| 3184 typename Bound3UnwrapTraits::ForwardType, |
| 3185 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3186 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3187 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3188 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3189 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3190 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3191 } |
| 3192 }; |
| 3193 |
| 3194 // Arity 8 -> 4. |
| 3195 template <typename StorageType, typename R,typename X1, typename X2, |
| 3196 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3197 typename X8> |
| 3198 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3199 typedef R(RunType)(BindStateBase*, |
| 3200 typename CallbackParamTraits<X5>::ForwardType, |
| 3201 typename CallbackParamTraits<X6>::ForwardType, |
| 3202 typename CallbackParamTraits<X7>::ForwardType, |
| 3203 typename CallbackParamTraits<X8>::ForwardType); |
| 3204 |
| 3205 typedef R(UnboundRunType)(X5, X6, X7, X8); |
| 3206 |
| 3207 static R Run(BindStateBase* base, |
| 3208 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3209 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3210 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3211 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3212 StorageType* storage = static_cast<StorageType*>(base); |
| 3213 |
| 3214 // Local references to make debugger stepping easier. If in a debugger, |
| 3215 // you really want to warp ahead and step through the |
| 3216 // InvokeHelper<>::MakeItSo() call below. |
| 3217 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3218 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3219 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3220 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3221 |
| 3222 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3223 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3224 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3225 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3226 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3227 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3228 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3229 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3230 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3231 typename StorageType::RunnableType, |
| 3232 void(typename Bound1UnwrapTraits::ForwardType, |
| 3233 typename Bound2UnwrapTraits::ForwardType, |
| 3234 typename Bound3UnwrapTraits::ForwardType, |
| 3235 typename Bound4UnwrapTraits::ForwardType, |
| 3236 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3237 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3238 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3239 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3240 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3241 } |
| 3242 }; |
| 3243 |
| 3244 // Arity 8 -> 3. |
| 3245 template <typename StorageType, typename R,typename X1, typename X2, |
| 3246 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3247 typename X8> |
| 3248 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3249 typedef R(RunType)(BindStateBase*, |
| 3250 typename CallbackParamTraits<X6>::ForwardType, |
| 3251 typename CallbackParamTraits<X7>::ForwardType, |
| 3252 typename CallbackParamTraits<X8>::ForwardType); |
| 3253 |
| 3254 typedef R(UnboundRunType)(X6, X7, X8); |
| 3255 |
| 3256 static R Run(BindStateBase* base, |
| 3257 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3258 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3259 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3260 StorageType* storage = static_cast<StorageType*>(base); |
| 3261 |
| 3262 // Local references to make debugger stepping easier. If in a debugger, |
| 3263 // you really want to warp ahead and step through the |
| 3264 // InvokeHelper<>::MakeItSo() call below. |
| 3265 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3266 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3267 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3268 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3269 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3270 |
| 3271 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3272 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3273 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3274 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3275 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3276 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3277 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3278 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3279 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3280 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3281 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3282 typename StorageType::RunnableType, |
| 3283 void(typename Bound1UnwrapTraits::ForwardType, |
| 3284 typename Bound2UnwrapTraits::ForwardType, |
| 3285 typename Bound3UnwrapTraits::ForwardType, |
| 3286 typename Bound4UnwrapTraits::ForwardType, |
| 3287 typename Bound5UnwrapTraits::ForwardType, |
| 3288 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3289 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3290 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3291 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3292 } |
| 3293 }; |
| 3294 |
| 3295 // Arity 8 -> 2. |
| 3296 template <typename StorageType, typename R,typename X1, typename X2, |
| 3297 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3298 typename X8> |
| 3299 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3300 typedef R(RunType)(BindStateBase*, |
| 3301 typename CallbackParamTraits<X7>::ForwardType, |
| 3302 typename CallbackParamTraits<X8>::ForwardType); |
| 3303 |
| 3304 typedef R(UnboundRunType)(X7, X8); |
| 3305 |
| 3306 static R Run(BindStateBase* base, |
| 3307 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3308 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3309 StorageType* storage = static_cast<StorageType*>(base); |
| 3310 |
| 3311 // Local references to make debugger stepping easier. If in a debugger, |
| 3312 // you really want to warp ahead and step through the |
| 3313 // InvokeHelper<>::MakeItSo() call below. |
| 3314 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3315 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3316 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3317 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3318 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3319 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3320 |
| 3321 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3322 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3323 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3324 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3325 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3326 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3327 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3328 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3329 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3330 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3331 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3332 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3333 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3334 typename StorageType::RunnableType, |
| 3335 void(typename Bound1UnwrapTraits::ForwardType, |
| 3336 typename Bound2UnwrapTraits::ForwardType, |
| 3337 typename Bound3UnwrapTraits::ForwardType, |
| 3338 typename Bound4UnwrapTraits::ForwardType, |
| 3339 typename Bound5UnwrapTraits::ForwardType, |
| 3340 typename Bound6UnwrapTraits::ForwardType, |
| 3341 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3342 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3343 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3344 } |
| 3345 }; |
| 3346 |
| 3347 // Arity 8 -> 1. |
| 3348 template <typename StorageType, typename R,typename X1, typename X2, |
| 3349 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3350 typename X8> |
| 3351 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3352 typedef R(RunType)(BindStateBase*, |
| 3353 typename CallbackParamTraits<X8>::ForwardType); |
| 3354 |
| 3355 typedef R(UnboundRunType)(X8); |
| 3356 |
| 3357 static R Run(BindStateBase* base, |
| 3358 typename CallbackParamTraits<X8>::ForwardType x8) { |
| 3359 StorageType* storage = static_cast<StorageType*>(base); |
| 3360 |
| 3361 // Local references to make debugger stepping easier. If in a debugger, |
| 3362 // you really want to warp ahead and step through the |
| 3363 // InvokeHelper<>::MakeItSo() call below. |
| 3364 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3365 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3366 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3367 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3368 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3369 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3370 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 3371 |
| 3372 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3373 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3374 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3375 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3376 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3377 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3378 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3379 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3380 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3381 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3382 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3383 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3384 typename Bound7UnwrapTraits::ForwardType x7 = |
| 3385 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 3386 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3387 typename StorageType::RunnableType, |
| 3388 void(typename Bound1UnwrapTraits::ForwardType, |
| 3389 typename Bound2UnwrapTraits::ForwardType, |
| 3390 typename Bound3UnwrapTraits::ForwardType, |
| 3391 typename Bound4UnwrapTraits::ForwardType, |
| 3392 typename Bound5UnwrapTraits::ForwardType, |
| 3393 typename Bound6UnwrapTraits::ForwardType, |
| 3394 typename Bound7UnwrapTraits::ForwardType, |
| 3395 typename CallbackParamTraits<X8>::ForwardType x8)> |
| 3396 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3397 } |
| 3398 }; |
| 3399 |
| 3400 // Arity 8 -> 0. |
| 3401 template <typename StorageType, typename R,typename X1, typename X2, |
| 3402 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3403 typename X8> |
| 3404 struct Invoker<8, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { |
| 3405 typedef R(RunType)(BindStateBase*); |
| 3406 |
| 3407 typedef R(UnboundRunType)(); |
| 3408 |
| 3409 static R Run(BindStateBase* base) { |
| 3410 StorageType* storage = static_cast<StorageType*>(base); |
| 3411 |
| 3412 // Local references to make debugger stepping easier. If in a debugger, |
| 3413 // you really want to warp ahead and step through the |
| 3414 // InvokeHelper<>::MakeItSo() call below. |
| 3415 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3416 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3417 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3418 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3419 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3420 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3421 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 3422 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 3423 |
| 3424 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3425 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3426 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3427 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3428 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3429 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3430 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3431 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3432 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3433 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3434 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3435 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3436 typename Bound7UnwrapTraits::ForwardType x7 = |
| 3437 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 3438 typename Bound8UnwrapTraits::ForwardType x8 = |
| 3439 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 3440 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3441 typename StorageType::RunnableType, |
| 3442 void(typename Bound1UnwrapTraits::ForwardType, |
| 3443 typename Bound2UnwrapTraits::ForwardType, |
| 3444 typename Bound3UnwrapTraits::ForwardType, |
| 3445 typename Bound4UnwrapTraits::ForwardType, |
| 3446 typename Bound5UnwrapTraits::ForwardType, |
| 3447 typename Bound6UnwrapTraits::ForwardType, |
| 3448 typename Bound7UnwrapTraits::ForwardType, |
| 3449 typename Bound8UnwrapTraits::ForwardType)> |
| 3450 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8); |
| 3451 } |
| 3452 }; |
| 3453 |
| 3454 // Arity 9 -> 9. |
| 3455 template <typename StorageType, typename R,typename X1, typename X2, |
| 3456 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3457 typename X8, typename X9> |
| 3458 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3459 typedef R(RunType)(BindStateBase*, |
| 3460 typename CallbackParamTraits<X1>::ForwardType, |
| 3461 typename CallbackParamTraits<X2>::ForwardType, |
| 3462 typename CallbackParamTraits<X3>::ForwardType, |
| 3463 typename CallbackParamTraits<X4>::ForwardType, |
| 3464 typename CallbackParamTraits<X5>::ForwardType, |
| 3465 typename CallbackParamTraits<X6>::ForwardType, |
| 3466 typename CallbackParamTraits<X7>::ForwardType, |
| 3467 typename CallbackParamTraits<X8>::ForwardType, |
| 3468 typename CallbackParamTraits<X9>::ForwardType); |
| 3469 |
| 3470 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8, X9); |
| 3471 |
| 3472 static R Run(BindStateBase* base, |
| 3473 typename CallbackParamTraits<X1>::ForwardType x1, |
| 3474 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3475 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3476 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3477 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3478 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3479 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3480 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3481 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3482 StorageType* storage = static_cast<StorageType*>(base); |
| 3483 |
| 3484 // Local references to make debugger stepping easier. If in a debugger, |
| 3485 // you really want to warp ahead and step through the |
| 3486 // InvokeHelper<>::MakeItSo() call below. |
| 3487 |
| 3488 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3489 typename StorageType::RunnableType, |
| 3490 void(typename CallbackParamTraits<X1>::ForwardType x1, |
| 3491 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3492 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3493 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3494 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3495 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3496 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3497 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3498 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3499 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3500 x9); |
| 3501 } |
| 3502 }; |
| 3503 |
| 3504 // Arity 9 -> 8. |
| 3505 template <typename StorageType, typename R,typename X1, typename X2, |
| 3506 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3507 typename X8, typename X9> |
| 3508 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3509 typedef R(RunType)(BindStateBase*, |
| 3510 typename CallbackParamTraits<X2>::ForwardType, |
| 3511 typename CallbackParamTraits<X3>::ForwardType, |
| 3512 typename CallbackParamTraits<X4>::ForwardType, |
| 3513 typename CallbackParamTraits<X5>::ForwardType, |
| 3514 typename CallbackParamTraits<X6>::ForwardType, |
| 3515 typename CallbackParamTraits<X7>::ForwardType, |
| 3516 typename CallbackParamTraits<X8>::ForwardType, |
| 3517 typename CallbackParamTraits<X9>::ForwardType); |
| 3518 |
| 3519 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8, X9); |
| 3520 |
| 3521 static R Run(BindStateBase* base, |
| 3522 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3523 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3524 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3525 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3526 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3527 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3528 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3529 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3530 StorageType* storage = static_cast<StorageType*>(base); |
| 3531 |
| 3532 // Local references to make debugger stepping easier. If in a debugger, |
| 3533 // you really want to warp ahead and step through the |
| 3534 // InvokeHelper<>::MakeItSo() call below. |
| 3535 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3536 |
| 3537 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3538 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3539 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3540 typename StorageType::RunnableType, |
| 3541 void(typename Bound1UnwrapTraits::ForwardType, |
| 3542 typename CallbackParamTraits<X2>::ForwardType x2, |
| 3543 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3544 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3545 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3546 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3547 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3548 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3549 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3550 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3551 x9); |
| 3552 } |
| 3553 }; |
| 3554 |
| 3555 // Arity 9 -> 7. |
| 3556 template <typename StorageType, typename R,typename X1, typename X2, |
| 3557 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3558 typename X8, typename X9> |
| 3559 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3560 typedef R(RunType)(BindStateBase*, |
| 3561 typename CallbackParamTraits<X3>::ForwardType, |
| 3562 typename CallbackParamTraits<X4>::ForwardType, |
| 3563 typename CallbackParamTraits<X5>::ForwardType, |
| 3564 typename CallbackParamTraits<X6>::ForwardType, |
| 3565 typename CallbackParamTraits<X7>::ForwardType, |
| 3566 typename CallbackParamTraits<X8>::ForwardType, |
| 3567 typename CallbackParamTraits<X9>::ForwardType); |
| 3568 |
| 3569 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8, X9); |
| 3570 |
| 3571 static R Run(BindStateBase* base, |
| 3572 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3573 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3574 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3575 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3576 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3577 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3578 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3579 StorageType* storage = static_cast<StorageType*>(base); |
| 3580 |
| 3581 // Local references to make debugger stepping easier. If in a debugger, |
| 3582 // you really want to warp ahead and step through the |
| 3583 // InvokeHelper<>::MakeItSo() call below. |
| 3584 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3585 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3586 |
| 3587 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3588 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3589 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3590 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3591 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3592 typename StorageType::RunnableType, |
| 3593 void(typename Bound1UnwrapTraits::ForwardType, |
| 3594 typename Bound2UnwrapTraits::ForwardType, |
| 3595 typename CallbackParamTraits<X3>::ForwardType x3, |
| 3596 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3597 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3598 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3599 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3600 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3601 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3602 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3603 x9); |
| 3604 } |
| 3605 }; |
| 3606 |
| 3607 // Arity 9 -> 6. |
| 3608 template <typename StorageType, typename R,typename X1, typename X2, |
| 3609 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3610 typename X8, typename X9> |
| 3611 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3612 typedef R(RunType)(BindStateBase*, |
| 3613 typename CallbackParamTraits<X4>::ForwardType, |
| 3614 typename CallbackParamTraits<X5>::ForwardType, |
| 3615 typename CallbackParamTraits<X6>::ForwardType, |
| 3616 typename CallbackParamTraits<X7>::ForwardType, |
| 3617 typename CallbackParamTraits<X8>::ForwardType, |
| 3618 typename CallbackParamTraits<X9>::ForwardType); |
| 3619 |
| 3620 typedef R(UnboundRunType)(X4, X5, X6, X7, X8, X9); |
| 3621 |
| 3622 static R Run(BindStateBase* base, |
| 3623 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3624 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3625 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3626 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3627 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3628 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3629 StorageType* storage = static_cast<StorageType*>(base); |
| 3630 |
| 3631 // Local references to make debugger stepping easier. If in a debugger, |
| 3632 // you really want to warp ahead and step through the |
| 3633 // InvokeHelper<>::MakeItSo() call below. |
| 3634 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3635 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3636 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3637 |
| 3638 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3639 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3640 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3641 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3642 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3643 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3644 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3645 typename StorageType::RunnableType, |
| 3646 void(typename Bound1UnwrapTraits::ForwardType, |
| 3647 typename Bound2UnwrapTraits::ForwardType, |
| 3648 typename Bound3UnwrapTraits::ForwardType, |
| 3649 typename CallbackParamTraits<X4>::ForwardType x4, |
| 3650 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3651 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3652 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3653 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3654 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3655 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3656 x9); |
| 3657 } |
| 3658 }; |
| 3659 |
| 3660 // Arity 9 -> 5. |
| 3661 template <typename StorageType, typename R,typename X1, typename X2, |
| 3662 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3663 typename X8, typename X9> |
| 3664 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3665 typedef R(RunType)(BindStateBase*, |
| 3666 typename CallbackParamTraits<X5>::ForwardType, |
| 3667 typename CallbackParamTraits<X6>::ForwardType, |
| 3668 typename CallbackParamTraits<X7>::ForwardType, |
| 3669 typename CallbackParamTraits<X8>::ForwardType, |
| 3670 typename CallbackParamTraits<X9>::ForwardType); |
| 3671 |
| 3672 typedef R(UnboundRunType)(X5, X6, X7, X8, X9); |
| 3673 |
| 3674 static R Run(BindStateBase* base, |
| 3675 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3676 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3677 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3678 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3679 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3680 StorageType* storage = static_cast<StorageType*>(base); |
| 3681 |
| 3682 // Local references to make debugger stepping easier. If in a debugger, |
| 3683 // you really want to warp ahead and step through the |
| 3684 // InvokeHelper<>::MakeItSo() call below. |
| 3685 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3686 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3687 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3688 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3689 |
| 3690 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3691 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3692 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3693 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3694 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3695 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3696 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3697 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3698 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3699 typename StorageType::RunnableType, |
| 3700 void(typename Bound1UnwrapTraits::ForwardType, |
| 3701 typename Bound2UnwrapTraits::ForwardType, |
| 3702 typename Bound3UnwrapTraits::ForwardType, |
| 3703 typename Bound4UnwrapTraits::ForwardType, |
| 3704 typename CallbackParamTraits<X5>::ForwardType x5, |
| 3705 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3706 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3707 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3708 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3709 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3710 x9); |
| 3711 } |
| 3712 }; |
| 3713 |
| 3714 // Arity 9 -> 4. |
| 3715 template <typename StorageType, typename R,typename X1, typename X2, |
| 3716 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3717 typename X8, typename X9> |
| 3718 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3719 typedef R(RunType)(BindStateBase*, |
| 3720 typename CallbackParamTraits<X6>::ForwardType, |
| 3721 typename CallbackParamTraits<X7>::ForwardType, |
| 3722 typename CallbackParamTraits<X8>::ForwardType, |
| 3723 typename CallbackParamTraits<X9>::ForwardType); |
| 3724 |
| 3725 typedef R(UnboundRunType)(X6, X7, X8, X9); |
| 3726 |
| 3727 static R Run(BindStateBase* base, |
| 3728 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3729 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3730 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3731 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3732 StorageType* storage = static_cast<StorageType*>(base); |
| 3733 |
| 3734 // Local references to make debugger stepping easier. If in a debugger, |
| 3735 // you really want to warp ahead and step through the |
| 3736 // InvokeHelper<>::MakeItSo() call below. |
| 3737 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3738 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3739 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3740 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3741 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3742 |
| 3743 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3744 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3745 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3746 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3747 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3748 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3749 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3750 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3751 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3752 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3753 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3754 typename StorageType::RunnableType, |
| 3755 void(typename Bound1UnwrapTraits::ForwardType, |
| 3756 typename Bound2UnwrapTraits::ForwardType, |
| 3757 typename Bound3UnwrapTraits::ForwardType, |
| 3758 typename Bound4UnwrapTraits::ForwardType, |
| 3759 typename Bound5UnwrapTraits::ForwardType, |
| 3760 typename CallbackParamTraits<X6>::ForwardType x6, |
| 3761 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3762 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3763 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3764 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3765 x9); |
| 3766 } |
| 3767 }; |
| 3768 |
| 3769 // Arity 9 -> 3. |
| 3770 template <typename StorageType, typename R,typename X1, typename X2, |
| 3771 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3772 typename X8, typename X9> |
| 3773 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3774 typedef R(RunType)(BindStateBase*, |
| 3775 typename CallbackParamTraits<X7>::ForwardType, |
| 3776 typename CallbackParamTraits<X8>::ForwardType, |
| 3777 typename CallbackParamTraits<X9>::ForwardType); |
| 3778 |
| 3779 typedef R(UnboundRunType)(X7, X8, X9); |
| 3780 |
| 3781 static R Run(BindStateBase* base, |
| 3782 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3783 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3784 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3785 StorageType* storage = static_cast<StorageType*>(base); |
| 3786 |
| 3787 // Local references to make debugger stepping easier. If in a debugger, |
| 3788 // you really want to warp ahead and step through the |
| 3789 // InvokeHelper<>::MakeItSo() call below. |
| 3790 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3791 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3792 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3793 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3794 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3795 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3796 |
| 3797 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3798 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3799 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3800 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3801 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3802 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3803 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3804 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3805 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3806 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3807 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3808 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3809 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3810 typename StorageType::RunnableType, |
| 3811 void(typename Bound1UnwrapTraits::ForwardType, |
| 3812 typename Bound2UnwrapTraits::ForwardType, |
| 3813 typename Bound3UnwrapTraits::ForwardType, |
| 3814 typename Bound4UnwrapTraits::ForwardType, |
| 3815 typename Bound5UnwrapTraits::ForwardType, |
| 3816 typename Bound6UnwrapTraits::ForwardType, |
| 3817 typename CallbackParamTraits<X7>::ForwardType x7, |
| 3818 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3819 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3820 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3821 x9); |
| 3822 } |
| 3823 }; |
| 3824 |
| 3825 // Arity 9 -> 2. |
| 3826 template <typename StorageType, typename R,typename X1, typename X2, |
| 3827 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3828 typename X8, typename X9> |
| 3829 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3830 typedef R(RunType)(BindStateBase*, |
| 3831 typename CallbackParamTraits<X8>::ForwardType, |
| 3832 typename CallbackParamTraits<X9>::ForwardType); |
| 3833 |
| 3834 typedef R(UnboundRunType)(X8, X9); |
| 3835 |
| 3836 static R Run(BindStateBase* base, |
| 3837 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3838 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3839 StorageType* storage = static_cast<StorageType*>(base); |
| 3840 |
| 3841 // Local references to make debugger stepping easier. If in a debugger, |
| 3842 // you really want to warp ahead and step through the |
| 3843 // InvokeHelper<>::MakeItSo() call below. |
| 3844 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3845 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3846 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3847 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3848 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3849 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3850 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 3851 |
| 3852 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3853 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3854 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3855 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3856 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3857 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3858 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3859 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3860 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3861 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3862 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3863 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3864 typename Bound7UnwrapTraits::ForwardType x7 = |
| 3865 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 3866 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3867 typename StorageType::RunnableType, |
| 3868 void(typename Bound1UnwrapTraits::ForwardType, |
| 3869 typename Bound2UnwrapTraits::ForwardType, |
| 3870 typename Bound3UnwrapTraits::ForwardType, |
| 3871 typename Bound4UnwrapTraits::ForwardType, |
| 3872 typename Bound5UnwrapTraits::ForwardType, |
| 3873 typename Bound6UnwrapTraits::ForwardType, |
| 3874 typename Bound7UnwrapTraits::ForwardType, |
| 3875 typename CallbackParamTraits<X8>::ForwardType x8, |
| 3876 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3877 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3878 x9); |
| 3879 } |
| 3880 }; |
| 3881 |
| 3882 // Arity 9 -> 1. |
| 3883 template <typename StorageType, typename R,typename X1, typename X2, |
| 3884 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3885 typename X8, typename X9> |
| 3886 struct Invoker<8, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3887 typedef R(RunType)(BindStateBase*, |
| 3888 typename CallbackParamTraits<X9>::ForwardType); |
| 3889 |
| 3890 typedef R(UnboundRunType)(X9); |
| 3891 |
| 3892 static R Run(BindStateBase* base, |
| 3893 typename CallbackParamTraits<X9>::ForwardType x9) { |
| 3894 StorageType* storage = static_cast<StorageType*>(base); |
| 3895 |
| 3896 // Local references to make debugger stepping easier. If in a debugger, |
| 3897 // you really want to warp ahead and step through the |
| 3898 // InvokeHelper<>::MakeItSo() call below. |
| 3899 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3900 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3901 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3902 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3903 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3904 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3905 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 3906 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 3907 |
| 3908 typename Bound1UnwrapTraits::ForwardType x1 = |
| 3909 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3910 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3911 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3912 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3913 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3914 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3915 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3916 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3917 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3918 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3919 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3920 typename Bound7UnwrapTraits::ForwardType x7 = |
| 3921 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 3922 typename Bound8UnwrapTraits::ForwardType x8 = |
| 3923 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 3924 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 3925 typename StorageType::RunnableType, |
| 3926 void(typename Bound1UnwrapTraits::ForwardType, |
| 3927 typename Bound2UnwrapTraits::ForwardType, |
| 3928 typename Bound3UnwrapTraits::ForwardType, |
| 3929 typename Bound4UnwrapTraits::ForwardType, |
| 3930 typename Bound5UnwrapTraits::ForwardType, |
| 3931 typename Bound6UnwrapTraits::ForwardType, |
| 3932 typename Bound7UnwrapTraits::ForwardType, |
| 3933 typename Bound8UnwrapTraits::ForwardType, |
| 3934 typename CallbackParamTraits<X9>::ForwardType x9)> |
| 3935 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3936 x9); |
| 3937 } |
| 3938 }; |
| 3939 |
| 3940 // Arity 9 -> 0. |
| 3941 template <typename StorageType, typename R,typename X1, typename X2, |
| 3942 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 3943 typename X8, typename X9> |
| 3944 struct Invoker<9, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9)> { |
| 3945 typedef R(RunType)(BindStateBase*); |
| 3946 |
| 3947 typedef R(UnboundRunType)(); |
996 | 3948 |
997 static R Run(BindStateBase* base) { | 3949 static R Run(BindStateBase* base) { |
998 StorageType* storage = static_cast<StorageType*>(base); | 3950 StorageType* storage = static_cast<StorageType*>(base); |
999 | 3951 |
1000 // Local references to make debugger stepping easier. If in a debugger, | 3952 // Local references to make debugger stepping easier. If in a debugger, |
1001 // you really want to warp ahead and step through the | 3953 // you really want to warp ahead and step through the |
1002 // InvokeHelper<>::MakeItSo() call below. | 3954 // InvokeHelper<>::MakeItSo() call below. |
1003 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 3955 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 3956 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 3957 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 3958 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 3959 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 3960 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 3961 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 3962 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 3963 typedef typename StorageType::Bound9UnwrapTraits Bound9UnwrapTraits; |
1004 | 3964 |
1005 typename Bound1UnwrapTraits::ForwardType x1 = | 3965 typename Bound1UnwrapTraits::ForwardType x1 = |
1006 Bound1UnwrapTraits::Unwrap(storage->p1_); | 3966 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 3967 typename Bound2UnwrapTraits::ForwardType x2 = |
| 3968 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 3969 typename Bound3UnwrapTraits::ForwardType x3 = |
| 3970 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 3971 typename Bound4UnwrapTraits::ForwardType x4 = |
| 3972 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 3973 typename Bound5UnwrapTraits::ForwardType x5 = |
| 3974 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 3975 typename Bound6UnwrapTraits::ForwardType x6 = |
| 3976 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 3977 typename Bound7UnwrapTraits::ForwardType x7 = |
| 3978 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 3979 typename Bound8UnwrapTraits::ForwardType x8 = |
| 3980 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 3981 typename Bound9UnwrapTraits::ForwardType x9 = |
| 3982 Bound9UnwrapTraits::Unwrap(storage->p9_); |
1007 return InvokeHelper<StorageType::IsWeakCall::value, R, | 3983 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1008 typename StorageType::RunnableType, | 3984 typename StorageType::RunnableType, |
1009 void(typename Bound1UnwrapTraits::ForwardType)> | 3985 void(typename Bound1UnwrapTraits::ForwardType, |
1010 ::MakeItSo(storage->runnable_, x1); | 3986 typename Bound2UnwrapTraits::ForwardType, |
| 3987 typename Bound3UnwrapTraits::ForwardType, |
| 3988 typename Bound4UnwrapTraits::ForwardType, |
| 3989 typename Bound5UnwrapTraits::ForwardType, |
| 3990 typename Bound6UnwrapTraits::ForwardType, |
| 3991 typename Bound7UnwrapTraits::ForwardType, |
| 3992 typename Bound8UnwrapTraits::ForwardType, |
| 3993 typename Bound9UnwrapTraits::ForwardType)> |
| 3994 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 3995 x9); |
1011 } | 3996 } |
1012 }; | 3997 }; |
1013 | 3998 |
1014 // Arity 2 -> 2. | 3999 // Arity 10 -> 10. |
1015 template <typename StorageType, typename R,typename X1, typename X2> | 4000 template <typename StorageType, typename R,typename X1, typename X2, |
1016 struct Invoker<0, StorageType, R(X1, X2)> { | 4001 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 4002 typename X8, typename X9, typename X10> |
| 4003 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1017 typedef R(RunType)(BindStateBase*, | 4004 typedef R(RunType)(BindStateBase*, |
1018 typename CallbackParamTraits<X1>::ForwardType, | 4005 typename CallbackParamTraits<X1>::ForwardType, |
1019 typename CallbackParamTraits<X2>::ForwardType); | 4006 typename CallbackParamTraits<X2>::ForwardType, |
| 4007 typename CallbackParamTraits<X3>::ForwardType, |
| 4008 typename CallbackParamTraits<X4>::ForwardType, |
| 4009 typename CallbackParamTraits<X5>::ForwardType, |
| 4010 typename CallbackParamTraits<X6>::ForwardType, |
| 4011 typename CallbackParamTraits<X7>::ForwardType, |
| 4012 typename CallbackParamTraits<X8>::ForwardType, |
| 4013 typename CallbackParamTraits<X9>::ForwardType, |
| 4014 typename CallbackParamTraits<X10>::ForwardType); |
1020 | 4015 |
1021 typedef R(UnboundRunType)(X1, X2); | 4016 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10); |
1022 | 4017 |
1023 static R Run(BindStateBase* base, | 4018 static R Run(BindStateBase* base, |
1024 typename CallbackParamTraits<X1>::ForwardType x1, | 4019 typename CallbackParamTraits<X1>::ForwardType x1, |
1025 typename CallbackParamTraits<X2>::ForwardType x2) { | 4020 typename CallbackParamTraits<X2>::ForwardType x2, |
| 4021 typename CallbackParamTraits<X3>::ForwardType x3, |
| 4022 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4023 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4024 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4025 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4026 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4027 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4028 typename CallbackParamTraits<X10>::ForwardType x10) { |
1026 StorageType* storage = static_cast<StorageType*>(base); | 4029 StorageType* storage = static_cast<StorageType*>(base); |
1027 | 4030 |
1028 // Local references to make debugger stepping easier. If in a debugger, | 4031 // Local references to make debugger stepping easier. If in a debugger, |
1029 // you really want to warp ahead and step through the | 4032 // you really want to warp ahead and step through the |
1030 // InvokeHelper<>::MakeItSo() call below. | 4033 // InvokeHelper<>::MakeItSo() call below. |
1031 | 4034 |
1032 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4035 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1033 typename StorageType::RunnableType, | 4036 typename StorageType::RunnableType, |
1034 void(typename CallbackParamTraits<X1>::ForwardType x1, | 4037 void(typename CallbackParamTraits<X1>::ForwardType x1, |
1035 typename CallbackParamTraits<X2>::ForwardType x2)> | 4038 typename CallbackParamTraits<X2>::ForwardType x2, |
1036 ::MakeItSo(storage->runnable_, x1, x2); | 4039 typename CallbackParamTraits<X3>::ForwardType x3, |
| 4040 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4041 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4042 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4043 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4044 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4045 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4046 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4047 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4048 x9, x10); |
1037 } | 4049 } |
1038 }; | 4050 }; |
1039 | 4051 |
1040 // Arity 2 -> 1. | 4052 // Arity 10 -> 9. |
1041 template <typename StorageType, typename R,typename X1, typename X2> | 4053 template <typename StorageType, typename R,typename X1, typename X2, |
1042 struct Invoker<1, StorageType, R(X1, X2)> { | 4054 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 4055 typename X8, typename X9, typename X10> |
| 4056 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1043 typedef R(RunType)(BindStateBase*, | 4057 typedef R(RunType)(BindStateBase*, |
1044 typename CallbackParamTraits<X2>::ForwardType); | 4058 typename CallbackParamTraits<X2>::ForwardType, |
| 4059 typename CallbackParamTraits<X3>::ForwardType, |
| 4060 typename CallbackParamTraits<X4>::ForwardType, |
| 4061 typename CallbackParamTraits<X5>::ForwardType, |
| 4062 typename CallbackParamTraits<X6>::ForwardType, |
| 4063 typename CallbackParamTraits<X7>::ForwardType, |
| 4064 typename CallbackParamTraits<X8>::ForwardType, |
| 4065 typename CallbackParamTraits<X9>::ForwardType, |
| 4066 typename CallbackParamTraits<X10>::ForwardType); |
1045 | 4067 |
1046 typedef R(UnboundRunType)(X2); | 4068 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8, X9, X10); |
1047 | 4069 |
1048 static R Run(BindStateBase* base, | 4070 static R Run(BindStateBase* base, |
1049 typename CallbackParamTraits<X2>::ForwardType x2) { | 4071 typename CallbackParamTraits<X2>::ForwardType x2, |
| 4072 typename CallbackParamTraits<X3>::ForwardType x3, |
| 4073 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4074 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4075 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4076 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4077 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4078 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4079 typename CallbackParamTraits<X10>::ForwardType x10) { |
1050 StorageType* storage = static_cast<StorageType*>(base); | 4080 StorageType* storage = static_cast<StorageType*>(base); |
1051 | 4081 |
1052 // Local references to make debugger stepping easier. If in a debugger, | 4082 // Local references to make debugger stepping easier. If in a debugger, |
1053 // you really want to warp ahead and step through the | 4083 // you really want to warp ahead and step through the |
1054 // InvokeHelper<>::MakeItSo() call below. | 4084 // InvokeHelper<>::MakeItSo() call below. |
1055 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4085 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1056 | 4086 |
1057 typename Bound1UnwrapTraits::ForwardType x1 = | 4087 typename Bound1UnwrapTraits::ForwardType x1 = |
1058 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4088 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1059 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4089 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1060 typename StorageType::RunnableType, | 4090 typename StorageType::RunnableType, |
1061 void(typename Bound1UnwrapTraits::ForwardType, | 4091 void(typename Bound1UnwrapTraits::ForwardType, |
1062 typename CallbackParamTraits<X2>::ForwardType x2)> | 4092 typename CallbackParamTraits<X2>::ForwardType x2, |
1063 ::MakeItSo(storage->runnable_, x1, x2); | 4093 typename CallbackParamTraits<X3>::ForwardType x3, |
| 4094 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4095 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4096 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4097 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4098 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4099 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4100 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4101 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4102 x9, x10); |
1064 } | 4103 } |
1065 }; | 4104 }; |
1066 | 4105 |
1067 // Arity 2 -> 0. | 4106 // Arity 10 -> 8. |
1068 template <typename StorageType, typename R,typename X1, typename X2> | 4107 template <typename StorageType, typename R,typename X1, typename X2, |
1069 struct Invoker<2, StorageType, R(X1, X2)> { | 4108 typename X3, typename X4, typename X5, typename X6, typename X7, |
1070 typedef R(RunType)(BindStateBase*); | 4109 typename X8, typename X9, typename X10> |
| 4110 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
| 4111 typedef R(RunType)(BindStateBase*, |
| 4112 typename CallbackParamTraits<X3>::ForwardType, |
| 4113 typename CallbackParamTraits<X4>::ForwardType, |
| 4114 typename CallbackParamTraits<X5>::ForwardType, |
| 4115 typename CallbackParamTraits<X6>::ForwardType, |
| 4116 typename CallbackParamTraits<X7>::ForwardType, |
| 4117 typename CallbackParamTraits<X8>::ForwardType, |
| 4118 typename CallbackParamTraits<X9>::ForwardType, |
| 4119 typename CallbackParamTraits<X10>::ForwardType); |
1071 | 4120 |
1072 typedef R(UnboundRunType)(); | 4121 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8, X9, X10); |
1073 | 4122 |
1074 static R Run(BindStateBase* base) { | 4123 static R Run(BindStateBase* base, |
| 4124 typename CallbackParamTraits<X3>::ForwardType x3, |
| 4125 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4126 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4127 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4128 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4129 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4130 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4131 typename CallbackParamTraits<X10>::ForwardType x10) { |
1075 StorageType* storage = static_cast<StorageType*>(base); | 4132 StorageType* storage = static_cast<StorageType*>(base); |
1076 | 4133 |
1077 // Local references to make debugger stepping easier. If in a debugger, | 4134 // Local references to make debugger stepping easier. If in a debugger, |
1078 // you really want to warp ahead and step through the | 4135 // you really want to warp ahead and step through the |
1079 // InvokeHelper<>::MakeItSo() call below. | 4136 // InvokeHelper<>::MakeItSo() call below. |
1080 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4137 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1081 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4138 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1082 | 4139 |
1083 typename Bound1UnwrapTraits::ForwardType x1 = | 4140 typename Bound1UnwrapTraits::ForwardType x1 = |
1084 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4141 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1085 typename Bound2UnwrapTraits::ForwardType x2 = | 4142 typename Bound2UnwrapTraits::ForwardType x2 = |
1086 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4143 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1087 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4144 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1088 typename StorageType::RunnableType, | 4145 typename StorageType::RunnableType, |
1089 void(typename Bound1UnwrapTraits::ForwardType, | 4146 void(typename Bound1UnwrapTraits::ForwardType, |
1090 typename Bound2UnwrapTraits::ForwardType)> | 4147 typename Bound2UnwrapTraits::ForwardType, |
1091 ::MakeItSo(storage->runnable_, x1, x2); | 4148 typename CallbackParamTraits<X3>::ForwardType x3, |
| 4149 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4150 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4151 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4152 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4153 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4154 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4155 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4156 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4157 x9, x10); |
1092 } | 4158 } |
1093 }; | 4159 }; |
1094 | 4160 |
1095 // Arity 3 -> 3. | 4161 // Arity 10 -> 7. |
1096 template <typename StorageType, typename R,typename X1, typename X2, | 4162 template <typename StorageType, typename R,typename X1, typename X2, |
1097 typename X3> | 4163 typename X3, typename X4, typename X5, typename X6, typename X7, |
1098 struct Invoker<0, StorageType, R(X1, X2, X3)> { | 4164 typename X8, typename X9, typename X10> |
| 4165 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1099 typedef R(RunType)(BindStateBase*, | 4166 typedef R(RunType)(BindStateBase*, |
1100 typename CallbackParamTraits<X1>::ForwardType, | 4167 typename CallbackParamTraits<X4>::ForwardType, |
1101 typename CallbackParamTraits<X2>::ForwardType, | 4168 typename CallbackParamTraits<X5>::ForwardType, |
1102 typename CallbackParamTraits<X3>::ForwardType); | 4169 typename CallbackParamTraits<X6>::ForwardType, |
| 4170 typename CallbackParamTraits<X7>::ForwardType, |
| 4171 typename CallbackParamTraits<X8>::ForwardType, |
| 4172 typename CallbackParamTraits<X9>::ForwardType, |
| 4173 typename CallbackParamTraits<X10>::ForwardType); |
1103 | 4174 |
1104 typedef R(UnboundRunType)(X1, X2, X3); | 4175 typedef R(UnboundRunType)(X4, X5, X6, X7, X8, X9, X10); |
1105 | 4176 |
1106 static R Run(BindStateBase* base, | 4177 static R Run(BindStateBase* base, |
1107 typename CallbackParamTraits<X1>::ForwardType x1, | 4178 typename CallbackParamTraits<X4>::ForwardType x4, |
1108 typename CallbackParamTraits<X2>::ForwardType x2, | 4179 typename CallbackParamTraits<X5>::ForwardType x5, |
1109 typename CallbackParamTraits<X3>::ForwardType x3) { | 4180 typename CallbackParamTraits<X6>::ForwardType x6, |
1110 StorageType* storage = static_cast<StorageType*>(base); | 4181 typename CallbackParamTraits<X7>::ForwardType x7, |
1111 | 4182 typename CallbackParamTraits<X8>::ForwardType x8, |
1112 // Local references to make debugger stepping easier. If in a debugger, | 4183 typename CallbackParamTraits<X9>::ForwardType x9, |
1113 // you really want to warp ahead and step through the | 4184 typename CallbackParamTraits<X10>::ForwardType x10) { |
1114 // InvokeHelper<>::MakeItSo() call below. | |
1115 | |
1116 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
1117 typename StorageType::RunnableType, | |
1118 void(typename CallbackParamTraits<X1>::ForwardType x1, | |
1119 typename CallbackParamTraits<X2>::ForwardType x2, | |
1120 typename CallbackParamTraits<X3>::ForwardType x3)> | |
1121 ::MakeItSo(storage->runnable_, x1, x2, x3); | |
1122 } | |
1123 }; | |
1124 | |
1125 // Arity 3 -> 2. | |
1126 template <typename StorageType, typename R,typename X1, typename X2, | |
1127 typename X3> | |
1128 struct Invoker<1, StorageType, R(X1, X2, X3)> { | |
1129 typedef R(RunType)(BindStateBase*, | |
1130 typename CallbackParamTraits<X2>::ForwardType, | |
1131 typename CallbackParamTraits<X3>::ForwardType); | |
1132 | |
1133 typedef R(UnboundRunType)(X2, X3); | |
1134 | |
1135 static R Run(BindStateBase* base, | |
1136 typename CallbackParamTraits<X2>::ForwardType x2, | |
1137 typename CallbackParamTraits<X3>::ForwardType x3) { | |
1138 StorageType* storage = static_cast<StorageType*>(base); | 4185 StorageType* storage = static_cast<StorageType*>(base); |
1139 | 4186 |
1140 // Local references to make debugger stepping easier. If in a debugger, | 4187 // Local references to make debugger stepping easier. If in a debugger, |
1141 // you really want to warp ahead and step through the | 4188 // you really want to warp ahead and step through the |
1142 // InvokeHelper<>::MakeItSo() call below. | 4189 // InvokeHelper<>::MakeItSo() call below. |
1143 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4190 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 4191 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 4192 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1144 | 4193 |
1145 typename Bound1UnwrapTraits::ForwardType x1 = | 4194 typename Bound1UnwrapTraits::ForwardType x1 = |
1146 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4195 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 4196 typename Bound2UnwrapTraits::ForwardType x2 = |
| 4197 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 4198 typename Bound3UnwrapTraits::ForwardType x3 = |
| 4199 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1147 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4200 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1148 typename StorageType::RunnableType, | 4201 typename StorageType::RunnableType, |
1149 void(typename Bound1UnwrapTraits::ForwardType, | 4202 void(typename Bound1UnwrapTraits::ForwardType, |
1150 typename CallbackParamTraits<X2>::ForwardType x2, | 4203 typename Bound2UnwrapTraits::ForwardType, |
1151 typename CallbackParamTraits<X3>::ForwardType x3)> | 4204 typename Bound3UnwrapTraits::ForwardType, |
1152 ::MakeItSo(storage->runnable_, x1, x2, x3); | 4205 typename CallbackParamTraits<X4>::ForwardType x4, |
| 4206 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4207 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4208 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4209 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4210 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4211 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4212 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4213 x9, x10); |
1153 } | 4214 } |
1154 }; | 4215 }; |
1155 | 4216 |
1156 // Arity 3 -> 1. | 4217 // Arity 10 -> 6. |
1157 template <typename StorageType, typename R,typename X1, typename X2, | 4218 template <typename StorageType, typename R,typename X1, typename X2, |
1158 typename X3> | 4219 typename X3, typename X4, typename X5, typename X6, typename X7, |
1159 struct Invoker<2, StorageType, R(X1, X2, X3)> { | 4220 typename X8, typename X9, typename X10> |
| 4221 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1160 typedef R(RunType)(BindStateBase*, | 4222 typedef R(RunType)(BindStateBase*, |
1161 typename CallbackParamTraits<X3>::ForwardType); | 4223 typename CallbackParamTraits<X5>::ForwardType, |
| 4224 typename CallbackParamTraits<X6>::ForwardType, |
| 4225 typename CallbackParamTraits<X7>::ForwardType, |
| 4226 typename CallbackParamTraits<X8>::ForwardType, |
| 4227 typename CallbackParamTraits<X9>::ForwardType, |
| 4228 typename CallbackParamTraits<X10>::ForwardType); |
1162 | 4229 |
1163 typedef R(UnboundRunType)(X3); | 4230 typedef R(UnboundRunType)(X5, X6, X7, X8, X9, X10); |
1164 | 4231 |
1165 static R Run(BindStateBase* base, | 4232 static R Run(BindStateBase* base, |
1166 typename CallbackParamTraits<X3>::ForwardType x3) { | 4233 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4234 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4235 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4236 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4237 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4238 typename CallbackParamTraits<X10>::ForwardType x10) { |
1167 StorageType* storage = static_cast<StorageType*>(base); | 4239 StorageType* storage = static_cast<StorageType*>(base); |
1168 | 4240 |
1169 // Local references to make debugger stepping easier. If in a debugger, | 4241 // Local references to make debugger stepping easier. If in a debugger, |
1170 // you really want to warp ahead and step through the | 4242 // you really want to warp ahead and step through the |
1171 // InvokeHelper<>::MakeItSo() call below. | 4243 // InvokeHelper<>::MakeItSo() call below. |
1172 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4244 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1173 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4245 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 4246 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 4247 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
1174 | 4248 |
1175 typename Bound1UnwrapTraits::ForwardType x1 = | 4249 typename Bound1UnwrapTraits::ForwardType x1 = |
1176 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4250 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1177 typename Bound2UnwrapTraits::ForwardType x2 = | 4251 typename Bound2UnwrapTraits::ForwardType x2 = |
1178 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4252 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 4253 typename Bound3UnwrapTraits::ForwardType x3 = |
| 4254 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 4255 typename Bound4UnwrapTraits::ForwardType x4 = |
| 4256 Bound4UnwrapTraits::Unwrap(storage->p4_); |
1179 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4257 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1180 typename StorageType::RunnableType, | 4258 typename StorageType::RunnableType, |
1181 void(typename Bound1UnwrapTraits::ForwardType, | 4259 void(typename Bound1UnwrapTraits::ForwardType, |
1182 typename Bound2UnwrapTraits::ForwardType, | 4260 typename Bound2UnwrapTraits::ForwardType, |
1183 typename CallbackParamTraits<X3>::ForwardType x3)> | 4261 typename Bound3UnwrapTraits::ForwardType, |
1184 ::MakeItSo(storage->runnable_, x1, x2, x3); | 4262 typename Bound4UnwrapTraits::ForwardType, |
| 4263 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4264 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4265 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4266 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4267 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4268 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4269 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4270 x9, x10); |
1185 } | 4271 } |
1186 }; | 4272 }; |
1187 | 4273 |
1188 // Arity 3 -> 0. | 4274 // Arity 10 -> 5. |
1189 template <typename StorageType, typename R,typename X1, typename X2, | 4275 template <typename StorageType, typename R,typename X1, typename X2, |
1190 typename X3> | 4276 typename X3, typename X4, typename X5, typename X6, typename X7, |
1191 struct Invoker<3, StorageType, R(X1, X2, X3)> { | 4277 typename X8, typename X9, typename X10> |
1192 typedef R(RunType)(BindStateBase*); | 4278 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
| 4279 typedef R(RunType)(BindStateBase*, |
| 4280 typename CallbackParamTraits<X6>::ForwardType, |
| 4281 typename CallbackParamTraits<X7>::ForwardType, |
| 4282 typename CallbackParamTraits<X8>::ForwardType, |
| 4283 typename CallbackParamTraits<X9>::ForwardType, |
| 4284 typename CallbackParamTraits<X10>::ForwardType); |
1193 | 4285 |
1194 typedef R(UnboundRunType)(); | 4286 typedef R(UnboundRunType)(X6, X7, X8, X9, X10); |
1195 | 4287 |
1196 static R Run(BindStateBase* base) { | 4288 static R Run(BindStateBase* base, |
| 4289 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4290 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4291 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4292 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4293 typename CallbackParamTraits<X10>::ForwardType x10) { |
1197 StorageType* storage = static_cast<StorageType*>(base); | 4294 StorageType* storage = static_cast<StorageType*>(base); |
1198 | 4295 |
1199 // Local references to make debugger stepping easier. If in a debugger, | 4296 // Local references to make debugger stepping easier. If in a debugger, |
1200 // you really want to warp ahead and step through the | 4297 // you really want to warp ahead and step through the |
1201 // InvokeHelper<>::MakeItSo() call below. | 4298 // InvokeHelper<>::MakeItSo() call below. |
1202 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4299 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1203 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4300 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1204 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 4301 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 4302 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 4303 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
1205 | 4304 |
1206 typename Bound1UnwrapTraits::ForwardType x1 = | 4305 typename Bound1UnwrapTraits::ForwardType x1 = |
1207 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4306 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1208 typename Bound2UnwrapTraits::ForwardType x2 = | 4307 typename Bound2UnwrapTraits::ForwardType x2 = |
1209 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4308 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1210 typename Bound3UnwrapTraits::ForwardType x3 = | 4309 typename Bound3UnwrapTraits::ForwardType x3 = |
1211 Bound3UnwrapTraits::Unwrap(storage->p3_); | 4310 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 4311 typename Bound4UnwrapTraits::ForwardType x4 = |
| 4312 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 4313 typename Bound5UnwrapTraits::ForwardType x5 = |
| 4314 Bound5UnwrapTraits::Unwrap(storage->p5_); |
1212 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4315 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1213 typename StorageType::RunnableType, | 4316 typename StorageType::RunnableType, |
1214 void(typename Bound1UnwrapTraits::ForwardType, | 4317 void(typename Bound1UnwrapTraits::ForwardType, |
1215 typename Bound2UnwrapTraits::ForwardType, | 4318 typename Bound2UnwrapTraits::ForwardType, |
1216 typename Bound3UnwrapTraits::ForwardType)> | 4319 typename Bound3UnwrapTraits::ForwardType, |
1217 ::MakeItSo(storage->runnable_, x1, x2, x3); | 4320 typename Bound4UnwrapTraits::ForwardType, |
| 4321 typename Bound5UnwrapTraits::ForwardType, |
| 4322 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4323 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4324 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4325 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4326 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4327 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4328 x9, x10); |
1218 } | 4329 } |
1219 }; | 4330 }; |
1220 | 4331 |
1221 // Arity 4 -> 4. | 4332 // Arity 10 -> 4. |
1222 template <typename StorageType, typename R,typename X1, typename X2, | 4333 template <typename StorageType, typename R,typename X1, typename X2, |
1223 typename X3, typename X4> | 4334 typename X3, typename X4, typename X5, typename X6, typename X7, |
1224 struct Invoker<0, StorageType, R(X1, X2, X3, X4)> { | 4335 typename X8, typename X9, typename X10> |
| 4336 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1225 typedef R(RunType)(BindStateBase*, | 4337 typedef R(RunType)(BindStateBase*, |
1226 typename CallbackParamTraits<X1>::ForwardType, | 4338 typename CallbackParamTraits<X7>::ForwardType, |
1227 typename CallbackParamTraits<X2>::ForwardType, | 4339 typename CallbackParamTraits<X8>::ForwardType, |
1228 typename CallbackParamTraits<X3>::ForwardType, | 4340 typename CallbackParamTraits<X9>::ForwardType, |
1229 typename CallbackParamTraits<X4>::ForwardType); | 4341 typename CallbackParamTraits<X10>::ForwardType); |
1230 | 4342 |
1231 typedef R(UnboundRunType)(X1, X2, X3, X4); | 4343 typedef R(UnboundRunType)(X7, X8, X9, X10); |
1232 | 4344 |
1233 static R Run(BindStateBase* base, | 4345 static R Run(BindStateBase* base, |
1234 typename CallbackParamTraits<X1>::ForwardType x1, | 4346 typename CallbackParamTraits<X7>::ForwardType x7, |
1235 typename CallbackParamTraits<X2>::ForwardType x2, | 4347 typename CallbackParamTraits<X8>::ForwardType x8, |
1236 typename CallbackParamTraits<X3>::ForwardType x3, | 4348 typename CallbackParamTraits<X9>::ForwardType x9, |
1237 typename CallbackParamTraits<X4>::ForwardType x4) { | 4349 typename CallbackParamTraits<X10>::ForwardType x10) { |
1238 StorageType* storage = static_cast<StorageType*>(base); | |
1239 | |
1240 // Local references to make debugger stepping easier. If in a debugger, | |
1241 // you really want to warp ahead and step through the | |
1242 // InvokeHelper<>::MakeItSo() call below. | |
1243 | |
1244 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
1245 typename StorageType::RunnableType, | |
1246 void(typename CallbackParamTraits<X1>::ForwardType x1, | |
1247 typename CallbackParamTraits<X2>::ForwardType x2, | |
1248 typename CallbackParamTraits<X3>::ForwardType x3, | |
1249 typename CallbackParamTraits<X4>::ForwardType x4)> | |
1250 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); | |
1251 } | |
1252 }; | |
1253 | |
1254 // Arity 4 -> 3. | |
1255 template <typename StorageType, typename R,typename X1, typename X2, | |
1256 typename X3, typename X4> | |
1257 struct Invoker<1, StorageType, R(X1, X2, X3, X4)> { | |
1258 typedef R(RunType)(BindStateBase*, | |
1259 typename CallbackParamTraits<X2>::ForwardType, | |
1260 typename CallbackParamTraits<X3>::ForwardType, | |
1261 typename CallbackParamTraits<X4>::ForwardType); | |
1262 | |
1263 typedef R(UnboundRunType)(X2, X3, X4); | |
1264 | |
1265 static R Run(BindStateBase* base, | |
1266 typename CallbackParamTraits<X2>::ForwardType x2, | |
1267 typename CallbackParamTraits<X3>::ForwardType x3, | |
1268 typename CallbackParamTraits<X4>::ForwardType x4) { | |
1269 StorageType* storage = static_cast<StorageType*>(base); | 4350 StorageType* storage = static_cast<StorageType*>(base); |
1270 | 4351 |
1271 // Local references to make debugger stepping easier. If in a debugger, | 4352 // Local references to make debugger stepping easier. If in a debugger, |
1272 // you really want to warp ahead and step through the | 4353 // you really want to warp ahead and step through the |
1273 // InvokeHelper<>::MakeItSo() call below. | 4354 // InvokeHelper<>::MakeItSo() call below. |
1274 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4355 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 4356 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 4357 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 4358 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 4359 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 4360 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
1275 | 4361 |
1276 typename Bound1UnwrapTraits::ForwardType x1 = | 4362 typename Bound1UnwrapTraits::ForwardType x1 = |
1277 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4363 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 4364 typename Bound2UnwrapTraits::ForwardType x2 = |
| 4365 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 4366 typename Bound3UnwrapTraits::ForwardType x3 = |
| 4367 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 4368 typename Bound4UnwrapTraits::ForwardType x4 = |
| 4369 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 4370 typename Bound5UnwrapTraits::ForwardType x5 = |
| 4371 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 4372 typename Bound6UnwrapTraits::ForwardType x6 = |
| 4373 Bound6UnwrapTraits::Unwrap(storage->p6_); |
1278 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4374 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1279 typename StorageType::RunnableType, | 4375 typename StorageType::RunnableType, |
1280 void(typename Bound1UnwrapTraits::ForwardType, | 4376 void(typename Bound1UnwrapTraits::ForwardType, |
1281 typename CallbackParamTraits<X2>::ForwardType x2, | 4377 typename Bound2UnwrapTraits::ForwardType, |
1282 typename CallbackParamTraits<X3>::ForwardType x3, | 4378 typename Bound3UnwrapTraits::ForwardType, |
1283 typename CallbackParamTraits<X4>::ForwardType x4)> | 4379 typename Bound4UnwrapTraits::ForwardType, |
1284 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); | 4380 typename Bound5UnwrapTraits::ForwardType, |
| 4381 typename Bound6UnwrapTraits::ForwardType, |
| 4382 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4383 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4384 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4385 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4386 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4387 x9, x10); |
1285 } | 4388 } |
1286 }; | 4389 }; |
1287 | 4390 |
1288 // Arity 4 -> 2. | 4391 // Arity 10 -> 3. |
1289 template <typename StorageType, typename R,typename X1, typename X2, | 4392 template <typename StorageType, typename R,typename X1, typename X2, |
1290 typename X3, typename X4> | 4393 typename X3, typename X4, typename X5, typename X6, typename X7, |
1291 struct Invoker<2, StorageType, R(X1, X2, X3, X4)> { | 4394 typename X8, typename X9, typename X10> |
| 4395 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1292 typedef R(RunType)(BindStateBase*, | 4396 typedef R(RunType)(BindStateBase*, |
1293 typename CallbackParamTraits<X3>::ForwardType, | 4397 typename CallbackParamTraits<X8>::ForwardType, |
1294 typename CallbackParamTraits<X4>::ForwardType); | 4398 typename CallbackParamTraits<X9>::ForwardType, |
| 4399 typename CallbackParamTraits<X10>::ForwardType); |
1295 | 4400 |
1296 typedef R(UnboundRunType)(X3, X4); | 4401 typedef R(UnboundRunType)(X8, X9, X10); |
1297 | 4402 |
1298 static R Run(BindStateBase* base, | 4403 static R Run(BindStateBase* base, |
1299 typename CallbackParamTraits<X3>::ForwardType x3, | 4404 typename CallbackParamTraits<X8>::ForwardType x8, |
1300 typename CallbackParamTraits<X4>::ForwardType x4) { | 4405 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4406 typename CallbackParamTraits<X10>::ForwardType x10) { |
1301 StorageType* storage = static_cast<StorageType*>(base); | 4407 StorageType* storage = static_cast<StorageType*>(base); |
1302 | 4408 |
1303 // Local references to make debugger stepping easier. If in a debugger, | 4409 // Local references to make debugger stepping easier. If in a debugger, |
| 4410 // you really want to warp ahead and step through the |
| 4411 // InvokeHelper<>::MakeItSo() call below. |
| 4412 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 4413 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 4414 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 4415 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 4416 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 4417 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 4418 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 4419 |
| 4420 typename Bound1UnwrapTraits::ForwardType x1 = |
| 4421 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 4422 typename Bound2UnwrapTraits::ForwardType x2 = |
| 4423 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 4424 typename Bound3UnwrapTraits::ForwardType x3 = |
| 4425 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 4426 typename Bound4UnwrapTraits::ForwardType x4 = |
| 4427 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 4428 typename Bound5UnwrapTraits::ForwardType x5 = |
| 4429 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 4430 typename Bound6UnwrapTraits::ForwardType x6 = |
| 4431 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 4432 typename Bound7UnwrapTraits::ForwardType x7 = |
| 4433 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 4434 return InvokeHelper<StorageType::IsWeakCall::value, R, |
| 4435 typename StorageType::RunnableType, |
| 4436 void(typename Bound1UnwrapTraits::ForwardType, |
| 4437 typename Bound2UnwrapTraits::ForwardType, |
| 4438 typename Bound3UnwrapTraits::ForwardType, |
| 4439 typename Bound4UnwrapTraits::ForwardType, |
| 4440 typename Bound5UnwrapTraits::ForwardType, |
| 4441 typename Bound6UnwrapTraits::ForwardType, |
| 4442 typename Bound7UnwrapTraits::ForwardType, |
| 4443 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4444 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4445 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4446 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4447 x9, x10); |
| 4448 } |
| 4449 }; |
| 4450 |
| 4451 // Arity 10 -> 2. |
| 4452 template <typename StorageType, typename R,typename X1, typename X2, |
| 4453 typename X3, typename X4, typename X5, typename X6, typename X7, |
| 4454 typename X8, typename X9, typename X10> |
| 4455 struct Invoker<8, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
| 4456 typedef R(RunType)(BindStateBase*, |
| 4457 typename CallbackParamTraits<X9>::ForwardType, |
| 4458 typename CallbackParamTraits<X10>::ForwardType); |
| 4459 |
| 4460 typedef R(UnboundRunType)(X9, X10); |
| 4461 |
| 4462 static R Run(BindStateBase* base, |
| 4463 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4464 typename CallbackParamTraits<X10>::ForwardType x10) { |
| 4465 StorageType* storage = static_cast<StorageType*>(base); |
| 4466 |
| 4467 // Local references to make debugger stepping easier. If in a debugger, |
1304 // you really want to warp ahead and step through the | 4468 // you really want to warp ahead and step through the |
1305 // InvokeHelper<>::MakeItSo() call below. | 4469 // InvokeHelper<>::MakeItSo() call below. |
1306 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4470 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1307 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4471 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 4472 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 4473 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 4474 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 4475 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 4476 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 4477 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
1308 | 4478 |
1309 typename Bound1UnwrapTraits::ForwardType x1 = | 4479 typename Bound1UnwrapTraits::ForwardType x1 = |
1310 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4480 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1311 typename Bound2UnwrapTraits::ForwardType x2 = | 4481 typename Bound2UnwrapTraits::ForwardType x2 = |
1312 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4482 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 4483 typename Bound3UnwrapTraits::ForwardType x3 = |
| 4484 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 4485 typename Bound4UnwrapTraits::ForwardType x4 = |
| 4486 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 4487 typename Bound5UnwrapTraits::ForwardType x5 = |
| 4488 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 4489 typename Bound6UnwrapTraits::ForwardType x6 = |
| 4490 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 4491 typename Bound7UnwrapTraits::ForwardType x7 = |
| 4492 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 4493 typename Bound8UnwrapTraits::ForwardType x8 = |
| 4494 Bound8UnwrapTraits::Unwrap(storage->p8_); |
1313 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4495 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1314 typename StorageType::RunnableType, | 4496 typename StorageType::RunnableType, |
1315 void(typename Bound1UnwrapTraits::ForwardType, | 4497 void(typename Bound1UnwrapTraits::ForwardType, |
1316 typename Bound2UnwrapTraits::ForwardType, | 4498 typename Bound2UnwrapTraits::ForwardType, |
1317 typename CallbackParamTraits<X3>::ForwardType x3, | 4499 typename Bound3UnwrapTraits::ForwardType, |
1318 typename CallbackParamTraits<X4>::ForwardType x4)> | 4500 typename Bound4UnwrapTraits::ForwardType, |
1319 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); | 4501 typename Bound5UnwrapTraits::ForwardType, |
| 4502 typename Bound6UnwrapTraits::ForwardType, |
| 4503 typename Bound7UnwrapTraits::ForwardType, |
| 4504 typename Bound8UnwrapTraits::ForwardType, |
| 4505 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4506 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4507 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4508 x9, x10); |
1320 } | 4509 } |
1321 }; | 4510 }; |
1322 | 4511 |
1323 // Arity 4 -> 1. | 4512 // Arity 10 -> 1. |
1324 template <typename StorageType, typename R,typename X1, typename X2, | 4513 template <typename StorageType, typename R,typename X1, typename X2, |
1325 typename X3, typename X4> | 4514 typename X3, typename X4, typename X5, typename X6, typename X7, |
1326 struct Invoker<3, StorageType, R(X1, X2, X3, X4)> { | 4515 typename X8, typename X9, typename X10> |
| 4516 struct Invoker<9, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1327 typedef R(RunType)(BindStateBase*, | 4517 typedef R(RunType)(BindStateBase*, |
1328 typename CallbackParamTraits<X4>::ForwardType); | 4518 typename CallbackParamTraits<X10>::ForwardType); |
1329 | 4519 |
1330 typedef R(UnboundRunType)(X4); | 4520 typedef R(UnboundRunType)(X10); |
1331 | 4521 |
1332 static R Run(BindStateBase* base, | 4522 static R Run(BindStateBase* base, |
1333 typename CallbackParamTraits<X4>::ForwardType x4) { | 4523 typename CallbackParamTraits<X10>::ForwardType x10) { |
1334 StorageType* storage = static_cast<StorageType*>(base); | 4524 StorageType* storage = static_cast<StorageType*>(base); |
1335 | 4525 |
1336 // Local references to make debugger stepping easier. If in a debugger, | 4526 // Local references to make debugger stepping easier. If in a debugger, |
1337 // you really want to warp ahead and step through the | 4527 // you really want to warp ahead and step through the |
1338 // InvokeHelper<>::MakeItSo() call below. | 4528 // InvokeHelper<>::MakeItSo() call below. |
1339 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4529 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1340 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4530 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1341 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 4531 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 4532 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 4533 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 4534 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 4535 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 4536 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 4537 typedef typename StorageType::Bound9UnwrapTraits Bound9UnwrapTraits; |
1342 | 4538 |
1343 typename Bound1UnwrapTraits::ForwardType x1 = | 4539 typename Bound1UnwrapTraits::ForwardType x1 = |
1344 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4540 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1345 typename Bound2UnwrapTraits::ForwardType x2 = | 4541 typename Bound2UnwrapTraits::ForwardType x2 = |
1346 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4542 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1347 typename Bound3UnwrapTraits::ForwardType x3 = | 4543 typename Bound3UnwrapTraits::ForwardType x3 = |
1348 Bound3UnwrapTraits::Unwrap(storage->p3_); | 4544 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 4545 typename Bound4UnwrapTraits::ForwardType x4 = |
| 4546 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 4547 typename Bound5UnwrapTraits::ForwardType x5 = |
| 4548 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 4549 typename Bound6UnwrapTraits::ForwardType x6 = |
| 4550 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 4551 typename Bound7UnwrapTraits::ForwardType x7 = |
| 4552 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 4553 typename Bound8UnwrapTraits::ForwardType x8 = |
| 4554 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 4555 typename Bound9UnwrapTraits::ForwardType x9 = |
| 4556 Bound9UnwrapTraits::Unwrap(storage->p9_); |
1349 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4557 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1350 typename StorageType::RunnableType, | 4558 typename StorageType::RunnableType, |
1351 void(typename Bound1UnwrapTraits::ForwardType, | 4559 void(typename Bound1UnwrapTraits::ForwardType, |
1352 typename Bound2UnwrapTraits::ForwardType, | 4560 typename Bound2UnwrapTraits::ForwardType, |
1353 typename Bound3UnwrapTraits::ForwardType, | 4561 typename Bound3UnwrapTraits::ForwardType, |
1354 typename CallbackParamTraits<X4>::ForwardType x4)> | 4562 typename Bound4UnwrapTraits::ForwardType, |
1355 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); | 4563 typename Bound5UnwrapTraits::ForwardType, |
| 4564 typename Bound6UnwrapTraits::ForwardType, |
| 4565 typename Bound7UnwrapTraits::ForwardType, |
| 4566 typename Bound8UnwrapTraits::ForwardType, |
| 4567 typename Bound9UnwrapTraits::ForwardType, |
| 4568 typename CallbackParamTraits<X10>::ForwardType x10)> |
| 4569 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4570 x9, x10); |
1356 } | 4571 } |
1357 }; | 4572 }; |
1358 | 4573 |
1359 // Arity 4 -> 0. | 4574 // Arity 10 -> 0. |
1360 template <typename StorageType, typename R,typename X1, typename X2, | 4575 template <typename StorageType, typename R,typename X1, typename X2, |
1361 typename X3, typename X4> | 4576 typename X3, typename X4, typename X5, typename X6, typename X7, |
1362 struct Invoker<4, StorageType, R(X1, X2, X3, X4)> { | 4577 typename X8, typename X9, typename X10> |
| 4578 struct Invoker<10, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { |
1363 typedef R(RunType)(BindStateBase*); | 4579 typedef R(RunType)(BindStateBase*); |
1364 | 4580 |
1365 typedef R(UnboundRunType)(); | 4581 typedef R(UnboundRunType)(); |
1366 | 4582 |
1367 static R Run(BindStateBase* base) { | 4583 static R Run(BindStateBase* base) { |
1368 StorageType* storage = static_cast<StorageType*>(base); | 4584 StorageType* storage = static_cast<StorageType*>(base); |
1369 | 4585 |
1370 // Local references to make debugger stepping easier. If in a debugger, | 4586 // Local references to make debugger stepping easier. If in a debugger, |
1371 // you really want to warp ahead and step through the | 4587 // you really want to warp ahead and step through the |
1372 // InvokeHelper<>::MakeItSo() call below. | 4588 // InvokeHelper<>::MakeItSo() call below. |
1373 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4589 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1374 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4590 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1375 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 4591 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1376 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 4592 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 4593 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 4594 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 4595 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 4596 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 4597 typedef typename StorageType::Bound9UnwrapTraits Bound9UnwrapTraits; |
| 4598 typedef typename StorageType::Bound10UnwrapTraits Bound10UnwrapTraits; |
1377 | 4599 |
1378 typename Bound1UnwrapTraits::ForwardType x1 = | 4600 typename Bound1UnwrapTraits::ForwardType x1 = |
1379 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4601 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1380 typename Bound2UnwrapTraits::ForwardType x2 = | 4602 typename Bound2UnwrapTraits::ForwardType x2 = |
1381 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4603 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1382 typename Bound3UnwrapTraits::ForwardType x3 = | 4604 typename Bound3UnwrapTraits::ForwardType x3 = |
1383 Bound3UnwrapTraits::Unwrap(storage->p3_); | 4605 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1384 typename Bound4UnwrapTraits::ForwardType x4 = | 4606 typename Bound4UnwrapTraits::ForwardType x4 = |
1385 Bound4UnwrapTraits::Unwrap(storage->p4_); | 4607 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 4608 typename Bound5UnwrapTraits::ForwardType x5 = |
| 4609 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 4610 typename Bound6UnwrapTraits::ForwardType x6 = |
| 4611 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 4612 typename Bound7UnwrapTraits::ForwardType x7 = |
| 4613 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 4614 typename Bound8UnwrapTraits::ForwardType x8 = |
| 4615 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 4616 typename Bound9UnwrapTraits::ForwardType x9 = |
| 4617 Bound9UnwrapTraits::Unwrap(storage->p9_); |
| 4618 typename Bound10UnwrapTraits::ForwardType x10 = |
| 4619 Bound10UnwrapTraits::Unwrap(storage->p10_); |
1386 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4620 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1387 typename StorageType::RunnableType, | 4621 typename StorageType::RunnableType, |
1388 void(typename Bound1UnwrapTraits::ForwardType, | 4622 void(typename Bound1UnwrapTraits::ForwardType, |
1389 typename Bound2UnwrapTraits::ForwardType, | 4623 typename Bound2UnwrapTraits::ForwardType, |
1390 typename Bound3UnwrapTraits::ForwardType, | 4624 typename Bound3UnwrapTraits::ForwardType, |
1391 typename Bound4UnwrapTraits::ForwardType)> | 4625 typename Bound4UnwrapTraits::ForwardType, |
1392 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); | 4626 typename Bound5UnwrapTraits::ForwardType, |
| 4627 typename Bound6UnwrapTraits::ForwardType, |
| 4628 typename Bound7UnwrapTraits::ForwardType, |
| 4629 typename Bound8UnwrapTraits::ForwardType, |
| 4630 typename Bound9UnwrapTraits::ForwardType, |
| 4631 typename Bound10UnwrapTraits::ForwardType)> |
| 4632 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4633 x9, x10); |
1393 } | 4634 } |
1394 }; | 4635 }; |
1395 | 4636 |
1396 // Arity 5 -> 5. | 4637 // Arity 11 -> 11. |
1397 template <typename StorageType, typename R,typename X1, typename X2, | 4638 template <typename StorageType, typename R,typename X1, typename X2, |
1398 typename X3, typename X4, typename X5> | 4639 typename X3, typename X4, typename X5, typename X6, typename X7, |
1399 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5)> { | 4640 typename X8, typename X9, typename X10, typename X11> |
| 4641 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4642 X11)> { |
1400 typedef R(RunType)(BindStateBase*, | 4643 typedef R(RunType)(BindStateBase*, |
1401 typename CallbackParamTraits<X1>::ForwardType, | 4644 typename CallbackParamTraits<X1>::ForwardType, |
1402 typename CallbackParamTraits<X2>::ForwardType, | 4645 typename CallbackParamTraits<X2>::ForwardType, |
1403 typename CallbackParamTraits<X3>::ForwardType, | 4646 typename CallbackParamTraits<X3>::ForwardType, |
1404 typename CallbackParamTraits<X4>::ForwardType, | 4647 typename CallbackParamTraits<X4>::ForwardType, |
1405 typename CallbackParamTraits<X5>::ForwardType); | 4648 typename CallbackParamTraits<X5>::ForwardType, |
| 4649 typename CallbackParamTraits<X6>::ForwardType, |
| 4650 typename CallbackParamTraits<X7>::ForwardType, |
| 4651 typename CallbackParamTraits<X8>::ForwardType, |
| 4652 typename CallbackParamTraits<X9>::ForwardType, |
| 4653 typename CallbackParamTraits<X10>::ForwardType, |
| 4654 typename CallbackParamTraits<X11>::ForwardType); |
1406 | 4655 |
1407 typedef R(UnboundRunType)(X1, X2, X3, X4, X5); | 4656 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11); |
1408 | 4657 |
1409 static R Run(BindStateBase* base, | 4658 static R Run(BindStateBase* base, |
1410 typename CallbackParamTraits<X1>::ForwardType x1, | 4659 typename CallbackParamTraits<X1>::ForwardType x1, |
1411 typename CallbackParamTraits<X2>::ForwardType x2, | 4660 typename CallbackParamTraits<X2>::ForwardType x2, |
1412 typename CallbackParamTraits<X3>::ForwardType x3, | 4661 typename CallbackParamTraits<X3>::ForwardType x3, |
1413 typename CallbackParamTraits<X4>::ForwardType x4, | 4662 typename CallbackParamTraits<X4>::ForwardType x4, |
1414 typename CallbackParamTraits<X5>::ForwardType x5) { | 4663 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4664 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4665 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4666 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4667 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4668 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4669 typename CallbackParamTraits<X11>::ForwardType x11) { |
1415 StorageType* storage = static_cast<StorageType*>(base); | 4670 StorageType* storage = static_cast<StorageType*>(base); |
1416 | 4671 |
1417 // Local references to make debugger stepping easier. If in a debugger, | 4672 // Local references to make debugger stepping easier. If in a debugger, |
1418 // you really want to warp ahead and step through the | 4673 // you really want to warp ahead and step through the |
1419 // InvokeHelper<>::MakeItSo() call below. | 4674 // InvokeHelper<>::MakeItSo() call below. |
1420 | 4675 |
1421 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4676 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1422 typename StorageType::RunnableType, | 4677 typename StorageType::RunnableType, |
1423 void(typename CallbackParamTraits<X1>::ForwardType x1, | 4678 void(typename CallbackParamTraits<X1>::ForwardType x1, |
1424 typename CallbackParamTraits<X2>::ForwardType x2, | 4679 typename CallbackParamTraits<X2>::ForwardType x2, |
1425 typename CallbackParamTraits<X3>::ForwardType x3, | 4680 typename CallbackParamTraits<X3>::ForwardType x3, |
1426 typename CallbackParamTraits<X4>::ForwardType x4, | 4681 typename CallbackParamTraits<X4>::ForwardType x4, |
1427 typename CallbackParamTraits<X5>::ForwardType x5)> | 4682 typename CallbackParamTraits<X5>::ForwardType x5, |
1428 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); | 4683 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4684 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4685 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4686 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4687 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4688 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 4689 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4690 x9, x10, x11); |
1429 } | 4691 } |
1430 }; | 4692 }; |
1431 | 4693 |
1432 // Arity 5 -> 4. | 4694 // Arity 11 -> 10. |
1433 template <typename StorageType, typename R,typename X1, typename X2, | 4695 template <typename StorageType, typename R,typename X1, typename X2, |
1434 typename X3, typename X4, typename X5> | 4696 typename X3, typename X4, typename X5, typename X6, typename X7, |
1435 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5)> { | 4697 typename X8, typename X9, typename X10, typename X11> |
| 4698 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4699 X11)> { |
1436 typedef R(RunType)(BindStateBase*, | 4700 typedef R(RunType)(BindStateBase*, |
1437 typename CallbackParamTraits<X2>::ForwardType, | 4701 typename CallbackParamTraits<X2>::ForwardType, |
1438 typename CallbackParamTraits<X3>::ForwardType, | 4702 typename CallbackParamTraits<X3>::ForwardType, |
1439 typename CallbackParamTraits<X4>::ForwardType, | 4703 typename CallbackParamTraits<X4>::ForwardType, |
1440 typename CallbackParamTraits<X5>::ForwardType); | 4704 typename CallbackParamTraits<X5>::ForwardType, |
| 4705 typename CallbackParamTraits<X6>::ForwardType, |
| 4706 typename CallbackParamTraits<X7>::ForwardType, |
| 4707 typename CallbackParamTraits<X8>::ForwardType, |
| 4708 typename CallbackParamTraits<X9>::ForwardType, |
| 4709 typename CallbackParamTraits<X10>::ForwardType, |
| 4710 typename CallbackParamTraits<X11>::ForwardType); |
1441 | 4711 |
1442 typedef R(UnboundRunType)(X2, X3, X4, X5); | 4712 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8, X9, X10, X11); |
1443 | 4713 |
1444 static R Run(BindStateBase* base, | 4714 static R Run(BindStateBase* base, |
1445 typename CallbackParamTraits<X2>::ForwardType x2, | 4715 typename CallbackParamTraits<X2>::ForwardType x2, |
1446 typename CallbackParamTraits<X3>::ForwardType x3, | 4716 typename CallbackParamTraits<X3>::ForwardType x3, |
1447 typename CallbackParamTraits<X4>::ForwardType x4, | 4717 typename CallbackParamTraits<X4>::ForwardType x4, |
1448 typename CallbackParamTraits<X5>::ForwardType x5) { | 4718 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4719 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4720 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4721 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4722 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4723 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4724 typename CallbackParamTraits<X11>::ForwardType x11) { |
1449 StorageType* storage = static_cast<StorageType*>(base); | 4725 StorageType* storage = static_cast<StorageType*>(base); |
1450 | 4726 |
1451 // Local references to make debugger stepping easier. If in a debugger, | 4727 // Local references to make debugger stepping easier. If in a debugger, |
1452 // you really want to warp ahead and step through the | 4728 // you really want to warp ahead and step through the |
1453 // InvokeHelper<>::MakeItSo() call below. | 4729 // InvokeHelper<>::MakeItSo() call below. |
1454 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4730 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1455 | 4731 |
1456 typename Bound1UnwrapTraits::ForwardType x1 = | 4732 typename Bound1UnwrapTraits::ForwardType x1 = |
1457 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4733 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1458 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4734 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1459 typename StorageType::RunnableType, | 4735 typename StorageType::RunnableType, |
1460 void(typename Bound1UnwrapTraits::ForwardType, | 4736 void(typename Bound1UnwrapTraits::ForwardType, |
1461 typename CallbackParamTraits<X2>::ForwardType x2, | 4737 typename CallbackParamTraits<X2>::ForwardType x2, |
1462 typename CallbackParamTraits<X3>::ForwardType x3, | 4738 typename CallbackParamTraits<X3>::ForwardType x3, |
1463 typename CallbackParamTraits<X4>::ForwardType x4, | 4739 typename CallbackParamTraits<X4>::ForwardType x4, |
1464 typename CallbackParamTraits<X5>::ForwardType x5)> | 4740 typename CallbackParamTraits<X5>::ForwardType x5, |
1465 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); | 4741 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4742 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4743 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4744 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4745 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4746 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 4747 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4748 x9, x10, x11); |
1466 } | 4749 } |
1467 }; | 4750 }; |
1468 | 4751 |
1469 // Arity 5 -> 3. | 4752 // Arity 11 -> 9. |
1470 template <typename StorageType, typename R,typename X1, typename X2, | 4753 template <typename StorageType, typename R,typename X1, typename X2, |
1471 typename X3, typename X4, typename X5> | 4754 typename X3, typename X4, typename X5, typename X6, typename X7, |
1472 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5)> { | 4755 typename X8, typename X9, typename X10, typename X11> |
| 4756 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4757 X11)> { |
1473 typedef R(RunType)(BindStateBase*, | 4758 typedef R(RunType)(BindStateBase*, |
1474 typename CallbackParamTraits<X3>::ForwardType, | 4759 typename CallbackParamTraits<X3>::ForwardType, |
1475 typename CallbackParamTraits<X4>::ForwardType, | 4760 typename CallbackParamTraits<X4>::ForwardType, |
1476 typename CallbackParamTraits<X5>::ForwardType); | 4761 typename CallbackParamTraits<X5>::ForwardType, |
| 4762 typename CallbackParamTraits<X6>::ForwardType, |
| 4763 typename CallbackParamTraits<X7>::ForwardType, |
| 4764 typename CallbackParamTraits<X8>::ForwardType, |
| 4765 typename CallbackParamTraits<X9>::ForwardType, |
| 4766 typename CallbackParamTraits<X10>::ForwardType, |
| 4767 typename CallbackParamTraits<X11>::ForwardType); |
1477 | 4768 |
1478 typedef R(UnboundRunType)(X3, X4, X5); | 4769 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8, X9, X10, X11); |
1479 | 4770 |
1480 static R Run(BindStateBase* base, | 4771 static R Run(BindStateBase* base, |
1481 typename CallbackParamTraits<X3>::ForwardType x3, | 4772 typename CallbackParamTraits<X3>::ForwardType x3, |
1482 typename CallbackParamTraits<X4>::ForwardType x4, | 4773 typename CallbackParamTraits<X4>::ForwardType x4, |
1483 typename CallbackParamTraits<X5>::ForwardType x5) { | 4774 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4775 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4776 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4777 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4778 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4779 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4780 typename CallbackParamTraits<X11>::ForwardType x11) { |
1484 StorageType* storage = static_cast<StorageType*>(base); | 4781 StorageType* storage = static_cast<StorageType*>(base); |
1485 | 4782 |
1486 // Local references to make debugger stepping easier. If in a debugger, | 4783 // Local references to make debugger stepping easier. If in a debugger, |
1487 // you really want to warp ahead and step through the | 4784 // you really want to warp ahead and step through the |
1488 // InvokeHelper<>::MakeItSo() call below. | 4785 // InvokeHelper<>::MakeItSo() call below. |
1489 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4786 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1490 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4787 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1491 | 4788 |
1492 typename Bound1UnwrapTraits::ForwardType x1 = | 4789 typename Bound1UnwrapTraits::ForwardType x1 = |
1493 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4790 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1494 typename Bound2UnwrapTraits::ForwardType x2 = | 4791 typename Bound2UnwrapTraits::ForwardType x2 = |
1495 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4792 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1496 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4793 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1497 typename StorageType::RunnableType, | 4794 typename StorageType::RunnableType, |
1498 void(typename Bound1UnwrapTraits::ForwardType, | 4795 void(typename Bound1UnwrapTraits::ForwardType, |
1499 typename Bound2UnwrapTraits::ForwardType, | 4796 typename Bound2UnwrapTraits::ForwardType, |
1500 typename CallbackParamTraits<X3>::ForwardType x3, | 4797 typename CallbackParamTraits<X3>::ForwardType x3, |
1501 typename CallbackParamTraits<X4>::ForwardType x4, | 4798 typename CallbackParamTraits<X4>::ForwardType x4, |
1502 typename CallbackParamTraits<X5>::ForwardType x5)> | 4799 typename CallbackParamTraits<X5>::ForwardType x5, |
1503 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); | 4800 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4801 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4802 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4803 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4804 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4805 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 4806 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4807 x9, x10, x11); |
1504 } | 4808 } |
1505 }; | 4809 }; |
1506 | 4810 |
1507 // Arity 5 -> 2. | 4811 // Arity 11 -> 8. |
1508 template <typename StorageType, typename R,typename X1, typename X2, | 4812 template <typename StorageType, typename R,typename X1, typename X2, |
1509 typename X3, typename X4, typename X5> | 4813 typename X3, typename X4, typename X5, typename X6, typename X7, |
1510 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5)> { | 4814 typename X8, typename X9, typename X10, typename X11> |
| 4815 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4816 X11)> { |
1511 typedef R(RunType)(BindStateBase*, | 4817 typedef R(RunType)(BindStateBase*, |
1512 typename CallbackParamTraits<X4>::ForwardType, | 4818 typename CallbackParamTraits<X4>::ForwardType, |
1513 typename CallbackParamTraits<X5>::ForwardType); | 4819 typename CallbackParamTraits<X5>::ForwardType, |
| 4820 typename CallbackParamTraits<X6>::ForwardType, |
| 4821 typename CallbackParamTraits<X7>::ForwardType, |
| 4822 typename CallbackParamTraits<X8>::ForwardType, |
| 4823 typename CallbackParamTraits<X9>::ForwardType, |
| 4824 typename CallbackParamTraits<X10>::ForwardType, |
| 4825 typename CallbackParamTraits<X11>::ForwardType); |
1514 | 4826 |
1515 typedef R(UnboundRunType)(X4, X5); | 4827 typedef R(UnboundRunType)(X4, X5, X6, X7, X8, X9, X10, X11); |
1516 | 4828 |
1517 static R Run(BindStateBase* base, | 4829 static R Run(BindStateBase* base, |
1518 typename CallbackParamTraits<X4>::ForwardType x4, | 4830 typename CallbackParamTraits<X4>::ForwardType x4, |
1519 typename CallbackParamTraits<X5>::ForwardType x5) { | 4831 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4832 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4833 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4834 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4835 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4836 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4837 typename CallbackParamTraits<X11>::ForwardType x11) { |
1520 StorageType* storage = static_cast<StorageType*>(base); | 4838 StorageType* storage = static_cast<StorageType*>(base); |
1521 | 4839 |
1522 // Local references to make debugger stepping easier. If in a debugger, | 4840 // Local references to make debugger stepping easier. If in a debugger, |
1523 // you really want to warp ahead and step through the | 4841 // you really want to warp ahead and step through the |
1524 // InvokeHelper<>::MakeItSo() call below. | 4842 // InvokeHelper<>::MakeItSo() call below. |
1525 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4843 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1526 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4844 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1527 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 4845 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1528 | 4846 |
1529 typename Bound1UnwrapTraits::ForwardType x1 = | 4847 typename Bound1UnwrapTraits::ForwardType x1 = |
1530 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4848 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1531 typename Bound2UnwrapTraits::ForwardType x2 = | 4849 typename Bound2UnwrapTraits::ForwardType x2 = |
1532 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4850 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1533 typename Bound3UnwrapTraits::ForwardType x3 = | 4851 typename Bound3UnwrapTraits::ForwardType x3 = |
1534 Bound3UnwrapTraits::Unwrap(storage->p3_); | 4852 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1535 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4853 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1536 typename StorageType::RunnableType, | 4854 typename StorageType::RunnableType, |
1537 void(typename Bound1UnwrapTraits::ForwardType, | 4855 void(typename Bound1UnwrapTraits::ForwardType, |
1538 typename Bound2UnwrapTraits::ForwardType, | 4856 typename Bound2UnwrapTraits::ForwardType, |
1539 typename Bound3UnwrapTraits::ForwardType, | 4857 typename Bound3UnwrapTraits::ForwardType, |
1540 typename CallbackParamTraits<X4>::ForwardType x4, | 4858 typename CallbackParamTraits<X4>::ForwardType x4, |
1541 typename CallbackParamTraits<X5>::ForwardType x5)> | 4859 typename CallbackParamTraits<X5>::ForwardType x5, |
1542 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); | 4860 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4861 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4862 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4863 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4864 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4865 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 4866 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4867 x9, x10, x11); |
1543 } | 4868 } |
1544 }; | 4869 }; |
1545 | 4870 |
1546 // Arity 5 -> 1. | 4871 // Arity 11 -> 7. |
1547 template <typename StorageType, typename R,typename X1, typename X2, | 4872 template <typename StorageType, typename R,typename X1, typename X2, |
1548 typename X3, typename X4, typename X5> | 4873 typename X3, typename X4, typename X5, typename X6, typename X7, |
1549 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5)> { | 4874 typename X8, typename X9, typename X10, typename X11> |
| 4875 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4876 X11)> { |
1550 typedef R(RunType)(BindStateBase*, | 4877 typedef R(RunType)(BindStateBase*, |
1551 typename CallbackParamTraits<X5>::ForwardType); | 4878 typename CallbackParamTraits<X5>::ForwardType, |
| 4879 typename CallbackParamTraits<X6>::ForwardType, |
| 4880 typename CallbackParamTraits<X7>::ForwardType, |
| 4881 typename CallbackParamTraits<X8>::ForwardType, |
| 4882 typename CallbackParamTraits<X9>::ForwardType, |
| 4883 typename CallbackParamTraits<X10>::ForwardType, |
| 4884 typename CallbackParamTraits<X11>::ForwardType); |
1552 | 4885 |
1553 typedef R(UnboundRunType)(X5); | 4886 typedef R(UnboundRunType)(X5, X6, X7, X8, X9, X10, X11); |
1554 | 4887 |
1555 static R Run(BindStateBase* base, | 4888 static R Run(BindStateBase* base, |
1556 typename CallbackParamTraits<X5>::ForwardType x5) { | 4889 typename CallbackParamTraits<X5>::ForwardType x5, |
| 4890 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4891 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4892 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4893 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4894 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4895 typename CallbackParamTraits<X11>::ForwardType x11) { |
1557 StorageType* storage = static_cast<StorageType*>(base); | 4896 StorageType* storage = static_cast<StorageType*>(base); |
1558 | 4897 |
1559 // Local references to make debugger stepping easier. If in a debugger, | 4898 // Local references to make debugger stepping easier. If in a debugger, |
1560 // you really want to warp ahead and step through the | 4899 // you really want to warp ahead and step through the |
1561 // InvokeHelper<>::MakeItSo() call below. | 4900 // InvokeHelper<>::MakeItSo() call below. |
1562 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4901 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1563 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4902 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1564 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 4903 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1565 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 4904 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
1566 | 4905 |
1567 typename Bound1UnwrapTraits::ForwardType x1 = | 4906 typename Bound1UnwrapTraits::ForwardType x1 = |
1568 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4907 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1569 typename Bound2UnwrapTraits::ForwardType x2 = | 4908 typename Bound2UnwrapTraits::ForwardType x2 = |
1570 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4909 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1571 typename Bound3UnwrapTraits::ForwardType x3 = | 4910 typename Bound3UnwrapTraits::ForwardType x3 = |
1572 Bound3UnwrapTraits::Unwrap(storage->p3_); | 4911 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1573 typename Bound4UnwrapTraits::ForwardType x4 = | 4912 typename Bound4UnwrapTraits::ForwardType x4 = |
1574 Bound4UnwrapTraits::Unwrap(storage->p4_); | 4913 Bound4UnwrapTraits::Unwrap(storage->p4_); |
1575 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4914 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1576 typename StorageType::RunnableType, | 4915 typename StorageType::RunnableType, |
1577 void(typename Bound1UnwrapTraits::ForwardType, | 4916 void(typename Bound1UnwrapTraits::ForwardType, |
1578 typename Bound2UnwrapTraits::ForwardType, | 4917 typename Bound2UnwrapTraits::ForwardType, |
1579 typename Bound3UnwrapTraits::ForwardType, | 4918 typename Bound3UnwrapTraits::ForwardType, |
1580 typename Bound4UnwrapTraits::ForwardType, | 4919 typename Bound4UnwrapTraits::ForwardType, |
1581 typename CallbackParamTraits<X5>::ForwardType x5)> | 4920 typename CallbackParamTraits<X5>::ForwardType x5, |
1582 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); | 4921 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4922 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4923 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4924 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4925 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4926 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 4927 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4928 x9, x10, x11); |
1583 } | 4929 } |
1584 }; | 4930 }; |
1585 | 4931 |
1586 // Arity 5 -> 0. | 4932 // Arity 11 -> 6. |
1587 template <typename StorageType, typename R,typename X1, typename X2, | 4933 template <typename StorageType, typename R,typename X1, typename X2, |
1588 typename X3, typename X4, typename X5> | 4934 typename X3, typename X4, typename X5, typename X6, typename X7, |
1589 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5)> { | 4935 typename X8, typename X9, typename X10, typename X11> |
1590 typedef R(RunType)(BindStateBase*); | 4936 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4937 X11)> { |
| 4938 typedef R(RunType)(BindStateBase*, |
| 4939 typename CallbackParamTraits<X6>::ForwardType, |
| 4940 typename CallbackParamTraits<X7>::ForwardType, |
| 4941 typename CallbackParamTraits<X8>::ForwardType, |
| 4942 typename CallbackParamTraits<X9>::ForwardType, |
| 4943 typename CallbackParamTraits<X10>::ForwardType, |
| 4944 typename CallbackParamTraits<X11>::ForwardType); |
1591 | 4945 |
1592 typedef R(UnboundRunType)(); | 4946 typedef R(UnboundRunType)(X6, X7, X8, X9, X10, X11); |
1593 | 4947 |
1594 static R Run(BindStateBase* base) { | 4948 static R Run(BindStateBase* base, |
| 4949 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4950 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4951 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4952 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4953 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4954 typename CallbackParamTraits<X11>::ForwardType x11) { |
1595 StorageType* storage = static_cast<StorageType*>(base); | 4955 StorageType* storage = static_cast<StorageType*>(base); |
1596 | 4956 |
1597 // Local references to make debugger stepping easier. If in a debugger, | 4957 // Local references to make debugger stepping easier. If in a debugger, |
1598 // you really want to warp ahead and step through the | 4958 // you really want to warp ahead and step through the |
1599 // InvokeHelper<>::MakeItSo() call below. | 4959 // InvokeHelper<>::MakeItSo() call below. |
1600 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 4960 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1601 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 4961 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1602 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 4962 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1603 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 4963 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
1604 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | 4964 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
1605 | 4965 |
1606 typename Bound1UnwrapTraits::ForwardType x1 = | 4966 typename Bound1UnwrapTraits::ForwardType x1 = |
1607 Bound1UnwrapTraits::Unwrap(storage->p1_); | 4967 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1608 typename Bound2UnwrapTraits::ForwardType x2 = | 4968 typename Bound2UnwrapTraits::ForwardType x2 = |
1609 Bound2UnwrapTraits::Unwrap(storage->p2_); | 4969 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1610 typename Bound3UnwrapTraits::ForwardType x3 = | 4970 typename Bound3UnwrapTraits::ForwardType x3 = |
1611 Bound3UnwrapTraits::Unwrap(storage->p3_); | 4971 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1612 typename Bound4UnwrapTraits::ForwardType x4 = | 4972 typename Bound4UnwrapTraits::ForwardType x4 = |
1613 Bound4UnwrapTraits::Unwrap(storage->p4_); | 4973 Bound4UnwrapTraits::Unwrap(storage->p4_); |
1614 typename Bound5UnwrapTraits::ForwardType x5 = | 4974 typename Bound5UnwrapTraits::ForwardType x5 = |
1615 Bound5UnwrapTraits::Unwrap(storage->p5_); | 4975 Bound5UnwrapTraits::Unwrap(storage->p5_); |
1616 return InvokeHelper<StorageType::IsWeakCall::value, R, | 4976 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1617 typename StorageType::RunnableType, | 4977 typename StorageType::RunnableType, |
1618 void(typename Bound1UnwrapTraits::ForwardType, | 4978 void(typename Bound1UnwrapTraits::ForwardType, |
1619 typename Bound2UnwrapTraits::ForwardType, | 4979 typename Bound2UnwrapTraits::ForwardType, |
1620 typename Bound3UnwrapTraits::ForwardType, | 4980 typename Bound3UnwrapTraits::ForwardType, |
1621 typename Bound4UnwrapTraits::ForwardType, | 4981 typename Bound4UnwrapTraits::ForwardType, |
1622 typename Bound5UnwrapTraits::ForwardType)> | 4982 typename Bound5UnwrapTraits::ForwardType, |
1623 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); | 4983 typename CallbackParamTraits<X6>::ForwardType x6, |
| 4984 typename CallbackParamTraits<X7>::ForwardType x7, |
| 4985 typename CallbackParamTraits<X8>::ForwardType x8, |
| 4986 typename CallbackParamTraits<X9>::ForwardType x9, |
| 4987 typename CallbackParamTraits<X10>::ForwardType x10, |
| 4988 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 4989 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 4990 x9, x10, x11); |
1624 } | 4991 } |
1625 }; | 4992 }; |
1626 | 4993 |
1627 // Arity 6 -> 6. | 4994 // Arity 11 -> 5. |
1628 template <typename StorageType, typename R,typename X1, typename X2, | 4995 template <typename StorageType, typename R,typename X1, typename X2, |
1629 typename X3, typename X4, typename X5, typename X6> | 4996 typename X3, typename X4, typename X5, typename X6, typename X7, |
1630 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6)> { | 4997 typename X8, typename X9, typename X10, typename X11> |
| 4998 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 4999 X11)> { |
1631 typedef R(RunType)(BindStateBase*, | 5000 typedef R(RunType)(BindStateBase*, |
1632 typename CallbackParamTraits<X1>::ForwardType, | 5001 typename CallbackParamTraits<X7>::ForwardType, |
1633 typename CallbackParamTraits<X2>::ForwardType, | 5002 typename CallbackParamTraits<X8>::ForwardType, |
1634 typename CallbackParamTraits<X3>::ForwardType, | 5003 typename CallbackParamTraits<X9>::ForwardType, |
1635 typename CallbackParamTraits<X4>::ForwardType, | 5004 typename CallbackParamTraits<X10>::ForwardType, |
1636 typename CallbackParamTraits<X5>::ForwardType, | 5005 typename CallbackParamTraits<X11>::ForwardType); |
1637 typename CallbackParamTraits<X6>::ForwardType); | |
1638 | 5006 |
1639 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6); | 5007 typedef R(UnboundRunType)(X7, X8, X9, X10, X11); |
1640 | 5008 |
1641 static R Run(BindStateBase* base, | 5009 static R Run(BindStateBase* base, |
1642 typename CallbackParamTraits<X1>::ForwardType x1, | 5010 typename CallbackParamTraits<X7>::ForwardType x7, |
1643 typename CallbackParamTraits<X2>::ForwardType x2, | 5011 typename CallbackParamTraits<X8>::ForwardType x8, |
1644 typename CallbackParamTraits<X3>::ForwardType x3, | 5012 typename CallbackParamTraits<X9>::ForwardType x9, |
1645 typename CallbackParamTraits<X4>::ForwardType x4, | 5013 typename CallbackParamTraits<X10>::ForwardType x10, |
1646 typename CallbackParamTraits<X5>::ForwardType x5, | 5014 typename CallbackParamTraits<X11>::ForwardType x11) { |
1647 typename CallbackParamTraits<X6>::ForwardType x6) { | |
1648 StorageType* storage = static_cast<StorageType*>(base); | |
1649 | |
1650 // Local references to make debugger stepping easier. If in a debugger, | |
1651 // you really want to warp ahead and step through the | |
1652 // InvokeHelper<>::MakeItSo() call below. | |
1653 | |
1654 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
1655 typename StorageType::RunnableType, | |
1656 void(typename CallbackParamTraits<X1>::ForwardType x1, | |
1657 typename CallbackParamTraits<X2>::ForwardType x2, | |
1658 typename CallbackParamTraits<X3>::ForwardType x3, | |
1659 typename CallbackParamTraits<X4>::ForwardType x4, | |
1660 typename CallbackParamTraits<X5>::ForwardType x5, | |
1661 typename CallbackParamTraits<X6>::ForwardType x6)> | |
1662 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | |
1663 } | |
1664 }; | |
1665 | |
1666 // Arity 6 -> 5. | |
1667 template <typename StorageType, typename R,typename X1, typename X2, | |
1668 typename X3, typename X4, typename X5, typename X6> | |
1669 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6)> { | |
1670 typedef R(RunType)(BindStateBase*, | |
1671 typename CallbackParamTraits<X2>::ForwardType, | |
1672 typename CallbackParamTraits<X3>::ForwardType, | |
1673 typename CallbackParamTraits<X4>::ForwardType, | |
1674 typename CallbackParamTraits<X5>::ForwardType, | |
1675 typename CallbackParamTraits<X6>::ForwardType); | |
1676 | |
1677 typedef R(UnboundRunType)(X2, X3, X4, X5, X6); | |
1678 | |
1679 static R Run(BindStateBase* base, | |
1680 typename CallbackParamTraits<X2>::ForwardType x2, | |
1681 typename CallbackParamTraits<X3>::ForwardType x3, | |
1682 typename CallbackParamTraits<X4>::ForwardType x4, | |
1683 typename CallbackParamTraits<X5>::ForwardType x5, | |
1684 typename CallbackParamTraits<X6>::ForwardType x6) { | |
1685 StorageType* storage = static_cast<StorageType*>(base); | 5015 StorageType* storage = static_cast<StorageType*>(base); |
1686 | 5016 |
1687 // Local references to make debugger stepping easier. If in a debugger, | 5017 // Local references to make debugger stepping easier. If in a debugger, |
1688 // you really want to warp ahead and step through the | 5018 // you really want to warp ahead and step through the |
1689 // InvokeHelper<>::MakeItSo() call below. | 5019 // InvokeHelper<>::MakeItSo() call below. |
1690 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 5020 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
| 5021 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 5022 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 5023 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 5024 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 5025 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
1691 | 5026 |
1692 typename Bound1UnwrapTraits::ForwardType x1 = | 5027 typename Bound1UnwrapTraits::ForwardType x1 = |
1693 Bound1UnwrapTraits::Unwrap(storage->p1_); | 5028 Bound1UnwrapTraits::Unwrap(storage->p1_); |
| 5029 typename Bound2UnwrapTraits::ForwardType x2 = |
| 5030 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 5031 typename Bound3UnwrapTraits::ForwardType x3 = |
| 5032 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 5033 typename Bound4UnwrapTraits::ForwardType x4 = |
| 5034 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 5035 typename Bound5UnwrapTraits::ForwardType x5 = |
| 5036 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 5037 typename Bound6UnwrapTraits::ForwardType x6 = |
| 5038 Bound6UnwrapTraits::Unwrap(storage->p6_); |
1694 return InvokeHelper<StorageType::IsWeakCall::value, R, | 5039 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1695 typename StorageType::RunnableType, | 5040 typename StorageType::RunnableType, |
1696 void(typename Bound1UnwrapTraits::ForwardType, | 5041 void(typename Bound1UnwrapTraits::ForwardType, |
1697 typename CallbackParamTraits<X2>::ForwardType x2, | 5042 typename Bound2UnwrapTraits::ForwardType, |
1698 typename CallbackParamTraits<X3>::ForwardType x3, | 5043 typename Bound3UnwrapTraits::ForwardType, |
1699 typename CallbackParamTraits<X4>::ForwardType x4, | 5044 typename Bound4UnwrapTraits::ForwardType, |
1700 typename CallbackParamTraits<X5>::ForwardType x5, | 5045 typename Bound5UnwrapTraits::ForwardType, |
1701 typename CallbackParamTraits<X6>::ForwardType x6)> | 5046 typename Bound6UnwrapTraits::ForwardType, |
1702 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | 5047 typename CallbackParamTraits<X7>::ForwardType x7, |
| 5048 typename CallbackParamTraits<X8>::ForwardType x8, |
| 5049 typename CallbackParamTraits<X9>::ForwardType x9, |
| 5050 typename CallbackParamTraits<X10>::ForwardType x10, |
| 5051 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 5052 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 5053 x9, x10, x11); |
1703 } | 5054 } |
1704 }; | 5055 }; |
1705 | 5056 |
1706 // Arity 6 -> 4. | 5057 // Arity 11 -> 4. |
1707 template <typename StorageType, typename R,typename X1, typename X2, | 5058 template <typename StorageType, typename R,typename X1, typename X2, |
1708 typename X3, typename X4, typename X5, typename X6> | 5059 typename X3, typename X4, typename X5, typename X6, typename X7, |
1709 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6)> { | 5060 typename X8, typename X9, typename X10, typename X11> |
| 5061 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 5062 X11)> { |
1710 typedef R(RunType)(BindStateBase*, | 5063 typedef R(RunType)(BindStateBase*, |
1711 typename CallbackParamTraits<X3>::ForwardType, | 5064 typename CallbackParamTraits<X8>::ForwardType, |
1712 typename CallbackParamTraits<X4>::ForwardType, | 5065 typename CallbackParamTraits<X9>::ForwardType, |
1713 typename CallbackParamTraits<X5>::ForwardType, | 5066 typename CallbackParamTraits<X10>::ForwardType, |
1714 typename CallbackParamTraits<X6>::ForwardType); | 5067 typename CallbackParamTraits<X11>::ForwardType); |
1715 | 5068 |
1716 typedef R(UnboundRunType)(X3, X4, X5, X6); | 5069 typedef R(UnboundRunType)(X8, X9, X10, X11); |
1717 | 5070 |
1718 static R Run(BindStateBase* base, | 5071 static R Run(BindStateBase* base, |
1719 typename CallbackParamTraits<X3>::ForwardType x3, | 5072 typename CallbackParamTraits<X8>::ForwardType x8, |
1720 typename CallbackParamTraits<X4>::ForwardType x4, | 5073 typename CallbackParamTraits<X9>::ForwardType x9, |
1721 typename CallbackParamTraits<X5>::ForwardType x5, | 5074 typename CallbackParamTraits<X10>::ForwardType x10, |
1722 typename CallbackParamTraits<X6>::ForwardType x6) { | 5075 typename CallbackParamTraits<X11>::ForwardType x11) { |
1723 StorageType* storage = static_cast<StorageType*>(base); | 5076 StorageType* storage = static_cast<StorageType*>(base); |
1724 | 5077 |
1725 // Local references to make debugger stepping easier. If in a debugger, | 5078 // Local references to make debugger stepping easier. If in a debugger, |
1726 // you really want to warp ahead and step through the | 5079 // you really want to warp ahead and step through the |
1727 // InvokeHelper<>::MakeItSo() call below. | 5080 // InvokeHelper<>::MakeItSo() call below. |
1728 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 5081 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1729 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 5082 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
| 5083 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 5084 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 5085 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 5086 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 5087 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
1730 | 5088 |
1731 typename Bound1UnwrapTraits::ForwardType x1 = | 5089 typename Bound1UnwrapTraits::ForwardType x1 = |
1732 Bound1UnwrapTraits::Unwrap(storage->p1_); | 5090 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1733 typename Bound2UnwrapTraits::ForwardType x2 = | 5091 typename Bound2UnwrapTraits::ForwardType x2 = |
1734 Bound2UnwrapTraits::Unwrap(storage->p2_); | 5092 Bound2UnwrapTraits::Unwrap(storage->p2_); |
| 5093 typename Bound3UnwrapTraits::ForwardType x3 = |
| 5094 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 5095 typename Bound4UnwrapTraits::ForwardType x4 = |
| 5096 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 5097 typename Bound5UnwrapTraits::ForwardType x5 = |
| 5098 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 5099 typename Bound6UnwrapTraits::ForwardType x6 = |
| 5100 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 5101 typename Bound7UnwrapTraits::ForwardType x7 = |
| 5102 Bound7UnwrapTraits::Unwrap(storage->p7_); |
1735 return InvokeHelper<StorageType::IsWeakCall::value, R, | 5103 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1736 typename StorageType::RunnableType, | 5104 typename StorageType::RunnableType, |
1737 void(typename Bound1UnwrapTraits::ForwardType, | 5105 void(typename Bound1UnwrapTraits::ForwardType, |
1738 typename Bound2UnwrapTraits::ForwardType, | 5106 typename Bound2UnwrapTraits::ForwardType, |
1739 typename CallbackParamTraits<X3>::ForwardType x3, | 5107 typename Bound3UnwrapTraits::ForwardType, |
1740 typename CallbackParamTraits<X4>::ForwardType x4, | 5108 typename Bound4UnwrapTraits::ForwardType, |
1741 typename CallbackParamTraits<X5>::ForwardType x5, | 5109 typename Bound5UnwrapTraits::ForwardType, |
1742 typename CallbackParamTraits<X6>::ForwardType x6)> | 5110 typename Bound6UnwrapTraits::ForwardType, |
1743 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | 5111 typename Bound7UnwrapTraits::ForwardType, |
| 5112 typename CallbackParamTraits<X8>::ForwardType x8, |
| 5113 typename CallbackParamTraits<X9>::ForwardType x9, |
| 5114 typename CallbackParamTraits<X10>::ForwardType x10, |
| 5115 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 5116 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 5117 x9, x10, x11); |
1744 } | 5118 } |
1745 }; | 5119 }; |
1746 | 5120 |
1747 // Arity 6 -> 3. | 5121 // Arity 11 -> 3. |
1748 template <typename StorageType, typename R,typename X1, typename X2, | 5122 template <typename StorageType, typename R,typename X1, typename X2, |
1749 typename X3, typename X4, typename X5, typename X6> | 5123 typename X3, typename X4, typename X5, typename X6, typename X7, |
1750 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6)> { | 5124 typename X8, typename X9, typename X10, typename X11> |
| 5125 struct Invoker<8, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 5126 X11)> { |
1751 typedef R(RunType)(BindStateBase*, | 5127 typedef R(RunType)(BindStateBase*, |
1752 typename CallbackParamTraits<X4>::ForwardType, | 5128 typename CallbackParamTraits<X9>::ForwardType, |
1753 typename CallbackParamTraits<X5>::ForwardType, | 5129 typename CallbackParamTraits<X10>::ForwardType, |
1754 typename CallbackParamTraits<X6>::ForwardType); | 5130 typename CallbackParamTraits<X11>::ForwardType); |
1755 | 5131 |
1756 typedef R(UnboundRunType)(X4, X5, X6); | 5132 typedef R(UnboundRunType)(X9, X10, X11); |
1757 | 5133 |
1758 static R Run(BindStateBase* base, | 5134 static R Run(BindStateBase* base, |
1759 typename CallbackParamTraits<X4>::ForwardType x4, | 5135 typename CallbackParamTraits<X9>::ForwardType x9, |
1760 typename CallbackParamTraits<X5>::ForwardType x5, | 5136 typename CallbackParamTraits<X10>::ForwardType x10, |
1761 typename CallbackParamTraits<X6>::ForwardType x6) { | 5137 typename CallbackParamTraits<X11>::ForwardType x11) { |
1762 StorageType* storage = static_cast<StorageType*>(base); | 5138 StorageType* storage = static_cast<StorageType*>(base); |
1763 | 5139 |
1764 // Local references to make debugger stepping easier. If in a debugger, | 5140 // Local references to make debugger stepping easier. If in a debugger, |
1765 // you really want to warp ahead and step through the | 5141 // you really want to warp ahead and step through the |
1766 // InvokeHelper<>::MakeItSo() call below. | 5142 // InvokeHelper<>::MakeItSo() call below. |
1767 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 5143 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1768 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 5144 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1769 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 5145 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
| 5146 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 5147 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 5148 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 5149 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 5150 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
1770 | 5151 |
1771 typename Bound1UnwrapTraits::ForwardType x1 = | 5152 typename Bound1UnwrapTraits::ForwardType x1 = |
1772 Bound1UnwrapTraits::Unwrap(storage->p1_); | 5153 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1773 typename Bound2UnwrapTraits::ForwardType x2 = | 5154 typename Bound2UnwrapTraits::ForwardType x2 = |
1774 Bound2UnwrapTraits::Unwrap(storage->p2_); | 5155 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1775 typename Bound3UnwrapTraits::ForwardType x3 = | 5156 typename Bound3UnwrapTraits::ForwardType x3 = |
1776 Bound3UnwrapTraits::Unwrap(storage->p3_); | 5157 Bound3UnwrapTraits::Unwrap(storage->p3_); |
| 5158 typename Bound4UnwrapTraits::ForwardType x4 = |
| 5159 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 5160 typename Bound5UnwrapTraits::ForwardType x5 = |
| 5161 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 5162 typename Bound6UnwrapTraits::ForwardType x6 = |
| 5163 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 5164 typename Bound7UnwrapTraits::ForwardType x7 = |
| 5165 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 5166 typename Bound8UnwrapTraits::ForwardType x8 = |
| 5167 Bound8UnwrapTraits::Unwrap(storage->p8_); |
1777 return InvokeHelper<StorageType::IsWeakCall::value, R, | 5168 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1778 typename StorageType::RunnableType, | 5169 typename StorageType::RunnableType, |
1779 void(typename Bound1UnwrapTraits::ForwardType, | 5170 void(typename Bound1UnwrapTraits::ForwardType, |
1780 typename Bound2UnwrapTraits::ForwardType, | 5171 typename Bound2UnwrapTraits::ForwardType, |
1781 typename Bound3UnwrapTraits::ForwardType, | 5172 typename Bound3UnwrapTraits::ForwardType, |
1782 typename CallbackParamTraits<X4>::ForwardType x4, | 5173 typename Bound4UnwrapTraits::ForwardType, |
1783 typename CallbackParamTraits<X5>::ForwardType x5, | 5174 typename Bound5UnwrapTraits::ForwardType, |
1784 typename CallbackParamTraits<X6>::ForwardType x6)> | 5175 typename Bound6UnwrapTraits::ForwardType, |
1785 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | 5176 typename Bound7UnwrapTraits::ForwardType, |
| 5177 typename Bound8UnwrapTraits::ForwardType, |
| 5178 typename CallbackParamTraits<X9>::ForwardType x9, |
| 5179 typename CallbackParamTraits<X10>::ForwardType x10, |
| 5180 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 5181 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 5182 x9, x10, x11); |
1786 } | 5183 } |
1787 }; | 5184 }; |
1788 | 5185 |
1789 // Arity 6 -> 2. | 5186 // Arity 11 -> 2. |
1790 template <typename StorageType, typename R,typename X1, typename X2, | 5187 template <typename StorageType, typename R,typename X1, typename X2, |
1791 typename X3, typename X4, typename X5, typename X6> | 5188 typename X3, typename X4, typename X5, typename X6, typename X7, |
1792 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6)> { | 5189 typename X8, typename X9, typename X10, typename X11> |
| 5190 struct Invoker<9, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 5191 X11)> { |
1793 typedef R(RunType)(BindStateBase*, | 5192 typedef R(RunType)(BindStateBase*, |
1794 typename CallbackParamTraits<X5>::ForwardType, | 5193 typename CallbackParamTraits<X10>::ForwardType, |
1795 typename CallbackParamTraits<X6>::ForwardType); | 5194 typename CallbackParamTraits<X11>::ForwardType); |
1796 | 5195 |
1797 typedef R(UnboundRunType)(X5, X6); | 5196 typedef R(UnboundRunType)(X10, X11); |
1798 | 5197 |
1799 static R Run(BindStateBase* base, | 5198 static R Run(BindStateBase* base, |
1800 typename CallbackParamTraits<X5>::ForwardType x5, | 5199 typename CallbackParamTraits<X10>::ForwardType x10, |
1801 typename CallbackParamTraits<X6>::ForwardType x6) { | 5200 typename CallbackParamTraits<X11>::ForwardType x11) { |
1802 StorageType* storage = static_cast<StorageType*>(base); | 5201 StorageType* storage = static_cast<StorageType*>(base); |
1803 | 5202 |
1804 // Local references to make debugger stepping easier. If in a debugger, | 5203 // Local references to make debugger stepping easier. If in a debugger, |
1805 // you really want to warp ahead and step through the | 5204 // you really want to warp ahead and step through the |
1806 // InvokeHelper<>::MakeItSo() call below. | 5205 // InvokeHelper<>::MakeItSo() call below. |
1807 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 5206 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1808 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 5207 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1809 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 5208 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1810 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 5209 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
| 5210 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 5211 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 5212 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 5213 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 5214 typedef typename StorageType::Bound9UnwrapTraits Bound9UnwrapTraits; |
1811 | 5215 |
1812 typename Bound1UnwrapTraits::ForwardType x1 = | 5216 typename Bound1UnwrapTraits::ForwardType x1 = |
1813 Bound1UnwrapTraits::Unwrap(storage->p1_); | 5217 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1814 typename Bound2UnwrapTraits::ForwardType x2 = | 5218 typename Bound2UnwrapTraits::ForwardType x2 = |
1815 Bound2UnwrapTraits::Unwrap(storage->p2_); | 5219 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1816 typename Bound3UnwrapTraits::ForwardType x3 = | 5220 typename Bound3UnwrapTraits::ForwardType x3 = |
1817 Bound3UnwrapTraits::Unwrap(storage->p3_); | 5221 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1818 typename Bound4UnwrapTraits::ForwardType x4 = | 5222 typename Bound4UnwrapTraits::ForwardType x4 = |
1819 Bound4UnwrapTraits::Unwrap(storage->p4_); | 5223 Bound4UnwrapTraits::Unwrap(storage->p4_); |
| 5224 typename Bound5UnwrapTraits::ForwardType x5 = |
| 5225 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 5226 typename Bound6UnwrapTraits::ForwardType x6 = |
| 5227 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 5228 typename Bound7UnwrapTraits::ForwardType x7 = |
| 5229 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 5230 typename Bound8UnwrapTraits::ForwardType x8 = |
| 5231 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 5232 typename Bound9UnwrapTraits::ForwardType x9 = |
| 5233 Bound9UnwrapTraits::Unwrap(storage->p9_); |
1820 return InvokeHelper<StorageType::IsWeakCall::value, R, | 5234 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1821 typename StorageType::RunnableType, | 5235 typename StorageType::RunnableType, |
1822 void(typename Bound1UnwrapTraits::ForwardType, | 5236 void(typename Bound1UnwrapTraits::ForwardType, |
1823 typename Bound2UnwrapTraits::ForwardType, | 5237 typename Bound2UnwrapTraits::ForwardType, |
1824 typename Bound3UnwrapTraits::ForwardType, | 5238 typename Bound3UnwrapTraits::ForwardType, |
1825 typename Bound4UnwrapTraits::ForwardType, | 5239 typename Bound4UnwrapTraits::ForwardType, |
1826 typename CallbackParamTraits<X5>::ForwardType x5, | 5240 typename Bound5UnwrapTraits::ForwardType, |
1827 typename CallbackParamTraits<X6>::ForwardType x6)> | 5241 typename Bound6UnwrapTraits::ForwardType, |
1828 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | 5242 typename Bound7UnwrapTraits::ForwardType, |
| 5243 typename Bound8UnwrapTraits::ForwardType, |
| 5244 typename Bound9UnwrapTraits::ForwardType, |
| 5245 typename CallbackParamTraits<X10>::ForwardType x10, |
| 5246 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 5247 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 5248 x9, x10, x11); |
1829 } | 5249 } |
1830 }; | 5250 }; |
1831 | 5251 |
1832 // Arity 6 -> 1. | 5252 // Arity 11 -> 1. |
1833 template <typename StorageType, typename R,typename X1, typename X2, | 5253 template <typename StorageType, typename R,typename X1, typename X2, |
1834 typename X3, typename X4, typename X5, typename X6> | 5254 typename X3, typename X4, typename X5, typename X6, typename X7, |
1835 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6)> { | 5255 typename X8, typename X9, typename X10, typename X11> |
| 5256 struct Invoker<10, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 5257 X11)> { |
1836 typedef R(RunType)(BindStateBase*, | 5258 typedef R(RunType)(BindStateBase*, |
1837 typename CallbackParamTraits<X6>::ForwardType); | 5259 typename CallbackParamTraits<X11>::ForwardType); |
1838 | 5260 |
1839 typedef R(UnboundRunType)(X6); | 5261 typedef R(UnboundRunType)(X11); |
1840 | 5262 |
1841 static R Run(BindStateBase* base, | 5263 static R Run(BindStateBase* base, |
1842 typename CallbackParamTraits<X6>::ForwardType x6) { | 5264 typename CallbackParamTraits<X11>::ForwardType x11) { |
1843 StorageType* storage = static_cast<StorageType*>(base); | 5265 StorageType* storage = static_cast<StorageType*>(base); |
1844 | 5266 |
1845 // Local references to make debugger stepping easier. If in a debugger, | 5267 // Local references to make debugger stepping easier. If in a debugger, |
1846 // you really want to warp ahead and step through the | 5268 // you really want to warp ahead and step through the |
1847 // InvokeHelper<>::MakeItSo() call below. | 5269 // InvokeHelper<>::MakeItSo() call below. |
1848 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 5270 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1849 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 5271 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1850 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 5272 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1851 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 5273 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
1852 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | 5274 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
| 5275 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 5276 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 5277 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 5278 typedef typename StorageType::Bound9UnwrapTraits Bound9UnwrapTraits; |
| 5279 typedef typename StorageType::Bound10UnwrapTraits Bound10UnwrapTraits; |
1853 | 5280 |
1854 typename Bound1UnwrapTraits::ForwardType x1 = | 5281 typename Bound1UnwrapTraits::ForwardType x1 = |
1855 Bound1UnwrapTraits::Unwrap(storage->p1_); | 5282 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1856 typename Bound2UnwrapTraits::ForwardType x2 = | 5283 typename Bound2UnwrapTraits::ForwardType x2 = |
1857 Bound2UnwrapTraits::Unwrap(storage->p2_); | 5284 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1858 typename Bound3UnwrapTraits::ForwardType x3 = | 5285 typename Bound3UnwrapTraits::ForwardType x3 = |
1859 Bound3UnwrapTraits::Unwrap(storage->p3_); | 5286 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1860 typename Bound4UnwrapTraits::ForwardType x4 = | 5287 typename Bound4UnwrapTraits::ForwardType x4 = |
1861 Bound4UnwrapTraits::Unwrap(storage->p4_); | 5288 Bound4UnwrapTraits::Unwrap(storage->p4_); |
1862 typename Bound5UnwrapTraits::ForwardType x5 = | 5289 typename Bound5UnwrapTraits::ForwardType x5 = |
1863 Bound5UnwrapTraits::Unwrap(storage->p5_); | 5290 Bound5UnwrapTraits::Unwrap(storage->p5_); |
| 5291 typename Bound6UnwrapTraits::ForwardType x6 = |
| 5292 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 5293 typename Bound7UnwrapTraits::ForwardType x7 = |
| 5294 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 5295 typename Bound8UnwrapTraits::ForwardType x8 = |
| 5296 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 5297 typename Bound9UnwrapTraits::ForwardType x9 = |
| 5298 Bound9UnwrapTraits::Unwrap(storage->p9_); |
| 5299 typename Bound10UnwrapTraits::ForwardType x10 = |
| 5300 Bound10UnwrapTraits::Unwrap(storage->p10_); |
1864 return InvokeHelper<StorageType::IsWeakCall::value, R, | 5301 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1865 typename StorageType::RunnableType, | 5302 typename StorageType::RunnableType, |
1866 void(typename Bound1UnwrapTraits::ForwardType, | 5303 void(typename Bound1UnwrapTraits::ForwardType, |
1867 typename Bound2UnwrapTraits::ForwardType, | 5304 typename Bound2UnwrapTraits::ForwardType, |
1868 typename Bound3UnwrapTraits::ForwardType, | 5305 typename Bound3UnwrapTraits::ForwardType, |
1869 typename Bound4UnwrapTraits::ForwardType, | 5306 typename Bound4UnwrapTraits::ForwardType, |
1870 typename Bound5UnwrapTraits::ForwardType, | 5307 typename Bound5UnwrapTraits::ForwardType, |
1871 typename CallbackParamTraits<X6>::ForwardType x6)> | 5308 typename Bound6UnwrapTraits::ForwardType, |
1872 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | 5309 typename Bound7UnwrapTraits::ForwardType, |
| 5310 typename Bound8UnwrapTraits::ForwardType, |
| 5311 typename Bound9UnwrapTraits::ForwardType, |
| 5312 typename Bound10UnwrapTraits::ForwardType, |
| 5313 typename CallbackParamTraits<X11>::ForwardType x11)> |
| 5314 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 5315 x9, x10, x11); |
1873 } | 5316 } |
1874 }; | 5317 }; |
1875 | 5318 |
1876 // Arity 6 -> 0. | 5319 // Arity 11 -> 0. |
1877 template <typename StorageType, typename R,typename X1, typename X2, | 5320 template <typename StorageType, typename R,typename X1, typename X2, |
1878 typename X3, typename X4, typename X5, typename X6> | 5321 typename X3, typename X4, typename X5, typename X6, typename X7, |
1879 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6)> { | 5322 typename X8, typename X9, typename X10, typename X11> |
| 5323 struct Invoker<11, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, |
| 5324 X11)> { |
1880 typedef R(RunType)(BindStateBase*); | 5325 typedef R(RunType)(BindStateBase*); |
1881 | 5326 |
1882 typedef R(UnboundRunType)(); | 5327 typedef R(UnboundRunType)(); |
1883 | 5328 |
1884 static R Run(BindStateBase* base) { | 5329 static R Run(BindStateBase* base) { |
1885 StorageType* storage = static_cast<StorageType*>(base); | 5330 StorageType* storage = static_cast<StorageType*>(base); |
1886 | 5331 |
1887 // Local references to make debugger stepping easier. If in a debugger, | 5332 // Local references to make debugger stepping easier. If in a debugger, |
1888 // you really want to warp ahead and step through the | 5333 // you really want to warp ahead and step through the |
1889 // InvokeHelper<>::MakeItSo() call below. | 5334 // InvokeHelper<>::MakeItSo() call below. |
1890 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 5335 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
1891 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 5336 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
1892 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 5337 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
1893 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 5338 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
1894 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | 5339 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
1895 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; | 5340 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; |
| 5341 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; |
| 5342 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; |
| 5343 typedef typename StorageType::Bound9UnwrapTraits Bound9UnwrapTraits; |
| 5344 typedef typename StorageType::Bound10UnwrapTraits Bound10UnwrapTraits; |
| 5345 typedef typename StorageType::Bound11UnwrapTraits Bound11UnwrapTraits; |
1896 | 5346 |
1897 typename Bound1UnwrapTraits::ForwardType x1 = | 5347 typename Bound1UnwrapTraits::ForwardType x1 = |
1898 Bound1UnwrapTraits::Unwrap(storage->p1_); | 5348 Bound1UnwrapTraits::Unwrap(storage->p1_); |
1899 typename Bound2UnwrapTraits::ForwardType x2 = | 5349 typename Bound2UnwrapTraits::ForwardType x2 = |
1900 Bound2UnwrapTraits::Unwrap(storage->p2_); | 5350 Bound2UnwrapTraits::Unwrap(storage->p2_); |
1901 typename Bound3UnwrapTraits::ForwardType x3 = | 5351 typename Bound3UnwrapTraits::ForwardType x3 = |
1902 Bound3UnwrapTraits::Unwrap(storage->p3_); | 5352 Bound3UnwrapTraits::Unwrap(storage->p3_); |
1903 typename Bound4UnwrapTraits::ForwardType x4 = | 5353 typename Bound4UnwrapTraits::ForwardType x4 = |
1904 Bound4UnwrapTraits::Unwrap(storage->p4_); | 5354 Bound4UnwrapTraits::Unwrap(storage->p4_); |
1905 typename Bound5UnwrapTraits::ForwardType x5 = | 5355 typename Bound5UnwrapTraits::ForwardType x5 = |
1906 Bound5UnwrapTraits::Unwrap(storage->p5_); | 5356 Bound5UnwrapTraits::Unwrap(storage->p5_); |
1907 typename Bound6UnwrapTraits::ForwardType x6 = | 5357 typename Bound6UnwrapTraits::ForwardType x6 = |
1908 Bound6UnwrapTraits::Unwrap(storage->p6_); | 5358 Bound6UnwrapTraits::Unwrap(storage->p6_); |
| 5359 typename Bound7UnwrapTraits::ForwardType x7 = |
| 5360 Bound7UnwrapTraits::Unwrap(storage->p7_); |
| 5361 typename Bound8UnwrapTraits::ForwardType x8 = |
| 5362 Bound8UnwrapTraits::Unwrap(storage->p8_); |
| 5363 typename Bound9UnwrapTraits::ForwardType x9 = |
| 5364 Bound9UnwrapTraits::Unwrap(storage->p9_); |
| 5365 typename Bound10UnwrapTraits::ForwardType x10 = |
| 5366 Bound10UnwrapTraits::Unwrap(storage->p10_); |
| 5367 typename Bound11UnwrapTraits::ForwardType x11 = |
| 5368 Bound11UnwrapTraits::Unwrap(storage->p11_); |
1909 return InvokeHelper<StorageType::IsWeakCall::value, R, | 5369 return InvokeHelper<StorageType::IsWeakCall::value, R, |
1910 typename StorageType::RunnableType, | 5370 typename StorageType::RunnableType, |
1911 void(typename Bound1UnwrapTraits::ForwardType, | 5371 void(typename Bound1UnwrapTraits::ForwardType, |
1912 typename Bound2UnwrapTraits::ForwardType, | 5372 typename Bound2UnwrapTraits::ForwardType, |
1913 typename Bound3UnwrapTraits::ForwardType, | 5373 typename Bound3UnwrapTraits::ForwardType, |
1914 typename Bound4UnwrapTraits::ForwardType, | 5374 typename Bound4UnwrapTraits::ForwardType, |
1915 typename Bound5UnwrapTraits::ForwardType, | 5375 typename Bound5UnwrapTraits::ForwardType, |
1916 typename Bound6UnwrapTraits::ForwardType)> | 5376 typename Bound6UnwrapTraits::ForwardType, |
1917 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); | 5377 typename Bound7UnwrapTraits::ForwardType, |
| 5378 typename Bound8UnwrapTraits::ForwardType, |
| 5379 typename Bound9UnwrapTraits::ForwardType, |
| 5380 typename Bound10UnwrapTraits::ForwardType, |
| 5381 typename Bound11UnwrapTraits::ForwardType)> |
| 5382 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6, x7, x8, |
| 5383 x9, x10, x11); |
1918 } | 5384 } |
1919 }; | 5385 }; |
1920 | 5386 |
1921 | 5387 |
1922 // BindState<> | 5388 // BindState<> |
1923 // | 5389 // |
1924 // This stores all the state passed into Bind() and is also where most | 5390 // This stores all the state passed into Bind() and is also where most |
1925 // of the template resolution magic occurs. | 5391 // of the template resolution magic occurs. |
1926 // | 5392 // |
1927 // Runnable is the functor we are binding arguments to. | 5393 // Runnable is the functor we are binding arguments to. |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2135 | 5601 |
2136 RunnableType runnable_; | 5602 RunnableType runnable_; |
2137 P1 p1_; | 5603 P1 p1_; |
2138 P2 p2_; | 5604 P2 p2_; |
2139 P3 p3_; | 5605 P3 p3_; |
2140 P4 p4_; | 5606 P4 p4_; |
2141 P5 p5_; | 5607 P5 p5_; |
2142 P6 p6_; | 5608 P6 p6_; |
2143 }; | 5609 }; |
2144 | 5610 |
| 5611 template <typename Runnable, typename RunType, typename P1, typename P2, |
| 5612 typename P3, typename P4, typename P5, typename P6, typename P7> |
| 5613 struct BindState<Runnable, RunType, void(P1, P2, P3, P4, P5, P6, |
| 5614 P7)> : public BindStateBase { |
| 5615 typedef Runnable RunnableType; |
| 5616 typedef IsWeakMethod<HasIsMethodTag<Runnable>::value, P1> IsWeakCall; |
| 5617 typedef Invoker<7, BindState, RunType> InvokerType; |
| 5618 typedef typename InvokerType::UnboundRunType UnboundRunType; |
| 5619 |
| 5620 // Convenience typedefs for bound argument types. |
| 5621 typedef UnwrapTraits<P1> Bound1UnwrapTraits; |
| 5622 typedef UnwrapTraits<P2> Bound2UnwrapTraits; |
| 5623 typedef UnwrapTraits<P3> Bound3UnwrapTraits; |
| 5624 typedef UnwrapTraits<P4> Bound4UnwrapTraits; |
| 5625 typedef UnwrapTraits<P5> Bound5UnwrapTraits; |
| 5626 typedef UnwrapTraits<P6> Bound6UnwrapTraits; |
| 5627 typedef UnwrapTraits<P7> Bound7UnwrapTraits; |
| 5628 |
| 5629 BindState(const Runnable& runnable, const P1& p1, const P2& p2, const P3& p3, |
| 5630 const P4& p4, const P5& p5, const P6& p6, const P7& p7) |
| 5631 : runnable_(runnable), |
| 5632 p1_(p1), |
| 5633 p2_(p2), |
| 5634 p3_(p3), |
| 5635 p4_(p4), |
| 5636 p5_(p5), |
| 5637 p6_(p6), |
| 5638 p7_(p7) { |
| 5639 MaybeRefcount<HasIsMethodTag<Runnable>::value, P1>::AddRef(p1_); |
| 5640 } |
| 5641 |
| 5642 virtual ~BindState() { MaybeRefcount<HasIsMethodTag<Runnable>::value, |
| 5643 P1>::Release(p1_); } |
| 5644 |
| 5645 RunnableType runnable_; |
| 5646 P1 p1_; |
| 5647 P2 p2_; |
| 5648 P3 p3_; |
| 5649 P4 p4_; |
| 5650 P5 p5_; |
| 5651 P6 p6_; |
| 5652 P7 p7_; |
| 5653 }; |
| 5654 |
| 5655 template <typename Runnable, typename RunType, typename P1, typename P2, |
| 5656 typename P3, typename P4, typename P5, typename P6, typename P7, |
| 5657 typename P8> |
| 5658 struct BindState<Runnable, RunType, void(P1, P2, P3, P4, P5, P6, P7, |
| 5659 P8)> : public BindStateBase { |
| 5660 typedef Runnable RunnableType; |
| 5661 typedef IsWeakMethod<HasIsMethodTag<Runnable>::value, P1> IsWeakCall; |
| 5662 typedef Invoker<8, BindState, RunType> InvokerType; |
| 5663 typedef typename InvokerType::UnboundRunType UnboundRunType; |
| 5664 |
| 5665 // Convenience typedefs for bound argument types. |
| 5666 typedef UnwrapTraits<P1> Bound1UnwrapTraits; |
| 5667 typedef UnwrapTraits<P2> Bound2UnwrapTraits; |
| 5668 typedef UnwrapTraits<P3> Bound3UnwrapTraits; |
| 5669 typedef UnwrapTraits<P4> Bound4UnwrapTraits; |
| 5670 typedef UnwrapTraits<P5> Bound5UnwrapTraits; |
| 5671 typedef UnwrapTraits<P6> Bound6UnwrapTraits; |
| 5672 typedef UnwrapTraits<P7> Bound7UnwrapTraits; |
| 5673 typedef UnwrapTraits<P8> Bound8UnwrapTraits; |
| 5674 |
| 5675 BindState(const Runnable& runnable, const P1& p1, const P2& p2, const P3& p3, |
| 5676 const P4& p4, const P5& p5, const P6& p6, const P7& p7, const P8& p8) |
| 5677 : runnable_(runnable), |
| 5678 p1_(p1), |
| 5679 p2_(p2), |
| 5680 p3_(p3), |
| 5681 p4_(p4), |
| 5682 p5_(p5), |
| 5683 p6_(p6), |
| 5684 p7_(p7), |
| 5685 p8_(p8) { |
| 5686 MaybeRefcount<HasIsMethodTag<Runnable>::value, P1>::AddRef(p1_); |
| 5687 } |
| 5688 |
| 5689 virtual ~BindState() { MaybeRefcount<HasIsMethodTag<Runnable>::value, |
| 5690 P1>::Release(p1_); } |
| 5691 |
| 5692 RunnableType runnable_; |
| 5693 P1 p1_; |
| 5694 P2 p2_; |
| 5695 P3 p3_; |
| 5696 P4 p4_; |
| 5697 P5 p5_; |
| 5698 P6 p6_; |
| 5699 P7 p7_; |
| 5700 P8 p8_; |
| 5701 }; |
| 5702 |
| 5703 template <typename Runnable, typename RunType, typename P1, typename P2, |
| 5704 typename P3, typename P4, typename P5, typename P6, typename P7, |
| 5705 typename P8, typename P9> |
| 5706 struct BindState<Runnable, RunType, void(P1, P2, P3, P4, P5, P6, P7, P8, |
| 5707 P9)> : public BindStateBase { |
| 5708 typedef Runnable RunnableType; |
| 5709 typedef IsWeakMethod<HasIsMethodTag<Runnable>::value, P1> IsWeakCall; |
| 5710 typedef Invoker<9, BindState, RunType> InvokerType; |
| 5711 typedef typename InvokerType::UnboundRunType UnboundRunType; |
| 5712 |
| 5713 // Convenience typedefs for bound argument types. |
| 5714 typedef UnwrapTraits<P1> Bound1UnwrapTraits; |
| 5715 typedef UnwrapTraits<P2> Bound2UnwrapTraits; |
| 5716 typedef UnwrapTraits<P3> Bound3UnwrapTraits; |
| 5717 typedef UnwrapTraits<P4> Bound4UnwrapTraits; |
| 5718 typedef UnwrapTraits<P5> Bound5UnwrapTraits; |
| 5719 typedef UnwrapTraits<P6> Bound6UnwrapTraits; |
| 5720 typedef UnwrapTraits<P7> Bound7UnwrapTraits; |
| 5721 typedef UnwrapTraits<P8> Bound8UnwrapTraits; |
| 5722 typedef UnwrapTraits<P9> Bound9UnwrapTraits; |
| 5723 |
| 5724 BindState(const Runnable& runnable, const P1& p1, const P2& p2, const P3& p3, |
| 5725 const P4& p4, const P5& p5, const P6& p6, const P7& p7, const P8& p8, |
| 5726 const P9& p9) |
| 5727 : runnable_(runnable), |
| 5728 p1_(p1), |
| 5729 p2_(p2), |
| 5730 p3_(p3), |
| 5731 p4_(p4), |
| 5732 p5_(p5), |
| 5733 p6_(p6), |
| 5734 p7_(p7), |
| 5735 p8_(p8), |
| 5736 p9_(p9) { |
| 5737 MaybeRefcount<HasIsMethodTag<Runnable>::value, P1>::AddRef(p1_); |
| 5738 } |
| 5739 |
| 5740 virtual ~BindState() { MaybeRefcount<HasIsMethodTag<Runnable>::value, |
| 5741 P1>::Release(p1_); } |
| 5742 |
| 5743 RunnableType runnable_; |
| 5744 P1 p1_; |
| 5745 P2 p2_; |
| 5746 P3 p3_; |
| 5747 P4 p4_; |
| 5748 P5 p5_; |
| 5749 P6 p6_; |
| 5750 P7 p7_; |
| 5751 P8 p8_; |
| 5752 P9 p9_; |
| 5753 }; |
| 5754 |
| 5755 template <typename Runnable, typename RunType, typename P1, typename P2, |
| 5756 typename P3, typename P4, typename P5, typename P6, typename P7, |
| 5757 typename P8, typename P9, typename P10> |
| 5758 struct BindState<Runnable, RunType, void(P1, P2, P3, P4, P5, P6, P7, P8, P9, |
| 5759 P10)> : public BindStateBase { |
| 5760 typedef Runnable RunnableType; |
| 5761 typedef IsWeakMethod<HasIsMethodTag<Runnable>::value, P1> IsWeakCall; |
| 5762 typedef Invoker<10, BindState, RunType> InvokerType; |
| 5763 typedef typename InvokerType::UnboundRunType UnboundRunType; |
| 5764 |
| 5765 // Convenience typedefs for bound argument types. |
| 5766 typedef UnwrapTraits<P1> Bound1UnwrapTraits; |
| 5767 typedef UnwrapTraits<P2> Bound2UnwrapTraits; |
| 5768 typedef UnwrapTraits<P3> Bound3UnwrapTraits; |
| 5769 typedef UnwrapTraits<P4> Bound4UnwrapTraits; |
| 5770 typedef UnwrapTraits<P5> Bound5UnwrapTraits; |
| 5771 typedef UnwrapTraits<P6> Bound6UnwrapTraits; |
| 5772 typedef UnwrapTraits<P7> Bound7UnwrapTraits; |
| 5773 typedef UnwrapTraits<P8> Bound8UnwrapTraits; |
| 5774 typedef UnwrapTraits<P9> Bound9UnwrapTraits; |
| 5775 typedef UnwrapTraits<P10> Bound10UnwrapTraits; |
| 5776 |
| 5777 BindState(const Runnable& runnable, const P1& p1, const P2& p2, const P3& p3, |
| 5778 const P4& p4, const P5& p5, const P6& p6, const P7& p7, const P8& p8, |
| 5779 const P9& p9, const P10& p10) |
| 5780 : runnable_(runnable), |
| 5781 p1_(p1), |
| 5782 p2_(p2), |
| 5783 p3_(p3), |
| 5784 p4_(p4), |
| 5785 p5_(p5), |
| 5786 p6_(p6), |
| 5787 p7_(p7), |
| 5788 p8_(p8), |
| 5789 p9_(p9), |
| 5790 p10_(p10) { |
| 5791 MaybeRefcount<HasIsMethodTag<Runnable>::value, P1>::AddRef(p1_); |
| 5792 } |
| 5793 |
| 5794 virtual ~BindState() { MaybeRefcount<HasIsMethodTag<Runnable>::value, |
| 5795 P1>::Release(p1_); } |
| 5796 |
| 5797 RunnableType runnable_; |
| 5798 P1 p1_; |
| 5799 P2 p2_; |
| 5800 P3 p3_; |
| 5801 P4 p4_; |
| 5802 P5 p5_; |
| 5803 P6 p6_; |
| 5804 P7 p7_; |
| 5805 P8 p8_; |
| 5806 P9 p9_; |
| 5807 P10 p10_; |
| 5808 }; |
| 5809 |
| 5810 template <typename Runnable, typename RunType, typename P1, typename P2, |
| 5811 typename P3, typename P4, typename P5, typename P6, typename P7, |
| 5812 typename P8, typename P9, typename P10, typename P11> |
| 5813 struct BindState<Runnable, RunType, void(P1, P2, P3, P4, P5, P6, P7, P8, P9, |
| 5814 P10, P11)> : public BindStateBase { |
| 5815 typedef Runnable RunnableType; |
| 5816 typedef IsWeakMethod<HasIsMethodTag<Runnable>::value, P1> IsWeakCall; |
| 5817 typedef Invoker<11, BindState, RunType> InvokerType; |
| 5818 typedef typename InvokerType::UnboundRunType UnboundRunType; |
| 5819 |
| 5820 // Convenience typedefs for bound argument types. |
| 5821 typedef UnwrapTraits<P1> Bound1UnwrapTraits; |
| 5822 typedef UnwrapTraits<P2> Bound2UnwrapTraits; |
| 5823 typedef UnwrapTraits<P3> Bound3UnwrapTraits; |
| 5824 typedef UnwrapTraits<P4> Bound4UnwrapTraits; |
| 5825 typedef UnwrapTraits<P5> Bound5UnwrapTraits; |
| 5826 typedef UnwrapTraits<P6> Bound6UnwrapTraits; |
| 5827 typedef UnwrapTraits<P7> Bound7UnwrapTraits; |
| 5828 typedef UnwrapTraits<P8> Bound8UnwrapTraits; |
| 5829 typedef UnwrapTraits<P9> Bound9UnwrapTraits; |
| 5830 typedef UnwrapTraits<P10> Bound10UnwrapTraits; |
| 5831 typedef UnwrapTraits<P11> Bound11UnwrapTraits; |
| 5832 |
| 5833 BindState(const Runnable& runnable, const P1& p1, const P2& p2, const P3& p3, |
| 5834 const P4& p4, const P5& p5, const P6& p6, const P7& p7, const P8& p8, |
| 5835 const P9& p9, const P10& p10, const P11& p11) |
| 5836 : runnable_(runnable), |
| 5837 p1_(p1), |
| 5838 p2_(p2), |
| 5839 p3_(p3), |
| 5840 p4_(p4), |
| 5841 p5_(p5), |
| 5842 p6_(p6), |
| 5843 p7_(p7), |
| 5844 p8_(p8), |
| 5845 p9_(p9), |
| 5846 p10_(p10), |
| 5847 p11_(p11) { |
| 5848 MaybeRefcount<HasIsMethodTag<Runnable>::value, P1>::AddRef(p1_); |
| 5849 } |
| 5850 |
| 5851 virtual ~BindState() { MaybeRefcount<HasIsMethodTag<Runnable>::value, |
| 5852 P1>::Release(p1_); } |
| 5853 |
| 5854 RunnableType runnable_; |
| 5855 P1 p1_; |
| 5856 P2 p2_; |
| 5857 P3 p3_; |
| 5858 P4 p4_; |
| 5859 P5 p5_; |
| 5860 P6 p6_; |
| 5861 P7 p7_; |
| 5862 P8 p8_; |
| 5863 P9 p9_; |
| 5864 P10 p10_; |
| 5865 P11 p11_; |
| 5866 }; |
| 5867 |
2145 } // namespace internal | 5868 } // namespace internal |
2146 } // namespace base | 5869 } // namespace base |
2147 | 5870 |
2148 #endif // BASE_BIND_INTERNAL_H_ | 5871 #endif // BASE_BIND_INTERNAL_H_ |
OLD | NEW |