diff --git a/components/misc/strings/algorithm.hpp b/components/misc/strings/algorithm.hpp index e6ee29c341..0b6e2ef9bd 100644 --- a/components/misc/strings/algorithm.hpp +++ b/components/misc/strings/algorithm.hpp @@ -69,10 +69,17 @@ namespace Misc::StringUtils { using is_transparent = void; - std::size_t operator()(std::string_view str) const + constexpr std::size_t operator()(std::string_view str) const { - // TODO avoid string copy - return std::hash{}(lowerCase(str)); + // FNV-1a + std::size_t hash{0xcbf29ce484222325ull}; + constexpr std::size_t prime{0x00000100000001B3ull}; + for(char c : str) + { + hash ^= static_cast(toLower(c)); + hash *= prime; + } + return hash; } };