summaryrefslogtreecommitdiffstats
path: root/base/callback.h
diff options
context:
space:
mode:
authorajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-24 01:03:40 +0000
committerajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-24 01:03:40 +0000
commita1101d69bc7fb29d08bbd9041c1d2db691dd7596 (patch)
tree5924d2e213117713b66941b9a4241f74bb90bb53 /base/callback.h
parent61afeaefdec2f6a7898246610bcb9594849a279b (diff)
downloadchromium_src-a1101d69bc7fb29d08bbd9041c1d2db691dd7596.zip
chromium_src-a1101d69bc7fb29d08bbd9041c1d2db691dd7596.tar.gz
chromium_src-a1101d69bc7fb29d08bbd9041c1d2db691dd7596.tar.bz2
Revert "Increase Bind/Callback Arity from 6 -> 11: These go to eleven."
This reverts r111410. Doing this increased Win builder cycle time by about 10s on incrementals (eyeballed from stats dashboard). Alas, 11 proved to be too high for us. BUG=98542 TEST=none Review URL: http://codereview.chromium.org/8682030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111463 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/callback.h')
-rw-r--r--base/callback.h343
1 files changed, 1 insertions, 342 deletions
diff --git a/base/callback.h b/base/callback.h
index 7c85339..6844cc5 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.