|
uint64_t | fetch64 (const char *p) |
|
uint32_t | fetch32 (const char *p) |
|
uint64_t | rotate (uint64_t val, size_t shift) |
| Bitwise right rotate. More...
|
|
uint64_t | shift_mix (uint64_t val) |
|
uint64_t | hash_16_bytes (uint64_t low, uint64_t high) |
|
uint64_t | hash_1to3_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | hash_4to8_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | hash_9to16_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | hash_17to32_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | hash_33to64_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | hash_short (const char *s, size_t length, uint64_t seed) |
|
uint64_t | get_execution_seed () |
|
template<typename T > |
std::enable_if_t< is_hashable_data< T >::value, T > | get_hashable_data (const T &value) |
| Helper to get the hashable data representation for a type. More...
|
|
template<typename T > |
std::enable_if_t<!is_hashable_data< T >::value, size_t > | get_hashable_data (const T &value) |
| Helper to get the hashable data representation for a type. More...
|
|
template<typename T > |
bool | store_and_advance (char *&buffer_ptr, char *buffer_end, const T &value, size_t offset=0) |
| Helper to store data from a value into a buffer and advance the pointer into that buffer. More...
|
|
template<typename InputIteratorT > |
hash_code | hash_combine_range_impl (InputIteratorT first, InputIteratorT last) |
| Implement the combining of integral values into a hash_code. More...
|
|
template<typename ValueT > |
std::enable_if_t< is_hashable_data< ValueT >::value, hash_code > | hash_combine_range_impl (ValueT *first, ValueT *last) |
| Implement the combining of integral values into a hash_code. More...
|
|
hash_code | hash_integer_value (uint64_t value) |
| Helper to hash the value of a single integer. More...
|
|
template<typename... Ts, std::size_t... Indices> |
hash_code | hash_value_tuple_helper (const std::tuple< Ts... > &arg, std::index_sequence< Indices... >) |
|
|
static constexpr uint64_t | k0 = 0xc3a5c85c97cb3127ULL |
| Some primes between 2^63 and 2^64 for various uses. More...
|
|
static constexpr uint64_t | k1 = 0xb492b66fbe98f273ULL |
|
static constexpr uint64_t | k2 = 0x9ae16a3b2f90404fULL |
|
static constexpr uint64_t | k3 = 0xc949d7c7509e6557ULL |
|
uint64_t | fixed_seed_override |
| A global, fixed seed-override variable. More...
|
|
template<typename ValueT >
Implement the combining of integral values into a hash_code.
This overload is selected when the value type of the iterator is integral and when the input iterator is actually a pointer. Rather than computing a hash_code for each object and then combining them, this (as an optimization) directly combines the integers. Also, because the integers are stored in contiguous memory, this routine avoids copying each value and directly reads from the underlying memory.
template<typename T >
bool wpi::hashing::detail::store_and_advance |
( |
char *& |
buffer_ptr, |
|
|
char * |
buffer_end, |
|
|
const T & |
value, |
|
|
size_t |
offset = 0 |
|
) |
| |
Helper to store data from a value into a buffer and advance the pointer into that buffer.
This routine first checks whether there is enough space in the provided buffer, and if not immediately returns false. If there is space, it copies the underlying bytes of value into the buffer, advances the buffer_ptr past the copied bytes, and returns true.