Everett
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
everett::fixed_key_view< Words, Arch > Struct Template Reference

#include <fixed_search.h>

Public Types

using architecture = Arch
 
using key_type = std::array< std::uint32_t, Words >
 

Public Member Functions

 fixed_key_view ()=default
 
 fixed_key_view (std::span< std::byte const > bytes)
 
std::size_t size () const noexcept
 
bool empty () const noexcept
 
std::span< std::byte const > bytes () const noexcept
 
key_type key_at (std::size_t ordinal) const
 
fixed_key_view subview (std::size_t first, std::size_t count) const
 
std::size_t lower_bound (key_type const &query) const noexcept
 
std::size_t upper_bound (key_type const &query) const noexcept
 
std::size_t lower_bound_binary (key_type const &query) const noexcept
 
std::size_t upper_bound_binary (key_type const &query) const noexcept
 
std::size_t lower_bound_simd (key_type const &query) const noexcept
 
std::size_t upper_bound_simd (key_type const &query) const noexcept
 

Static Public Attributes

static constexpr std::size_t key_bytes = Words * 4
 
static constexpr std::size_t explicit_simd_limit = 32
 

Private Member Functions

bool prefer_simd () const noexcept
 
template<bool Upper>
std::size_t binary_bound (key_type const &query) const noexcept
 
template<bool Upper>
void pivot_step (key_type const &query, std::size_t &first, std::size_t &count) const noexcept
 
template<bool Upper, unsigned Bucket>
std::size_t small_bound (key_type const &query) const noexcept
 
template<bool Upper>
std::size_t simd_bound (key_type const &query) const noexcept
 

Private Attributes

std::span< std::byte const > bytes_
 

Member Typedef Documentation

◆ architecture

template<std::size_t Words, simd::architecture Arch = simd::scalar>
using everett::fixed_key_view< Words, Arch >::architecture = Arch

◆ key_type

template<std::size_t Words, simd::architecture Arch = simd::scalar>
using everett::fixed_key_view< Words, Arch >::key_type = std::array<std::uint32_t, Words>

Constructor & Destructor Documentation

◆ fixed_key_view() [1/2]

template<std::size_t Words, simd::architecture Arch = simd::scalar>
everett::fixed_key_view< Words, Arch >::fixed_key_view ( )
default

◆ fixed_key_view() [2/2]

template<std::size_t Words, simd::architecture Arch = simd::scalar>
everett::fixed_key_view< Words, Arch >::fixed_key_view ( std::span< std::byte const >  bytes)
inlineexplicit

Member Function Documentation

◆ binary_bound()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
template<bool Upper>
std::size_t everett::fixed_key_view< Words, Arch >::binary_bound ( key_type const &  query) const
inlineprivatenoexcept

◆ bytes()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::span< std::byte const > everett::fixed_key_view< Words, Arch >::bytes ( ) const
inlinenoexcept

◆ empty()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
bool everett::fixed_key_view< Words, Arch >::empty ( ) const
inlinenoexcept

◆ key_at()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
key_type everett::fixed_key_view< Words, Arch >::key_at ( std::size_t  ordinal) const
inline

◆ lower_bound()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::lower_bound ( key_type const &  query) const
inlinenoexcept

◆ lower_bound_binary()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::lower_bound_binary ( key_type const &  query) const
inlinenoexcept

◆ lower_bound_simd()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::lower_bound_simd ( key_type const &  query) const
inlinenoexcept

◆ pivot_step()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
template<bool Upper>
void everett::fixed_key_view< Words, Arch >::pivot_step ( key_type const &  query,
std::size_t &  first,
std::size_t &  count 
) const
inlineprivatenoexcept

◆ prefer_simd()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
bool everett::fixed_key_view< Words, Arch >::prefer_simd ( ) const
inlineprivatenoexcept

◆ simd_bound()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
template<bool Upper>
std::size_t everett::fixed_key_view< Words, Arch >::simd_bound ( key_type const &  query) const
inlineprivatenoexcept

◆ size()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::size ( ) const
inlinenoexcept

◆ small_bound()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
template<bool Upper, unsigned Bucket>
std::size_t everett::fixed_key_view< Words, Arch >::small_bound ( key_type const &  query) const
inlineprivatenoexcept

◆ subview()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
fixed_key_view everett::fixed_key_view< Words, Arch >::subview ( std::size_t  first,
std::size_t  count 
) const
inline

◆ upper_bound()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::upper_bound ( key_type const &  query) const
inlinenoexcept

◆ upper_bound_binary()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::upper_bound_binary ( key_type const &  query) const
inlinenoexcept

◆ upper_bound_simd()

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::size_t everett::fixed_key_view< Words, Arch >::upper_bound_simd ( key_type const &  query) const
inlinenoexcept

Member Data Documentation

◆ bytes_

template<std::size_t Words, simd::architecture Arch = simd::scalar>
std::span<std::byte const> everett::fixed_key_view< Words, Arch >::bytes_
private

◆ explicit_simd_limit

template<std::size_t Words, simd::architecture Arch = simd::scalar>
constexpr std::size_t everett::fixed_key_view< Words, Arch >::explicit_simd_limit = 32
staticconstexpr

◆ key_bytes

template<std::size_t Words, simd::architecture Arch = simd::scalar>
constexpr std::size_t everett::fixed_key_view< Words, Arch >::key_bytes = Words * 4
staticconstexpr

The documentation for this struct was generated from the following file: