Template Class Philox

Class Documentation

template<std::uint8_t N = 4, std::uint8_t W = 32, std::uint8_t R = 10>
class Philox

Public Types

using result_type = std::uint64_t
using word_type = std::conditional_t<W == 32, std::uint32_t, std::uint64_t>
using counter_type = std::array<word_type, N>
using key_type = std::array<word_type, N / 2>
using result_block_type = std::array<result_type, RESULTS_PER_BLOCK>

Public Functions

inline explicit Philox(result_type seed, result_type counter = 0) noexcept
inline explicit Philox(key_type key, counter_type counter) noexcept
inline constexpr result_type operator()() noexcept
inline constexpr double uniform() noexcept
inline counter_type getCounter() const noexcept
inline key_type getKey() const noexcept
inline void setCounter(const counter_type &ctr) noexcept
inline void setKey(const key_type &key) noexcept
inline counter_type getCounterForSerde() const noexcept
inline void setState(const counter_type &ctr, const key_type &key) noexcept
inline const result_block_type &result_cache() const noexcept
inline void set_result_cache(const result_block_type &cache) noexcept
inline std::uint8_t result_index() const noexcept
inline void set_result_index(std::uint8_t idx) noexcept

Public Static Functions

static inline constexpr auto() min () noexcept
static inline constexpr auto() max () noexcept
static inline constexpr key_type seed_to_key(result_type seed) noexcept
static inline constexpr counter_type counter_from_uint64(result_type counter) noexcept

Public Static Attributes

static constexpr auto RESULTS_PER_BLOCK = std::uint8_t{N * W / 64}