Pixie
Loading...
Searching...
No Matches
pixie::experimental::ByteSlotOrder< N, Simd > Class Template Reference

Byte-index control for the split-bit slot-order experiment. More...

#include <slot_order.h>

Public Member Functions

 ByteSlotOrder (std::size_t count=0) noexcept
 Construct identity order; requires count <= N.
 
std::size_t size () const noexcept
 Occupied count in [0,N].
 
unsigned operator[] (std::size_t i) const noexcept
 Physical index; requires i < size().
 
bool occupied (std::size_t i) const noexcept
 Whether physical slot i is occupied; requires i < N.
 
bool valid () const noexcept
 Check mapping uniqueness and occupancy.
 
void rotate_left (std::size_t left, std::size_t right, std::size_t distance) noexcept
 Rotate [left,right); reduce distance modulo length; empty is a no-op.
 
std::size_t rotate_children (std::array< void *, N > &, std::size_t left, std::size_t right, std::size_t distance) noexcept
 Rotate metadata using rotate_left's contract; pointers are untouched.
 

Static Public Attributes

static constexpr std::size_t capacity = N
 Maximum occupied count.
 
static constexpr std::size_t order_bytes = N
 Order bytes, excluding count and alignment padding.
 

Detailed Description

template<std::size_t N, bool Simd = true>
class pixie::experimental::ByteSlotOrder< N, Simd >

Byte-index control for the split-bit slot-order experiment.

Shares SplitSlotOrder's ranges, occupancy, ownership and exception contracts. SIMD dispatch stays in this primitive; false selects the scalar comparison implementation on every host.

Template Parameters
NCapacity, 32 or 64.
SimdPermit available SIMD shuffles.

Member Function Documentation

◆ rotate_children()

template<std::size_t N, bool Simd = true>
std::size_t pixie::experimental::ByteSlotOrder< N, Simd >::rotate_children ( std::array< void *, N > & ,
std::size_t left,
std::size_t right,
std::size_t distance )
inlinenoexcept

Rotate metadata using rotate_left's contract; pointers are untouched.

Returns
Zero physical pointer writes.

◆ rotate_left()

template<std::size_t N, bool Simd = true>
void pixie::experimental::ByteSlotOrder< N, Simd >::rotate_left ( std::size_t left,
std::size_t right,
std::size_t distance )
inlinenoexcept

Rotate [left,right); reduce distance modulo length; empty is a no-op.

Precondition
left <= right <= size().

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