BitShares-Core
7.0.2
BitShares blockchain node software and command-line wallet software
libraries
fc
include
fc
crypto
city.hpp
Go to the documentation of this file.
1
// Copyright (c) 2011 Google, Inc.
2
//
3
// Permission is hereby granted, free of charge, to any person obtaining a copy
4
// of this software and associated documentation files (the "Software"), to deal
5
// in the Software without restriction, including without limitation the rights
6
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
// copies of the Software, and to permit persons to whom the Software is
8
// furnished to do so, subject to the following conditions:
9
//
10
// The above copyright notice and this permission notice shall be included in
11
// all copies or substantial portions of the Software.
12
//
13
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
// THE SOFTWARE.
20
//
21
// CityHash, by Geoff Pike and Jyrki Alakuijala
22
//
23
// This file provides a few functions for hashing strings. On x86-64
24
// hardware in 2011, CityHash64() is faster than other high-quality
25
// hash functions, such as Murmur. This is largely due to higher
26
// instruction-level parallelism. CityHash64() and CityHash128() also perform
27
// well on hash-quality tests.
28
//
29
// CityHash128() is optimized for relatively long strings and returns
30
// a 128-bit hash. For strings more than about 2000 bytes it can be
31
// faster than CityHash64().
32
//
33
// Functions in the CityHash family are not suitable for cryptography.
34
//
35
// WARNING: This code has not been tested on big-endian platforms!
36
// It is known to work well on little-endian platforms that have a small penalty
37
// for unaligned reads, such as current Intel and AMD moderate-to-high-end CPUs.
38
//
39
// By the way, for some hash functions, given strings a and b, the hash
40
// of a+b is easily derived from the hashes of a and b. This property
41
// doesn't hold for any hash functions in this file.
42
#pragma once
43
44
#include <
fc/uint128.hpp
>
45
46
#include <stdlib.h>
// for size_t.
47
#include <stdint.h>
48
#include <utility>
49
50
namespace
fc
{
51
52
// Hash function for a byte array.
53
uint64_t
city_hash64
(
const
char
*buf,
size_t
len);
54
55
#if SIZE_MAX > UINT32_MAX
56
inline
size_t
city_hash_size_t
(
const
char
*buf,
size_t
len) {
return
city_hash64
(buf, len); }
57
#else
58
uint32_t
city_hash32
(
const
char
*buf,
size_t
len);
59
inline
size_t
city_hash_size_t
(
const
char
*buf,
size_t
len) {
return
city_hash32
(buf, len); }
60
#endif
61
62
// Hash function for a byte array.
63
uint128_t
city_hash_crc_128
(
const
char
*s,
size_t
len);
64
65
}
// namespace fc
uint128.hpp
fc
Definition:
api.hpp:15
fc::city_hash32
uint32_t city_hash32(const char *buf, size_t len)
Definition:
city.cpp:200
fc::city_hash64
uint64_t city_hash64(const char *buf, size_t len)
Definition:
city.cpp:377
fc::city_hash_size_t
size_t city_hash_size_t(const char *buf, size_t len)
Definition:
city.hpp:59
fc::city_hash_crc_128
uint128_t city_hash_crc_128(const char *s, size_t len)
Definition:
city.cpp:651
Generated on Fri Dec 15 2023 06:12:42 for BitShares-Core by
1.8.17