LLVM
8.0.1
|
Helper class to manage the recursive combining of hash_combine arguments. More...
#include "llvm/ADT/Hashing.h"
Public Member Functions | |
hash_combine_recursive_helper () | |
Construct a recursive hash combining helper. More... | |
template<typename T > | |
char * | combine_data (size_t &length, char *buffer_ptr, char *buffer_end, T data) |
Combine one chunk of data into the current in-flight hash. More... | |
template<typename T , typename ... Ts> | |
hash_code | combine (size_t length, char *buffer_ptr, char *buffer_end, const T &arg, const Ts &...args) |
Recursive, variadic combining method. More... | |
hash_code | combine (size_t length, char *buffer_ptr, char *buffer_end) |
Base case for recursive, variadic combining. More... | |
Public Attributes | |
char | buffer [64] |
hash_state | state |
const uint64_t | seed |
Helper class to manage the recursive combining of hash_combine arguments.
This class exists to manage the state and various calls involved in the recursive combining of arguments used in hash_combine. It is particularly useful at minimizing the code in the recursive calls to ease the pain caused by a lack of variadic functions.
|
inline |
|
inline |
Recursive, variadic combining method.
This function recurses through each argument, combining that argument into a single hash.
Definition at line 554 of file Hashing.h.
References llvm::get_hashable_data().
Referenced by llvm::hash_combine().
|
inline |
Base case for recursive, variadic combining.
The base case when combining arguments recursively is reached when all arguments have been handled. It flushes the remaining buffer and constructs a hash_code.
Definition at line 567 of file Hashing.h.
References llvm::hashing::detail::hash_state::finalize(), llvm::hashing::detail::hash_short(), llvm::hashing::detail::hash_state::mix(), and rotate.
|
inline |
Combine one chunk of data into the current in-flight hash.
This merges one chunk of data into the hash. First it tries to buffer the data. If the buffer is full, it hashes the buffer into its hash_state, empties it, and then merges the new chunk in. This also handles cases where the data straddles the end of the buffer.
Definition at line 515 of file Hashing.h.
References llvm::hashing::detail::hash_state::create(), llvm::Intrinsic::memcpy, llvm::hashing::detail::hash_state::mix(), llvm::hashing::detail::store_and_advance(), and T.
char llvm::hashing::detail::hash_combine_recursive_helper::buffer[64] |
Definition at line 496 of file Hashing.h.
Referenced by llvm::hash_combine().
const uint64_t llvm::hashing::detail::hash_combine_recursive_helper::seed |
hash_state llvm::hashing::detail::hash_combine_recursive_helper::state |