C++26 memory-mapped structure framework built on the unified field. More...
import zxfoundation.sys.syschk.barebones;import lib.error;import lib.pack_indexing;import lib.cstring;import zxfoundation.base.types;import lib.rwonce;import lib.stl;import lib.fixed_string;import lib.bitfield;Concepts | |
| concept | lib::detail::is_record_like |
| concept | lib::detail::is_structure_like |
Typedefs | |
| template<fixed_string Name, class ElementType, usize Count, usize Stride = sizeof(ElementType)> | |
| using | lib::bank_array = field<Name, bank<Count, Stride>, ElementType, attr::rw> |
| template<fixed_string Name, usize Alignment, class... Slices> | |
| using | lib::cross_aligned_rw_field = field<Name, std::tuple<Slices...>, u64, attr::rw, attr::aligned<Alignment> > |
| template<fixed_string Name, class Type, class... Slices> | |
| using | lib::cross_ro_field = field<Name, std::tuple<Slices...>, Type, attr::ro> |
| template<fixed_string Name, class Type, class... Slices> | |
| using | lib::cross_rw_field = field<Name, std::tuple<Slices...>, Type, attr::rw> |
| template<usize ByteOffset, usize StartBit, usize EndBit, class Numbering = msb0_t> | |
| using | lib::cross_slice = lib::slice<ByteOffset, StartBit, EndBit, Numbering> |
| template<fixed_string Name, class Type, class... Spans> | |
| using | lib::disjoint_ro_byte = field<Name, std::tuple<Spans...>, Type, attr::ro> |
| template<fixed_string Name, class Type, class... Spans> | |
| using | lib::disjoint_rw_byte = field<Name, std::tuple<Spans...>, Type, attr::rw> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::overlay_ro_byte = field<Name, byte_span<Start, End>, Type, attr::ro, attr::overlay> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::overlay_rw_byte = field<Name, byte_span<Start, End>, Type, attr::rw, attr::overlay> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::rao_byte = field<Name, byte_span<Start, End>, Type, attr::rao> |
| template<fixed_string Name, class Type> | |
| using | lib::rao_byte_auto = field<Name, auto_layout, Type, attr::rao> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::raz_byte = field<Name, byte_span<Start, End>, Type, attr::raz> |
| template<fixed_string Name, class Type> | |
| using | lib::raz_byte_auto = field<Name, auto_layout, Type, attr::raz> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::rc_byte = field<Name, byte_span<Start, End>, Type, attr::rc> |
| template<fixed_string Name, class Type> | |
| using | lib::rc_byte_auto = field<Name, auto_layout, Type, attr::rc> |
| template<fixed_string Name, class ElementType, usize Count, usize Stride = sizeof(ElementType)> | |
| using | lib::ro_bank_array = field<Name, bank<Count, Stride>, ElementType, attr::ro> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::ro_byte = field<Name, byte_span<Start, End>, Type, attr::ro> |
| template<fixed_string Name, class Type> | |
| using | lib::ro_byte_auto = field<Name, auto_layout, Type, attr::ro> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::rw_byte = field<Name, byte_span<Start, End>, Type, attr::rw> |
| template<fixed_string Name, class Type> | |
| using | lib::rw_byte_auto = field<Name, auto_layout, Type, attr::rw> |
| template<fixed_string Name, usize Start, usize End, class Type = u8> | |
| using | lib::rz_byte = field<Name, byte_span<Start, End>, Type, attr::rz> |
| template<fixed_string Name, class Type = u8> | |
| using | lib::rz_byte_auto = field<Name, auto_layout, Type, attr::rz> |
| template<class StructT> | |
| using | lib::structure_as_mmio_ref_t = typename structure_traits<StructT>::mmio_ref_type |
| template<class StructT> | |
| using | lib::structure_as_ref_t = typename structure_traits<StructT>::ref_type |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_ro_byte = field<Name, byte_span<Start, End>, Type, attr::ro, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_rw_byte = field<Name, byte_span<Start, End>, Type, attr::rw, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_w0c_byte = field<Name, byte_span<Start, End>, Type, attr::w0c, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_w1c_byte = field<Name, byte_span<Start, End>, Type, attr::w1c, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_w1s_byte = field<Name, byte_span<Start, End>, Type, attr::w1s, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_w1t_byte = field<Name, byte_span<Start, End>, Type, attr::w1t, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::unaligned_wo_byte = field<Name, byte_span<Start, End>, Type, attr::wo, attr::unaligned> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::w0c_byte = field<Name, byte_span<Start, End>, Type, attr::w0c> |
| template<fixed_string Name, class Type> | |
| using | lib::w0c_byte_auto = field<Name, auto_layout, Type, attr::w0c> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::w1c_byte = field<Name, byte_span<Start, End>, Type, attr::w1c> |
| template<fixed_string Name, class Type> | |
| using | lib::w1c_byte_auto = field<Name, auto_layout, Type, attr::w1c> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::w1s_byte = field<Name, byte_span<Start, End>, Type, attr::w1s> |
| template<fixed_string Name, class Type> | |
| using | lib::w1s_byte_auto = field<Name, auto_layout, Type, attr::w1s> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::w1t_byte = field<Name, byte_span<Start, End>, Type, attr::w1t> |
| template<fixed_string Name, class Type> | |
| using | lib::w1t_byte_auto = field<Name, auto_layout, Type, attr::w1t> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::wac_byte = field<Name, byte_span<Start, End>, Type, attr::wac> |
| template<fixed_string Name, class Type> | |
| using | lib::wac_byte_auto = field<Name, auto_layout, Type, attr::wac> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::wo_byte = field<Name, byte_span<Start, End>, Type, attr::wo> |
| template<fixed_string Name, class Type> | |
| using | lib::wo_byte_auto = field<Name, auto_layout, Type, attr::wo> |
| template<fixed_string Name, usize Start, usize End, class Type> | |
| using | lib::woo_byte = field<Name, byte_span<Start, End>, Type, attr::woo> |
| template<fixed_string Name, class Type> | |
| using | lib::woo_byte_auto = field<Name, auto_layout, Type, attr::woo> |
Variables | |
| template<class T> | |
| constexpr bool | lib::detail::is_bitfield_v = is_bitfield_trait<std::remove_cvref_t<T> >::value |
| template<class T> | |
| constexpr bool | lib::detail::is_record_v = is_record_like<T> |
| template<class T> | |
| constexpr bool | lib::detail::is_structure_v = is_structure_like<T> |
C++26 memory-mapped structure framework built on the unified field.
SPDX-License-Identifier: Apache-2.0