From 17f696750926898b50ff0940c1c6a874fa9c8cee Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Tue, 10 Mar 2020 13:30:43 +0100 Subject: [PATCH] constexpr hash compatible with c++11 --- src/sfizz/StringViewHelpers.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/sfizz/StringViewHelpers.h b/src/sfizz/StringViewHelpers.h index ed630c94..141881a9 100644 --- a/src/sfizz/StringViewHelpers.h +++ b/src/sfizz/StringViewHelpers.h @@ -56,10 +56,7 @@ constexpr uint64_t Fnv1aPrime = 0x01000193; */ constexpr uint64_t hash(absl::string_view s, uint64_t h = Fnv1aBasis) { - if (s.length() > 0) - return hash( { s.data() + 1, s.length() - 1 }, (h ^ s.front()) * Fnv1aPrime ); - - return h; + return (s.length() == 0) ? h : hash( { s.data() + 1, s.length() - 1 }, (h ^ s.front()) * Fnv1aPrime ); } /** @@ -73,12 +70,9 @@ constexpr uint64_t hash(absl::string_view s, uint64_t h = Fnv1aBasis) */ constexpr uint64_t hashNoAmpersand(absl::string_view s, uint64_t h = Fnv1aBasis) { - if (s.length() > 0) { - if (s.front() == '&') - return hashNoAmpersand( { s.data() + 1, s.length() - 1 }, h ); - else - return hashNoAmpersand( { s.data() + 1, s.length() - 1 }, (h ^ s.front()) * Fnv1aPrime ); - } - - return h; + return (s.length() == 0) ? h : ( + (s.front() == '&') + ? hashNoAmpersand( { s.data() + 1, s.length() - 1 }, h ) + : hashNoAmpersand( { s.data() + 1, s.length() - 1 }, (h ^ s.front()) * Fnv1aPrime ) + ); }