Index: base/callback_registry.h |
diff --git a/base/callback_registry.h b/base/callback_registry.h |
index fcacbf549f2a79412130e0b1d902715a9663cca0..dcdeb81d01eb9b260baf9cddbc72760d57a84131 100644 |
--- a/base/callback_registry.h |
+++ b/base/callback_registry.h |
@@ -1,3 +1,8 @@ |
+// This file was GENERATED by command: |
+// pump.py callback_registry.h.pump |
+// DO NOT EDIT BY HAND!!! |
+ |
+ |
// Copyright 2013 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. |
@@ -9,6 +14,7 @@ |
#include "base/basictypes.h" |
#include "base/callback.h" |
+#include "base/callback_internal.h" |
#include "base/compiler_specific.h" |
#include "base/logging.h" |
#include "base/memory/scoped_ptr.h" |
@@ -28,8 +34,8 @@ |
// |
// typedef base::Callback<void(const Foo&)> OnFooCallback; |
// |
-// scoped_ptr<base::CallbackRegistry<Foo>::Subscription> RegisterCallback( |
-// const OnFooCallback& cb) { |
+// scoped_ptr<base::CallbackRegistry<void(const Foo&)>::Subscription> |
+// RegisterCallback(const OnFooCallback& cb) { |
// return callback_registry_.Add(cb); |
// } |
// |
@@ -38,7 +44,7 @@ |
// callback_registry_.Notify(foo); |
// } |
// |
-// base::CallbackRegistry<Foo> callback_registry_; |
+// base::CallbackRegistry<void(const Foo&)> callback_registry_; |
// }; |
// |
// |
@@ -59,7 +65,8 @@ |
// // Do something. |
// } |
// |
-// scoped_ptr<base::CallbackRegistry<Foo>::Subscription> foo_subscription_; |
+// scoped_ptr<base::CallbackRegistry<void(const Foo&)>::Subscription> |
+// foo_subscription_; |
// }; |
namespace base { |
@@ -173,37 +180,199 @@ class CallbackRegistryBase { |
} // namespace internal |
-template <typename Details> |
-class CallbackRegistry |
- : public internal::CallbackRegistryBase<Callback<void(const Details&)> > { |
+template <typename Sig> class CallbackRegistry; |
+ |
+template <> |
+class CallbackRegistry<void(void)> |
+ : public internal::CallbackRegistryBase<Callback<void(void)> > { |
public: |
+ typedef Callback<void(void)> CallbackType; |
+ |
CallbackRegistry() {} |
- // Execute all active callbacks with |details| parameter. |
- void Notify(const Details& details) { |
- typename internal::CallbackRegistryBase< |
- Callback<void(const Details&)> >::Iterator it = this->GetIterator(); |
- Callback<void(const Details&)>* cb; |
+ void Notify() { |
+ internal::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
while((cb = it.GetNext()) != NULL) { |
- cb->Run(details); |
+ cb->Run(); |
} |
} |
-private: |
+ private: |
DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
}; |
-template <> class CallbackRegistry<void> |
- : public internal::CallbackRegistryBase<Closure> { |
+template <typename A1> |
+class CallbackRegistry<void(A1)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1)> > { |
public: |
+ typedef Callback<void(A1)> CallbackType; |
+ |
CallbackRegistry() {} |
- // Execute all active callbacks. |
- void Notify() { |
- Iterator it = this->GetIterator(); |
- Closure* cb; |
+ void Notify(typename internal::CallbackParamTraits<A1>::ForwardType a1) { |
+ typename internal::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
while((cb = it.GetNext()) != NULL) { |
- cb->Run(); |
+ cb->Run(a1); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
+}; |
+ |
+template <typename A1, typename A2> |
+class CallbackRegistry<void(A1, A2)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1, A2)> > { |
+ public: |
+ typedef Callback<void(A1, A2)> CallbackType; |
+ |
+ CallbackRegistry() {} |
+ |
+ void Notify(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
+ typename internal::CallbackParamTraits<A2>::ForwardType a2) { |
+ typename internal::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
+ while((cb = it.GetNext()) != NULL) { |
+ cb->Run(a1, a2); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
+}; |
+ |
+template <typename A1, typename A2, typename A3> |
+class CallbackRegistry<void(A1, A2, A3)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1, A2, A3)> > { |
+ public: |
+ typedef Callback<void(A1, A2, A3)> CallbackType; |
+ |
+ CallbackRegistry() {} |
+ |
+ void Notify(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
+ typename internal::CallbackParamTraits<A2>::ForwardType a2, |
+ typename internal::CallbackParamTraits<A3>::ForwardType a3) { |
+ typename internal::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
+ while((cb = it.GetNext()) != NULL) { |
+ cb->Run(a1, a2, a3); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4> |
+class CallbackRegistry<void(A1, A2, A3, A4)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1, A2, A3, A4)> > { |
+ public: |
+ typedef Callback<void(A1, A2, A3, A4)> CallbackType; |
+ |
+ CallbackRegistry() {} |
+ |
+ void Notify(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::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
+ while((cb = it.GetNext()) != NULL) { |
+ cb->Run(a1, a2, a3, a4); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4, typename A5> |
+class CallbackRegistry<void(A1, A2, A3, A4, A5)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1, A2, A3, A4, A5)> > { |
+ public: |
+ typedef Callback<void(A1, A2, A3, A4, A5)> CallbackType; |
+ |
+ CallbackRegistry() {} |
+ |
+ void Notify(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::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
+ while((cb = it.GetNext()) != NULL) { |
+ cb->Run(a1, a2, a3, a4, a5); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4, typename A5, |
+ typename A6> |
+class CallbackRegistry<void(A1, A2, A3, A4, A5, A6)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1, A2, A3, A4, A5, A6)> > { |
+ public: |
+ typedef Callback<void(A1, A2, A3, A4, A5, A6)> CallbackType; |
+ |
+ CallbackRegistry() {} |
+ |
+ void Notify(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::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
+ while((cb = it.GetNext()) != NULL) { |
+ cb->Run(a1, a2, a3, a4, a5, a6); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4, typename A5, |
+ typename A6, typename A7> |
+class CallbackRegistry<void(A1, A2, A3, A4, A5, A6, A7)> |
+ : public internal::CallbackRegistryBase< |
+ Callback<void(A1, A2, A3, A4, A5, A6, A7)> > { |
+ public: |
+ typedef Callback<void(A1, A2, A3, A4, A5, A6, A7)> CallbackType; |
+ |
+ CallbackRegistry() {} |
+ |
+ void Notify(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::CallbackRegistryBase<CallbackType>::Iterator it = |
+ this->GetIterator(); |
+ CallbackType* cb; |
+ while((cb = it.GetNext()) != NULL) { |
+ cb->Run(a1, a2, a3, a4, a5, a6, a7); |
} |
} |
@@ -213,4 +382,4 @@ template <> class CallbackRegistry<void> |
} // namespace base |
-#endif // BASE_CALLBACK_REGISTRY_H_ |
+#endif // BASE_CALLBACK_REGISTRY_H |