Index: base/callback.h |
diff --git a/base/callback.h b/base/callback.h |
index 7c85339f780367393200817faed884a483c1dbb4..6844cc54dcb34317e9e0645753a304f52cc8bfc5 100644 |
--- a/base/callback.h |
+++ b/base/callback.h |
@@ -227,7 +227,7 @@ namespace base { |
// compiler that the template only has 1 type parameter which is the function |
// signature that the Callback is representing. |
// |
-// After this, create template specializations for 0-11 parameters. Note that |
+// After this, create template specializations for 0-6 parameters. Note that |
// even though the template typelist grows, the specialization still |
// only has one type: the function signature. |
template <typename Sig> |
@@ -573,347 +573,6 @@ class Callback<R(A1, A2, A3, A4, A5, A6)> : public internal::CallbackBase { |
}; |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5, typename A6, typename A7> |
-class Callback<R(A1, A2, A3, A4, A5, A6, A7)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5, A6, A7); |
- |
- Callback() : CallbackBase(NULL, NULL) { } |
- |
- // We pass BindStateHolder by const ref to avoid incurring an |
- // unnecessary AddRef/Unref pair even though we will modify the object. |
- // We cannot use a normal reference because the compiler will warn |
- // since this is often used on a return value, which is a temporary. |
- // |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename T> |
- Callback(const internal::BindStateHolder<T>& bind_state_holder) |
- : CallbackBase(NULL, &bind_state_holder.bind_state_) { |
- // Force the assignment to a location variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = &T::InvokerType::Run; |
- polymorphic_invoke_ = reinterpret_cast<InvokeFuncStorage>(invoke_func); |
- } |
- |
- bool Equals(const Callback& other) const { |
- return CallbackBase::Equals(other); |
- } |
- |
- R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
- typename internal::CallbackParamTraits<A2>::ForwardType a2, |
- typename internal::CallbackParamTraits<A3>::ForwardType a3, |
- typename internal::CallbackParamTraits<A4>::ForwardType a4, |
- typename internal::CallbackParamTraits<A5>::ForwardType a5, |
- typename internal::CallbackParamTraits<A6>::ForwardType a6, |
- typename internal::CallbackParamTraits<A7>::ForwardType a7) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), a1, |
- a2, |
- a3, |
- a4, |
- a5, |
- a6, |
- a7); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType, |
- typename internal::CallbackParamTraits<A3>::ForwardType, |
- typename internal::CallbackParamTraits<A4>::ForwardType, |
- typename internal::CallbackParamTraits<A5>::ForwardType, |
- typename internal::CallbackParamTraits<A6>::ForwardType, |
- typename internal::CallbackParamTraits<A7>::ForwardType); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5, typename A6, typename A7, typename A8> |
-class Callback<R(A1, A2, A3, A4, A5, A6, A7, |
- A8)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5, A6, A7, A8); |
- |
- Callback() : CallbackBase(NULL, NULL) { } |
- |
- // We pass BindStateHolder by const ref to avoid incurring an |
- // unnecessary AddRef/Unref pair even though we will modify the object. |
- // We cannot use a normal reference because the compiler will warn |
- // since this is often used on a return value, which is a temporary. |
- // |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename T> |
- Callback(const internal::BindStateHolder<T>& bind_state_holder) |
- : CallbackBase(NULL, &bind_state_holder.bind_state_) { |
- // Force the assignment to a location variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = &T::InvokerType::Run; |
- polymorphic_invoke_ = reinterpret_cast<InvokeFuncStorage>(invoke_func); |
- } |
- |
- bool Equals(const Callback& other) const { |
- return CallbackBase::Equals(other); |
- } |
- |
- R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
- typename internal::CallbackParamTraits<A2>::ForwardType a2, |
- typename internal::CallbackParamTraits<A3>::ForwardType a3, |
- typename internal::CallbackParamTraits<A4>::ForwardType a4, |
- typename internal::CallbackParamTraits<A5>::ForwardType a5, |
- typename internal::CallbackParamTraits<A6>::ForwardType a6, |
- typename internal::CallbackParamTraits<A7>::ForwardType a7, |
- typename internal::CallbackParamTraits<A8>::ForwardType a8) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), a1, |
- a2, |
- a3, |
- a4, |
- a5, |
- a6, |
- a7, |
- a8); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType, |
- typename internal::CallbackParamTraits<A3>::ForwardType, |
- typename internal::CallbackParamTraits<A4>::ForwardType, |
- typename internal::CallbackParamTraits<A5>::ForwardType, |
- typename internal::CallbackParamTraits<A6>::ForwardType, |
- typename internal::CallbackParamTraits<A7>::ForwardType, |
- typename internal::CallbackParamTraits<A8>::ForwardType); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5, typename A6, typename A7, typename A8, typename A9> |
-class Callback<R(A1, A2, A3, A4, A5, A6, A7, A8, |
- A9)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9); |
- |
- Callback() : CallbackBase(NULL, NULL) { } |
- |
- // We pass BindStateHolder by const ref to avoid incurring an |
- // unnecessary AddRef/Unref pair even though we will modify the object. |
- // We cannot use a normal reference because the compiler will warn |
- // since this is often used on a return value, which is a temporary. |
- // |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename T> |
- Callback(const internal::BindStateHolder<T>& bind_state_holder) |
- : CallbackBase(NULL, &bind_state_holder.bind_state_) { |
- // Force the assignment to a location variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = &T::InvokerType::Run; |
- polymorphic_invoke_ = reinterpret_cast<InvokeFuncStorage>(invoke_func); |
- } |
- |
- bool Equals(const Callback& other) const { |
- return CallbackBase::Equals(other); |
- } |
- |
- R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
- typename internal::CallbackParamTraits<A2>::ForwardType a2, |
- typename internal::CallbackParamTraits<A3>::ForwardType a3, |
- typename internal::CallbackParamTraits<A4>::ForwardType a4, |
- typename internal::CallbackParamTraits<A5>::ForwardType a5, |
- typename internal::CallbackParamTraits<A6>::ForwardType a6, |
- typename internal::CallbackParamTraits<A7>::ForwardType a7, |
- typename internal::CallbackParamTraits<A8>::ForwardType a8, |
- typename internal::CallbackParamTraits<A9>::ForwardType a9) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), a1, |
- a2, |
- a3, |
- a4, |
- a5, |
- a6, |
- a7, |
- a8, |
- a9); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType, |
- typename internal::CallbackParamTraits<A3>::ForwardType, |
- typename internal::CallbackParamTraits<A4>::ForwardType, |
- typename internal::CallbackParamTraits<A5>::ForwardType, |
- typename internal::CallbackParamTraits<A6>::ForwardType, |
- typename internal::CallbackParamTraits<A7>::ForwardType, |
- typename internal::CallbackParamTraits<A8>::ForwardType, |
- typename internal::CallbackParamTraits<A9>::ForwardType); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5, typename A6, typename A7, typename A8, typename A9, |
- typename A10> |
-class Callback<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, |
- A10)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10); |
- |
- Callback() : CallbackBase(NULL, NULL) { } |
- |
- // We pass BindStateHolder by const ref to avoid incurring an |
- // unnecessary AddRef/Unref pair even though we will modify the object. |
- // We cannot use a normal reference because the compiler will warn |
- // since this is often used on a return value, which is a temporary. |
- // |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename T> |
- Callback(const internal::BindStateHolder<T>& bind_state_holder) |
- : CallbackBase(NULL, &bind_state_holder.bind_state_) { |
- // Force the assignment to a location variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = &T::InvokerType::Run; |
- polymorphic_invoke_ = reinterpret_cast<InvokeFuncStorage>(invoke_func); |
- } |
- |
- bool Equals(const Callback& other) const { |
- return CallbackBase::Equals(other); |
- } |
- |
- R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
- typename internal::CallbackParamTraits<A2>::ForwardType a2, |
- typename internal::CallbackParamTraits<A3>::ForwardType a3, |
- typename internal::CallbackParamTraits<A4>::ForwardType a4, |
- typename internal::CallbackParamTraits<A5>::ForwardType a5, |
- typename internal::CallbackParamTraits<A6>::ForwardType a6, |
- typename internal::CallbackParamTraits<A7>::ForwardType a7, |
- typename internal::CallbackParamTraits<A8>::ForwardType a8, |
- typename internal::CallbackParamTraits<A9>::ForwardType a9, |
- typename internal::CallbackParamTraits<A10>::ForwardType a10) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), a1, |
- a2, |
- a3, |
- a4, |
- a5, |
- a6, |
- a7, |
- a8, |
- a9, |
- a10); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType, |
- typename internal::CallbackParamTraits<A3>::ForwardType, |
- typename internal::CallbackParamTraits<A4>::ForwardType, |
- typename internal::CallbackParamTraits<A5>::ForwardType, |
- typename internal::CallbackParamTraits<A6>::ForwardType, |
- typename internal::CallbackParamTraits<A7>::ForwardType, |
- typename internal::CallbackParamTraits<A8>::ForwardType, |
- typename internal::CallbackParamTraits<A9>::ForwardType, |
- typename internal::CallbackParamTraits<A10>::ForwardType); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5, typename A6, typename A7, typename A8, typename A9, |
- typename A10, typename A11> |
-class Callback<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, |
- A11)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11); |
- |
- Callback() : CallbackBase(NULL, NULL) { } |
- |
- // We pass BindStateHolder by const ref to avoid incurring an |
- // unnecessary AddRef/Unref pair even though we will modify the object. |
- // We cannot use a normal reference because the compiler will warn |
- // since this is often used on a return value, which is a temporary. |
- // |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename T> |
- Callback(const internal::BindStateHolder<T>& bind_state_holder) |
- : CallbackBase(NULL, &bind_state_holder.bind_state_) { |
- // Force the assignment to a location variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = &T::InvokerType::Run; |
- polymorphic_invoke_ = reinterpret_cast<InvokeFuncStorage>(invoke_func); |
- } |
- |
- bool Equals(const Callback& other) const { |
- return CallbackBase::Equals(other); |
- } |
- |
- R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
- typename internal::CallbackParamTraits<A2>::ForwardType a2, |
- typename internal::CallbackParamTraits<A3>::ForwardType a3, |
- typename internal::CallbackParamTraits<A4>::ForwardType a4, |
- typename internal::CallbackParamTraits<A5>::ForwardType a5, |
- typename internal::CallbackParamTraits<A6>::ForwardType a6, |
- typename internal::CallbackParamTraits<A7>::ForwardType a7, |
- typename internal::CallbackParamTraits<A8>::ForwardType a8, |
- typename internal::CallbackParamTraits<A9>::ForwardType a9, |
- typename internal::CallbackParamTraits<A10>::ForwardType a10, |
- typename internal::CallbackParamTraits<A11>::ForwardType a11) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), a1, |
- a2, |
- a3, |
- a4, |
- a5, |
- a6, |
- a7, |
- a8, |
- a9, |
- a10, |
- a11); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType, |
- typename internal::CallbackParamTraits<A3>::ForwardType, |
- typename internal::CallbackParamTraits<A4>::ForwardType, |
- typename internal::CallbackParamTraits<A5>::ForwardType, |
- typename internal::CallbackParamTraits<A6>::ForwardType, |
- typename internal::CallbackParamTraits<A7>::ForwardType, |
- typename internal::CallbackParamTraits<A8>::ForwardType, |
- typename internal::CallbackParamTraits<A9>::ForwardType, |
- typename internal::CallbackParamTraits<A10>::ForwardType, |
- typename internal::CallbackParamTraits<A11>::ForwardType); |
- |
-}; |
- |
// Syntactic sugar to make Callbacks<void(void)> easier to declare since it |
// will be used in a lot of APIs with delayed execution. |