Index: base/callback.h |
diff --git a/base/callback.h b/base/callback.h |
index 364f506139f66652aff19669e02d281e6d8bc9fb..00669dd83d1c2dbb518134f0243fd5dbec104133 100644 |
--- a/base/callback.h |
+++ b/base/callback.h |
@@ -1,8 +1,3 @@ |
-// This file was GENERATED by command: |
-// pump.py callback.h.pump |
-// DO NOT EDIT BY HAND!!! |
- |
- |
// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -367,10 +362,10 @@ template <typename Runnable, typename RunType, typename BoundArgsType> |
struct BindState; |
} // namespace internal |
-template <typename R> |
-class Callback<R(void)> : public internal::CallbackBase { |
+template <typename R, typename... Args> |
+class Callback<R(Args...)> : public internal::CallbackBase { |
public: |
- typedef R(RunType)(); |
+ typedef R(RunType)(Args...); |
Callback() : CallbackBase(NULL) { } |
@@ -380,7 +375,6 @@ class Callback<R(void)> : public internal::CallbackBase { |
Callback(internal::BindState<Runnable, BindRunType, |
BoundArgsType>* bind_state) |
: CallbackBase(bind_state) { |
- |
// Force the assignment to a local variable of PolymorphicInvoke |
// so the compiler will typecheck that the passed in Run() method has |
// the correct type. |
@@ -394,377 +388,24 @@ class Callback<R(void)> : public internal::CallbackBase { |
return CallbackBase::Equals(other); |
} |
- R Run() const { |
+ R Run(typename internal::CallbackParamTraits<Args>::ForwardType... args) |
+ const { |
PolymorphicInvoke f = |
reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- return f(bind_state_.get()); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*); |
- |
-}; |
- |
-template <typename R, typename A1> |
-class Callback<R(A1)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1); |
- |
- Callback() : CallbackBase(NULL) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), internal::CallbackForward(a1)); |
+ return f(bind_state_.get(), internal::CallbackForward(args)...); |
} |
private: |
typedef R(*PolymorphicInvoke)( |
internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType); |
- |
+ typename internal::CallbackParamTraits<Args>::ForwardType...); |
}; |
-template <typename R, typename A1, typename A2> |
-class Callback<R(A1, A2)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2); |
- |
- Callback() : CallbackBase(NULL) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), internal::CallbackForward(a1), |
- internal::CallbackForward(a2)); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3> |
-class Callback<R(A1, A2, A3)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3); |
- |
- Callback() : CallbackBase(NULL) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), internal::CallbackForward(a1), |
- internal::CallbackForward(a2), |
- internal::CallbackForward(a3)); |
- } |
- |
- private: |
- typedef R(*PolymorphicInvoke)( |
- internal::BindStateBase*, |
- typename internal::CallbackParamTraits<A1>::ForwardType, |
- typename internal::CallbackParamTraits<A2>::ForwardType, |
- typename internal::CallbackParamTraits<A3>::ForwardType); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4> |
-class Callback<R(A1, A2, A3, A4)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4); |
- |
- Callback() : CallbackBase(NULL) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), internal::CallbackForward(a1), |
- internal::CallbackForward(a2), |
- internal::CallbackForward(a3), |
- internal::CallbackForward(a4)); |
- } |
- |
- 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); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5> |
-class Callback<R(A1, A2, A3, A4, A5)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5); |
- |
- Callback() : CallbackBase(NULL) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), internal::CallbackForward(a1), |
- internal::CallbackForward(a2), |
- internal::CallbackForward(a3), |
- internal::CallbackForward(a4), |
- internal::CallbackForward(a5)); |
- } |
- |
- 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); |
- |
-}; |
- |
-template <typename R, typename A1, typename A2, typename A3, typename A4, |
- typename A5, typename A6> |
-class Callback<R(A1, A2, A3, A4, A5, A6)> : public internal::CallbackBase { |
- public: |
- typedef R(RunType)(A1, A2, A3, A4, A5, A6); |
- |
- Callback() : CallbackBase(NULL) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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) const { |
- PolymorphicInvoke f = |
- reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
- |
- return f(bind_state_.get(), internal::CallbackForward(a1), |
- internal::CallbackForward(a2), |
- internal::CallbackForward(a3), |
- internal::CallbackForward(a4), |
- internal::CallbackForward(a5), |
- internal::CallbackForward(a6)); |
- } |
- |
- 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); |
- |
-}; |
- |
-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) { } |
- |
- // Note that this constructor CANNOT be explicit, and that Bind() CANNOT |
- // return the exact Callback<> type. See base/bind.h for details. |
- template <typename Runnable, typename BindRunType, typename BoundArgsType> |
- Callback(internal::BindState<Runnable, BindRunType, |
- BoundArgsType>* bind_state) |
- : CallbackBase(bind_state) { |
- |
- // Force the assignment to a local variable of PolymorphicInvoke |
- // so the compiler will typecheck that the passed in Run() method has |
- // the correct type. |
- PolymorphicInvoke invoke_func = |
- &internal::BindState<Runnable, BindRunType, BoundArgsType> |
- ::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(), internal::CallbackForward(a1), |
- internal::CallbackForward(a2), |
- internal::CallbackForward(a3), |
- internal::CallbackForward(a4), |
- internal::CallbackForward(a5), |
- internal::CallbackForward(a6), |
- internal::CallbackForward(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); |
- |
-}; |
- |
- |
// Syntactic sugar to make Callback<void(void)> easier to declare since it |
// will be used in a lot of APIs with delayed execution. |
typedef Callback<void(void)> Closure; |
} // namespace base |
-#endif // BASE_CALLBACK_H |
+#endif // BASE_CALLBACK_H_ |