From 0818896cb656b6c40328d24b087e8cab902d4185 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Thu, 7 May 2020 09:19:38 +0200 Subject: [PATCH] Hashing function for numbers --- src/sfizz/StringViewHelpers.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/sfizz/StringViewHelpers.h b/src/sfizz/StringViewHelpers.h index 141881a9..2907c6ea 100644 --- a/src/sfizz/StringViewHelpers.h +++ b/src/sfizz/StringViewHelpers.h @@ -76,3 +76,15 @@ constexpr uint64_t hashNoAmpersand(absl::string_view s, uint64_t h = Fnv1aBasis) : hashNoAmpersand( { s.data() + 1, s.length() - 1 }, (h ^ s.front()) * Fnv1aPrime ) ); } + +/** + * @brief Run-time hashing function for numbers, useful for example to + * create hash functions for keys which depend on numeric values. + */ +template +uint64_t hashNumber(Int i, uint64_t h = Fnv1aBasis) +{ + static_assert(std::is_arithmetic::value, + "The hashed object must be of arithmetic type"); + return hash(absl::string_view(reinterpret_cast(&i), sizeof(i)), h); +}