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 /include/mbgl | |
parent | ff6c1426e8f5e31b40e567052b8ca9bd45c6f537 (diff) | |
download | qtlocation-mapboxgl-1399040087f9d0b6f2a836fc5e6468c938ebf99b.tar.gz |
[core] Move mbgl::Pass and mbgl::PassRefPtr to a separate header
Diffstat (limited to 'include/mbgl')
-rw-r--r-- | include/mbgl/actor/scheduler.hpp | 19 | ||||
-rw-r--r-- | include/mbgl/util/pass_types.hpp | 24 |
2 files changed, 26 insertions, 17 deletions
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 |