9#include <small_vector/SmallVector.h>
18 n ^= h(v) + (n << 6) + (n >> 2);
24 size_t n = 0x444e414c544f4353;
25 std::hash<typename T::value_type> h{};
27 for (
const auto& e : v)
39 struct hash<
std::vector<uint8_t>>
46 0x7720796f726c694b, 0x2165726568207361};
47 return ccf::siphash::siphash<2, 4>(v, k);
52 struct hash<
std::vector<T>>
60 template <
typename T,
size_t N>
61 struct hash<
std::array<T, N>>
69 template <
typename A,
typename B>
70 struct hash<
std::pair<A, B>>
74 size_t n = 0x444e414c544f4353;
98 struct fnv_parameters<uint32_t>
100 static constexpr uint32_t offset_basis = 0x811c9dc5;
101 static constexpr uint32_t
prime = 16777619;
105 struct fnv_parameters<uint64_t>
107 static constexpr uint64_t offset_basis = 0xcbf29ce484222325;
108 static constexpr uint64_t
prime = 1099511628211;
112 template <
typename T>
113 static constexpr T fnv_1a(
const std::string_view& sv)
115 using params = fnv_parameters<T>;
117 T hash = params::offset_basis;
119 for (
const auto& c : sv)
122 hash *= params::prime;
constexpr element prime
Definition sharing.cpp:22
void hash_combine(size_t &n, const T &v, std::hash< T > &h)
Definition hash.h:16
size_t hash_container(const T &v)
Definition hash.h:22
Definition contiguous_set.h:12
uint64_t[2] SipKey
Definition siphash.h:13
size_t operator()(const std::array< T, N > &v) const
Definition hash.h:63
size_t operator()(const std::pair< A, B > &v) const
Definition hash.h:72
size_t operator()(const std::vector< T > &v) const
Definition hash.h:54
size_t operator()(const std::vector< uint8_t > &v) const
Definition hash.h:41