|
|
| PermutedBitBlock () noexcept=default |
| | Construct empty; all storage is initialized.
|
| |
| | PermutedBitBlock (std::span< const std::uint64_t > words, std::size_t n) |
| | Copy n bits, ignoring extra words and high padding bits.
|
| |
| std::size_t | size () const noexcept |
| | Query the logical length.
|
| |
| bool | empty () const noexcept |
| | Query whether the block is empty.
|
| |
| bool | operator[] (std::size_t i) const |
| | Read a zero-based logical bit by value.
|
| |
| Payload | flatten () const noexcept |
| | Copy logical bits to linear words without mutating the block.
|
| |
| void | rotate_left (std::size_t left, std::size_t right, std::size_t distance) noexcept |
| | Rotate [left, right) left by distance modulo its length.
|
| |
| std::size_t | payload_capacity_bytes () const noexcept |
| | Query fixed payload capacity.
|
| |
| std::size_t | metadata_bytes () const noexcept |
| | Query object metadata size; there is no dynamic allocation.
|
| |
| void | redistribute (PermutedBitBlock &rhs, std::size_t left_size) noexcept |
| | Repartition two distinct blocks without allocation or exceptions.
|
| |
template<bool Permuted = true>
class pixie::experimental::PermutedBitBlock< Permuted >
Bounded owning experiment, independent of sequence split/merge policy.
Holds 0..2048 bits in 16 physical 128-bit chunks. With Permuted=true, nibble j of a uint64_t maps canonical chunk j to its physical chunk. Circular origin h is applied modulo the valid length BEFORE this mapping. Whole-block rotation changes only h. At h=0, chunk-aligned subranges rotate map nibbles without touching payload (including in partially filled blocks). Other rotations gather only the affected interval in rotated order, then scatter through the same map, preserving both the permutation and origin. Copies translate contiguous chunk pieces, never individual bits.
Permuted=false is the matched direct-movement control: the same packed copy primitive and circular-origin fast path, without a map or descriptor lookup. Value copies own independent payloads. No allocation or external lifetime.
- Template Parameters
-
| Permuted | Whether to map canonical chunks to physical chunks; false selects the direct-movement control. |