16 static_assert(std::is_same_v<HASH_T, uint64_t>,
"Hash type does not match the required type.");
19 using STATE_T = XXH64_state_t;
20 STATE_T *pHashState =
nullptr;
24 if (pHashState !=
nullptr)
26 XXH64_freeState(pHashState);
36 XXH64_reset(pHashState, tHashSeed);
51 _Move.pHashState =
nullptr;
63 pHashState = _Move.pHashState;
64 _Move.pHashState =
nullptr;
73 return XXH64_digest(pHashState);
80 void Update(
const void *pData,
size_t szSize)
82 XXH64_update(pHashState, pData, szSize);
90 requires(std::is_trivially_copyable_v<T>)
93 Update(&tData,
sizeof(tData));
100 template<
typename T,
size_t N>
101 requires(std::is_trivially_copyable_v<T>)
104 Update(&tDataArr,
sizeof(tDataArr));
116 return XXH64(pData, szSize, tHashSeed);
126 requires(std::is_trivially_copyable_v<T>)
129 return Hash(&tData,
sizeof(tData), tHashSeed);
138 template<
typename T,
size_t N>
139 requires(std::is_trivially_copyable_v<T>)
142 return Hash(&tDataArr,
sizeof(tDataArr), tHashSeed);
NBT_Hash(const NBT_Hash &_Copy)=delete
禁止拷贝构造
NBT_Hash(NBT_Hash &&_Move) noexcept
移动构造
定义 NBT_Hash.hpp:49
static HASH_T Hash(const T &tData, HASH_T tHashSeed)
直接通过可平凡复制类型获取哈希
定义 NBT_Hash.hpp:127
XXH64_hash_t HASH_T
类型别名,xxhash类型封装,类型必须是uint64_t
定义 NBT_Hash.hpp:15
HASH_T Digest(void) const
根据之前已添加的数据,获取当前的哈希值
定义 NBT_Hash.hpp:71
~NBT_Hash(void)
析构并释放xxhash对象,然后置空
定义 NBT_Hash.hpp:40
NBT_Hash & operator=(const NBT_Hash &)=delete
禁止拷贝赋值
void Update(const T(&tDataArr)[N])
通过可平凡复制类型的数组更新哈希
定义 NBT_Hash.hpp:102
void Update(const void *pData, size_t szSize)
添加指针指向的数据更新哈希
定义 NBT_Hash.hpp:80
void Update(const T &tData)
通过可平凡复制类型更新哈希
定义 NBT_Hash.hpp:91
static HASH_T Hash(const void *pData, size_t szSize, HASH_T tHashSeed)
直接通过指针指向的数据获取哈希
定义 NBT_Hash.hpp:114
NBT_Hash & operator=(NBT_Hash &&_Move) noexcept
移动赋值
定义 NBT_Hash.hpp:59
static HASH_T Hash(const T(&tDataArr)[N], HASH_T tHashSeed)
直接通过可平凡复制类型的数组获取哈希
定义 NBT_Hash.hpp:140
NBT_Hash(const HASH_T &tHashSeed)
通过哈希种子构造并初始化xxhash对象
定义 NBT_Hash.hpp:34