| 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_
|
|
|