| 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 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 6 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 7 // Use of this source code is governed by a BSD-style license that can be | 7 // Use of this source code is governed by a BSD-style license that can be |
| 8 // found in the LICENSE file. | 8 // found in the LICENSE file. |
| 9 | 9 |
| 10 #ifndef BASE_BIND_INTERNAL_H_ | 10 #ifndef BASE_BIND_INTERNAL_H_ |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 typename CallbackParamTraits<A7>::ForwardType a7) { | 637 typename CallbackParamTraits<A7>::ForwardType a7) { |
| 638 return (object->*method_)(CallbackForward(a1), CallbackForward(a2), | 638 return (object->*method_)(CallbackForward(a1), CallbackForward(a2), |
| 639 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), | 639 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), |
| 640 CallbackForward(a6), CallbackForward(a7)); | 640 CallbackForward(a6), CallbackForward(a7)); |
| 641 } | 641 } |
| 642 | 642 |
| 643 private: | 643 private: |
| 644 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7) const; | 644 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7) const; |
| 645 }; | 645 }; |
| 646 | 646 |
| 647 // Function: Arity 8. | |
| 648 template <typename R, typename A1, typename A2, typename A3, typename A4, | |
| 649 typename A5, typename A6, typename A7, typename A8> | |
| 650 class RunnableAdapter<R(*)(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 651 public: | |
| 652 typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7, A8); | |
| 653 | |
| 654 explicit RunnableAdapter(R(*function)(A1, A2, A3, A4, A5, A6, A7, A8)) | |
| 655 : function_(function) { | |
| 656 } | |
| 657 | |
| 658 R Run(typename CallbackParamTraits<A1>::ForwardType a1, | |
| 659 typename CallbackParamTraits<A2>::ForwardType a2, | |
| 660 typename CallbackParamTraits<A3>::ForwardType a3, | |
| 661 typename CallbackParamTraits<A4>::ForwardType a4, | |
| 662 typename CallbackParamTraits<A5>::ForwardType a5, | |
| 663 typename CallbackParamTraits<A6>::ForwardType a6, | |
| 664 typename CallbackParamTraits<A7>::ForwardType a7, | |
| 665 typename CallbackParamTraits<A8>::ForwardType a8) { | |
| 666 return function_(CallbackForward(a1), CallbackForward(a2), | |
| 667 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), | |
| 668 CallbackForward(a6), CallbackForward(a7), CallbackForward(a8)); | |
| 669 } | |
| 670 | |
| 671 private: | |
| 672 R (*function_)(A1, A2, A3, A4, A5, A6, A7, A8); | |
| 673 }; | |
| 674 | |
| 675 // Method: Arity 8. | |
| 676 template <typename R, typename T, typename A1, typename A2, typename A3, | |
| 677 typename A4, typename A5, typename A6, typename A7, typename A8> | |
| 678 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 679 public: | |
| 680 typedef R (RunType)(T*, A1, A2, A3, A4, A5, A6, A7, A8); | |
| 681 typedef true_type IsMethod; | |
| 682 | |
| 683 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8)) | |
| 684 : method_(method) { | |
| 685 } | |
| 686 | |
| 687 R Run(T* object, typename CallbackParamTraits<A1>::ForwardType a1, | |
| 688 typename CallbackParamTraits<A2>::ForwardType a2, | |
| 689 typename CallbackParamTraits<A3>::ForwardType a3, | |
| 690 typename CallbackParamTraits<A4>::ForwardType a4, | |
| 691 typename CallbackParamTraits<A5>::ForwardType a5, | |
| 692 typename CallbackParamTraits<A6>::ForwardType a6, | |
| 693 typename CallbackParamTraits<A7>::ForwardType a7, | |
| 694 typename CallbackParamTraits<A8>::ForwardType a8) { | |
| 695 return (object->*method_)(CallbackForward(a1), CallbackForward(a2), | |
| 696 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), | |
| 697 CallbackForward(a6), CallbackForward(a7), CallbackForward(a8)); | |
| 698 } | |
| 699 | |
| 700 private: | |
| 701 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8); | |
| 702 }; | |
| 703 | |
| 704 // Const Method: Arity 8. | |
| 705 template <typename R, typename T, typename A1, typename A2, typename A3, | |
| 706 typename A4, typename A5, typename A6, typename A7, typename A8> | |
| 707 class RunnableAdapter<R(T::*)(A1, A2, A3, A4, A5, A6, A7, A8) const> { | |
| 708 public: | |
| 709 typedef R (RunType)(const T*, A1, A2, A3, A4, A5, A6, A7, A8); | |
| 710 typedef true_type IsMethod; | |
| 711 | |
| 712 explicit RunnableAdapter(R(T::*method)(A1, A2, A3, A4, A5, A6, A7, A8) const) | |
| 713 : method_(method) { | |
| 714 } | |
| 715 | |
| 716 R Run(const T* object, typename CallbackParamTraits<A1>::ForwardType a1, | |
| 717 typename CallbackParamTraits<A2>::ForwardType a2, | |
| 718 typename CallbackParamTraits<A3>::ForwardType a3, | |
| 719 typename CallbackParamTraits<A4>::ForwardType a4, | |
| 720 typename CallbackParamTraits<A5>::ForwardType a5, | |
| 721 typename CallbackParamTraits<A6>::ForwardType a6, | |
| 722 typename CallbackParamTraits<A7>::ForwardType a7, | |
| 723 typename CallbackParamTraits<A8>::ForwardType a8) { | |
| 724 return (object->*method_)(CallbackForward(a1), CallbackForward(a2), | |
| 725 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), | |
| 726 CallbackForward(a6), CallbackForward(a7), CallbackForward(a8)); | |
| 727 } | |
| 728 | |
| 729 private: | |
| 730 R (T::*method_)(A1, A2, A3, A4, A5, A6, A7, A8) const; | |
| 731 }; | |
| 732 | 647 |
| 733 // FunctionTraits<> | 648 // FunctionTraits<> |
| 734 // | 649 // |
| 735 // Breaks a function signature apart into typedefs for easier introspection. | 650 // Breaks a function signature apart into typedefs for easier introspection. |
| 736 template <typename Sig> | 651 template <typename Sig> |
| 737 struct FunctionTraits; | 652 struct FunctionTraits; |
| 738 | 653 |
| 739 template <typename R> | 654 template <typename R> |
| 740 struct FunctionTraits<R()> { | 655 struct FunctionTraits<R()> { |
| 741 typedef R ReturnType; | 656 typedef R ReturnType; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 typedef R ReturnType; | 715 typedef R ReturnType; |
| 801 typedef A1 A1Type; | 716 typedef A1 A1Type; |
| 802 typedef A2 A2Type; | 717 typedef A2 A2Type; |
| 803 typedef A3 A3Type; | 718 typedef A3 A3Type; |
| 804 typedef A4 A4Type; | 719 typedef A4 A4Type; |
| 805 typedef A5 A5Type; | 720 typedef A5 A5Type; |
| 806 typedef A6 A6Type; | 721 typedef A6 A6Type; |
| 807 typedef A7 A7Type; | 722 typedef A7 A7Type; |
| 808 }; | 723 }; |
| 809 | 724 |
| 810 template <typename R, typename A1, typename A2, typename A3, typename A4, | |
| 811 typename A5, typename A6, typename A7, typename A8> | |
| 812 struct FunctionTraits<R(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 813 typedef R ReturnType; | |
| 814 typedef A1 A1Type; | |
| 815 typedef A2 A2Type; | |
| 816 typedef A3 A3Type; | |
| 817 typedef A4 A4Type; | |
| 818 typedef A5 A5Type; | |
| 819 typedef A6 A6Type; | |
| 820 typedef A7 A7Type; | |
| 821 typedef A8 A8Type; | |
| 822 }; | |
| 823 | 725 |
| 824 // ForceVoidReturn<> | 726 // ForceVoidReturn<> |
| 825 // | 727 // |
| 826 // Set of templates that support forcing the function return type to void. | 728 // Set of templates that support forcing the function return type to void. |
| 827 template <typename Sig> | 729 template <typename Sig> |
| 828 struct ForceVoidReturn; | 730 struct ForceVoidReturn; |
| 829 | 731 |
| 830 template <typename R> | 732 template <typename R> |
| 831 struct ForceVoidReturn<R()> { | 733 struct ForceVoidReturn<R()> { |
| 832 typedef void(RunType)(); | 734 typedef void(RunType)(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 863 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6)> { | 765 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6)> { |
| 864 typedef void(RunType)(A1, A2, A3, A4, A5, A6); | 766 typedef void(RunType)(A1, A2, A3, A4, A5, A6); |
| 865 }; | 767 }; |
| 866 | 768 |
| 867 template <typename R, typename A1, typename A2, typename A3, typename A4, | 769 template <typename R, typename A1, typename A2, typename A3, typename A4, |
| 868 typename A5, typename A6, typename A7> | 770 typename A5, typename A6, typename A7> |
| 869 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7)> { | 771 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7)> { |
| 870 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7); | 772 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7); |
| 871 }; | 773 }; |
| 872 | 774 |
| 873 template <typename R, typename A1, typename A2, typename A3, typename A4, | |
| 874 typename A5, typename A6, typename A7, typename A8> | |
| 875 struct ForceVoidReturn<R(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 876 typedef void(RunType)(A1, A2, A3, A4, A5, A6, A7, A8); | |
| 877 }; | |
| 878 | 775 |
| 879 // FunctorTraits<> | 776 // FunctorTraits<> |
| 880 // | 777 // |
| 881 // See description at top of file. | 778 // See description at top of file. |
| 882 template <typename T> | 779 template <typename T> |
| 883 struct FunctorTraits { | 780 struct FunctorTraits { |
| 884 typedef RunnableAdapter<T> RunnableType; | 781 typedef RunnableAdapter<T> RunnableType; |
| 885 typedef typename RunnableType::RunType RunType; | 782 typedef typename RunnableType::RunType RunType; |
| 886 }; | 783 }; |
| 887 | 784 |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 struct InvokeHelper<false, ReturnType, Runnable, | 1013 struct InvokeHelper<false, ReturnType, Runnable, |
| 1117 void(A1, A2, A3, A4, A5, A6)> { | 1014 void(A1, A2, A3, A4, A5, A6)> { |
| 1118 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, | 1015 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, |
| 1119 A5 a5, A6 a6) { | 1016 A5 a5, A6 a6) { |
| 1120 return runnable.Run(CallbackForward(a1), CallbackForward(a2), | 1017 return runnable.Run(CallbackForward(a1), CallbackForward(a2), |
| 1121 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), | 1018 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), |
| 1122 CallbackForward(a6)); | 1019 CallbackForward(a6)); |
| 1123 } | 1020 } |
| 1124 }; | 1021 }; |
| 1125 | 1022 |
| 1126 template <typename Runnable, typename A1, typename A2, typename A3, typename A4, | 1023 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, |
| 1127 typename A5, typename A6> | 1024 typename A5, typename A6> |
| 1128 struct InvokeHelper<false, void, Runnable, | 1025 struct InvokeHelper<false, void, Runnable, |
| 1129 void(A1, A2, A3, A4, A5, A6)> { | 1026 void(A1, A2, A3, A4, A5, A6)> { |
| 1130 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, | 1027 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, |
| 1131 A6 a6) { | 1028 A6 a6) { |
| 1132 runnable.Run(CallbackForward(a1), CallbackForward(a2), CallbackForward(a3), | 1029 runnable.Run(CallbackForward(a1), CallbackForward(a2), CallbackForward(a3), |
| 1133 CallbackForward(a4), CallbackForward(a5), CallbackForward(a6)); | 1030 CallbackForward(a4), CallbackForward(a5), CallbackForward(a6)); |
| 1134 } | 1031 } |
| 1135 }; | 1032 }; |
| 1136 | 1033 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1182 if (!a1.get()) { | 1079 if (!a1.get()) { |
| 1183 return; | 1080 return; |
| 1184 } | 1081 } |
| 1185 | 1082 |
| 1186 runnable.Run(CallbackForward(a1), CallbackForward(a2), CallbackForward(a3), | 1083 runnable.Run(CallbackForward(a1), CallbackForward(a2), CallbackForward(a3), |
| 1187 CallbackForward(a4), CallbackForward(a5), CallbackForward(a6), | 1084 CallbackForward(a4), CallbackForward(a5), CallbackForward(a6), |
| 1188 CallbackForward(a7)); | 1085 CallbackForward(a7)); |
| 1189 } | 1086 } |
| 1190 }; | 1087 }; |
| 1191 | 1088 |
| 1192 template <typename ReturnType, typename Runnable,typename A1, typename A2, | |
| 1193 typename A3, typename A4, typename A5, typename A6, typename A7, | |
| 1194 typename A8> | |
| 1195 struct InvokeHelper<false, ReturnType, Runnable, | |
| 1196 void(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 1197 static ReturnType MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, | |
| 1198 A5 a5, A6 a6, A7 a7, A8 a8) { | |
| 1199 return runnable.Run(CallbackForward(a1), CallbackForward(a2), | |
| 1200 CallbackForward(a3), CallbackForward(a4), CallbackForward(a5), | |
| 1201 CallbackForward(a6), CallbackForward(a7), CallbackForward(a8)); | |
| 1202 } | |
| 1203 }; | |
| 1204 | |
| 1205 template <typename Runnable,typename A1, typename A2, typename A3, typename A4, | |
| 1206 typename A5, typename A6, typename A7, typename A8> | |
| 1207 struct InvokeHelper<false, void, Runnable, | |
| 1208 void(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 1209 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, | |
| 1210 A6 a6, A7 a7, A8 a8) { | |
| 1211 runnable.Run(CallbackForward(a1), CallbackForward(a2), CallbackForward(a3), | |
| 1212 CallbackForward(a4), CallbackForward(a5), CallbackForward(a6), | |
| 1213 CallbackForward(a7), CallbackForward(a8)); | |
| 1214 } | |
| 1215 }; | |
| 1216 | |
| 1217 template <typename Runnable, typename A1, typename A2, typename A3, | |
| 1218 typename A4, typename A5, typename A6, typename A7, typename A8> | |
| 1219 struct InvokeHelper<true, void, Runnable, | |
| 1220 void(A1, A2, A3, A4, A5, A6, A7, A8)> { | |
| 1221 static void MakeItSo(Runnable runnable, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, | |
| 1222 A6 a6, A7 a7, A8 a8) { | |
| 1223 if (!a1.get()) { | |
| 1224 return; | |
| 1225 } | |
| 1226 | |
| 1227 runnable.Run(CallbackForward(a1), CallbackForward(a2), CallbackForward(a3), | |
| 1228 CallbackForward(a4), CallbackForward(a5), CallbackForward(a6), | |
| 1229 CallbackForward(a7), CallbackForward(a8)); | |
| 1230 } | |
| 1231 }; | |
| 1232 | |
| 1233 #if !defined(_MSC_VER) | 1089 #if !defined(_MSC_VER) |
| 1234 | 1090 |
| 1235 template <typename ReturnType, typename Runnable, typename ArgsType> | 1091 template <typename ReturnType, typename Runnable, typename ArgsType> |
| 1236 struct InvokeHelper<true, ReturnType, Runnable, ArgsType> { | 1092 struct InvokeHelper<true, ReturnType, Runnable, ArgsType> { |
| 1237 // WeakCalls are only supported for functions with a void return type. | 1093 // WeakCalls are only supported for functions with a void return type. |
| 1238 // Otherwise, the function result would be undefined if the the WeakPtr<> | 1094 // Otherwise, the function result would be undefined if the the WeakPtr<> |
| 1239 // is invalidated. | 1095 // is invalidated. |
| 1240 COMPILE_ASSERT(is_void<ReturnType>::value, | 1096 COMPILE_ASSERT(is_void<ReturnType>::value, |
| 1241 weak_ptrs_can_only_bind_to_methods_without_return_values); | 1097 weak_ptrs_can_only_bind_to_methods_without_return_values); |
| 1242 }; | 1098 }; |
| (...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2655 typename Bound5UnwrapTraits::ForwardType, | 2511 typename Bound5UnwrapTraits::ForwardType, |
| 2656 typename Bound6UnwrapTraits::ForwardType, | 2512 typename Bound6UnwrapTraits::ForwardType, |
| 2657 typename Bound7UnwrapTraits::ForwardType)> | 2513 typename Bound7UnwrapTraits::ForwardType)> |
| 2658 ::MakeItSo(storage->runnable_, CallbackForward(x1), | 2514 ::MakeItSo(storage->runnable_, CallbackForward(x1), |
| 2659 CallbackForward(x2), CallbackForward(x3), | 2515 CallbackForward(x2), CallbackForward(x3), |
| 2660 CallbackForward(x4), CallbackForward(x5), | 2516 CallbackForward(x4), CallbackForward(x5), |
| 2661 CallbackForward(x6), CallbackForward(x7)); | 2517 CallbackForward(x6), CallbackForward(x7)); |
| 2662 } | 2518 } |
| 2663 }; | 2519 }; |
| 2664 | 2520 |
| 2665 // Arity 8 -> 8. | |
| 2666 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2667 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2668 typename X8> | |
| 2669 struct Invoker<0, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2670 typedef R(RunType)(BindStateBase*, | |
| 2671 typename CallbackParamTraits<X1>::ForwardType, | |
| 2672 typename CallbackParamTraits<X2>::ForwardType, | |
| 2673 typename CallbackParamTraits<X3>::ForwardType, | |
| 2674 typename CallbackParamTraits<X4>::ForwardType, | |
| 2675 typename CallbackParamTraits<X5>::ForwardType, | |
| 2676 typename CallbackParamTraits<X6>::ForwardType, | |
| 2677 typename CallbackParamTraits<X7>::ForwardType, | |
| 2678 typename CallbackParamTraits<X8>::ForwardType); | |
| 2679 | |
| 2680 typedef R(UnboundRunType)(X1, X2, X3, X4, X5, X6, X7, X8); | |
| 2681 | |
| 2682 static R Run(BindStateBase* base, | |
| 2683 typename CallbackParamTraits<X1>::ForwardType x1, | |
| 2684 typename CallbackParamTraits<X2>::ForwardType x2, | |
| 2685 typename CallbackParamTraits<X3>::ForwardType x3, | |
| 2686 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2687 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2688 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2689 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2690 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2691 StorageType* storage = static_cast<StorageType*>(base); | |
| 2692 | |
| 2693 // Local references to make debugger stepping easier. If in a debugger, | |
| 2694 // you really want to warp ahead and step through the | |
| 2695 // InvokeHelper<>::MakeItSo() call below. | |
| 2696 | |
| 2697 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 2698 typename StorageType::RunnableType, | |
| 2699 void(typename CallbackParamTraits<X1>::ForwardType x1, | |
| 2700 typename CallbackParamTraits<X2>::ForwardType x2, | |
| 2701 typename CallbackParamTraits<X3>::ForwardType x3, | |
| 2702 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2703 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2704 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2705 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2706 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 2707 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 2708 CallbackForward(x2), CallbackForward(x3), | |
| 2709 CallbackForward(x4), CallbackForward(x5), | |
| 2710 CallbackForward(x6), CallbackForward(x7), | |
| 2711 CallbackForward(x8)); | |
| 2712 } | |
| 2713 }; | |
| 2714 | |
| 2715 // Arity 8 -> 7. | |
| 2716 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2717 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2718 typename X8> | |
| 2719 struct Invoker<1, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2720 typedef R(RunType)(BindStateBase*, | |
| 2721 typename CallbackParamTraits<X2>::ForwardType, | |
| 2722 typename CallbackParamTraits<X3>::ForwardType, | |
| 2723 typename CallbackParamTraits<X4>::ForwardType, | |
| 2724 typename CallbackParamTraits<X5>::ForwardType, | |
| 2725 typename CallbackParamTraits<X6>::ForwardType, | |
| 2726 typename CallbackParamTraits<X7>::ForwardType, | |
| 2727 typename CallbackParamTraits<X8>::ForwardType); | |
| 2728 | |
| 2729 typedef R(UnboundRunType)(X2, X3, X4, X5, X6, X7, X8); | |
| 2730 | |
| 2731 static R Run(BindStateBase* base, | |
| 2732 typename CallbackParamTraits<X2>::ForwardType x2, | |
| 2733 typename CallbackParamTraits<X3>::ForwardType x3, | |
| 2734 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2735 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2736 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2737 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2738 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2739 StorageType* storage = static_cast<StorageType*>(base); | |
| 2740 | |
| 2741 // Local references to make debugger stepping easier. If in a debugger, | |
| 2742 // you really want to warp ahead and step through the | |
| 2743 // InvokeHelper<>::MakeItSo() call below. | |
| 2744 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 2745 | |
| 2746 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 2747 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 2748 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 2749 typename StorageType::RunnableType, | |
| 2750 void(typename Bound1UnwrapTraits::ForwardType, | |
| 2751 typename CallbackParamTraits<X2>::ForwardType x2, | |
| 2752 typename CallbackParamTraits<X3>::ForwardType x3, | |
| 2753 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2754 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2755 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2756 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2757 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 2758 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 2759 CallbackForward(x2), CallbackForward(x3), | |
| 2760 CallbackForward(x4), CallbackForward(x5), | |
| 2761 CallbackForward(x6), CallbackForward(x7), | |
| 2762 CallbackForward(x8)); | |
| 2763 } | |
| 2764 }; | |
| 2765 | |
| 2766 // Arity 8 -> 6. | |
| 2767 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2768 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2769 typename X8> | |
| 2770 struct Invoker<2, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2771 typedef R(RunType)(BindStateBase*, | |
| 2772 typename CallbackParamTraits<X3>::ForwardType, | |
| 2773 typename CallbackParamTraits<X4>::ForwardType, | |
| 2774 typename CallbackParamTraits<X5>::ForwardType, | |
| 2775 typename CallbackParamTraits<X6>::ForwardType, | |
| 2776 typename CallbackParamTraits<X7>::ForwardType, | |
| 2777 typename CallbackParamTraits<X8>::ForwardType); | |
| 2778 | |
| 2779 typedef R(UnboundRunType)(X3, X4, X5, X6, X7, X8); | |
| 2780 | |
| 2781 static R Run(BindStateBase* base, | |
| 2782 typename CallbackParamTraits<X3>::ForwardType x3, | |
| 2783 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2784 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2785 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2786 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2787 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2788 StorageType* storage = static_cast<StorageType*>(base); | |
| 2789 | |
| 2790 // Local references to make debugger stepping easier. If in a debugger, | |
| 2791 // you really want to warp ahead and step through the | |
| 2792 // InvokeHelper<>::MakeItSo() call below. | |
| 2793 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 2794 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 2795 | |
| 2796 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 2797 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 2798 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 2799 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 2800 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 2801 typename StorageType::RunnableType, | |
| 2802 void(typename Bound1UnwrapTraits::ForwardType, | |
| 2803 typename Bound2UnwrapTraits::ForwardType, | |
| 2804 typename CallbackParamTraits<X3>::ForwardType x3, | |
| 2805 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2806 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2807 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2808 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2809 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 2810 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 2811 CallbackForward(x2), CallbackForward(x3), | |
| 2812 CallbackForward(x4), CallbackForward(x5), | |
| 2813 CallbackForward(x6), CallbackForward(x7), | |
| 2814 CallbackForward(x8)); | |
| 2815 } | |
| 2816 }; | |
| 2817 | |
| 2818 // Arity 8 -> 5. | |
| 2819 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2820 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2821 typename X8> | |
| 2822 struct Invoker<3, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2823 typedef R(RunType)(BindStateBase*, | |
| 2824 typename CallbackParamTraits<X4>::ForwardType, | |
| 2825 typename CallbackParamTraits<X5>::ForwardType, | |
| 2826 typename CallbackParamTraits<X6>::ForwardType, | |
| 2827 typename CallbackParamTraits<X7>::ForwardType, | |
| 2828 typename CallbackParamTraits<X8>::ForwardType); | |
| 2829 | |
| 2830 typedef R(UnboundRunType)(X4, X5, X6, X7, X8); | |
| 2831 | |
| 2832 static R Run(BindStateBase* base, | |
| 2833 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2834 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2835 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2836 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2837 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2838 StorageType* storage = static_cast<StorageType*>(base); | |
| 2839 | |
| 2840 // Local references to make debugger stepping easier. If in a debugger, | |
| 2841 // you really want to warp ahead and step through the | |
| 2842 // InvokeHelper<>::MakeItSo() call below. | |
| 2843 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 2844 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 2845 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
| 2846 | |
| 2847 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 2848 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 2849 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 2850 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 2851 typename Bound3UnwrapTraits::ForwardType x3 = | |
| 2852 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
| 2853 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 2854 typename StorageType::RunnableType, | |
| 2855 void(typename Bound1UnwrapTraits::ForwardType, | |
| 2856 typename Bound2UnwrapTraits::ForwardType, | |
| 2857 typename Bound3UnwrapTraits::ForwardType, | |
| 2858 typename CallbackParamTraits<X4>::ForwardType x4, | |
| 2859 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2860 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2861 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2862 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 2863 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 2864 CallbackForward(x2), CallbackForward(x3), | |
| 2865 CallbackForward(x4), CallbackForward(x5), | |
| 2866 CallbackForward(x6), CallbackForward(x7), | |
| 2867 CallbackForward(x8)); | |
| 2868 } | |
| 2869 }; | |
| 2870 | |
| 2871 // Arity 8 -> 4. | |
| 2872 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2873 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2874 typename X8> | |
| 2875 struct Invoker<4, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2876 typedef R(RunType)(BindStateBase*, | |
| 2877 typename CallbackParamTraits<X5>::ForwardType, | |
| 2878 typename CallbackParamTraits<X6>::ForwardType, | |
| 2879 typename CallbackParamTraits<X7>::ForwardType, | |
| 2880 typename CallbackParamTraits<X8>::ForwardType); | |
| 2881 | |
| 2882 typedef R(UnboundRunType)(X5, X6, X7, X8); | |
| 2883 | |
| 2884 static R Run(BindStateBase* base, | |
| 2885 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2886 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2887 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2888 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2889 StorageType* storage = static_cast<StorageType*>(base); | |
| 2890 | |
| 2891 // Local references to make debugger stepping easier. If in a debugger, | |
| 2892 // you really want to warp ahead and step through the | |
| 2893 // InvokeHelper<>::MakeItSo() call below. | |
| 2894 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 2895 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 2896 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
| 2897 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
| 2898 | |
| 2899 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 2900 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 2901 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 2902 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 2903 typename Bound3UnwrapTraits::ForwardType x3 = | |
| 2904 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
| 2905 typename Bound4UnwrapTraits::ForwardType x4 = | |
| 2906 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
| 2907 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 2908 typename StorageType::RunnableType, | |
| 2909 void(typename Bound1UnwrapTraits::ForwardType, | |
| 2910 typename Bound2UnwrapTraits::ForwardType, | |
| 2911 typename Bound3UnwrapTraits::ForwardType, | |
| 2912 typename Bound4UnwrapTraits::ForwardType, | |
| 2913 typename CallbackParamTraits<X5>::ForwardType x5, | |
| 2914 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2915 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2916 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 2917 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 2918 CallbackForward(x2), CallbackForward(x3), | |
| 2919 CallbackForward(x4), CallbackForward(x5), | |
| 2920 CallbackForward(x6), CallbackForward(x7), | |
| 2921 CallbackForward(x8)); | |
| 2922 } | |
| 2923 }; | |
| 2924 | |
| 2925 // Arity 8 -> 3. | |
| 2926 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2927 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2928 typename X8> | |
| 2929 struct Invoker<5, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2930 typedef R(RunType)(BindStateBase*, | |
| 2931 typename CallbackParamTraits<X6>::ForwardType, | |
| 2932 typename CallbackParamTraits<X7>::ForwardType, | |
| 2933 typename CallbackParamTraits<X8>::ForwardType); | |
| 2934 | |
| 2935 typedef R(UnboundRunType)(X6, X7, X8); | |
| 2936 | |
| 2937 static R Run(BindStateBase* base, | |
| 2938 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2939 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2940 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2941 StorageType* storage = static_cast<StorageType*>(base); | |
| 2942 | |
| 2943 // Local references to make debugger stepping easier. If in a debugger, | |
| 2944 // you really want to warp ahead and step through the | |
| 2945 // InvokeHelper<>::MakeItSo() call below. | |
| 2946 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 2947 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 2948 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
| 2949 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
| 2950 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | |
| 2951 | |
| 2952 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 2953 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 2954 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 2955 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 2956 typename Bound3UnwrapTraits::ForwardType x3 = | |
| 2957 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
| 2958 typename Bound4UnwrapTraits::ForwardType x4 = | |
| 2959 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
| 2960 typename Bound5UnwrapTraits::ForwardType x5 = | |
| 2961 Bound5UnwrapTraits::Unwrap(storage->p5_); | |
| 2962 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 2963 typename StorageType::RunnableType, | |
| 2964 void(typename Bound1UnwrapTraits::ForwardType, | |
| 2965 typename Bound2UnwrapTraits::ForwardType, | |
| 2966 typename Bound3UnwrapTraits::ForwardType, | |
| 2967 typename Bound4UnwrapTraits::ForwardType, | |
| 2968 typename Bound5UnwrapTraits::ForwardType, | |
| 2969 typename CallbackParamTraits<X6>::ForwardType x6, | |
| 2970 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2971 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 2972 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 2973 CallbackForward(x2), CallbackForward(x3), | |
| 2974 CallbackForward(x4), CallbackForward(x5), | |
| 2975 CallbackForward(x6), CallbackForward(x7), | |
| 2976 CallbackForward(x8)); | |
| 2977 } | |
| 2978 }; | |
| 2979 | |
| 2980 // Arity 8 -> 2. | |
| 2981 template <typename StorageType, typename R,typename X1, typename X2, | |
| 2982 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 2983 typename X8> | |
| 2984 struct Invoker<6, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 2985 typedef R(RunType)(BindStateBase*, | |
| 2986 typename CallbackParamTraits<X7>::ForwardType, | |
| 2987 typename CallbackParamTraits<X8>::ForwardType); | |
| 2988 | |
| 2989 typedef R(UnboundRunType)(X7, X8); | |
| 2990 | |
| 2991 static R Run(BindStateBase* base, | |
| 2992 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 2993 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 2994 StorageType* storage = static_cast<StorageType*>(base); | |
| 2995 | |
| 2996 // Local references to make debugger stepping easier. If in a debugger, | |
| 2997 // you really want to warp ahead and step through the | |
| 2998 // InvokeHelper<>::MakeItSo() call below. | |
| 2999 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 3000 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 3001 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
| 3002 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
| 3003 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | |
| 3004 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; | |
| 3005 | |
| 3006 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 3007 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 3008 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 3009 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 3010 typename Bound3UnwrapTraits::ForwardType x3 = | |
| 3011 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
| 3012 typename Bound4UnwrapTraits::ForwardType x4 = | |
| 3013 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
| 3014 typename Bound5UnwrapTraits::ForwardType x5 = | |
| 3015 Bound5UnwrapTraits::Unwrap(storage->p5_); | |
| 3016 typename Bound6UnwrapTraits::ForwardType x6 = | |
| 3017 Bound6UnwrapTraits::Unwrap(storage->p6_); | |
| 3018 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 3019 typename StorageType::RunnableType, | |
| 3020 void(typename Bound1UnwrapTraits::ForwardType, | |
| 3021 typename Bound2UnwrapTraits::ForwardType, | |
| 3022 typename Bound3UnwrapTraits::ForwardType, | |
| 3023 typename Bound4UnwrapTraits::ForwardType, | |
| 3024 typename Bound5UnwrapTraits::ForwardType, | |
| 3025 typename Bound6UnwrapTraits::ForwardType, | |
| 3026 typename CallbackParamTraits<X7>::ForwardType x7, | |
| 3027 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 3028 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 3029 CallbackForward(x2), CallbackForward(x3), | |
| 3030 CallbackForward(x4), CallbackForward(x5), | |
| 3031 CallbackForward(x6), CallbackForward(x7), | |
| 3032 CallbackForward(x8)); | |
| 3033 } | |
| 3034 }; | |
| 3035 | |
| 3036 // Arity 8 -> 1. | |
| 3037 template <typename StorageType, typename R,typename X1, typename X2, | |
| 3038 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 3039 typename X8> | |
| 3040 struct Invoker<7, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 3041 typedef R(RunType)(BindStateBase*, | |
| 3042 typename CallbackParamTraits<X8>::ForwardType); | |
| 3043 | |
| 3044 typedef R(UnboundRunType)(X8); | |
| 3045 | |
| 3046 static R Run(BindStateBase* base, | |
| 3047 typename CallbackParamTraits<X8>::ForwardType x8) { | |
| 3048 StorageType* storage = static_cast<StorageType*>(base); | |
| 3049 | |
| 3050 // Local references to make debugger stepping easier. If in a debugger, | |
| 3051 // you really want to warp ahead and step through the | |
| 3052 // InvokeHelper<>::MakeItSo() call below. | |
| 3053 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 3054 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 3055 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
| 3056 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
| 3057 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | |
| 3058 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; | |
| 3059 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; | |
| 3060 | |
| 3061 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 3062 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 3063 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 3064 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 3065 typename Bound3UnwrapTraits::ForwardType x3 = | |
| 3066 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
| 3067 typename Bound4UnwrapTraits::ForwardType x4 = | |
| 3068 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
| 3069 typename Bound5UnwrapTraits::ForwardType x5 = | |
| 3070 Bound5UnwrapTraits::Unwrap(storage->p5_); | |
| 3071 typename Bound6UnwrapTraits::ForwardType x6 = | |
| 3072 Bound6UnwrapTraits::Unwrap(storage->p6_); | |
| 3073 typename Bound7UnwrapTraits::ForwardType x7 = | |
| 3074 Bound7UnwrapTraits::Unwrap(storage->p7_); | |
| 3075 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 3076 typename StorageType::RunnableType, | |
| 3077 void(typename Bound1UnwrapTraits::ForwardType, | |
| 3078 typename Bound2UnwrapTraits::ForwardType, | |
| 3079 typename Bound3UnwrapTraits::ForwardType, | |
| 3080 typename Bound4UnwrapTraits::ForwardType, | |
| 3081 typename Bound5UnwrapTraits::ForwardType, | |
| 3082 typename Bound6UnwrapTraits::ForwardType, | |
| 3083 typename Bound7UnwrapTraits::ForwardType, | |
| 3084 typename CallbackParamTraits<X8>::ForwardType x8)> | |
| 3085 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 3086 CallbackForward(x2), CallbackForward(x3), | |
| 3087 CallbackForward(x4), CallbackForward(x5), | |
| 3088 CallbackForward(x6), CallbackForward(x7), | |
| 3089 CallbackForward(x8)); | |
| 3090 } | |
| 3091 }; | |
| 3092 | |
| 3093 // Arity 8 -> 0. | |
| 3094 template <typename StorageType, typename R,typename X1, typename X2, | |
| 3095 typename X3, typename X4, typename X5, typename X6, typename X7, | |
| 3096 typename X8> | |
| 3097 struct Invoker<8, StorageType, R(X1, X2, X3, X4, X5, X6, X7, X8)> { | |
| 3098 typedef R(RunType)(BindStateBase*); | |
| 3099 | |
| 3100 typedef R(UnboundRunType)(); | |
| 3101 | |
| 3102 static R Run(BindStateBase* base) { | |
| 3103 StorageType* storage = static_cast<StorageType*>(base); | |
| 3104 | |
| 3105 // Local references to make debugger stepping easier. If in a debugger, | |
| 3106 // you really want to warp ahead and step through the | |
| 3107 // InvokeHelper<>::MakeItSo() call below. | |
| 3108 typedef typename StorageType::Bound1UnwrapTraits Bound1UnwrapTraits; | |
| 3109 typedef typename StorageType::Bound2UnwrapTraits Bound2UnwrapTraits; | |
| 3110 typedef typename StorageType::Bound3UnwrapTraits Bound3UnwrapTraits; | |
| 3111 typedef typename StorageType::Bound4UnwrapTraits Bound4UnwrapTraits; | |
| 3112 typedef typename StorageType::Bound5UnwrapTraits Bound5UnwrapTraits; | |
| 3113 typedef typename StorageType::Bound6UnwrapTraits Bound6UnwrapTraits; | |
| 3114 typedef typename StorageType::Bound7UnwrapTraits Bound7UnwrapTraits; | |
| 3115 typedef typename StorageType::Bound8UnwrapTraits Bound8UnwrapTraits; | |
| 3116 | |
| 3117 typename Bound1UnwrapTraits::ForwardType x1 = | |
| 3118 Bound1UnwrapTraits::Unwrap(storage->p1_); | |
| 3119 typename Bound2UnwrapTraits::ForwardType x2 = | |
| 3120 Bound2UnwrapTraits::Unwrap(storage->p2_); | |
| 3121 typename Bound3UnwrapTraits::ForwardType x3 = | |
| 3122 Bound3UnwrapTraits::Unwrap(storage->p3_); | |
| 3123 typename Bound4UnwrapTraits::ForwardType x4 = | |
| 3124 Bound4UnwrapTraits::Unwrap(storage->p4_); | |
| 3125 typename Bound5UnwrapTraits::ForwardType x5 = | |
| 3126 Bound5UnwrapTraits::Unwrap(storage->p5_); | |
| 3127 typename Bound6UnwrapTraits::ForwardType x6 = | |
| 3128 Bound6UnwrapTraits::Unwrap(storage->p6_); | |
| 3129 typename Bound7UnwrapTraits::ForwardType x7 = | |
| 3130 Bound7UnwrapTraits::Unwrap(storage->p7_); | |
| 3131 typename Bound8UnwrapTraits::ForwardType x8 = | |
| 3132 Bound8UnwrapTraits::Unwrap(storage->p8_); | |
| 3133 return InvokeHelper<StorageType::IsWeakCall::value, R, | |
| 3134 typename StorageType::RunnableType, | |
| 3135 void(typename Bound1UnwrapTraits::ForwardType, | |
| 3136 typename Bound2UnwrapTraits::ForwardType, | |
| 3137 typename Bound3UnwrapTraits::ForwardType, | |
| 3138 typename Bound4UnwrapTraits::ForwardType, | |
| 3139 typename Bound5UnwrapTraits::ForwardType, | |
| 3140 typename Bound6UnwrapTraits::ForwardType, | |
| 3141 typename Bound7UnwrapTraits::ForwardType, | |
| 3142 typename Bound8UnwrapTraits::ForwardType)> | |
| 3143 ::MakeItSo(storage->runnable_, CallbackForward(x1), | |
| 3144 CallbackForward(x2), CallbackForward(x3), | |
| 3145 CallbackForward(x4), CallbackForward(x5), | |
| 3146 CallbackForward(x6), CallbackForward(x7), | |
| 3147 CallbackForward(x8)); | |
| 3148 } | |
| 3149 }; | |
| 3150 | 2521 |
| 3151 // BindState<> | 2522 // BindState<> |
| 3152 // | 2523 // |
| 3153 // This stores all the state passed into Bind() and is also where most | 2524 // This stores all the state passed into Bind() and is also where most |
| 3154 // of the template resolution magic occurs. | 2525 // of the template resolution magic occurs. |
| 3155 // | 2526 // |
| 3156 // Runnable is the functor we are binding arguments to. | 2527 // Runnable is the functor we are binding arguments to. |
| 3157 // RunType is type of the Run() function that the Invoker<> should use. | 2528 // RunType is type of the Run() function that the Invoker<> should use. |
| 3158 // Normally, this is the same as the RunType of the Runnable, but it can | 2529 // Normally, this is the same as the RunType of the Runnable, but it can |
| 3159 // be different if an adapter like IgnoreResult() has been used. | 2530 // be different if an adapter like IgnoreResult() has been used. |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3408 RunnableType runnable_; | 2779 RunnableType runnable_; |
| 3409 P1 p1_; | 2780 P1 p1_; |
| 3410 P2 p2_; | 2781 P2 p2_; |
| 3411 P3 p3_; | 2782 P3 p3_; |
| 3412 P4 p4_; | 2783 P4 p4_; |
| 3413 P5 p5_; | 2784 P5 p5_; |
| 3414 P6 p6_; | 2785 P6 p6_; |
| 3415 P7 p7_; | 2786 P7 p7_; |
| 3416 }; | 2787 }; |
| 3417 | 2788 |
| 3418 template <typename Runnable, typename RunType, typename P1, typename P2, | |
| 3419 typename P3, typename P4, typename P5, typename P6, typename P7, | |
| 3420 typename P8> | |
| 3421 struct BindState<Runnable, RunType, void(P1, P2, P3, P4, P5, P6, | |
| 3422 P7, P8)> : public BindStateBase { | |
| 3423 typedef Runnable RunnableType; | |
| 3424 typedef IsWeakMethod<HasIsMethodTag<Runnable>::value, P1> IsWeakCall; | |
| 3425 typedef Invoker<8, BindState, RunType> InvokerType; | |
| 3426 typedef typename InvokerType::UnboundRunType UnboundRunType; | |
| 3427 | |
| 3428 // Convenience typedefs for bound argument types. | |
| 3429 typedef UnwrapTraits<P1> Bound1UnwrapTraits; | |
| 3430 typedef UnwrapTraits<P2> Bound2UnwrapTraits; | |
| 3431 typedef UnwrapTraits<P3> Bound3UnwrapTraits; | |
| 3432 typedef UnwrapTraits<P4> Bound4UnwrapTraits; | |
| 3433 typedef UnwrapTraits<P5> Bound5UnwrapTraits; | |
| 3434 typedef UnwrapTraits<P6> Bound6UnwrapTraits; | |
| 3435 typedef UnwrapTraits<P7> Bound7UnwrapTraits; | |
| 3436 typedef UnwrapTraits<P8> Bound8UnwrapTraits; | |
| 3437 | |
| 3438 BindState(const Runnable& runnable, const P1& p1, const P2& p2, const P3& p3, | |
| 3439 const P4& p4, const P5& p5, const P6& p6, const P7& p7, const P8& p8) | |
| 3440 : runnable_(runnable), | |
| 3441 p1_(p1), | |
| 3442 p2_(p2), | |
| 3443 p3_(p3), | |
| 3444 p4_(p4), | |
| 3445 p5_(p5), | |
| 3446 p6_(p6), | |
| 3447 p7_(p7), | |
| 3448 p8_(p8) { | |
| 3449 MaybeRefcount<HasIsMethodTag<Runnable>::value, P1>::AddRef(p1_); | |
| 3450 } | |
| 3451 | |
| 3452 virtual ~BindState() { MaybeRefcount<HasIsMethodTag<Runnable>::value, | |
| 3453 P1>::Release(p1_); } | |
| 3454 | |
| 3455 RunnableType runnable_; | |
| 3456 P1 p1_; | |
| 3457 P2 p2_; | |
| 3458 P3 p3_; | |
| 3459 P4 p4_; | |
| 3460 P5 p5_; | |
| 3461 P6 p6_; | |
| 3462 P7 p7_; | |
| 3463 P8 p8_; | |
| 3464 }; | |
| 3465 | |
| 3466 } // namespace internal | 2789 } // namespace internal |
| 3467 } // namespace base | 2790 } // namespace base |
| 3468 | 2791 |
| 3469 #endif // BASE_BIND_INTERNAL_H_ | 2792 #endif // BASE_BIND_INTERNAL_H_ |
| OLD | NEW |