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