diff --git a/src/util/djb_hash.cxx b/src/util/djb_hash.cxx deleted file mode 100644 index 559a692dd..000000000 --- a/src/util/djb_hash.cxx +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: BSD-2-Clause -// Copyright CM4all GmbH -// author: Max Kellermann - -#include "djb_hash.hxx" - -#include - -[[gnu::always_inline]] [[gnu::hot]] -static constexpr std::size_t -djb_hash_update(std::size_t hash, std::byte b) noexcept -{ - return (hash * 33) ^ static_cast(b); -} - -[[gnu::hot]] -std::size_t -djb_hash(std::span src, std::size_t init) noexcept -{ - std::size_t hash = init; - - for (const auto i : src) - hash = djb_hash_update(hash, i); - - return hash; -} - -[[gnu::hot]] -std::size_t -djb_hash_string(const char *p, std::size_t init) noexcept -{ - assert(p != nullptr); - - std::size_t hash = init; - - while (*p != 0) - hash = djb_hash_update(hash, static_cast(*p++)); - - return hash; -} diff --git a/src/util/djb_hash.hxx b/src/util/djb_hash.hxx index 6eff57013..bbf732a9f 100644 --- a/src/util/djb_hash.hxx +++ b/src/util/djb_hash.hxx @@ -14,12 +14,35 @@ static constexpr std::size_t DJB_HASH_INIT = 5381; -[[gnu::pure]] -std::size_t -djb_hash(std::span src, - std::size_t init=DJB_HASH_INIT) noexcept; +[[nodiscard]] [[gnu::always_inline]] [[gnu::hot]] +constexpr std::size_t +djb_hash_update(std::size_t hash, std::byte b) noexcept +{ + return (hash * 33) ^ static_cast(b); +} -[[gnu::pure]] -std::size_t +[[nodiscard]] [[gnu::hot]] +constexpr std::size_t +djb_hash(std::span src, + std::size_t init=DJB_HASH_INIT) noexcept +{ + std::size_t hash = init; + + for (const auto i : src) + hash = djb_hash_update(hash, i); + + return hash; +} + +[[nodiscard]] [[gnu::hot]] +constexpr std::size_t djb_hash_string(const char *p, - std::size_t init=DJB_HASH_INIT) noexcept; + std::size_t init=DJB_HASH_INIT) noexcept +{ + std::size_t hash = init; + + while (*p != 0) + hash = djb_hash_update(hash, static_cast(*p++)); + + return hash; +} diff --git a/src/util/meson.build b/src/util/meson.build index 4d69809d0..7ada1dd36 100644 --- a/src/util/meson.build +++ b/src/util/meson.build @@ -23,7 +23,6 @@ util = static_library( 'ByteReverse.cxx', 'format.c', 'BitReverse.cxx', - 'djb_hash.cxx', 'Serial.cxx', include_directories: inc, )