Kea
1.5.0
hash.h
Go to the documentation of this file.
1
// Copyright (C) 2018 Internet Systems Consortium, Inc. ("ISC")
2
//
3
// This Source Code Form is subject to the terms of the Mozilla Public
4
// License, v. 2.0. If a copy of the MPL was not distributed with this
5
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7
#ifndef HASH_H
8
#define HASH_H
9
10
#include <cstddef>
11
#include <cstdint>
12
#include <string>
13
14
namespace
isc
{
15
namespace
util {
16
19
struct
Hash64
{
27
static
uint64_t
hash
(
const
uint8_t* data,
size_t
length) {
28
uint64_t
hash
=
FNV_offset_basis
;
29
for
(
size_t
i = 0; i < length; ++i) {
30
hash
=
hash
^ data[i];
31
hash
=
hash
*
FNV_prime
;
32
}
33
return
(
hash
);
34
}
35
42
static
uint64_t
hash
(
const
std::string& str) {
43
return
(
hash
(
reinterpret_cast<
const
uint8_t*
>
(str.c_str()),
44
str.size()));
45
}
46
48
static
const
uint64_t
FNV_offset_basis
= 14695981039346656037ull;
49
51
static
const
uint64_t
FNV_prime
= 1099511628211ull;
52
};
53
54
}
// end of namespace isc::util
55
}
// end of namespace isc
56
57
#endif
isc::util::Hash64::FNV_prime
static const uint64_t FNV_prime
Prime.
Definition:
hash.h:51
isc::util::Hash64::hash
static uint64_t hash(const std::string &str)
Compute the hash.
Definition:
hash.h:42
isc::util::Hash64
Hash implementation based on Fowler-Noll-Vo hash function.
Definition:
hash.h:19
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition:
agent_parser.cc:144
isc::util::Hash64::FNV_offset_basis
static const uint64_t FNV_offset_basis
Offset basis.
Definition:
hash.h:48
isc::util::Hash64::hash
static uint64_t hash(const uint8_t *data, size_t length)
Compute the hash.
Definition:
hash.h:27
src
lib
util
hash.h
Generated on Fri Jul 10 2020 09:12:51 for Kea by
1.8.18