diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-04 11:33:22 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-13 10:33:18 -0700 |
commit | 7b041b123cb067d247a727bb3a4563bb2fc575eb (patch) | |
tree | cdf9ce1583ef6cc3a16970a7ad9a1527521ecf41 /include | |
parent | de6c9b35f35f6ec0950529261b207d716c046beb (diff) | |
download | qtlocation-mapboxgl-7b041b123cb067d247a727bb3a4563bb2fc575eb.tar.gz |
[core, darwin] Object identity for MGLSource*, MGLStyleLayer*
All `MGLSource` pointers referencing the same logical source will now be object identical; similarly for `MGLStyleLayer`.
Diffstat (limited to 'include')
-rw-r--r-- | include/mbgl/style/layer.hpp | 6 | ||||
-rw-r--r-- | include/mbgl/style/source.hpp | 6 | ||||
-rw-r--r-- | include/mbgl/util/any.hpp | 10 |
3 files changed, 22 insertions, 0 deletions
diff --git a/include/mbgl/style/layer.hpp b/include/mbgl/style/layer.hpp index 670faa8254..fa88b30dbc 100644 --- a/include/mbgl/style/layer.hpp +++ b/include/mbgl/style/layer.hpp @@ -1,6 +1,7 @@ #pragma once #include <mbgl/util/noncopyable.hpp> +#include <mbgl/util/any.hpp> #include <mbgl/style/types.hpp> #include <memory> @@ -118,6 +119,11 @@ public: // Private implementation const std::unique_ptr<Impl> baseImpl; + // For use in SDK bindings, which store a reference to a platform-native peer + // object here, so that separately-obtained references to this object share + // identical platform-native peers. + any peer; + friend std::string layoutKey(const Layer&); }; diff --git a/include/mbgl/style/source.hpp b/include/mbgl/style/source.hpp index 0e6e32b112..f2dfb6a896 100644 --- a/include/mbgl/style/source.hpp +++ b/include/mbgl/style/source.hpp @@ -4,6 +4,7 @@ #include <mbgl/util/noncopyable.hpp> #include <mbgl/util/optional.hpp> #include <mbgl/util/range.hpp> +#include <mbgl/util/any.hpp> #include <mbgl/style/types.hpp> #include <mbgl/style/query.hpp> @@ -64,6 +65,11 @@ public: class Impl; const std::unique_ptr<Impl> baseImpl; + // For use in SDK bindings, which store a reference to a platform-native peer + // object here, so that separately-obtained references to this object share + // identical platform-native peers. + any peer; + protected: const SourceType type; Source(SourceType, std::unique_ptr<Impl>); diff --git a/include/mbgl/util/any.hpp b/include/mbgl/util/any.hpp new file mode 100644 index 0000000000..eea64b188a --- /dev/null +++ b/include/mbgl/util/any.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include <linb/any.hpp> + +namespace mbgl { + +using linb::any; +using linb::any_cast; + +} // namespace mbgl |