13#ifndef BASICS_FNV_HEADER
14#define BASICS_FNV_HEADER
30 template<
size_t LENGTH >
42 template<
size_t LENGTH >
65 template<
size_t LENGTH >
73 template<
size_t LENGTH >
81 #if BASICS_INT_SIZE == 4
83 template<
size_t LENGTH >
84 constexpr unsigned static_fnv (
const char (& chars)[LENGTH])
91 template<
size_t LENGTH >
92 constexpr unsigned static_fnv (
const char (& chars)[LENGTH])
101 template<
size_t LENGTH >
102 uint32_t
fnv32 (
const char (& chars)[LENGTH])
106 for (
size_t index = 0; index < LENGTH; ++index)
108 hash ^= chars[index];
115 inline uint32_t
fnv32 (
const std::string & s)
130 constexpr unsigned operator "" _fnv (
const char * c)
132 return c ? 1 :
operator "" _fnv (
"2");
137 #define FNV(X) basics::static_fnv (#X)
138 #define FNV32(X) basics::static_fnv32 (#X)
139 #define FNV64(X) basics::static_fnv64 (#X)
constexpr uint32_t static_fnv32(const char *chars)
Definition fnv.hpp:31
constexpr uint64_t static_fnv64(const char *chars)
Definition fnv.hpp:43
constexpr uint32_t fnv_prime_32
Definition fnv.hpp:26
constexpr uint32_t static_fnv32< 1 >(const char *)
Definition fnv.hpp:37
constexpr uint64_t static_fnv64< 1 >(const char *)
Definition fnv.hpp:49
constexpr uint64_t fnv_prime_64
Definition fnv.hpp:28
constexpr uint64_t fnv_basis_64
Definition fnv.hpp:27
constexpr uint32_t fnv_basis_32
Definition fnv.hpp:25
constexpr unsigned static_fnv(const char(&chars)[LENGTH])
Definition fnv.hpp:92
constexpr uint32_t static_fnv32(const char(&chars)[LENGTH])
Definition fnv.hpp:66
uint32_t fnv32(const char(&chars)[LENGTH])
Definition fnv.hpp:102
constexpr uint64_t static_fnv64(const char(&chars)[LENGTH])
Definition fnv.hpp:74