diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-06-08 12:17:46 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-06-08 12:17:46 +0200 |
commit | 461481e6bb8149c07121eb85a984e6393fa2b80d (patch) | |
tree | 7854a3e7415bf03f3f3f3333ce36451e697807a6 | |
parent | 53d61d8c52773fc10345282b499d2a45740fcaa8 (diff) |
add hash() member function to global_coords
-rw-r--r-- | src/global-coords.cpp | 7 | ||||
-rw-r--r-- | src/global-coords.hpp | 2 | ||||
-rw-r--r-- | test/hash.cpp | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/global-coords.cpp b/src/global-coords.cpp index 4f3797f2..549a49ae 100644 --- a/src/global-coords.cpp +++ b/src/global-coords.cpp @@ -1,5 +1,6 @@ #include "global-coords.hpp" #include "point.inl" +#include "compat/hash.hpp" #include <array> #include <algorithm> @@ -32,6 +33,12 @@ Debug& operator<<(Debug& dbg, const chunk_coords_& c) return dbg; } +size_t global_coords::hash() const noexcept +{ + static_assert(sizeof *this == 4 + 4); + return hash_buf(this, sizeof *this); +} + namespace { static_assert(sizeof(decltype(local_coords::x))*8 == 8); diff --git a/src/global-coords.hpp b/src/global-coords.hpp index 031b84d7..67547f4d 100644 --- a/src/global-coords.hpp +++ b/src/global-coords.hpp @@ -138,6 +138,8 @@ public: constexpr global_coords& operator+=(Vector2i vec) noexcept; constexpr global_coords& operator-=(Vector2i vec) noexcept; constexpr Vector2i operator-(global_coords other) const noexcept; + + size_t hash() const noexcept; }; constexpr local_coords global_coords::local() const noexcept diff --git a/test/hash.cpp b/test/hash.cpp index b5eed2b0..63a2f568 100644 --- a/test/hash.cpp +++ b/test/hash.cpp @@ -44,7 +44,7 @@ template<int16_t CoordMax, int8_t ZMax, uint32_t MaxCollisions> for (int8_t k = 0; k <= ZMax; k++) { auto p = global_coords{i, j, k}; - auto h = hash_buf(&p, sizeof p); + auto h = p.hash(); h %= BucketCount; auto ref = bitset[h]; if (ref) [[unlikely]] |