Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Unified Diff: mojo/public/cpp/bindings/callback.h

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/cpp/bindings/binding_set.h ('k') | mojo/public/cpp/bindings/formatting.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/callback.h
diff --git a/mojo/public/cpp/bindings/callback.h b/mojo/public/cpp/bindings/callback.h
deleted file mode 100644
index 24a2f43713adc9b5c43dc719de6634c0236f25bf..0000000000000000000000000000000000000000
--- a/mojo/public/cpp/bindings/callback.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// 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_CPP_BINDINGS_CALLBACK_H_
-#define MOJO_PUBLIC_CPP_BINDINGS_CALLBACK_H_
-
-#include <functional>
-#include <type_traits>
-
-#include "mojo/public/cpp/bindings/lib/callback_internal.h"
-#include "mojo/public/cpp/bindings/lib/shared_ptr.h"
-#include "mojo/public/cpp/bindings/lib/template_util.h"
-
-namespace mojo {
-
-template <typename Sig>
-class Callback;
-
-// Represents a callback with any number of parameters and no return value. The
-// callback is executed by calling its Run() method. The callback may be "null",
-// meaning it does nothing.
-template <typename... Args>
-class Callback<void(Args...)> {
- public:
- // An interface that may be implemented to define the Run() method.
- struct Runnable {
- virtual ~Runnable() {}
- virtual void Run(
- // ForwardType ensures String is passed as a const reference.
- typename internal::Callback_ParamTraits<Args>::ForwardType...)
- const = 0;
- };
-
- // Constructs a "null" callback that does nothing.
- Callback() {}
-
- // Constructs a callback that will run |runnable|. The callback takes
- // ownership of |runnable|.
- explicit Callback(Runnable* runnable) : sink_(runnable) {}
-
- // Adapts any type that is copy-constructable and has a compatible Run method
- // or is convertible to std::function<void(Args...)> (such as a lambda of the
- // correct type).
- template <typename Sink>
- Callback(const Sink& sink) {
- using sink_type = typename std::conditional<
- std::is_convertible<Sink, std::function<void(Args...)>>::value,
- FunctorAdapter<Sink>, RunnableAdapter<Sink>>::type;
- sink_ = internal::SharedPtr<Runnable>(new sink_type(sink));
- }
-
- // As above, but can take a compatible function pointer.
- Callback(void (*function_ptr)(
- typename internal::Callback_ParamTraits<Args>::ForwardType...))
- : sink_(new FunctionPtrAdapter(function_ptr)) {}
-
- // Executes the callback function, invoking Pass() on move-only types.
- void Run(typename internal::Callback_ParamTraits<Args>::ForwardType... args)
- const {
- if (sink_.get())
- sink_->Run(internal::Forward(args)...);
- }
-
- bool is_null() const { return !sink_.get(); }
-
- // Resets the callback to the "null" state.
- void reset() { sink_.reset(); }
-
- private:
- // Adapts a class that has a Run() method but is not derived from Runnable to
- // be callable by Callback.
- template <typename Sink>
- struct RunnableAdapter : public Runnable {
- explicit RunnableAdapter(const Sink& sink) : sink(sink) {}
- virtual void Run(
- typename internal::Callback_ParamTraits<Args>::ForwardType... args)
- const override {
- sink.Run(internal::Forward(args)...);
- }
- Sink sink;
- };
-
- // Adapts a class that has a compatible operator() to be callable by Callback.
- template <typename Sink>
- struct FunctorAdapter : public Runnable {
- explicit FunctorAdapter(const Sink& sink) : sink(sink) {}
- virtual void Run(
- typename internal::Callback_ParamTraits<Args>::ForwardType... args)
- const override {
- sink.operator()(internal::Forward(args)...);
- }
- Sink sink;
- };
-
- // Adapts a function pointer.
- struct FunctionPtrAdapter : public Runnable {
- explicit FunctionPtrAdapter(void (*function_ptr)(
- typename internal::Callback_ParamTraits<Args>::ForwardType...))
- : function_ptr(function_ptr) {}
- virtual void Run(
- typename internal::Callback_ParamTraits<Args>::ForwardType... args)
- const override {
- (*function_ptr)(internal::Forward(args)...);
- }
- void (*function_ptr)(
- typename internal::Callback_ParamTraits<Args>::ForwardType...);
- };
-
- internal::SharedPtr<Runnable> sink_;
-};
-
-// A specialization of Callback which takes no parameters.
-typedef Callback<void()> Closure;
-
-} // namespace mojo
-
-#endif // MOJO_PUBLIC_CPP_BINDINGS_CALLBACK_H_
« no previous file with comments | « mojo/public/cpp/bindings/binding_set.h ('k') | mojo/public/cpp/bindings/formatting.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698