Index: mojo/public/bindings/callback.h |
diff --git a/mojo/public/bindings/callback.h b/mojo/public/bindings/callback.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c80e76fa3ef9c75fb132b9c6d677dec609f937c9 |
--- /dev/null |
+++ b/mojo/public/bindings/callback.h |
@@ -0,0 +1,461 @@ |
+// This file was GENERATED by command: |
+// pump.py callback.h.pump |
+// DO NOT EDIT BY HAND!!! |
+ |
+ |
+ |
+// Copyright 2014 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. |
+ |
+#ifndef MOJO_PUBLIC_BINDINGS_CALLBACK_H_ |
+#define MOJO_PUBLIC_BINDINGS_CALLBACK_H_ |
+ |
+#include "mojo/public/bindings/lib/callback_internal.h" |
+#include "mojo/public/bindings/lib/shared_ptr.h" |
+ |
+namespace mojo { |
+ |
+template <typename Sig> |
+class Callback; |
+ |
+template <> |
+class Callback<void()> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run() const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run() const { |
+ if (sink_.get()) |
+ sink_->Run(); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run() const MOJO_OVERRIDE { |
+ sink.Run(); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1> |
+class Callback<void(A1)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1, typename A2> |
+class Callback<void(A1, A2)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1, typename A2, typename A3> |
+class Callback<void(A1, A2, A3)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4> |
+class Callback<void(A1, A2, A3, A4)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4, typename A5> |
+class Callback<void(A1, A2, A3, A4, A5)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4), |
+ internal::Callback_Forward(a5)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4), |
+ internal::Callback_Forward(a5)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4, typename A5, |
+ typename A6> |
+class Callback<void(A1, A2, A3, A4, A5, A6)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5, |
+ typename internal::Callback_ParamTraits<A6>::ForwardType a6) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5, |
+ typename internal::Callback_ParamTraits<A6>::ForwardType a6) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4), |
+ internal::Callback_Forward(a5), |
+ internal::Callback_Forward(a6)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5, |
+ typename internal::Callback_ParamTraits<A6>::ForwardType a6) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4), |
+ internal::Callback_Forward(a5), |
+ internal::Callback_Forward(a6)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+template <typename A1, typename A2, typename A3, typename A4, typename A5, |
+ typename A6, typename A7> |
+class Callback<void(A1, A2, A3, A4, A5, A6, A7)> { |
+ public: |
+ struct Runnable { |
+ virtual ~Runnable() {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5, |
+ typename internal::Callback_ParamTraits<A6>::ForwardType a6, |
+ typename internal::Callback_ParamTraits<A7>::ForwardType a7) const = 0; |
+ }; |
+ |
+ Callback() {} |
+ |
+ // The Callback assumes ownership of |runnable|. |
+ explicit Callback(Runnable* runnable) : sink_(runnable) {} |
+ |
+ // Any class that is copy-constructable and has a compatible Run method may |
+ // be adapted to a Callback using this constructor. |
+ template <typename Sink> |
+ Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {} |
+ |
+ void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5, |
+ typename internal::Callback_ParamTraits<A6>::ForwardType a6, |
+ typename internal::Callback_ParamTraits<A7>::ForwardType a7) const { |
+ if (sink_.get()) |
+ sink_->Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4), |
+ internal::Callback_Forward(a5), |
+ internal::Callback_Forward(a6), |
+ internal::Callback_Forward(a7)); |
+ } |
+ |
+ private: |
+ template <typename Sink> |
+ struct Adapter : public Runnable { |
+ explicit Adapter(const Sink& sink) : sink(sink) {} |
+ virtual void Run( |
+ typename internal::Callback_ParamTraits<A1>::ForwardType a1, |
+ typename internal::Callback_ParamTraits<A2>::ForwardType a2, |
+ typename internal::Callback_ParamTraits<A3>::ForwardType a3, |
+ typename internal::Callback_ParamTraits<A4>::ForwardType a4, |
+ typename internal::Callback_ParamTraits<A5>::ForwardType a5, |
+ typename internal::Callback_ParamTraits<A6>::ForwardType a6, |
+ typename internal::Callback_ParamTraits<A7>::ForwardType a7) const |
+ MOJO_OVERRIDE { |
+ sink.Run( |
+ internal::Callback_Forward(a1), |
+ internal::Callback_Forward(a2), |
+ internal::Callback_Forward(a3), |
+ internal::Callback_Forward(a4), |
+ internal::Callback_Forward(a5), |
+ internal::Callback_Forward(a6), |
+ internal::Callback_Forward(a7)); |
+ } |
+ Sink sink; |
+ }; |
+ |
+ internal::SharedPtr<Runnable> sink_; |
+}; |
+ |
+} // namespace mojo |
+ |
+#endif // MOJO_PUBLIC_BINDINGS_CALLBACK_H_ |