Signet Forge 0.1.0
C++20 Parquet library with AI-native extensions
DEMO
Loading...
Searching...
No Matches
xxhash.hpp File Reference

Header-only xxHash64 implementation for Signet Forge. More...

#include <cstdint>
#include <cstring>
#include <string>
#include <type_traits>

Go to the source code of this file.

Namespaces

namespace  signet
 
namespace  signet::forge
 
namespace  signet::forge::xxhash
 xxHash64 hashing functions for Parquet bloom filter support.
 
namespace  signet::forge::xxhash::detail
 Implementation details – not part of the public API.
 

Functions

constexpr uint64_t signet::forge::xxhash::detail::rotl64 (uint64_t v, int r)
 Rotate v left by r bits (circular shift).
 
uint64_t signet::forge::xxhash::detail::read_u64_le (const uint8_t *p)
 Read a little-endian uint64_t from potentially unaligned memory.
 
uint32_t signet::forge::xxhash::detail::read_u32_le (const uint8_t *p)
 Read a little-endian uint32_t from potentially unaligned memory.
 
constexpr uint64_t signet::forge::xxhash::detail::round (uint64_t acc, uint64_t lane)
 Round function: accumulate one 8-byte lane into an accumulator.
 
constexpr uint64_t signet::forge::xxhash::detail::merge_accumulator (uint64_t acc, uint64_t v)
 Merge an accumulator value into the converged accumulator.
 
constexpr uint64_t signet::forge::xxhash::detail::avalanche (uint64_t h)
 Avalanche / finalization mix to ensure all output bits are well-distributed.
 
uint64_t signet::forge::xxhash::hash64 (const void *data, size_t length, uint64_t seed=0)
 Compute xxHash64 of an arbitrary byte buffer.
 
uint64_t signet::forge::xxhash::hash64 (const std::string &s, uint64_t seed=0)
 Convenience overload: hash a std::string.
 
template<typename T >
uint64_t signet::forge::xxhash::hash64_value (const T &val, uint64_t seed=0)
 Convenience overload: hash a trivially-copyable typed value.
 

Detailed Description

Header-only xxHash64 implementation for Signet Forge.

Implements the xxHash64 algorithm as specified at: https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md

Used by the SplitBlockBloomFilter for hashing column values. All arithmetic is unsigned 64-bit with natural overflow (mod 2^64).

The public API provides three entry points:

  • hash64(const void*, size_t, seed) – hash arbitrary bytes
  • hash64(const std::string&, seed) – hash a string
  • hash64_value(const T&, seed) – hash any trivially-copyable type
See also
SplitBlockBloomFilter

Definition in file xxhash.hpp.