Helper class to manage the recursive combining of hash_combine arguments.
More...
#include </home/runner/work/allwpilib/allwpilib/wpiutil/src/main/native/thirdparty/llvm/include/wpi/Hashing.h>
|
| 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...
|
|
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.
◆ hash_combine_recursive_helper()
wpi::hashing::detail::hash_combine_recursive_helper::hash_combine_recursive_helper |
( |
| ) |
|
|
inline |
Construct a recursive hash combining helper.
This sets up the state for a recursive hash combine, including getting the seed and buffer setup.
◆ combine() [1/2]
hash_code wpi::hashing::detail::hash_combine_recursive_helper::combine |
( |
size_t |
length, |
|
|
char * |
buffer_ptr, |
|
|
char * |
buffer_end |
|
) |
| |
|
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.
◆ combine() [2/2]
template<typename T , typename ... Ts>
hash_code wpi::hashing::detail::hash_combine_recursive_helper::combine |
( |
size_t |
length, |
|
|
char * |
buffer_ptr, |
|
|
char * |
buffer_end, |
|
|
const T & |
arg, |
|
|
const Ts &... |
args |
|
) |
| |
|
inline |
Recursive, variadic combining method.
This function recurses through each argument, combining that argument into a single hash.
◆ combine_data()
template<typename T >
char * wpi::hashing::detail::hash_combine_recursive_helper::combine_data |
( |
size_t & |
length, |
|
|
char * |
buffer_ptr, |
|
|
char * |
buffer_end, |
|
|
T |
data |
|
) |
| |
|
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.
◆ buffer
char wpi::hashing::detail::hash_combine_recursive_helper::buffer[64] = {} |
◆ seed
const uint64_t wpi::hashing::detail::hash_combine_recursive_helper::seed |
◆ state
hash_state wpi::hashing::detail::hash_combine_recursive_helper::state |
The documentation for this struct was generated from the following file:
- /home/runner/work/allwpilib/allwpilib/wpiutil/src/main/native/thirdparty/llvm/include/wpi/Hashing.h