diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-02-25 19:24:16 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-02-26 22:31:59 +0200 |
commit | 1399040087f9d0b6f2a836fc5e6468c938ebf99b (patch) | |
tree | 3c9dee83750aac491d01abab085f90391270882a | |
parent | ff6c1426e8f5e31b40e567052b8ca9bd45c6f537 (diff) | |
download | qtlocation-mapboxgl-1399040087f9d0b6f2a836fc5e6468c938ebf99b.tar.gz |
[core] Move mbgl::Pass and mbgl::PassRefPtr to a separate header
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | include/mbgl/actor/scheduler.hpp | 19 | ||||
-rw-r--r-- | include/mbgl/util/pass_types.hpp | 24 |
3 files changed, 27 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d1490aea4..0a09f09661 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,6 +266,7 @@ add_library( ${PROJECT_SOURCE_DIR}/include/mbgl/util/logging.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/noncopyable.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/optional.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/util/pass_types.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/platform.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/premultiply.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/projection.hpp diff --git a/include/mbgl/actor/scheduler.hpp b/include/mbgl/actor/scheduler.hpp index d7fec41ea6..dca6b132f4 100644 --- a/include/mbgl/actor/scheduler.hpp +++ b/include/mbgl/actor/scheduler.hpp @@ -1,5 +1,7 @@ #pragma once +#include <mbgl/util/pass_types.hpp> + #include <mapbox/weak.hpp> #include <functional> @@ -9,23 +11,6 @@ namespace mbgl { class Mailbox; -// Using this type as a return type enforces the client to retain the returned object. -// TODO: Move to a separate file if/when other clients for this aux API turn up. -template <typename T> -class Pass { -public: - Pass(T&& obj_) : obj(std::forward<T>(obj_)) {} - Pass(Pass&&) = default; - Pass(const Pass&) = delete; - operator T() && { return std::move(obj); } - -private: - T obj; -}; - -template <typename T> -using PassRefPtr = Pass<std::shared_ptr<T>>; - /* A `Scheduler` is responsible for coordinating the processing of messages by one or more actors via their mailboxes. It's an abstract interface. Currently, diff --git a/include/mbgl/util/pass_types.hpp b/include/mbgl/util/pass_types.hpp new file mode 100644 index 0000000000..5415a3177f --- /dev/null +++ b/include/mbgl/util/pass_types.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include <memory> + +namespace mbgl { + +// Using this type as a return type enforces the client to retain the returned object. +template <typename T> +class Pass { +public: + Pass(T&& obj_) : obj(std::forward<T>(obj_)) {} + Pass(Pass&&) noexcept = default; + Pass(const Pass&) = delete; + Pass& operator=(const Pass&) = delete; + operator T() && { return std::move(obj); } + +private: + T obj; +}; + +template <typename T> +using PassRefPtr = Pass<std::shared_ptr<T>>; + +} // namespace mbgl
\ No newline at end of file |