From bf600a7608ed1a4ceddf8db84b0a4773bf27065a Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Tue, 10 Nov 2020 01:15:37 -0800 Subject: [PATCH] [kutil] Add djb hash as 32 bit constexpr hash This didn't end up getting used, but I'm adding it for later use. --- src/libraries/kutil/include/kutil/constexpr_hash.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libraries/kutil/include/kutil/constexpr_hash.h b/src/libraries/kutil/include/kutil/constexpr_hash.h index 9fab0f1..c4572e0 100644 --- a/src/libraries/kutil/include/kutil/constexpr_hash.h +++ b/src/libraries/kutil/include/kutil/constexpr_hash.h @@ -30,6 +30,10 @@ constexpr inline uint8_t pearson_hash_8(const char *s, uint8_t inv) { return (*s) ? pearson_hash_8(s + 1, pearson_hash_table[inv ^ *s]) : inv; } +constexpr inline uint32_t djb_hash_32(const char *s, int off = 0) { + return !s[off] ? 5381 : (djb_hash_32(s, off+1)*33) ^ s[off]; +} + } // namespace kutil constexpr inline uint8_t operator "" _h (const char *s, size_t len) {