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 | |
986 | 555 |
987 // FunctionTraits<> | 556 // FunctionTraits<> |
988 // | 557 // |
989 // Breaks a function signature apart into typedefs for easier introspection. | 558 // Breaks a function signature apart into typedefs for easier introspection. |
990 template <typename Sig> | 559 template <typename Sig> |
991 struct FunctionTraits; | 560 struct FunctionTraits; |
992 | 561 |
993 template <typename R> | 562 template <typename R> |
994 struct FunctionTraits<R()> { | 563 struct FunctionTraits<R()> { |
995 typedef R ReturnType; | 564 typedef R ReturnType; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1041 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6)> { | 610 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6)> { |
1042 typedef R ReturnType; | 611 typedef R ReturnType; |
1043 typedef A1 A1Type; | 612 typedef A1 A1Type; |
1044 typedef A2 A2Type; | 613 typedef A2 A2Type; |
1045 typedef A3 A3Type; | 614 typedef A3 A3Type; |
1046 typedef A4 A4Type; | 615 typedef A4 A4Type; |
1047 typedef A5 A5Type; | 616 typedef A5 A5Type; |
1048 typedef A6 A6Type; | 617 typedef A6 A6Type; |
1049 }; | 618 }; |
1050 | 619 |
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 | |
1128 | 620 |
1129 // ForceVoidReturn<> | 621 // ForceVoidReturn<> |
1130 // | 622 // |
1131 // Set of templates that support forcing the function return type to void. | 623 // Set of templates that support forcing the function return type to void. |
1132 template <typename Sig> | 624 template <typename Sig> |
1133 struct ForceVoidReturn; | 625 struct ForceVoidReturn; |
1134 | 626 |
1135 template <typename R> | 627 template <typename R> |
1136 struct ForceVoidReturn<R()> { | 628 struct ForceVoidReturn<R()> { |
1137 typedef void(RunType)(); | 629 typedef void(RunType)(); |
(...skipping 24 matching lines...) Expand all Loading... |
1162 struct ForceVoidReturn<R(A1, A2, A3, A4, A5)> { | 654 struct ForceVoidReturn<R(A1, A2, A3, A4, A5)> { |
1163 typedef void(RunType)(A1, A2, A3, A4, A5); | 655 typedef void(RunType)(A1, A2, A3, A4, A5); |
1164 }; | 656 }; |
1165 | 657 |
1166 template <typename R, typename A1, typename A2, typename A3, typename A4, | 658 template <typename R, typename A1, typename A2, typename A3, typename A4, |
1167 typename A5, typename A6> | 659 typename A5, typename A6> |
1168 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6)> { | 660 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6)> { |
1169 typedef void(RunType)(A1, A2, A3, A4, A5, A6); | 661 typedef void(RunType)(A1, A2, A3, A4, A5, A6); |
1170 }; | 662 }; |
1171 | 663 |
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 | |
1204 | 664 |
1205 // FunctorTraits<> | 665 // FunctorTraits<> |
1206 // | 666 // |
1207 // See description at top of file. | 667 // See description at top of file. |
1208 template <typename T> | 668 template <typename T> |
1209 struct FunctorTraits { | 669 struct FunctorTraits { |
1210 typedef RunnableAdapter<T> RunnableType; | 670 typedef RunnableAdapter<T> RunnableType; |
1211 typedef typename RunnableType::RunType RunType; | 671 typedef typename RunnableType::RunType RunType; |
1212 }; | 672 }; |
1213 | 673 |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, | 917 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
1458 A6 a6) { | 918 A6 a6) { |
1459 if (!a1.get()) { | 919 if (!a1.get()) { |
1460 return; | 920 return; |
1461 } | 921 } |
1462 | 922 |
1463 runnable.Run(a1, a2, a3, a4, a5, a6); | 923 runnable.Run(a1, a2, a3, a4, a5, a6); |
1464 } | 924 } |
1465 }; | 925 }; |
1466 | 926 |
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 | |
1646 #if !defined(_MSC_VER) | 927 #if !defined(_MSC_VER) |
1647 | 928 |
1648 template <typename ReturnType, typename Runnable, typename ArgsType> | 929 template <typename ReturnType, typename Runnable, typename ArgsType> |
1649 struct InvokeHelper<true, ReturnType, Runnable, ArgsType> { | 930 struct InvokeHelper<true, ReturnType, Runnable, ArgsType> { |
1650 // WeakCalls are only supported for functions with a void return type. | 931 // WeakCalls are only supported for functions with a void return type. |
1651 // Otherwise, the function result would be undefined if the the WeakPtr<> | 932 // Otherwise, the function result would be undefined if the the WeakPtr<> |
1652 // is invalidated. | 933 // is invalidated. |
1653 COMPILE_ASSERT(is_void<ReturnType>::value, | 934 COMPILE_ASSERT(is_void<ReturnType>::value, |
1654 weak_ptrs_can_only_bind_to_methods_without_return_values); | 935 weak_ptrs_can_only_bind_to_methods_without_return_values); |
1655 }; | 936 }; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1705 ::MakeItSo(storage->runnable_, x1); | 986 ::MakeItSo(storage->runnable_, x1); |
1706 } | 987 } |
1707 }; | 988 }; |
1708 | 989 |
1709 // Arity 1 -> 0. | 990 // Arity 1 -> 0. |
1710 template <typename StorageType, typename R,typename X1> | 991 template <typename StorageType, typename R,typename X1> |
1711 struct Invoker<1, StorageType, R(X1)> { | 992 struct Invoker<1, StorageType, R(X1)> { |
1712 typedef R(RunType)(BindStateBase*); | 993 typedef R(RunType)(BindStateBase*); |
1713 | 994 |
1714 typedef R(UnboundRunType)(); | 995 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)(); | |
3948 | 996 |
3949 static R Run(BindStateBase* base) { | 997 static R Run(BindStateBase* base) { |
3950 StorageType* storage = static_cast<StorageType*>(base); | 998 StorageType* storage = static_cast<StorageType*>(base); |
3951 | 999 |
3952 // Local references to make debugger stepping easier. If in a debugger, | 1000 // Local references to make debugger stepping easier. If in a debugger, |
3953 // you really want to warp ahead and step through the | 1001 // you really want to warp ahead and step through the |
3954 // InvokeHelper<>::MakeItSo() call below. | 1002 // InvokeHelper<>::MakeItSo() call below. |
3955 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1003 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; | |
3964 | 1004 |
3965 typename Bound1UnwrapTraits::ForwardType x1 = | 1005 typename Bound1UnwrapTraits::ForwardType x1 = |
3966 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1006 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_); | |
3983 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1007 return InvokeHelper<StorageType::IsWeakCall::value, R, |
3984 typename StorageType::RunnableType, | 1008 typename StorageType::RunnableType, |
3985 void(typename Bound1UnwrapTraits::ForwardType, | 1009 void(typename Bound1UnwrapTraits::ForwardType)> |
3986 typename Bound2UnwrapTraits::ForwardType, | 1010 ::MakeItSo(storage->runnable_, x1); |
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); | |
3996 } | 1011 } |
3997 }; | 1012 }; |
3998 | 1013 |
3999 // Arity 10 -> 10. | 1014 // Arity 2 -> 2. |
4000 template <typename StorageType, typename R,typename X1, typename X2, | 1015 template <typename StorageType, typename R,typename X1, typename X2> |
4001 typename X3, typename X4, typename X5, typename X6, typename X7, | 1016 struct Invoker<0, StorageType, R(X1, X2)> { |
4002 typename X8, typename X9, typename X10> | |
4003 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4004 typedef R(RunType)(BindStateBase*, | 1017 typedef R(RunType)(BindStateBase*, |
4005 typename CallbackParamTraits<X1>::ForwardType, | 1018 typename CallbackParamTraits<X1>::ForwardType, |
4006 typename CallbackParamTraits<X2>::ForwardType, | 1019 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); | |
4015 | 1020 |
4016 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10); | 1021 typedef R(UnboundRunType)(X1, X2); |
4017 | 1022 |
4018 static R Run(BindStateBase* base, | 1023 static R Run(BindStateBase* base, |
4019 typename CallbackParamTraits<X1>::ForwardType x1, | 1024 typename CallbackParamTraits<X1>::ForwardType x1, |
4020 typename CallbackParamTraits<X2>::ForwardType x2, | 1025 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) { | |
4029 StorageType* storage = static_cast<StorageType*>(base); | 1026 StorageType* storage = static_cast<StorageType*>(base); |
4030 | 1027 |
4031 // Local references to make debugger stepping easier. If in a debugger, | 1028 // Local references to make debugger stepping easier. If in a debugger, |
4032 // you really want to warp ahead and step through the | 1029 // you really want to warp ahead and step through the |
4033 // InvokeHelper<>::MakeItSo() call below. | 1030 // InvokeHelper<>::MakeItSo() call below. |
4034 | 1031 |
4035 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1032 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4036 typename StorageType::RunnableType, | 1033 typename StorageType::RunnableType, |
4037 void(typename CallbackParamTraits<X1>::ForwardType x1, | 1034 void(typename CallbackParamTraits<X1>::ForwardType x1, |
4038 typename CallbackParamTraits<X2>::ForwardType x2, | 1035 typename CallbackParamTraits<X2>::ForwardType x2)> |
4039 typename CallbackParamTraits<X3>::ForwardType x3, | 1036 ::MakeItSo(storage->runnable_, x1, x2); |
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); | |
4049 } | 1037 } |
4050 }; | 1038 }; |
4051 | 1039 |
4052 // Arity 10 -> 9. | 1040 // Arity 2 -> 1. |
4053 template <typename StorageType, typename R,typename X1, typename X2, | 1041 template <typename StorageType, typename R,typename X1, typename X2> |
4054 typename X3, typename X4, typename X5, typename X6, typename X7, | 1042 struct Invoker<1, StorageType, R(X1, X2)> { |
4055 typename X8, typename X9, typename X10> | |
4056 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4057 typedef R(RunType)(BindStateBase*, | 1043 typedef R(RunType)(BindStateBase*, |
4058 typename CallbackParamTraits<X2>::ForwardType, | 1044 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); | |
4067 | 1045 |
4068 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8, X9, X10); | 1046 typedef R(UnboundRunType)(X2); |
4069 | 1047 |
4070 static R Run(BindStateBase* base, | 1048 static R Run(BindStateBase* base, |
4071 typename CallbackParamTraits<X2>::ForwardType x2, | 1049 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) { | |
4080 StorageType* storage = static_cast<StorageType*>(base); | 1050 StorageType* storage = static_cast<StorageType*>(base); |
4081 | 1051 |
4082 // Local references to make debugger stepping easier. If in a debugger, | 1052 // Local references to make debugger stepping easier. If in a debugger, |
4083 // you really want to warp ahead and step through the | 1053 // you really want to warp ahead and step through the |
4084 // InvokeHelper<>::MakeItSo() call below. | 1054 // InvokeHelper<>::MakeItSo() call below. |
4085 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1055 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4086 | 1056 |
4087 typename Bound1UnwrapTraits::ForwardType x1 = | 1057 typename Bound1UnwrapTraits::ForwardType x1 = |
4088 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1058 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4089 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1059 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4090 typename StorageType::RunnableType, | 1060 typename StorageType::RunnableType, |
4091 void(typename Bound1UnwrapTraits::ForwardType, | 1061 void(typename Bound1UnwrapTraits::ForwardType, |
4092 typename CallbackParamTraits<X2>::ForwardType x2, | 1062 typename CallbackParamTraits<X2>::ForwardType x2)> |
4093 typename CallbackParamTraits<X3>::ForwardType x3, | 1063 ::MakeItSo(storage->runnable_, x1, x2); |
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); | |
4103 } | 1064 } |
4104 }; | 1065 }; |
4105 | 1066 |
4106 // Arity 10 -> 8. | 1067 // Arity 2 -> 0. |
4107 template <typename StorageType, typename R,typename X1, typename X2, | 1068 template <typename StorageType, typename R,typename X1, typename X2> |
4108 typename X3, typename X4, typename X5, typename X6, typename X7, | 1069 struct Invoker<2, StorageType, R(X1, X2)> { |
4109 typename X8, typename X9, typename X10> | 1070 typedef R(RunType)(BindStateBase*); |
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); | |
4120 | 1071 |
4121 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8, X9, X10); | 1072 typedef R(UnboundRunType)(); |
4122 | 1073 |
4123 static R Run(BindStateBase* base, | 1074 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) { | |
4132 StorageType* storage = static_cast<StorageType*>(base); | 1075 StorageType* storage = static_cast<StorageType*>(base); |
4133 | 1076 |
4134 // Local references to make debugger stepping easier. If in a debugger, | 1077 // Local references to make debugger stepping easier. If in a debugger, |
4135 // you really want to warp ahead and step through the | 1078 // you really want to warp ahead and step through the |
4136 // InvokeHelper<>::MakeItSo() call below. | 1079 // InvokeHelper<>::MakeItSo() call below. |
4137 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1080 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4138 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1081 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4139 | 1082 |
4140 typename Bound1UnwrapTraits::ForwardType x1 = | 1083 typename Bound1UnwrapTraits::ForwardType x1 = |
4141 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1084 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4142 typename Bound2UnwrapTraits::ForwardType x2 = | 1085 typename Bound2UnwrapTraits::ForwardType x2 = |
4143 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1086 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4144 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1087 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4145 typename StorageType::RunnableType, | 1088 typename StorageType::RunnableType, |
4146 void(typename Bound1UnwrapTraits::ForwardType, | 1089 void(typename Bound1UnwrapTraits::ForwardType, |
4147 typename Bound2UnwrapTraits::ForwardType, | 1090 typename Bound2UnwrapTraits::ForwardType)> |
4148 typename CallbackParamTraits<X3>::ForwardType x3, | 1091 ::MakeItSo(storage->runnable_, x1, x2); |
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); | |
4158 } | 1092 } |
4159 }; | 1093 }; |
4160 | 1094 |
4161 // Arity 10 -> 7. | 1095 // Arity 3 -> 3. |
4162 template <typename StorageType, typename R,typename X1, typename X2, | 1096 template <typename StorageType, typename R,typename X1, typename X2, |
4163 typename X3, typename X4, typename X5, typename X6, typename X7, | 1097 typename X3> |
4164 typename X8, typename X9, typename X10> | 1098 struct Invoker<0, StorageType, R(X1, X2, X3)> { |
4165 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4166 typedef R(RunType)(BindStateBase*, | 1099 typedef R(RunType)(BindStateBase*, |
4167 typename CallbackParamTraits<X4>::ForwardType, | 1100 typename CallbackParamTraits<X1>::ForwardType, |
4168 typename CallbackParamTraits<X5>::ForwardType, | 1101 typename CallbackParamTraits<X2>::ForwardType, |
4169 typename CallbackParamTraits<X6>::ForwardType, | 1102 typename CallbackParamTraits<X3>::ForwardType); |
4170 typename CallbackParamTraits<X7>::ForwardType, | |
4171 typename CallbackParamTraits<X8>::ForwardType, | |
4172 typename CallbackParamTraits<X9>::ForwardType, | |
4173 typename CallbackParamTraits<X10>::ForwardType); | |
4174 | 1103 |
4175 typedef R(UnboundRunType)(X4, X5, X6, X7, X8, X9, X10); | 1104 typedef R(UnboundRunType)(X1, X2, X3); |
4176 | 1105 |
4177 static R Run(BindStateBase* base, | 1106 static R Run(BindStateBase* base, |
4178 typename CallbackParamTraits<X4>::ForwardType x4, | 1107 typename CallbackParamTraits<X1>::ForwardType x1, |
4179 typename CallbackParamTraits<X5>::ForwardType x5, | 1108 typename CallbackParamTraits<X2>::ForwardType x2, |
4180 typename CallbackParamTraits<X6>::ForwardType x6, | 1109 typename CallbackParamTraits<X3>::ForwardType x3) { |
4181 typename CallbackParamTraits<X7>::ForwardType x7, | 1110 StorageType* storage = static_cast<StorageType*>(base); |
4182 typename CallbackParamTraits<X8>::ForwardType x8, | 1111 |
4183 typename CallbackParamTraits<X9>::ForwardType x9, | 1112 // Local references to make debugger stepping easier. If in a debugger, |
4184 typename CallbackParamTraits<X10>::ForwardType x10) { | 1113 // you really want to warp ahead and step through the |
| 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) { |
4185 StorageType* storage = static_cast<StorageType*>(base); | 1138 StorageType* storage = static_cast<StorageType*>(base); |
4186 | 1139 |
4187 // Local references to make debugger stepping easier. If in a debugger, | 1140 // Local references to make debugger stepping easier. If in a debugger, |
4188 // you really want to warp ahead and step through the | 1141 // you really want to warp ahead and step through the |
4189 // InvokeHelper<>::MakeItSo() call below. | 1142 // InvokeHelper<>::MakeItSo() call below. |
4190 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1143 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4191 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
4192 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
4193 | 1144 |
4194 typename Bound1UnwrapTraits::ForwardType x1 = | 1145 typename Bound1UnwrapTraits::ForwardType x1 = |
4195 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1146 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4196 typename Bound2UnwrapTraits::ForwardType x2 = | |
4197 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
4198 typename Bound3UnwrapTraits::ForwardType x3 = | |
4199 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
4200 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1147 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4201 typename StorageType::RunnableType, | 1148 typename StorageType::RunnableType, |
4202 void(typename Bound1UnwrapTraits::ForwardType, | 1149 void(typename Bound1UnwrapTraits::ForwardType, |
4203 typename Bound2UnwrapTraits::ForwardType, | 1150 typename CallbackParamTraits<X2>::ForwardType x2, |
4204 typename Bound3UnwrapTraits::ForwardType, | 1151 typename CallbackParamTraits<X3>::ForwardType x3)> |
4205 typename CallbackParamTraits<X4>::ForwardType x4, | 1152 ::MakeItSo(storage->runnable_, x1, x2, x3); |
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); | |
4214 } | 1153 } |
4215 }; | 1154 }; |
4216 | 1155 |
4217 // Arity 10 -> 6. | 1156 // Arity 3 -> 1. |
4218 template <typename StorageType, typename R,typename X1, typename X2, | 1157 template <typename StorageType, typename R,typename X1, typename X2, |
4219 typename X3, typename X4, typename X5, typename X6, typename X7, | 1158 typename X3> |
4220 typename X8, typename X9, typename X10> | 1159 struct Invoker<2, StorageType, R(X1, X2, X3)> { |
4221 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4222 typedef R(RunType)(BindStateBase*, | 1160 typedef R(RunType)(BindStateBase*, |
4223 typename CallbackParamTraits<X5>::ForwardType, | 1161 typename CallbackParamTraits<X3>::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); | |
4229 | 1162 |
4230 typedef R(UnboundRunType)(X5, X6, X7, X8, X9, X10); | 1163 typedef R(UnboundRunType)(X3); |
4231 | 1164 |
4232 static R Run(BindStateBase* base, | 1165 static R Run(BindStateBase* base, |
4233 typename CallbackParamTraits<X5>::ForwardType x5, | 1166 typename CallbackParamTraits<X3>::ForwardType x3) { |
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) { | |
4239 StorageType* storage = static_cast<StorageType*>(base); | 1167 StorageType* storage = static_cast<StorageType*>(base); |
4240 | 1168 |
4241 // Local references to make debugger stepping easier. If in a debugger, | 1169 // Local references to make debugger stepping easier. If in a debugger, |
4242 // you really want to warp ahead and step through the | 1170 // you really want to warp ahead and step through the |
4243 // InvokeHelper<>::MakeItSo() call below. | 1171 // InvokeHelper<>::MakeItSo() call below. |
4244 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1172 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4245 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1173 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4246 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
4247 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
4248 | 1174 |
4249 typename Bound1UnwrapTraits::ForwardType x1 = | 1175 typename Bound1UnwrapTraits::ForwardType x1 = |
4250 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1176 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4251 typename Bound2UnwrapTraits::ForwardType x2 = | 1177 typename Bound2UnwrapTraits::ForwardType x2 = |
4252 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1178 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4253 typename Bound3UnwrapTraits::ForwardType x3 = | |
4254 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
4255 typename Bound4UnwrapTraits::ForwardType x4 = | |
4256 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
4257 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1179 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4258 typename StorageType::RunnableType, | 1180 typename StorageType::RunnableType, |
4259 void(typename Bound1UnwrapTraits::ForwardType, | 1181 void(typename Bound1UnwrapTraits::ForwardType, |
4260 typename Bound2UnwrapTraits::ForwardType, | 1182 typename Bound2UnwrapTraits::ForwardType, |
4261 typename Bound3UnwrapTraits::ForwardType, | 1183 typename CallbackParamTraits<X3>::ForwardType x3)> |
4262 typename Bound4UnwrapTraits::ForwardType, | 1184 ::MakeItSo(storage->runnable_, x1, x2, x3); |
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); | |
4271 } | 1185 } |
4272 }; | 1186 }; |
4273 | 1187 |
4274 // Arity 10 -> 5. | 1188 // Arity 3 -> 0. |
4275 template <typename StorageType, typename R,typename X1, typename X2, | 1189 template <typename StorageType, typename R,typename X1, typename X2, |
4276 typename X3, typename X4, typename X5, typename X6, typename X7, | 1190 typename X3> |
4277 typename X8, typename X9, typename X10> | 1191 struct Invoker<3, StorageType, R(X1, X2, X3)> { |
4278 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | 1192 typedef R(RunType)(BindStateBase*); |
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); | |
4285 | 1193 |
4286 typedef R(UnboundRunType)(X6, X7, X8, X9, X10); | 1194 typedef R(UnboundRunType)(); |
4287 | 1195 |
4288 static R Run(BindStateBase* base, | 1196 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) { | |
4294 StorageType* storage = static_cast<StorageType*>(base); | 1197 StorageType* storage = static_cast<StorageType*>(base); |
4295 | 1198 |
4296 // Local references to make debugger stepping easier. If in a debugger, | 1199 // Local references to make debugger stepping easier. If in a debugger, |
4297 // you really want to warp ahead and step through the | 1200 // you really want to warp ahead and step through the |
4298 // InvokeHelper<>::MakeItSo() call below. | 1201 // InvokeHelper<>::MakeItSo() call below. |
4299 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1202 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4300 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1203 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4301 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1204 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
4302 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
4303 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | |
4304 | 1205 |
4305 typename Bound1UnwrapTraits::ForwardType x1 = | 1206 typename Bound1UnwrapTraits::ForwardType x1 = |
4306 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1207 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4307 typename Bound2UnwrapTraits::ForwardType x2 = | 1208 typename Bound2UnwrapTraits::ForwardType x2 = |
4308 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1209 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4309 typename Bound3UnwrapTraits::ForwardType x3 = | 1210 typename Bound3UnwrapTraits::ForwardType x3 = |
4310 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1211 Bound3UnwrapTraits::Unwrap(storage->p3_); |
4311 typename Bound4UnwrapTraits::ForwardType x4 = | |
4312 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
4313 typename Bound5UnwrapTraits::ForwardType x5 = | |
4314 Bound5UnwrapTraits::Unwrap(storage->p5_); | |
4315 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1212 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4316 typename StorageType::RunnableType, | 1213 typename StorageType::RunnableType, |
4317 void(typename Bound1UnwrapTraits::ForwardType, | 1214 void(typename Bound1UnwrapTraits::ForwardType, |
4318 typename Bound2UnwrapTraits::ForwardType, | 1215 typename Bound2UnwrapTraits::ForwardType, |
4319 typename Bound3UnwrapTraits::ForwardType, | 1216 typename Bound3UnwrapTraits::ForwardType)> |
4320 typename Bound4UnwrapTraits::ForwardType, | 1217 ::MakeItSo(storage->runnable_, x1, x2, x3); |
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); | |
4329 } | 1218 } |
4330 }; | 1219 }; |
4331 | 1220 |
4332 // Arity 10 -> 4. | 1221 // Arity 4 -> 4. |
4333 template <typename StorageType, typename R,typename X1, typename X2, | 1222 template <typename StorageType, typename R,typename X1, typename X2, |
4334 typename X3, typename X4, typename X5, typename X6, typename X7, | 1223 typename X3, typename X4> |
4335 typename X8, typename X9, typename X10> | 1224 struct Invoker<0, StorageType, R(X1, X2, X3, X4)> { |
4336 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4337 typedef R(RunType)(BindStateBase*, | 1225 typedef R(RunType)(BindStateBase*, |
4338 typename CallbackParamTraits<X7>::ForwardType, | 1226 typename CallbackParamTraits<X1>::ForwardType, |
4339 typename CallbackParamTraits<X8>::ForwardType, | 1227 typename CallbackParamTraits<X2>::ForwardType, |
4340 typename CallbackParamTraits<X9>::ForwardType, | 1228 typename CallbackParamTraits<X3>::ForwardType, |
4341 typename CallbackParamTraits<X10>::ForwardType); | 1229 typename CallbackParamTraits<X4>::ForwardType); |
4342 | 1230 |
4343 typedef R(UnboundRunType)(X7, X8, X9, X10); | 1231 typedef R(UnboundRunType)(X1, X2, X3, X4); |
4344 | 1232 |
4345 static R Run(BindStateBase* base, | 1233 static R Run(BindStateBase* base, |
4346 typename CallbackParamTraits<X7>::ForwardType x7, | 1234 typename CallbackParamTraits<X1>::ForwardType x1, |
4347 typename CallbackParamTraits<X8>::ForwardType x8, | 1235 typename CallbackParamTraits<X2>::ForwardType x2, |
4348 typename CallbackParamTraits<X9>::ForwardType x9, | 1236 typename CallbackParamTraits<X3>::ForwardType x3, |
4349 typename CallbackParamTraits<X10>::ForwardType x10) { | 1237 typename CallbackParamTraits<X4>::ForwardType x4) { |
| 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) { |
4350 StorageType* storage = static_cast<StorageType*>(base); | 1269 StorageType* storage = static_cast<StorageType*>(base); |
4351 | 1270 |
4352 // Local references to make debugger stepping easier. If in a debugger, | 1271 // Local references to make debugger stepping easier. If in a debugger, |
4353 // you really want to warp ahead and step through the | 1272 // you really want to warp ahead and step through the |
4354 // InvokeHelper<>::MakeItSo() call below. | 1273 // InvokeHelper<>::MakeItSo() call below. |
4355 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1274 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; | |
4361 | 1275 |
4362 typename Bound1UnwrapTraits::ForwardType x1 = | 1276 typename Bound1UnwrapTraits::ForwardType x1 = |
4363 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1277 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_); | |
4374 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1278 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4375 typename StorageType::RunnableType, | 1279 typename StorageType::RunnableType, |
4376 void(typename Bound1UnwrapTraits::ForwardType, | 1280 void(typename Bound1UnwrapTraits::ForwardType, |
4377 typename Bound2UnwrapTraits::ForwardType, | 1281 typename CallbackParamTraits<X2>::ForwardType x2, |
4378 typename Bound3UnwrapTraits::ForwardType, | 1282 typename CallbackParamTraits<X3>::ForwardType x3, |
4379 typename Bound4UnwrapTraits::ForwardType, | 1283 typename CallbackParamTraits<X4>::ForwardType x4)> |
4380 typename Bound5UnwrapTraits::ForwardType, | 1284 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
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); | |
4388 } | 1285 } |
4389 }; | 1286 }; |
4390 | 1287 |
4391 // Arity 10 -> 3. | 1288 // Arity 4 -> 2. |
4392 template <typename StorageType, typename R,typename X1, typename X2, | 1289 template <typename StorageType, typename R,typename X1, typename X2, |
4393 typename X3, typename X4, typename X5, typename X6, typename X7, | 1290 typename X3, typename X4> |
4394 typename X8, typename X9, typename X10> | 1291 struct Invoker<2, StorageType, R(X1, X2, X3, X4)> { |
4395 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4396 typedef R(RunType)(BindStateBase*, | 1292 typedef R(RunType)(BindStateBase*, |
4397 typename CallbackParamTraits<X8>::ForwardType, | 1293 typename CallbackParamTraits<X3>::ForwardType, |
4398 typename CallbackParamTraits<X9>::ForwardType, | 1294 typename CallbackParamTraits<X4>::ForwardType); |
4399 typename CallbackParamTraits<X10>::ForwardType); | |
4400 | 1295 |
4401 typedef R(UnboundRunType)(X8, X9, X10); | 1296 typedef R(UnboundRunType)(X3, X4); |
4402 | 1297 |
4403 static R Run(BindStateBase* base, | 1298 static R Run(BindStateBase* base, |
4404 typename CallbackParamTraits<X8>::ForwardType x8, | 1299 typename CallbackParamTraits<X3>::ForwardType x3, |
4405 typename CallbackParamTraits<X9>::ForwardType x9, | 1300 typename CallbackParamTraits<X4>::ForwardType x4) { |
4406 typename CallbackParamTraits<X10>::ForwardType x10) { | |
4407 StorageType* storage = static_cast<StorageType*>(base); | 1301 StorageType* storage = static_cast<StorageType*>(base); |
4408 | 1302 |
4409 // Local references to make debugger stepping easier. If in a debugger, | 1303 // 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, | |
4468 // you really want to warp ahead and step through the | 1304 // you really want to warp ahead and step through the |
4469 // InvokeHelper<>::MakeItSo() call below. | 1305 // InvokeHelper<>::MakeItSo() call below. |
4470 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1306 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4471 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1307 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; | |
4478 | 1308 |
4479 typename Bound1UnwrapTraits::ForwardType x1 = | 1309 typename Bound1UnwrapTraits::ForwardType x1 = |
4480 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1310 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4481 typename Bound2UnwrapTraits::ForwardType x2 = | 1311 typename Bound2UnwrapTraits::ForwardType x2 = |
4482 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1312 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_); | |
4495 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1313 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4496 typename StorageType::RunnableType, | 1314 typename StorageType::RunnableType, |
4497 void(typename Bound1UnwrapTraits::ForwardType, | 1315 void(typename Bound1UnwrapTraits::ForwardType, |
4498 typename Bound2UnwrapTraits::ForwardType, | 1316 typename Bound2UnwrapTraits::ForwardType, |
4499 typename Bound3UnwrapTraits::ForwardType, | 1317 typename CallbackParamTraits<X3>::ForwardType x3, |
4500 typename Bound4UnwrapTraits::ForwardType, | 1318 typename CallbackParamTraits<X4>::ForwardType x4)> |
4501 typename Bound5UnwrapTraits::ForwardType, | 1319 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
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); | |
4509 } | 1320 } |
4510 }; | 1321 }; |
4511 | 1322 |
4512 // Arity 10 -> 1. | 1323 // Arity 4 -> 1. |
4513 template <typename StorageType, typename R,typename X1, typename X2, | 1324 template <typename StorageType, typename R,typename X1, typename X2, |
4514 typename X3, typename X4, typename X5, typename X6, typename X7, | 1325 typename X3, typename X4> |
4515 typename X8, typename X9, typename X10> | 1326 struct Invoker<3, StorageType, R(X1, X2, X3, X4)> { |
4516 struct Invoker<9, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4517 typedef R(RunType)(BindStateBase*, | 1327 typedef R(RunType)(BindStateBase*, |
4518 typename CallbackParamTraits<X10>::ForwardType); | 1328 typename CallbackParamTraits<X4>::ForwardType); |
4519 | 1329 |
4520 typedef R(UnboundRunType)(X10); | 1330 typedef R(UnboundRunType)(X4); |
4521 | 1331 |
4522 static R Run(BindStateBase* base, | 1332 static R Run(BindStateBase* base, |
4523 typename CallbackParamTraits<X10>::ForwardType x10) { | 1333 typename CallbackParamTraits<X4>::ForwardType x4) { |
4524 StorageType* storage = static_cast<StorageType*>(base); | 1334 StorageType* storage = static_cast<StorageType*>(base); |
4525 | 1335 |
4526 // Local references to make debugger stepping easier. If in a debugger, | 1336 // Local references to make debugger stepping easier. If in a debugger, |
4527 // you really want to warp ahead and step through the | 1337 // you really want to warp ahead and step through the |
4528 // InvokeHelper<>::MakeItSo() call below. | 1338 // InvokeHelper<>::MakeItSo() call below. |
4529 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1339 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4530 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1340 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4531 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1341 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; | |
4538 | 1342 |
4539 typename Bound1UnwrapTraits::ForwardType x1 = | 1343 typename Bound1UnwrapTraits::ForwardType x1 = |
4540 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1344 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4541 typename Bound2UnwrapTraits::ForwardType x2 = | 1345 typename Bound2UnwrapTraits::ForwardType x2 = |
4542 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1346 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4543 typename Bound3UnwrapTraits::ForwardType x3 = | 1347 typename Bound3UnwrapTraits::ForwardType x3 = |
4544 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1348 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_); | |
4557 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1349 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4558 typename StorageType::RunnableType, | 1350 typename StorageType::RunnableType, |
4559 void(typename Bound1UnwrapTraits::ForwardType, | 1351 void(typename Bound1UnwrapTraits::ForwardType, |
4560 typename Bound2UnwrapTraits::ForwardType, | 1352 typename Bound2UnwrapTraits::ForwardType, |
4561 typename Bound3UnwrapTraits::ForwardType, | 1353 typename Bound3UnwrapTraits::ForwardType, |
4562 typename Bound4UnwrapTraits::ForwardType, | 1354 typename CallbackParamTraits<X4>::ForwardType x4)> |
4563 typename Bound5UnwrapTraits::ForwardType, | 1355 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
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); | |
4571 } | 1356 } |
4572 }; | 1357 }; |
4573 | 1358 |
4574 // Arity 10 -> 0. | 1359 // Arity 4 -> 0. |
4575 template <typename StorageType, typename R,typename X1, typename X2, | 1360 template <typename StorageType, typename R,typename X1, typename X2, |
4576 typename X3, typename X4, typename X5, typename X6, typename X7, | 1361 typename X3, typename X4> |
4577 typename X8, typename X9, typename X10> | 1362 struct Invoker<4, StorageType, R(X1, X2, X3, X4)> { |
4578 struct Invoker<10, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)> { | |
4579 typedef R(RunType)(BindStateBase*); | 1363 typedef R(RunType)(BindStateBase*); |
4580 | 1364 |
4581 typedef R(UnboundRunType)(); | 1365 typedef R(UnboundRunType)(); |
4582 | 1366 |
4583 static R Run(BindStateBase* base) { | 1367 static R Run(BindStateBase* base) { |
4584 StorageType* storage = static_cast<StorageType*>(base); | 1368 StorageType* storage = static_cast<StorageType*>(base); |
4585 | 1369 |
4586 // Local references to make debugger stepping easier. If in a debugger, | 1370 // Local references to make debugger stepping easier. If in a debugger, |
4587 // you really want to warp ahead and step through the | 1371 // you really want to warp ahead and step through the |
4588 // InvokeHelper<>::MakeItSo() call below. | 1372 // InvokeHelper<>::MakeItSo() call below. |
4589 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1373 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4590 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1374 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4591 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1375 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
4592 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 1376 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; | |
4599 | 1377 |
4600 typename Bound1UnwrapTraits::ForwardType x1 = | 1378 typename Bound1UnwrapTraits::ForwardType x1 = |
4601 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1379 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4602 typename Bound2UnwrapTraits::ForwardType x2 = | 1380 typename Bound2UnwrapTraits::ForwardType x2 = |
4603 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1381 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4604 typename Bound3UnwrapTraits::ForwardType x3 = | 1382 typename Bound3UnwrapTraits::ForwardType x3 = |
4605 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1383 Bound3UnwrapTraits::Unwrap(storage->p3_); |
4606 typename Bound4UnwrapTraits::ForwardType x4 = | 1384 typename Bound4UnwrapTraits::ForwardType x4 = |
4607 Bound4UnwrapTraits::Unwrap(storage->p4_); | 1385 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_); | |
4620 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1386 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4621 typename StorageType::RunnableType, | 1387 typename StorageType::RunnableType, |
4622 void(typename Bound1UnwrapTraits::ForwardType, | 1388 void(typename Bound1UnwrapTraits::ForwardType, |
4623 typename Bound2UnwrapTraits::ForwardType, | 1389 typename Bound2UnwrapTraits::ForwardType, |
4624 typename Bound3UnwrapTraits::ForwardType, | 1390 typename Bound3UnwrapTraits::ForwardType, |
4625 typename Bound4UnwrapTraits::ForwardType, | 1391 typename Bound4UnwrapTraits::ForwardType)> |
4626 typename Bound5UnwrapTraits::ForwardType, | 1392 ::MakeItSo(storage->runnable_, x1, x2, x3, x4); |
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); | |
4634 } | 1393 } |
4635 }; | 1394 }; |
4636 | 1395 |
4637 // Arity 11 -> 11. | 1396 // Arity 5 -> 5. |
4638 template <typename StorageType, typename R,typename X1, typename X2, | 1397 template <typename StorageType, typename R,typename X1, typename X2, |
4639 typename X3, typename X4, typename X5, typename X6, typename X7, | 1398 typename X3, typename X4, typename X5> |
4640 typename X8, typename X9, typename X10, typename X11> | 1399 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5)> { |
4641 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
4642 X11)> { | |
4643 typedef R(RunType)(BindStateBase*, | 1400 typedef R(RunType)(BindStateBase*, |
4644 typename CallbackParamTraits<X1>::ForwardType, | 1401 typename CallbackParamTraits<X1>::ForwardType, |
4645 typename CallbackParamTraits<X2>::ForwardType, | 1402 typename CallbackParamTraits<X2>::ForwardType, |
4646 typename CallbackParamTraits<X3>::ForwardType, | 1403 typename CallbackParamTraits<X3>::ForwardType, |
4647 typename CallbackParamTraits<X4>::ForwardType, | 1404 typename CallbackParamTraits<X4>::ForwardType, |
4648 typename CallbackParamTraits<X5>::ForwardType, | 1405 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); | |
4655 | 1406 |
4656 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11); | 1407 typedef R(UnboundRunType)(X1, X2, X3, X4, X5); |
4657 | 1408 |
4658 static R Run(BindStateBase* base, | 1409 static R Run(BindStateBase* base, |
4659 typename CallbackParamTraits<X1>::ForwardType x1, | 1410 typename CallbackParamTraits<X1>::ForwardType x1, |
4660 typename CallbackParamTraits<X2>::ForwardType x2, | 1411 typename CallbackParamTraits<X2>::ForwardType x2, |
4661 typename CallbackParamTraits<X3>::ForwardType x3, | 1412 typename CallbackParamTraits<X3>::ForwardType x3, |
4662 typename CallbackParamTraits<X4>::ForwardType x4, | 1413 typename CallbackParamTraits<X4>::ForwardType x4, |
4663 typename CallbackParamTraits<X5>::ForwardType x5, | 1414 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) { | |
4670 StorageType* storage = static_cast<StorageType*>(base); | 1415 StorageType* storage = static_cast<StorageType*>(base); |
4671 | 1416 |
4672 // Local references to make debugger stepping easier. If in a debugger, | 1417 // Local references to make debugger stepping easier. If in a debugger, |
4673 // you really want to warp ahead and step through the | 1418 // you really want to warp ahead and step through the |
4674 // InvokeHelper<>::MakeItSo() call below. | 1419 // InvokeHelper<>::MakeItSo() call below. |
4675 | 1420 |
4676 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1421 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4677 typename StorageType::RunnableType, | 1422 typename StorageType::RunnableType, |
4678 void(typename CallbackParamTraits<X1>::ForwardType x1, | 1423 void(typename CallbackParamTraits<X1>::ForwardType x1, |
4679 typename CallbackParamTraits<X2>::ForwardType x2, | 1424 typename CallbackParamTraits<X2>::ForwardType x2, |
4680 typename CallbackParamTraits<X3>::ForwardType x3, | 1425 typename CallbackParamTraits<X3>::ForwardType x3, |
4681 typename CallbackParamTraits<X4>::ForwardType x4, | 1426 typename CallbackParamTraits<X4>::ForwardType x4, |
4682 typename CallbackParamTraits<X5>::ForwardType x5, | 1427 typename CallbackParamTraits<X5>::ForwardType x5)> |
4683 typename CallbackParamTraits<X6>::ForwardType x6, | 1428 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
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); | |
4691 } | 1429 } |
4692 }; | 1430 }; |
4693 | 1431 |
4694 // Arity 11 -> 10. | 1432 // Arity 5 -> 4. |
4695 template <typename StorageType, typename R,typename X1, typename X2, | 1433 template <typename StorageType, typename R,typename X1, typename X2, |
4696 typename X3, typename X4, typename X5, typename X6, typename X7, | 1434 typename X3, typename X4, typename X5> |
4697 typename X8, typename X9, typename X10, typename X11> | 1435 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5)> { |
4698 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
4699 X11)> { | |
4700 typedef R(RunType)(BindStateBase*, | 1436 typedef R(RunType)(BindStateBase*, |
4701 typename CallbackParamTraits<X2>::ForwardType, | 1437 typename CallbackParamTraits<X2>::ForwardType, |
4702 typename CallbackParamTraits<X3>::ForwardType, | 1438 typename CallbackParamTraits<X3>::ForwardType, |
4703 typename CallbackParamTraits<X4>::ForwardType, | 1439 typename CallbackParamTraits<X4>::ForwardType, |
4704 typename CallbackParamTraits<X5>::ForwardType, | 1440 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); | |
4711 | 1441 |
4712 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8, X9, X10, X11); | 1442 typedef R(UnboundRunType)(X2, X3, X4, X5); |
4713 | 1443 |
4714 static R Run(BindStateBase* base, | 1444 static R Run(BindStateBase* base, |
4715 typename CallbackParamTraits<X2>::ForwardType x2, | 1445 typename CallbackParamTraits<X2>::ForwardType x2, |
4716 typename CallbackParamTraits<X3>::ForwardType x3, | 1446 typename CallbackParamTraits<X3>::ForwardType x3, |
4717 typename CallbackParamTraits<X4>::ForwardType x4, | 1447 typename CallbackParamTraits<X4>::ForwardType x4, |
4718 typename CallbackParamTraits<X5>::ForwardType x5, | 1448 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) { | |
4725 StorageType* storage = static_cast<StorageType*>(base); | 1449 StorageType* storage = static_cast<StorageType*>(base); |
4726 | 1450 |
4727 // Local references to make debugger stepping easier. If in a debugger, | 1451 // Local references to make debugger stepping easier. If in a debugger, |
4728 // you really want to warp ahead and step through the | 1452 // you really want to warp ahead and step through the |
4729 // InvokeHelper<>::MakeItSo() call below. | 1453 // InvokeHelper<>::MakeItSo() call below. |
4730 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1454 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4731 | 1455 |
4732 typename Bound1UnwrapTraits::ForwardType x1 = | 1456 typename Bound1UnwrapTraits::ForwardType x1 = |
4733 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1457 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4734 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1458 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4735 typename StorageType::RunnableType, | 1459 typename StorageType::RunnableType, |
4736 void(typename Bound1UnwrapTraits::ForwardType, | 1460 void(typename Bound1UnwrapTraits::ForwardType, |
4737 typename CallbackParamTraits<X2>::ForwardType x2, | 1461 typename CallbackParamTraits<X2>::ForwardType x2, |
4738 typename CallbackParamTraits<X3>::ForwardType x3, | 1462 typename CallbackParamTraits<X3>::ForwardType x3, |
4739 typename CallbackParamTraits<X4>::ForwardType x4, | 1463 typename CallbackParamTraits<X4>::ForwardType x4, |
4740 typename CallbackParamTraits<X5>::ForwardType x5, | 1464 typename CallbackParamTraits<X5>::ForwardType x5)> |
4741 typename CallbackParamTraits<X6>::ForwardType x6, | 1465 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
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); | |
4749 } | 1466 } |
4750 }; | 1467 }; |
4751 | 1468 |
4752 // Arity 11 -> 9. | 1469 // Arity 5 -> 3. |
4753 template <typename StorageType, typename R,typename X1, typename X2, | 1470 template <typename StorageType, typename R,typename X1, typename X2, |
4754 typename X3, typename X4, typename X5, typename X6, typename X7, | 1471 typename X3, typename X4, typename X5> |
4755 typename X8, typename X9, typename X10, typename X11> | 1472 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5)> { |
4756 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
4757 X11)> { | |
4758 typedef R(RunType)(BindStateBase*, | 1473 typedef R(RunType)(BindStateBase*, |
4759 typename CallbackParamTraits<X3>::ForwardType, | 1474 typename CallbackParamTraits<X3>::ForwardType, |
4760 typename CallbackParamTraits<X4>::ForwardType, | 1475 typename CallbackParamTraits<X4>::ForwardType, |
4761 typename CallbackParamTraits<X5>::ForwardType, | 1476 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); | |
4768 | 1477 |
4769 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8, X9, X10, X11); | 1478 typedef R(UnboundRunType)(X3, X4, X5); |
4770 | 1479 |
4771 static R Run(BindStateBase* base, | 1480 static R Run(BindStateBase* base, |
4772 typename CallbackParamTraits<X3>::ForwardType x3, | 1481 typename CallbackParamTraits<X3>::ForwardType x3, |
4773 typename CallbackParamTraits<X4>::ForwardType x4, | 1482 typename CallbackParamTraits<X4>::ForwardType x4, |
4774 typename CallbackParamTraits<X5>::ForwardType x5, | 1483 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) { | |
4781 StorageType* storage = static_cast<StorageType*>(base); | 1484 StorageType* storage = static_cast<StorageType*>(base); |
4782 | 1485 |
4783 // Local references to make debugger stepping easier. If in a debugger, | 1486 // Local references to make debugger stepping easier. If in a debugger, |
4784 // you really want to warp ahead and step through the | 1487 // you really want to warp ahead and step through the |
4785 // InvokeHelper<>::MakeItSo() call below. | 1488 // InvokeHelper<>::MakeItSo() call below. |
4786 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1489 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4787 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1490 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4788 | 1491 |
4789 typename Bound1UnwrapTraits::ForwardType x1 = | 1492 typename Bound1UnwrapTraits::ForwardType x1 = |
4790 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1493 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4791 typename Bound2UnwrapTraits::ForwardType x2 = | 1494 typename Bound2UnwrapTraits::ForwardType x2 = |
4792 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1495 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4793 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1496 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4794 typename StorageType::RunnableType, | 1497 typename StorageType::RunnableType, |
4795 void(typename Bound1UnwrapTraits::ForwardType, | 1498 void(typename Bound1UnwrapTraits::ForwardType, |
4796 typename Bound2UnwrapTraits::ForwardType, | 1499 typename Bound2UnwrapTraits::ForwardType, |
4797 typename CallbackParamTraits<X3>::ForwardType x3, | 1500 typename CallbackParamTraits<X3>::ForwardType x3, |
4798 typename CallbackParamTraits<X4>::ForwardType x4, | 1501 typename CallbackParamTraits<X4>::ForwardType x4, |
4799 typename CallbackParamTraits<X5>::ForwardType x5, | 1502 typename CallbackParamTraits<X5>::ForwardType x5)> |
4800 typename CallbackParamTraits<X6>::ForwardType x6, | 1503 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
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); | |
4808 } | 1504 } |
4809 }; | 1505 }; |
4810 | 1506 |
4811 // Arity 11 -> 8. | 1507 // Arity 5 -> 2. |
4812 template <typename StorageType, typename R,typename X1, typename X2, | 1508 template <typename StorageType, typename R,typename X1, typename X2, |
4813 typename X3, typename X4, typename X5, typename X6, typename X7, | 1509 typename X3, typename X4, typename X5> |
4814 typename X8, typename X9, typename X10, typename X11> | 1510 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5)> { |
4815 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
4816 X11)> { | |
4817 typedef R(RunType)(BindStateBase*, | 1511 typedef R(RunType)(BindStateBase*, |
4818 typename CallbackParamTraits<X4>::ForwardType, | 1512 typename CallbackParamTraits<X4>::ForwardType, |
4819 typename CallbackParamTraits<X5>::ForwardType, | 1513 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); | |
4826 | 1514 |
4827 typedef R(UnboundRunType)(X4, X5, X6, X7, X8, X9, X10, X11); | 1515 typedef R(UnboundRunType)(X4, X5); |
4828 | 1516 |
4829 static R Run(BindStateBase* base, | 1517 static R Run(BindStateBase* base, |
4830 typename CallbackParamTraits<X4>::ForwardType x4, | 1518 typename CallbackParamTraits<X4>::ForwardType x4, |
4831 typename CallbackParamTraits<X5>::ForwardType x5, | 1519 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) { | |
4838 StorageType* storage = static_cast<StorageType*>(base); | 1520 StorageType* storage = static_cast<StorageType*>(base); |
4839 | 1521 |
4840 // Local references to make debugger stepping easier. If in a debugger, | 1522 // Local references to make debugger stepping easier. If in a debugger, |
4841 // you really want to warp ahead and step through the | 1523 // you really want to warp ahead and step through the |
4842 // InvokeHelper<>::MakeItSo() call below. | 1524 // InvokeHelper<>::MakeItSo() call below. |
4843 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1525 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4844 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1526 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4845 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1527 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
4846 | 1528 |
4847 typename Bound1UnwrapTraits::ForwardType x1 = | 1529 typename Bound1UnwrapTraits::ForwardType x1 = |
4848 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1530 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4849 typename Bound2UnwrapTraits::ForwardType x2 = | 1531 typename Bound2UnwrapTraits::ForwardType x2 = |
4850 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1532 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4851 typename Bound3UnwrapTraits::ForwardType x3 = | 1533 typename Bound3UnwrapTraits::ForwardType x3 = |
4852 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1534 Bound3UnwrapTraits::Unwrap(storage->p3_); |
4853 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1535 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4854 typename StorageType::RunnableType, | 1536 typename StorageType::RunnableType, |
4855 void(typename Bound1UnwrapTraits::ForwardType, | 1537 void(typename Bound1UnwrapTraits::ForwardType, |
4856 typename Bound2UnwrapTraits::ForwardType, | 1538 typename Bound2UnwrapTraits::ForwardType, |
4857 typename Bound3UnwrapTraits::ForwardType, | 1539 typename Bound3UnwrapTraits::ForwardType, |
4858 typename CallbackParamTraits<X4>::ForwardType x4, | 1540 typename CallbackParamTraits<X4>::ForwardType x4, |
4859 typename CallbackParamTraits<X5>::ForwardType x5, | 1541 typename CallbackParamTraits<X5>::ForwardType x5)> |
4860 typename CallbackParamTraits<X6>::ForwardType x6, | 1542 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
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); | |
4868 } | 1543 } |
4869 }; | 1544 }; |
4870 | 1545 |
4871 // Arity 11 -> 7. | 1546 // Arity 5 -> 1. |
4872 template <typename StorageType, typename R,typename X1, typename X2, | 1547 template <typename StorageType, typename R,typename X1, typename X2, |
4873 typename X3, typename X4, typename X5, typename X6, typename X7, | 1548 typename X3, typename X4, typename X5> |
4874 typename X8, typename X9, typename X10, typename X11> | 1549 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5)> { |
4875 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
4876 X11)> { | |
4877 typedef R(RunType)(BindStateBase*, | 1550 typedef R(RunType)(BindStateBase*, |
4878 typename CallbackParamTraits<X5>::ForwardType, | 1551 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); | |
4885 | 1552 |
4886 typedef R(UnboundRunType)(X5, X6, X7, X8, X9, X10, X11); | 1553 typedef R(UnboundRunType)(X5); |
4887 | 1554 |
4888 static R Run(BindStateBase* base, | 1555 static R Run(BindStateBase* base, |
4889 typename CallbackParamTraits<X5>::ForwardType x5, | 1556 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) { | |
4896 StorageType* storage = static_cast<StorageType*>(base); | 1557 StorageType* storage = static_cast<StorageType*>(base); |
4897 | 1558 |
4898 // Local references to make debugger stepping easier. If in a debugger, | 1559 // Local references to make debugger stepping easier. If in a debugger, |
4899 // you really want to warp ahead and step through the | 1560 // you really want to warp ahead and step through the |
4900 // InvokeHelper<>::MakeItSo() call below. | 1561 // InvokeHelper<>::MakeItSo() call below. |
4901 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1562 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4902 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1563 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4903 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1564 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
4904 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 1565 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
4905 | 1566 |
4906 typename Bound1UnwrapTraits::ForwardType x1 = | 1567 typename Bound1UnwrapTraits::ForwardType x1 = |
4907 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1568 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4908 typename Bound2UnwrapTraits::ForwardType x2 = | 1569 typename Bound2UnwrapTraits::ForwardType x2 = |
4909 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1570 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4910 typename Bound3UnwrapTraits::ForwardType x3 = | 1571 typename Bound3UnwrapTraits::ForwardType x3 = |
4911 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1572 Bound3UnwrapTraits::Unwrap(storage->p3_); |
4912 typename Bound4UnwrapTraits::ForwardType x4 = | 1573 typename Bound4UnwrapTraits::ForwardType x4 = |
4913 Bound4UnwrapTraits::Unwrap(storage->p4_); | 1574 Bound4UnwrapTraits::Unwrap(storage->p4_); |
4914 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1575 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4915 typename StorageType::RunnableType, | 1576 typename StorageType::RunnableType, |
4916 void(typename Bound1UnwrapTraits::ForwardType, | 1577 void(typename Bound1UnwrapTraits::ForwardType, |
4917 typename Bound2UnwrapTraits::ForwardType, | 1578 typename Bound2UnwrapTraits::ForwardType, |
4918 typename Bound3UnwrapTraits::ForwardType, | 1579 typename Bound3UnwrapTraits::ForwardType, |
4919 typename Bound4UnwrapTraits::ForwardType, | 1580 typename Bound4UnwrapTraits::ForwardType, |
4920 typename CallbackParamTraits<X5>::ForwardType x5, | 1581 typename CallbackParamTraits<X5>::ForwardType x5)> |
4921 typename CallbackParamTraits<X6>::ForwardType x6, | 1582 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
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); | |
4929 } | 1583 } |
4930 }; | 1584 }; |
4931 | 1585 |
4932 // Arity 11 -> 6. | 1586 // Arity 5 -> 0. |
4933 template <typename StorageType, typename R,typename X1, typename X2, | 1587 template <typename StorageType, typename R,typename X1, typename X2, |
4934 typename X3, typename X4, typename X5, typename X6, typename X7, | 1588 typename X3, typename X4, typename X5> |
4935 typename X8, typename X9, typename X10, typename X11> | 1589 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5)> { |
4936 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | 1590 typedef R(RunType)(BindStateBase*); |
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); | |
4945 | 1591 |
4946 typedef R(UnboundRunType)(X6, X7, X8, X9, X10, X11); | 1592 typedef R(UnboundRunType)(); |
4947 | 1593 |
4948 static R Run(BindStateBase* base, | 1594 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) { | |
4955 StorageType* storage = static_cast<StorageType*>(base); | 1595 StorageType* storage = static_cast<StorageType*>(base); |
4956 | 1596 |
4957 // Local references to make debugger stepping easier. If in a debugger, | 1597 // Local references to make debugger stepping easier. If in a debugger, |
4958 // you really want to warp ahead and step through the | 1598 // you really want to warp ahead and step through the |
4959 // InvokeHelper<>::MakeItSo() call below. | 1599 // InvokeHelper<>::MakeItSo() call below. |
4960 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1600 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
4961 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1601 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
4962 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1602 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
4963 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 1603 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
4964 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | 1604 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
4965 | 1605 |
4966 typename Bound1UnwrapTraits::ForwardType x1 = | 1606 typename Bound1UnwrapTraits::ForwardType x1 = |
4967 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1607 Bound1UnwrapTraits::Unwrap(storage->p1_); |
4968 typename Bound2UnwrapTraits::ForwardType x2 = | 1608 typename Bound2UnwrapTraits::ForwardType x2 = |
4969 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1609 Bound2UnwrapTraits::Unwrap(storage->p2_); |
4970 typename Bound3UnwrapTraits::ForwardType x3 = | 1610 typename Bound3UnwrapTraits::ForwardType x3 = |
4971 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1611 Bound3UnwrapTraits::Unwrap(storage->p3_); |
4972 typename Bound4UnwrapTraits::ForwardType x4 = | 1612 typename Bound4UnwrapTraits::ForwardType x4 = |
4973 Bound4UnwrapTraits::Unwrap(storage->p4_); | 1613 Bound4UnwrapTraits::Unwrap(storage->p4_); |
4974 typename Bound5UnwrapTraits::ForwardType x5 = | 1614 typename Bound5UnwrapTraits::ForwardType x5 = |
4975 Bound5UnwrapTraits::Unwrap(storage->p5_); | 1615 Bound5UnwrapTraits::Unwrap(storage->p5_); |
4976 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1616 return InvokeHelper<StorageType::IsWeakCall::value, R, |
4977 typename StorageType::RunnableType, | 1617 typename StorageType::RunnableType, |
4978 void(typename Bound1UnwrapTraits::ForwardType, | 1618 void(typename Bound1UnwrapTraits::ForwardType, |
4979 typename Bound2UnwrapTraits::ForwardType, | 1619 typename Bound2UnwrapTraits::ForwardType, |
4980 typename Bound3UnwrapTraits::ForwardType, | 1620 typename Bound3UnwrapTraits::ForwardType, |
4981 typename Bound4UnwrapTraits::ForwardType, | 1621 typename Bound4UnwrapTraits::ForwardType, |
4982 typename Bound5UnwrapTraits::ForwardType, | 1622 typename Bound5UnwrapTraits::ForwardType)> |
4983 typename CallbackParamTraits<X6>::ForwardType x6, | 1623 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5); |
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); | |
4991 } | 1624 } |
4992 }; | 1625 }; |
4993 | 1626 |
4994 // Arity 11 -> 5. | 1627 // Arity 6 -> 6. |
4995 template <typename StorageType, typename R,typename X1, typename X2, | 1628 template <typename StorageType, typename R,typename X1, typename X2, |
4996 typename X3, typename X4, typename X5, typename X6, typename X7, | 1629 typename X3, typename X4, typename X5, typename X6> |
4997 typename X8, typename X9, typename X10, typename X11> | 1630 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
4998 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
4999 X11)> { | |
5000 typedef R(RunType)(BindStateBase*, | 1631 typedef R(RunType)(BindStateBase*, |
5001 typename CallbackParamTraits<X7>::ForwardType, | 1632 typename CallbackParamTraits<X1>::ForwardType, |
5002 typename CallbackParamTraits<X8>::ForwardType, | 1633 typename CallbackParamTraits<X2>::ForwardType, |
5003 typename CallbackParamTraits<X9>::ForwardType, | 1634 typename CallbackParamTraits<X3>::ForwardType, |
5004 typename CallbackParamTraits<X10>::ForwardType, | 1635 typename CallbackParamTraits<X4>::ForwardType, |
5005 typename CallbackParamTraits<X11>::ForwardType); | 1636 typename CallbackParamTraits<X5>::ForwardType, |
| 1637 typename CallbackParamTraits<X6>::ForwardType); |
5006 | 1638 |
5007 typedef R(UnboundRunType)(X7, X8, X9, X10, X11); | 1639 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6); |
5008 | 1640 |
5009 static R Run(BindStateBase* base, | 1641 static R Run(BindStateBase* base, |
5010 typename CallbackParamTraits<X7>::ForwardType x7, | 1642 typename CallbackParamTraits<X1>::ForwardType x1, |
5011 typename CallbackParamTraits<X8>::ForwardType x8, | 1643 typename CallbackParamTraits<X2>::ForwardType x2, |
5012 typename CallbackParamTraits<X9>::ForwardType x9, | 1644 typename CallbackParamTraits<X3>::ForwardType x3, |
5013 typename CallbackParamTraits<X10>::ForwardType x10, | 1645 typename CallbackParamTraits<X4>::ForwardType x4, |
5014 typename CallbackParamTraits<X11>::ForwardType x11) { | 1646 typename CallbackParamTraits<X5>::ForwardType x5, |
| 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) { |
5015 StorageType* storage = static_cast<StorageType*>(base); | 1685 StorageType* storage = static_cast<StorageType*>(base); |
5016 | 1686 |
5017 // Local references to make debugger stepping easier. If in a debugger, | 1687 // Local references to make debugger stepping easier. If in a debugger, |
5018 // you really want to warp ahead and step through the | 1688 // you really want to warp ahead and step through the |
5019 // InvokeHelper<>::MakeItSo() call below. | 1689 // InvokeHelper<>::MakeItSo() call below. |
5020 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1690 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; | |
5026 | 1691 |
5027 typename Bound1UnwrapTraits::ForwardType x1 = | 1692 typename Bound1UnwrapTraits::ForwardType x1 = |
5028 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1693 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_); | |
5039 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1694 return InvokeHelper<StorageType::IsWeakCall::value, R, |
5040 typename StorageType::RunnableType, | 1695 typename StorageType::RunnableType, |
5041 void(typename Bound1UnwrapTraits::ForwardType, | 1696 void(typename Bound1UnwrapTraits::ForwardType, |
5042 typename Bound2UnwrapTraits::ForwardType, | 1697 typename CallbackParamTraits<X2>::ForwardType x2, |
5043 typename Bound3UnwrapTraits::ForwardType, | 1698 typename CallbackParamTraits<X3>::ForwardType x3, |
5044 typename Bound4UnwrapTraits::ForwardType, | 1699 typename CallbackParamTraits<X4>::ForwardType x4, |
5045 typename Bound5UnwrapTraits::ForwardType, | 1700 typename CallbackParamTraits<X5>::ForwardType x5, |
5046 typename Bound6UnwrapTraits::ForwardType, | 1701 typename CallbackParamTraits<X6>::ForwardType x6)> |
5047 typename CallbackParamTraits<X7>::ForwardType x7, | 1702 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
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); | |
5054 } | 1703 } |
5055 }; | 1704 }; |
5056 | 1705 |
5057 // Arity 11 -> 4. | 1706 // Arity 6 -> 4. |
5058 template <typename StorageType, typename R,typename X1, typename X2, | 1707 template <typename StorageType, typename R,typename X1, typename X2, |
5059 typename X3, typename X4, typename X5, typename X6, typename X7, | 1708 typename X3, typename X4, typename X5, typename X6> |
5060 typename X8, typename X9, typename X10, typename X11> | 1709 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
5061 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
5062 X11)> { | |
5063 typedef R(RunType)(BindStateBase*, | 1710 typedef R(RunType)(BindStateBase*, |
5064 typename CallbackParamTraits<X8>::ForwardType, | 1711 typename CallbackParamTraits<X3>::ForwardType, |
5065 typename CallbackParamTraits<X9>::ForwardType, | 1712 typename CallbackParamTraits<X4>::ForwardType, |
5066 typename CallbackParamTraits<X10>::ForwardType, | 1713 typename CallbackParamTraits<X5>::ForwardType, |
5067 typename CallbackParamTraits<X11>::ForwardType); | 1714 typename CallbackParamTraits<X6>::ForwardType); |
5068 | 1715 |
5069 typedef R(UnboundRunType)(X8, X9, X10, X11); | 1716 typedef R(UnboundRunType)(X3, X4, X5, X6); |
5070 | 1717 |
5071 static R Run(BindStateBase* base, | 1718 static R Run(BindStateBase* base, |
5072 typename CallbackParamTraits<X8>::ForwardType x8, | 1719 typename CallbackParamTraits<X3>::ForwardType x3, |
5073 typename CallbackParamTraits<X9>::ForwardType x9, | 1720 typename CallbackParamTraits<X4>::ForwardType x4, |
5074 typename CallbackParamTraits<X10>::ForwardType x10, | 1721 typename CallbackParamTraits<X5>::ForwardType x5, |
5075 typename CallbackParamTraits<X11>::ForwardType x11) { | 1722 typename CallbackParamTraits<X6>::ForwardType x6) { |
5076 StorageType* storage = static_cast<StorageType*>(base); | 1723 StorageType* storage = static_cast<StorageType*>(base); |
5077 | 1724 |
5078 // Local references to make debugger stepping easier. If in a debugger, | 1725 // Local references to make debugger stepping easier. If in a debugger, |
5079 // you really want to warp ahead and step through the | 1726 // you really want to warp ahead and step through the |
5080 // InvokeHelper<>::MakeItSo() call below. | 1727 // InvokeHelper<>::MakeItSo() call below. |
5081 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1728 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
5082 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1729 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; | |
5088 | 1730 |
5089 typename Bound1UnwrapTraits::ForwardType x1 = | 1731 typename Bound1UnwrapTraits::ForwardType x1 = |
5090 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1732 Bound1UnwrapTraits::Unwrap(storage->p1_); |
5091 typename Bound2UnwrapTraits::ForwardType x2 = | 1733 typename Bound2UnwrapTraits::ForwardType x2 = |
5092 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1734 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_); | |
5103 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1735 return InvokeHelper<StorageType::IsWeakCall::value, R, |
5104 typename StorageType::RunnableType, | 1736 typename StorageType::RunnableType, |
5105 void(typename Bound1UnwrapTraits::ForwardType, | 1737 void(typename Bound1UnwrapTraits::ForwardType, |
5106 typename Bound2UnwrapTraits::ForwardType, | 1738 typename Bound2UnwrapTraits::ForwardType, |
5107 typename Bound3UnwrapTraits::ForwardType, | 1739 typename CallbackParamTraits<X3>::ForwardType x3, |
5108 typename Bound4UnwrapTraits::ForwardType, | 1740 typename CallbackParamTraits<X4>::ForwardType x4, |
5109 typename Bound5UnwrapTraits::ForwardType, | 1741 typename CallbackParamTraits<X5>::ForwardType x5, |
5110 typename Bound6UnwrapTraits::ForwardType, | 1742 typename CallbackParamTraits<X6>::ForwardType x6)> |
5111 typename Bound7UnwrapTraits::ForwardType, | 1743 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
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); | |
5118 } | 1744 } |
5119 }; | 1745 }; |
5120 | 1746 |
5121 // Arity 11 -> 3. | 1747 // Arity 6 -> 3. |
5122 template <typename StorageType, typename R,typename X1, typename X2, | 1748 template <typename StorageType, typename R,typename X1, typename X2, |
5123 typename X3, typename X4, typename X5, typename X6, typename X7, | 1749 typename X3, typename X4, typename X5, typename X6> |
5124 typename X8, typename X9, typename X10, typename X11> | 1750 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
5125 struct Invoker<8, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
5126 X11)> { | |
5127 typedef R(RunType)(BindStateBase*, | 1751 typedef R(RunType)(BindStateBase*, |
5128 typename CallbackParamTraits<X9>::ForwardType, | 1752 typename CallbackParamTraits<X4>::ForwardType, |
5129 typename CallbackParamTraits<X10>::ForwardType, | 1753 typename CallbackParamTraits<X5>::ForwardType, |
5130 typename CallbackParamTraits<X11>::ForwardType); | 1754 typename CallbackParamTraits<X6>::ForwardType); |
5131 | 1755 |
5132 typedef R(UnboundRunType)(X9, X10, X11); | 1756 typedef R(UnboundRunType)(X4, X5, X6); |
5133 | 1757 |
5134 static R Run(BindStateBase* base, | 1758 static R Run(BindStateBase* base, |
5135 typename CallbackParamTraits<X9>::ForwardType x9, | 1759 typename CallbackParamTraits<X4>::ForwardType x4, |
5136 typename CallbackParamTraits<X10>::ForwardType x10, | 1760 typename CallbackParamTraits<X5>::ForwardType x5, |
5137 typename CallbackParamTraits<X11>::ForwardType x11) { | 1761 typename CallbackParamTraits<X6>::ForwardType x6) { |
5138 StorageType* storage = static_cast<StorageType*>(base); | 1762 StorageType* storage = static_cast<StorageType*>(base); |
5139 | 1763 |
5140 // Local references to make debugger stepping easier. If in a debugger, | 1764 // Local references to make debugger stepping easier. If in a debugger, |
5141 // you really want to warp ahead and step through the | 1765 // you really want to warp ahead and step through the |
5142 // InvokeHelper<>::MakeItSo() call below. | 1766 // InvokeHelper<>::MakeItSo() call below. |
5143 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1767 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
5144 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1768 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
5145 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1769 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; | |
5151 | 1770 |
5152 typename Bound1UnwrapTraits::ForwardType x1 = | 1771 typename Bound1UnwrapTraits::ForwardType x1 = |
5153 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1772 Bound1UnwrapTraits::Unwrap(storage->p1_); |
5154 typename Bound2UnwrapTraits::ForwardType x2 = | 1773 typename Bound2UnwrapTraits::ForwardType x2 = |
5155 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1774 Bound2UnwrapTraits::Unwrap(storage->p2_); |
5156 typename Bound3UnwrapTraits::ForwardType x3 = | 1775 typename Bound3UnwrapTraits::ForwardType x3 = |
5157 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1776 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_); | |
5168 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1777 return InvokeHelper<StorageType::IsWeakCall::value, R, |
5169 typename StorageType::RunnableType, | 1778 typename StorageType::RunnableType, |
5170 void(typename Bound1UnwrapTraits::ForwardType, | 1779 void(typename Bound1UnwrapTraits::ForwardType, |
5171 typename Bound2UnwrapTraits::ForwardType, | 1780 typename Bound2UnwrapTraits::ForwardType, |
5172 typename Bound3UnwrapTraits::ForwardType, | 1781 typename Bound3UnwrapTraits::ForwardType, |
5173 typename Bound4UnwrapTraits::ForwardType, | 1782 typename CallbackParamTraits<X4>::ForwardType x4, |
5174 typename Bound5UnwrapTraits::ForwardType, | 1783 typename CallbackParamTraits<X5>::ForwardType x5, |
5175 typename Bound6UnwrapTraits::ForwardType, | 1784 typename CallbackParamTraits<X6>::ForwardType x6)> |
5176 typename Bound7UnwrapTraits::ForwardType, | 1785 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
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); | |
5183 } | 1786 } |
5184 }; | 1787 }; |
5185 | 1788 |
5186 // Arity 11 -> 2. | 1789 // Arity 6 -> 2. |
5187 template <typename StorageType, typename R,typename X1, typename X2, | 1790 template <typename StorageType, typename R,typename X1, typename X2, |
5188 typename X3, typename X4, typename X5, typename X6, typename X7, | 1791 typename X3, typename X4, typename X5, typename X6> |
5189 typename X8, typename X9, typename X10, typename X11> | 1792 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
5190 struct Invoker<9, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
5191 X11)> { | |
5192 typedef R(RunType)(BindStateBase*, | 1793 typedef R(RunType)(BindStateBase*, |
5193 typename CallbackParamTraits<X10>::ForwardType, | 1794 typename CallbackParamTraits<X5>::ForwardType, |
5194 typename CallbackParamTraits<X11>::ForwardType); | 1795 typename CallbackParamTraits<X6>::ForwardType); |
5195 | 1796 |
5196 typedef R(UnboundRunType)(X10, X11); | 1797 typedef R(UnboundRunType)(X5, X6); |
5197 | 1798 |
5198 static R Run(BindStateBase* base, | 1799 static R Run(BindStateBase* base, |
5199 typename CallbackParamTraits<X10>::ForwardType x10, | 1800 typename CallbackParamTraits<X5>::ForwardType x5, |
5200 typename CallbackParamTraits<X11>::ForwardType x11) { | 1801 typename CallbackParamTraits<X6>::ForwardType x6) { |
5201 StorageType* storage = static_cast<StorageType*>(base); | 1802 StorageType* storage = static_cast<StorageType*>(base); |
5202 | 1803 |
5203 // Local references to make debugger stepping easier. If in a debugger, | 1804 // Local references to make debugger stepping easier. If in a debugger, |
5204 // you really want to warp ahead and step through the | 1805 // you really want to warp ahead and step through the |
5205 // InvokeHelper<>::MakeItSo() call below. | 1806 // InvokeHelper<>::MakeItSo() call below. |
5206 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1807 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
5207 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1808 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
5208 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1809 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
5209 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 1810 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; | |
5215 | 1811 |
5216 typename Bound1UnwrapTraits::ForwardType x1 = | 1812 typename Bound1UnwrapTraits::ForwardType x1 = |
5217 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1813 Bound1UnwrapTraits::Unwrap(storage->p1_); |
5218 typename Bound2UnwrapTraits::ForwardType x2 = | 1814 typename Bound2UnwrapTraits::ForwardType x2 = |
5219 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1815 Bound2UnwrapTraits::Unwrap(storage->p2_); |
5220 typename Bound3UnwrapTraits::ForwardType x3 = | 1816 typename Bound3UnwrapTraits::ForwardType x3 = |
5221 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1817 Bound3UnwrapTraits::Unwrap(storage->p3_); |
5222 typename Bound4UnwrapTraits::ForwardType x4 = | 1818 typename Bound4UnwrapTraits::ForwardType x4 = |
5223 Bound4UnwrapTraits::Unwrap(storage->p4_); | 1819 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_); | |
5234 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1820 return InvokeHelper<StorageType::IsWeakCall::value, R, |
5235 typename StorageType::RunnableType, | 1821 typename StorageType::RunnableType, |
5236 void(typename Bound1UnwrapTraits::ForwardType, | 1822 void(typename Bound1UnwrapTraits::ForwardType, |
5237 typename Bound2UnwrapTraits::ForwardType, | 1823 typename Bound2UnwrapTraits::ForwardType, |
5238 typename Bound3UnwrapTraits::ForwardType, | 1824 typename Bound3UnwrapTraits::ForwardType, |
5239 typename Bound4UnwrapTraits::ForwardType, | 1825 typename Bound4UnwrapTraits::ForwardType, |
5240 typename Bound5UnwrapTraits::ForwardType, | 1826 typename CallbackParamTraits<X5>::ForwardType x5, |
5241 typename Bound6UnwrapTraits::ForwardType, | 1827 typename CallbackParamTraits<X6>::ForwardType x6)> |
5242 typename Bound7UnwrapTraits::ForwardType, | 1828 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
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); | |
5249 } | 1829 } |
5250 }; | 1830 }; |
5251 | 1831 |
5252 // Arity 11 -> 1. | 1832 // Arity 6 -> 1. |
5253 template <typename StorageType, typename R,typename X1, typename X2, | 1833 template <typename StorageType, typename R,typename X1, typename X2, |
5254 typename X3, typename X4, typename X5, typename X6, typename X7, | 1834 typename X3, typename X4, typename X5, typename X6> |
5255 typename X8, typename X9, typename X10, typename X11> | 1835 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
5256 struct Invoker<10, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
5257 X11)> { | |
5258 typedef R(RunType)(BindStateBase*, | 1836 typedef R(RunType)(BindStateBase*, |
5259 typename CallbackParamTraits<X11>::ForwardType); | 1837 typename CallbackParamTraits<X6>::ForwardType); |
5260 | 1838 |
5261 typedef R(UnboundRunType)(X11); | 1839 typedef R(UnboundRunType)(X6); |
5262 | 1840 |
5263 static R Run(BindStateBase* base, | 1841 static R Run(BindStateBase* base, |
5264 typename CallbackParamTraits<X11>::ForwardType x11) { | 1842 typename CallbackParamTraits<X6>::ForwardType x6) { |
5265 StorageType* storage = static_cast<StorageType*>(base); | 1843 StorageType* storage = static_cast<StorageType*>(base); |
5266 | 1844 |
5267 // Local references to make debugger stepping easier. If in a debugger, | 1845 // Local references to make debugger stepping easier. If in a debugger, |
5268 // you really want to warp ahead and step through the | 1846 // you really want to warp ahead and step through the |
5269 // InvokeHelper<>::MakeItSo() call below. | 1847 // InvokeHelper<>::MakeItSo() call below. |
5270 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1848 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
5271 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1849 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
5272 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1850 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
5273 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 1851 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
5274 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | 1852 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; | |
5280 | 1853 |
5281 typename Bound1UnwrapTraits::ForwardType x1 = | 1854 typename Bound1UnwrapTraits::ForwardType x1 = |
5282 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1855 Bound1UnwrapTraits::Unwrap(storage->p1_); |
5283 typename Bound2UnwrapTraits::ForwardType x2 = | 1856 typename Bound2UnwrapTraits::ForwardType x2 = |
5284 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1857 Bound2UnwrapTraits::Unwrap(storage->p2_); |
5285 typename Bound3UnwrapTraits::ForwardType x3 = | 1858 typename Bound3UnwrapTraits::ForwardType x3 = |
5286 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1859 Bound3UnwrapTraits::Unwrap(storage->p3_); |
5287 typename Bound4UnwrapTraits::ForwardType x4 = | 1860 typename Bound4UnwrapTraits::ForwardType x4 = |
5288 Bound4UnwrapTraits::Unwrap(storage->p4_); | 1861 Bound4UnwrapTraits::Unwrap(storage->p4_); |
5289 typename Bound5UnwrapTraits::ForwardType x5 = | 1862 typename Bound5UnwrapTraits::ForwardType x5 = |
5290 Bound5UnwrapTraits::Unwrap(storage->p5_); | 1863 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_); | |
5301 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1864 return InvokeHelper<StorageType::IsWeakCall::value, R, |
5302 typename StorageType::RunnableType, | 1865 typename StorageType::RunnableType, |
5303 void(typename Bound1UnwrapTraits::ForwardType, | 1866 void(typename Bound1UnwrapTraits::ForwardType, |
5304 typename Bound2UnwrapTraits::ForwardType, | 1867 typename Bound2UnwrapTraits::ForwardType, |
5305 typename Bound3UnwrapTraits::ForwardType, | 1868 typename Bound3UnwrapTraits::ForwardType, |
5306 typename Bound4UnwrapTraits::ForwardType, | 1869 typename Bound4UnwrapTraits::ForwardType, |
5307 typename Bound5UnwrapTraits::ForwardType, | 1870 typename Bound5UnwrapTraits::ForwardType, |
5308 typename Bound6UnwrapTraits::ForwardType, | 1871 typename CallbackParamTraits<X6>::ForwardType x6)> |
5309 typename Bound7UnwrapTraits::ForwardType, | 1872 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
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); | |
5316 } | 1873 } |
5317 }; | 1874 }; |
5318 | 1875 |
5319 // Arity 11 -> 0. | 1876 // Arity 6 -> 0. |
5320 template <typename StorageType, typename R,typename X1, typename X2, | 1877 template <typename StorageType, typename R,typename X1, typename X2, |
5321 typename X3, typename X4, typename X5, typename X6, typename X7, | 1878 typename X3, typename X4, typename X5, typename X6> |
5322 typename X8, typename X9, typename X10, typename X11> | 1879 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6)> { |
5323 struct Invoker<11, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, | |
5324 X11)> { | |
5325 typedef R(RunType)(BindStateBase*); | 1880 typedef R(RunType)(BindStateBase*); |
5326 | 1881 |
5327 typedef R(UnboundRunType)(); | 1882 typedef R(UnboundRunType)(); |
5328 | 1883 |
5329 static R Run(BindStateBase* base) { | 1884 static R Run(BindStateBase* base) { |
5330 StorageType* storage = static_cast<StorageType*>(base); | 1885 StorageType* storage = static_cast<StorageType*>(base); |
5331 | 1886 |
5332 // Local references to make debugger stepping easier. If in a debugger, | 1887 // Local references to make debugger stepping easier. If in a debugger, |
5333 // you really want to warp ahead and step through the | 1888 // you really want to warp ahead and step through the |
5334 // InvokeHelper<>::MakeItSo() call below. | 1889 // InvokeHelper<>::MakeItSo() call below. |
5335 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | 1890 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; |
5336 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | 1891 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; |
5337 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | 1892 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; |
5338 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | 1893 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; |
5339 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | 1894 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; |
5340 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; | 1895 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; | |
5346 | 1896 |
5347 typename Bound1UnwrapTraits::ForwardType x1 = | 1897 typename Bound1UnwrapTraits::ForwardType x1 = |
5348 Bound1UnwrapTraits::Unwrap(storage->p1_); | 1898 Bound1UnwrapTraits::Unwrap(storage->p1_); |
5349 typename Bound2UnwrapTraits::ForwardType x2 = | 1899 typename Bound2UnwrapTraits::ForwardType x2 = |
5350 Bound2UnwrapTraits::Unwrap(storage->p2_); | 1900 Bound2UnwrapTraits::Unwrap(storage->p2_); |
5351 typename Bound3UnwrapTraits::ForwardType x3 = | 1901 typename Bound3UnwrapTraits::ForwardType x3 = |
5352 Bound3UnwrapTraits::Unwrap(storage->p3_); | 1902 Bound3UnwrapTraits::Unwrap(storage->p3_); |
5353 typename Bound4UnwrapTraits::ForwardType x4 = | 1903 typename Bound4UnwrapTraits::ForwardType x4 = |
5354 Bound4UnwrapTraits::Unwrap(storage->p4_); | 1904 Bound4UnwrapTraits::Unwrap(storage->p4_); |
5355 typename Bound5UnwrapTraits::ForwardType x5 = | 1905 typename Bound5UnwrapTraits::ForwardType x5 = |
5356 Bound5UnwrapTraits::Unwrap(storage->p5_); | 1906 Bound5UnwrapTraits::Unwrap(storage->p5_); |
5357 typename Bound6UnwrapTraits::ForwardType x6 = | 1907 typename Bound6UnwrapTraits::ForwardType x6 = |
5358 Bound6UnwrapTraits::Unwrap(storage->p6_); | 1908 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_); | |
5369 return InvokeHelper<StorageType::IsWeakCall::value, R, | 1909 return InvokeHelper<StorageType::IsWeakCall::value, R, |
5370 typename StorageType::RunnableType, | 1910 typename StorageType::RunnableType, |
5371 void(typename Bound1UnwrapTraits::ForwardType, | 1911 void(typename Bound1UnwrapTraits::ForwardType, |
5372 typename Bound2UnwrapTraits::ForwardType, | 1912 typename Bound2UnwrapTraits::ForwardType, |
5373 typename Bound3UnwrapTraits::ForwardType, | 1913 typename Bound3UnwrapTraits::ForwardType, |
5374 typename Bound4UnwrapTraits::ForwardType, | 1914 typename Bound4UnwrapTraits::ForwardType, |
5375 typename Bound5UnwrapTraits::ForwardType, | 1915 typename Bound5UnwrapTraits::ForwardType, |
5376 typename Bound6UnwrapTraits::ForwardType, | 1916 typename Bound6UnwrapTraits::ForwardType)> |
5377 typename Bound7UnwrapTraits::ForwardType, | 1917 ::MakeItSo(storage->runnable_, x1, x2, x3, x4, x5, x6); |
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); | |
5384 } | 1918 } |
5385 }; | 1919 }; |
5386 | 1920 |
5387 | 1921 |
5388 // BindState<> | 1922 // BindState<> |
5389 // | 1923 // |
5390 // This stores all the state passed into Bind() and is also where most | 1924 // This stores all the state passed into Bind() and is also where most |
5391 // of the template resolution magic occurs. | 1925 // of the template resolution magic occurs. |
5392 // | 1926 // |
5393 // Runnable is the functor we are binding arguments to. | 1927 // Runnable is the functor we are binding arguments to. |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5601 | 2135 |
5602 RunnableType runnable_; | 2136 RunnableType runnable_; |
5603 P1 p1_; | 2137 P1 p1_; |
5604 P2 p2_; | 2138 P2 p2_; |
5605 P3 p3_; | 2139 P3 p3_; |
5606 P4 p4_; | 2140 P4 p4_; |
5607 P5 p5_; | 2141 P5 p5_; |
5608 P6 p6_; | 2142 P6 p6_; |
5609 }; | 2143 }; |
5610 | 2144 |
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 | |
5868 } // namespace internal | 2145 } // namespace internal |
5869 } // namespace base | 2146 } // namespace base |
5870 | 2147 |
5871 #endif // BASE_BIND_INTERNAL_H_ | 2148 #endif // BASE_BIND_INTERNAL_H_ |
OLD | NEW |