#pragma once #include #include "StringBase.h" namespace Hashing { // This enumeration represents the various supported xxhash versions enum class XXHashVersion { // A 32bit hash value is returned. XX32, // A 64bit hash value is returned. XX64 }; // A hashing algo that implements XXHash. class XXHash { public: // Computes the hash code of the integral value using XXHash algo. template static uint64_t HashValue(Tinput Input, XXHashVersion Version = XXHashVersion::XX64, uint64_t Seed = 0) { return ComputeHash((uint8_t*)&Input, 0, sizeof(Tinput), Version, Seed); } // Computes the hash code of the input string using XXHash algo. static uint64_t HashString(const String& Input, XXHashVersion Version = XXHashVersion::XX64, uint64_t Seed = 0); // Computes the hash code using the XXHash algo. static uint64_t ComputeHash(uint8_t* Input, uint64_t InputOffset, uint64_t InputLength, XXHashVersion Version = XXHashVersion::XX64, uint64_t Seed = 0); }; }