From 290fa43c4308a1d3041924974ecd814b92f8dea0 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 3 Nov 2016 16:49:41 -0700 Subject: [PATCH] ircd::util: Add bernstein hash overloads for 16bit chars. --- include/ircd/util.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/ircd/util.h b/include/ircd/util.h index cc365c69e..2bf621dc7 100644 --- a/include/ircd/util.h +++ b/include/ircd/util.h @@ -286,6 +286,20 @@ hash(const std::string &str, return i >= str.size()? 7681ULL : (hash(str, i+1) * 33ULL) ^ str.at(i); } +constexpr size_t +hash(const char16_t *const &str, + const size_t i = 0) +{ + return !str[i]? 7681ULL : (hash(str, i+1) * 33ULL) ^ str[i]; +} + +inline size_t +hash(const std::u16string &str, + const size_t i = 0) +{ + return i >= str.size()? 7681ULL : (hash(str, i+1) * 33ULL) ^ str.at(i); +} + /*** * C++14 user defined literals