diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index 49697a5c2..c34a0724f 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -490,6 +490,7 @@ set(MBGL_CORE_FILES src/mbgl/text/shaping.hpp # tile + include/mbgl/tile/tile_id.hpp src/mbgl/tile/geojson_tile.cpp src/mbgl/tile/geojson_tile.hpp src/mbgl/tile/geometry_tile.cpp @@ -506,7 +507,7 @@ set(MBGL_CORE_FILES src/mbgl/tile/tile.hpp src/mbgl/tile/tile_cache.cpp src/mbgl/tile/tile_cache.hpp - src/mbgl/tile/tile_id.hpp + src/mbgl/tile/tile_id_hash.cpp src/mbgl/tile/tile_id_io.cpp src/mbgl/tile/tile_loader.hpp src/mbgl/tile/tile_loader_impl.hpp diff --git a/src/mbgl/tile/tile_id.hpp b/include/mbgl/tile/tile_id.hpp similarity index 90% rename from src/mbgl/tile/tile_id.hpp rename to include/mbgl/tile/tile_id.hpp index 811158e9b..0457dd3a0 100644 --- a/src/mbgl/tile/tile_id.hpp +++ b/include/mbgl/tile/tile_id.hpp @@ -4,11 +4,11 @@ #include #include +#include #include #include #include #include -#include namespace mbgl { @@ -244,32 +244,19 @@ inline float UnwrappedTileID::pixelsToTileUnits(const float pixelValue, const fl namespace std { -template <> struct hash { - size_t operator()(const mbgl::CanonicalTileID &id) const { - std::size_t seed = 0; - boost::hash_combine(seed, id.x); - boost::hash_combine(seed, id.y); - boost::hash_combine(seed, id.z); - return seed; - } +template <> +struct hash { + size_t operator()(const mbgl::CanonicalTileID& id) const; }; -template <> struct hash { - size_t operator()(const mbgl::UnwrappedTileID &id) const { - std::size_t seed = 0; - boost::hash_combine(seed, std::hash{}(id.canonical)); - boost::hash_combine(seed, id.wrap); - return seed; - } +template <> +struct hash { + size_t operator()(const mbgl::UnwrappedTileID& id) const; }; -template <> struct hash { - size_t operator()(const mbgl::OverscaledTileID &id) const { - std::size_t seed = 0; - boost::hash_combine(seed, std::hash{}(id.canonical)); - boost::hash_combine(seed, id.overscaledZ); - return seed; - } +template <> +struct hash { + size_t operator()(const mbgl::OverscaledTileID& id) const; }; } // namespace std diff --git a/src/mbgl/tile/tile_id_hash.cpp b/src/mbgl/tile/tile_id_hash.cpp new file mode 100644 index 000000000..4a1f18581 --- /dev/null +++ b/src/mbgl/tile/tile_id_hash.cpp @@ -0,0 +1,29 @@ +#include + +#include + +namespace std { + +size_t hash::operator()(const mbgl::CanonicalTileID& id) const { + std::size_t seed = 0; + boost::hash_combine(seed, id.x); + boost::hash_combine(seed, id.y); + boost::hash_combine(seed, id.z); + return seed; +} + +size_t hash::operator()(const mbgl::UnwrappedTileID& id) const { + std::size_t seed = 0; + boost::hash_combine(seed, std::hash{}(id.canonical)); + boost::hash_combine(seed, id.wrap); + return seed; +} + +size_t hash::operator()(const mbgl::OverscaledTileID& id) const { + std::size_t seed = 0; + boost::hash_combine(seed, std::hash{}(id.canonical)); + boost::hash_combine(seed, id.overscaledZ); + return seed; +} + +} // namespace std