18#ifndef FLATBUFFERS_HASH_H_
19#define FLATBUFFERS_HASH_H_
43 static const uint64_t
kFnvPrime = 0x00000100000001b3ULL;
47template <
typename T> T
HashFnv1(
const char *input)
50 for (
const char *c = input; *c; ++c)
53 hash ^=
static_cast<unsigned char>(*c);
47template <
typename T> T
HashFnv1(
const char *input) {
…}
61 for (
const char *c = input; *c; ++c)
63 hash ^=
static_cast<unsigned char>(*c);
71 uint32_t hash = HashFnv1<uint32_t>(input);
72 return (hash >> 16) ^ (hash & 0xffff);
77 uint32_t hash = HashFnv1a<uint32_t>(input);
78 return (hash >> 16) ^ (hash & 0xffff);
95 {
"fnv1_32", HashFnv1<uint32_t>},
96 {
"fnv1a_32", HashFnv1a<uint32_t>},
100 {
"fnv1_64", HashFnv1<uint64_t>},
101 {
"fnv1a_64", HashFnv1a<uint64_t>},
107 for (std::size_t i = 0; i <
size; ++i)
120 for (std::size_t i = 0; i <
size; ++i)
133 for (std::size_t i = 0; i <
size; ++i)
NamedHashFunction< uint64_t >::HashFunction FindHashFunction64(const char *name)
T HashFnv1a(const char *input)
const NamedHashFunction< uint32_t > kHashFunctions32[]
const NamedHashFunction< uint16_t > kHashFunctions16[]
NamedHashFunction< uint32_t >::HashFunction FindHashFunction32(const char *name)
uint16_t HashFnv1< uint16_t >(const char *input)
T HashFnv1(const char *input)
NamedHashFunction< uint16_t >::HashFunction FindHashFunction16(const char *name)
uint16_t HashFnv1a< uint16_t >(const char *input)
const NamedHashFunction< uint64_t > kHashFunctions64[]
static const T kOffsetBasis
T(* HashFunction)(const char *)