ZXFoundation™ 26h2
Loading...
Searching...
No Matches
lib.bitfield Module Reference

Concepts

concept  lib::bit_storage

Data Structures

class  lib::bit_field< T, Numbering >
class  lib::bit_iterator< T, Numbering >
class  lib::bit_range_ref< T >
class  lib::bit_ref< T >
class  lib::bitfield_ref< T, Numbering >
struct  lib::field_spec< Name, Start, End >
struct  lib::fixed_string< N >
struct  lib::lsb0_t
struct  lib::msb0_t
class  lib::record< T, Numbering, Fields >
class  lib::record_ref< T, Numbering, Fields >
struct  std::tuple_element< I, lib::record< T, Numbering, Fields... > >
struct  std::tuple_size< lib::record< T, Numbering, Fields... > >

Typedefs

using lib::bf16 = bit_field<u16>
using lib::bf32 = bit_field<u32>
using lib::bf64 = bit_field<u64>
using lib::bf64_ref = bitfield_ref<u64>
using lib::bf8 = bit_field<u8>
using lib::bf8_ref = bitfield_ref<u8>
using difference_type = std::ptrdiff_t
using numbering = Numbering
using numbering = Numbering
using numbering = Numbering
using ref_type = record_ref<T, Numbering, Fields...>
using storage_type = T
using storage_type = T
using storage_type = T
using storage_type = T
using type = T
using value_type = bool

Functions

constexpr bool all () const noexcept
constexpr bool any () const noexcept
constexpr bit_iterator< T, Numbering > begin () const noexcept
constexpr bit_field (T v) noexcept
constexpr bit_iterator (const T *storage, usize pos) noexcept
constexpr bit_range_ref (T &storage, usize shift, usize width) noexcept
constexpr bit_ref (T &storage, usize shift) noexcept
static constexpr usize bit_shift (usize, usize n) noexcept
static constexpr usize bit_shift (usize total, usize n) noexcept
constexpr bitfield_ref (T &storage) noexcept
template<bit_storage T>
constexpr T lib::bitmask (usize count) noexcept
constexpr const bit_field< T, Numbering > & bits () const noexcept
constexpr bit_field< T, Numbering > & bits () noexcept
constexpr bitfield_ref< T, Numbering > & bits () noexcept
constexpr const char * c_str () const noexcept
constexpr bit_field & clear () noexcept
constexpr bit_field & clear (usize bit) noexcept
constexpr bitfield_ref & clear (usize bit) noexcept
constexpr usize count () const noexcept
constexpr usize count (usize a, usize b) const noexcept
constexpr bit_iterator< T, Numbering > end () const noexcept
template<usize A, usize B>
constexpr T extract () const noexcept
constexpr T extract (usize a, usize b) const noexcept
template<usize A, usize B>
constexpr T extract () const noexcept
constexpr T extract (usize a, usize b) const noexcept
template<usize N>
 lib::fixed_string (const char(&)[N]) -> fixed_string< N >
constexpr fixed_string (const char(&str)[N]) noexcept
constexpr bit_field & flip () noexcept
constexpr bit_field & flip (usize bit) noexcept
constexpr bit_ref & flip () noexcept
constexpr bitfield_ref & flip (usize bit) noexcept
template<class Fn>
constexpr void for_each (Fn &&fn) const noexcept(std::is_nothrow_invocable_v< Fn &, usize, bool >)
template<class Fn>
constexpr void for_each (usize a, usize b, Fn &&fn) const noexcept(std::is_nothrow_invocable_v< Fn &, usize, bool >)
template<usize I, bit_storage T, class Numbering, class... Fields>
constexpr T lib::get (const record< T, Numbering, Fields... > &r) noexcept
template<usize I>
constexpr T get () const noexcept
template<fixed_string Name>
constexpr T get () const noexcept
template<usize I>
constexpr T get () const noexcept
template<fixed_string Name>
constexpr T get () const noexcept
template<fixed_string Name, class... Fs>
consteval usize lib::detail::index_of_field () noexcept
template<usize A, usize B>
constexpr bit_field & insert (T v) noexcept
constexpr bit_field & insert (usize a, usize b, T v) noexcept
template<usize A, usize B>
constexpr bitfield_ref & insert (T v) noexcept
constexpr bitfield_ref & insert (usize a, usize b, T v) noexcept
static constexpr T mask (usize a, usize b) noexcept
constexpr bool none () const noexcept
constexpr operator bool () const noexcept
constexpr operator T () const noexcept
constexpr operator T () const noexcept
constexpr operator T () const noexcept
constexpr bool operator* () const noexcept
constexpr bit_iterator & operator++ () noexcept
constexpr bit_iterator operator++ (int) noexcept
constexpr bit_range_ref & operator= (const bit_range_ref &other) noexcept
constexpr bit_range_ref & operator= (T value) noexcept
constexpr bit_ref & operator= (bool v) noexcept
constexpr bit_ref & operator= (const bit_ref &other) noexcept
constexpr bool operator== (const bit_iterator &) const noexcept=default
template<usize N1, usize N2>
constexpr bool lib::operator== (const fixed_string< N1 > &a, const fixed_string< N2 > &b) noexcept
constexpr auto operator[] (this auto &&self, usize a, usize b) noexcept -> std::conditional_t< std::is_const_v< std::remove_reference_t< decltype(self)> >, T, bit_range_ref< T > >
constexpr auto operator[] (this auto &&self, usize bit) noexcept -> std::conditional_t< std::is_const_v< std::remove_reference_t< decltype(self)> >, bool, bit_ref< T > >
constexpr auto operator[] (this auto &&self, usize a, usize b) noexcept -> std::conditional_t< std::is_const_v< std::remove_reference_t< decltype(self)> >, T, bit_range_ref< T > >
constexpr auto operator[] (this auto &&self, usize bit) noexcept -> std::conditional_t< std::is_const_v< std::remove_reference_t< decltype(self)> >, bool, bit_ref< T > >
static constexpr std::pair< usize, usize > range_shift_width (usize total, usize a, usize b) noexcept
static constexpr std::pair< usize, usize > range_shift_width (usize total, usize a, usize b) noexcept
constexpr T & raw () noexcept
constexpr T & raw () noexcept
constexpr record (T v) noexcept
constexpr record_ref (T &storage) noexcept
constexpr ref_type ref () noexcept
constexpr bit_field rotl (unsigned n) const noexcept
constexpr bit_field rotr (unsigned n) const noexcept
constexpr bit_field & set (usize bit) noexcept
constexpr bit_field & set (usize bit, bool v) noexcept
constexpr bitfield_ref & set (usize bit) noexcept
constexpr bitfield_ref & set (usize bit, bool v) noexcept
template<fixed_string Name>
constexpr record & set (T v) noexcept
template<fixed_string Name>
constexpr record_ref & set (T v) noexcept
constexpr bit_field & set_range (usize a, usize b, T v) noexcept
constexpr bitfield_ref & set_range (usize a, usize b, T v) noexcept
constexpr usize size () const noexcept
constexpr void swap (bit_field &other) noexcept
constexpr bool test (usize bit) const noexcept
constexpr bool test (usize bit) const noexcept
constexpr T underlying () const noexcept
constexpr T underlying () const noexcept
constexpr T value () const noexcept
constexpr T value () const noexcept
constexpr usize width () const noexcept

Variables

template<class T>
constexpr bool lib::detail::always_false = false
char data [N] {}
static constexpr usize end = End
static constexpr usize extent = std::numeric_limits<T>::digits
static constexpr usize extent = std::numeric_limits<T>::digits
static constexpr usize field_count = sizeof...(Fields)
static constexpr usize field_count = sizeof...(Fields)
constexpr lsb0_t lib::lsb0 {}
constexpr msb0_t lib::msb0 {}
static constexpr auto name = Name
static constexpr usize start = Start

Files

file  lib/bitfield.cxxm
 C++ wrapper for bitfields.