|
| struct | lib::addr< Offset > |
| | Byte-offset anchor for hierarchical register addressing. More...
|
| struct | lib::attr::aligned< A > |
| | address = raw << log2(A) More...
|
| struct | lib::aligned_address< Alignment > |
| | Value transformer contract (carries caller bit width). More...
|
| struct | lib::detail::as_transform< H, bool > |
| struct | lib::detail::as_transform< H, true > |
| struct | lib::auto_layout |
| | Automatic-layout locator (structure domain). More...
|
| struct | lib::bank< Count, Stride > |
| | Strided-array locator (structure domain). More...
|
| struct | lib::endian::big |
| class | lib::bit_field< T, Numbering > |
| class | lib::bit_ref< T > |
| struct | lib::bit_slice< Start, End > |
| | Compile-time bit slice descriptor (record domain). More...
|
| class | lib::bitfield_ref< T, Numbering > |
| class | lib::byte_bit_ref< Numbering, TotalBits > |
| struct | lib::byte_span< Start, End > |
| | Byte-range locator (structure domain, whole bytes). More...
|
| struct | lib::attr::endian_big |
| struct | lib::attr::endian_little |
| struct | lib::exact_uint< Bits > |
| | Exact-width unsigned integer type (compile-time bit width 1..128). More...
|
| struct | lib::extensions< Mixins > |
| struct | lib::field< Name, Locator, Type, Attr > |
| | Unified field descriptor. More...
|
| struct | lib::detail::filter_extensions< Ts > |
| struct | lib::detail::filter_extensions_dispatch< HasExt, Ts > |
| struct | lib::detail::filter_extensions_dispatch< true, Ts... > |
| struct | lib::detail::filter_fields< Ts > |
| struct | lib::detail::filter_fields_dispatch< AllFields, Ts > |
| struct | lib::detail::filter_fields_dispatch< false, Ts... > |
| struct | lib::detail::filter_fields_impl< Acc, Head, Tail... > |
| struct | lib::detail::filter_fields_impl< std::tuple< Collected... > > |
| struct | lib::detail::filter_fields_step< false, std::tuple< Collected... >, Head, Tail... > |
| struct | lib::detail::filter_fields_step< true, std::tuple< Collected... >, Head, Tail... > |
| struct | lib::detail::find_extensions< Ts > |
| struct | lib::detail::find_extensions< Head, Tail... > |
| struct | lib::detail::first_of< Pred, Ts > |
| struct | lib::detail::first_of< Pred, H, T... > |
| struct | lib::attr::fixed< V > |
| | architectural constant (always V) More...
|
| struct | lib::detail::fold_max_bit< Tuple > |
| struct | lib::detail::fold_max_bit< std::tuple< Ss... > > |
| struct | lib::detail::fold_min_bit< Tuple > |
| struct | lib::detail::fold_min_bit< std::tuple< Ss... > > |
| struct | lib::detail::fold_total_width< Tuple > |
| struct | lib::detail::fold_total_width< std::tuple< Ss... > > |
| struct | lib::attr::init< V > |
| | default/reset value More...
|
| struct | lib::attr::inverted |
| | active-low More...
|
| struct | lib::inverted |
| struct | lib::is_byte_array< T > |
| struct | lib::is_byte_array< std::array< u8, N > > |
| struct | lib::is_exact_uint< T > |
| struct | lib::is_exact_uint< exact_uint< Bits > > |
| struct | lib::detail::is_extensions_pack< T > |
| struct | lib::detail::is_extensions_pack< extensions< Ms... > > |
| struct | lib::detail::is_fixed_tag< T > |
| struct | lib::detail::is_fixed_tag< attr::fixed< V > > |
| struct | lib::detail::is_init_tag< T > |
| struct | lib::detail::is_init_tag< attr::init< V > > |
| struct | lib::detail::is_transform_tag< T > |
| struct | lib::detail::is_transform_tag< attr::aligned< A > > |
| struct | lib::detail::is_transform_tag< attr::inverted > |
| struct | lib::detail::is_transform_tag< attr::shifted_by< S > > |
| struct | lib::detail::is_word_tag< T > |
| struct | lib::detail::is_word_tag< attr::word< W > > |
| struct | lib::endian::little |
| struct | lib::lsb0_t |
| | LSB0 bit numbering policy (Bit 0 = Least Significant Bit). More...
|
| struct | lib::detail::map_record_fields< std::tuple< Fs... > > |
| struct | lib::detail::mixin_invoker< extensions< Ms... >, Derived > |
| struct | lib::detail::mixin_invoker< std::tuple<>, Derived > |
| class | lib::mmio_record_ref< T, Numbering, FieldOrExts > |
| struct | lib::msb0_t |
| | MSB0 bit numbering policy (Bit 0 = Most Significant Bit). More...
|
| struct | lib::endian::native |
| struct | lib::detail::none_token |
| struct | lib::attr::overlay |
| | intentional alias More...
|
| struct | lib::detail::path_split< FullPath > |
| struct | lib::attr::rao |
| | Read-As-One. More...
|
| struct | lib::detail::raw_tag_bits< Tag > |
| struct | lib::detail::raw_tag_bits< attr::fixed< V > > |
| struct | lib::detail::raw_tag_bits< attr::init< V > > |
| struct | lib::attr::raz |
| | Read-As-Zero. More...
|
| struct | lib::attr::rc |
| | Read-to-Clear. More...
|
| class | lib::record< T, Numbering, FieldOrExts > |
| struct | lib::detail::record_field_view< Field > |
| struct | lib::detail::record_layout_info< std::tuple< Fs... > > |
| class | lib::record_ref< T, Numbering, FieldOrExts > |
| struct | lib::detail::record_slices< L > |
| struct | lib::detail::record_slices< bit_slice< A, B > > |
| struct | lib::detail::record_slices< std::tuple< Ss... > > |
| struct | lib::record_traits< mmio_record_ref< T, Numbering, Fs... > > |
| struct | lib::record_traits< record< T, Numbering, Fs... > > |
| struct | lib::record_traits< record_ref< T, Numbering, Fs... > > |
| struct | lib::detail::resolve_field_type_impl< Field, Storage > |
| struct | lib::attr::ro |
| | Read-Only. More...
|
| struct | lib::attr::rw |
| | Read-Write. More...
|
| struct | lib::attr::rz |
| | Reserved-Zero. More...
|
| struct | lib::detail::select_access< Attrs > |
| struct | lib::detail::select_access< H, T... > |
| struct | lib::detail::select_endian< Attrs > |
| struct | lib::detail::select_endian< H, T... > |
| struct | lib::detail::select_fixed_tag< Attrs > |
| struct | lib::detail::select_fixed_tag< H, T... > |
| struct | lib::detail::select_init_tag< Attrs > |
| struct | lib::detail::select_init_tag< H, T... > |
| struct | lib::detail::select_transform<... > |
| struct | lib::detail::select_transform< H, T... > |
| struct | lib::detail::select_word< Attrs > |
| struct | lib::detail::select_word< H, T... > |
| struct | lib::shifted< Shift > |
| struct | lib::attr::shifted_by< S > |
| | value = raw << S More...
|
| struct | lib::slice< ByteOffset, StartBit, EndBit, Numbering > |
| | Bit-window locator within a byte-addressed unit (structure domain). More...
|
| struct | lib::storage_traits< exact_uint< Bits > > |
| struct | lib::storage_traits< std::array< u8, N > > |
| struct | lib::storage_traits< T > |
| struct | lib::detail::transform_of< T > |
| struct | lib::detail::transform_of< attr::aligned< A > > |
| struct | lib::detail::transform_of< attr::inverted > |
| struct | lib::detail::transform_of< attr::shifted_by< S > > |
| struct | std::tuple_element< I, lib::record< T, Numbering, FieldOrExts... > > |
| struct | std::tuple_size< lib::record< T, Numbering, FieldOrExts... > > |
| struct | lib::attr::unaligned |
| struct | lib::attr::w0c |
| | Write-0-to-Clear. More...
|
| struct | lib::attr::w1c |
| | Write-1-to-Clear. More...
|
| struct | lib::attr::w1s |
| | Write-1-to-Set. More...
|
| struct | lib::attr::w1t |
| | Write-1-to-Toggle. More...
|
| struct | lib::attr::wac |
| | Write-Any-to-Clear. More...
|
| struct | lib::attr::wo |
| | Write-Only. More...
|
| struct | lib::attr::woo |
| | Write-Once-Only. More...
|
| struct | lib::attr::word< W > |
| | bus granularity (u8/u16/u32/u64) More...
|
| struct | lib::detail::word_type_of< T > |
| struct | lib::detail::word_type_of< attr::word< W > > |
|
|
using | lib::bf128 = bit_field<std::array<u8, 16>, msb0_t> |
|
using | lib::bf128_ref = bitfield_ref<std::array<u8, 16>, msb0_t> |
|
using | lib::bf16 = bit_field<u16, msb0_t> |
|
using | lib::bf16_ref = bitfield_ref<u16, msb0_t> |
|
using | lib::bf32 = bit_field<u32, msb0_t> |
|
using | lib::bf32_ref = bitfield_ref<u32, msb0_t> |
|
using | lib::bf64 = bit_field<u64, msb0_t> |
|
using | lib::bf64_ref = bitfield_ref<u64, msb0_t> |
|
using | lib::bf8 = bit_field<u8, msb0_t> |
|
using | lib::bf8_ref = bitfield_ref<u8, msb0_t> |
|
template<usize Start, usize End> |
| using | lib::bit_span = bit_slice<Start, End> |
|
using | lib::lf128 = bit_field<std::array<u8, 16>, msb0_t> |
|
using | lib::lf128_ref = bitfield_ref<std::array<u8, 16>, lsb0_t> |
|
using | lib::lf16 = bit_field<u16, lsb0_t> |
|
using | lib::lf16_ref = bitfield_ref<u16, lsb0_t> |
|
using | lib::lf32 = bit_field<u32, lsb0_t> |
|
using | lib::lf32_ref = bitfield_ref<u32, lsb0_t> |
|
using | lib::lf64 = bit_field<u64, lsb0_t> |
|
using | lib::lf64_ref = bitfield_ref<u64, lsb0_t> |
|
using | lib::lf8 = bit_field<u8, lsb0_t> |
|
using | lib::lf8_ref = bitfield_ref<u8, lsb0_t> |
|
template<usize Count> |
| using | lib::detail::optimal_uint_t = decltype(smallest_uint_for_bits<Count>()) |
|
using | lib::access::rao = attr::rao |
|
using | lib::access::raz = attr::raz |
|
using | lib::access::rc = attr::rc |
|
template<class RecordT> |
| using | lib::record_as_mmio_ref_t = typename record_traits<RecordT>::mmio_ref_type |
|
template<class RecordT> |
| using | lib::record_as_ref_t = typename record_traits<RecordT>::ref_type |
|
template<class Field, class Storage> |
| using | lib::detail::resolve_field_type = typename resolve_field_type_impl<Field, Storage>::type |
|
using | lib::access::ro = attr::ro |
|
using | lib::access::rw = attr::rw |
|
using | lib::access::rz = attr::rz |
|
template<usize Bits> |
| using | lib::uint_c = exact_uint<Bits> |
|
using | lib::access::w0c = attr::w0c |
|
using | lib::access::w1c = attr::w1c |
|
using | lib::access::w1s = attr::w1s |
|
using | lib::access::w1t = attr::w1t |
|
using | lib::access::wac = attr::wac |
|
using | lib::access::wo = attr::wo |
|
using | lib::access::woo = attr::woo |
|
template<usize N> |
| using | lib::at_byte = addr<N> |
|
template<usize N> |
| using | lib::at_dword = addr<N * 8> |
|
template<usize N> |
| using | lib::at_halfword = addr<N * 2> |
|
template<usize N> |
| using | lib::at_qword = addr<N * 16> |
|
template<usize N> |
| using | lib::at_word = addr<N * 4> |
|
template<fixed_string N, class L, usize Aln, class... Extra> |
| using | lib::aligned_ro = field<N, L, u64, attr::ro, attr::aligned<Aln>, Extra...> |
|
template<fixed_string N, class L, usize Aln, class... Extra> |
| using | lib::aligned_rw = field<N, L, u64, attr::rw, attr::aligned<Aln>, Extra...> |
|
template<fixed_string N, class L, usize Aln, class... Extra> |
| using | lib::aligned_wo = field<N, L, u64, attr::wo, attr::aligned<Aln>, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::overlay_ro = field<N, L, T, attr::ro, attr::overlay, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::overlay_rw = field<N, L, T, attr::rw, attr::overlay, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::overlay_wo = field<N, L, T, attr::wo, attr::overlay, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::rao = field<N, L, T, attr::rao, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::raz = field<N, L, T, attr::raz, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::rc = field<N, L, T, attr::rc, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::ro = field<N, L, T, attr::ro, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::rw = field<N, L, T, attr::rw, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::rz = field<N, L, T, attr::rz, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::w0c = field<N, L, T, attr::w0c, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::w1c = field<N, L, T, attr::w1c, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::w1s = field<N, L, T, attr::w1s, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::w1t = field<N, L, T, attr::w1t, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::wac = field<N, L, T, attr::wac, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::wo = field<N, L, T, attr::wo, Extra...> |
|
template<fixed_string N, class L, class T = void, class... Extra> |
| using | lib::woo = field<N, L, T, attr::woo, Extra...> |
|
template<usize A, usize B = A> |
| using | lib::bits = bit_slice<A, B> |
|
template<usize S, usize E> |
| using | lib::bytes = byte_span<S, E> |
|
|
template<class Field, class Numbering, class BitFieldT> |
| constexpr auto | lib::detail::apply_default (BitFieldT &bits) noexcept -> void |
|
template<class Field, class Numbering, class BitFieldT, class RawT> |
| constexpr auto | lib::detail::commit_raw (BitFieldT &bits, RawT raw_val) noexcept -> void |
| | Commit a raw value into a record field's slices (no access policy).
|
|
template<unsigned_word OutT, class Numbering, usize TotalBits> |
| constexpr auto | lib::detail::extract_slice_from_bytes (const u8 *data, usize a, usize b) noexcept -> OutT |
|
template<class T> |
| consteval auto | lib::detail::field_type_fits (usize width) noexcept -> bool |
|
template<class Numbering, usize TotalBits> |
| constexpr auto | lib::detail::get_bit_from_bytes (const u8 *data, usize bit_idx) noexcept -> bool |
|
template<unsigned_word InT, class Numbering, usize TotalBits> |
| constexpr auto | lib::detail::insert_slice_to_bytes (u8 *data, usize a, usize b, InT val) noexcept -> void |
|
template<class Field, class Numbering, class BitFieldT> |
| constexpr auto | lib::detail::read_field (BitFieldT &bits) noexcept |
|
template<unsigned_word T> |
| constexpr auto | lib::detail::safe_bitmask (usize count, usize total_bits) noexcept -> T |
|
template<class Numbering, usize TotalBits> |
| constexpr auto | lib::detail::set_bit_in_bytes (u8 *data, usize bit_idx, bool val) noexcept -> void |
|
template<std::signed_integral TargetType, usize Width, unsigned_word InT> |
| constexpr auto | lib::detail::sign_extend (InT val) noexcept -> TargetType |
|
template<usize Count> |
| consteval auto | lib::detail::smallest_uint_for_bits () |
|
template<auto V> |
| consteval auto | lib::detail::to_raw_bits () noexcept -> u64 |
|
template<class... Fs> |
| consteval auto | lib::detail::verify_field_overlaps () -> bool |
|
template<class Field, class Numbering, class BitFieldT, class ValT> |
| constexpr auto | lib::detail::write_field (BitFieldT &bits, ValT &&val) noexcept -> void |
C++26 unified field descriptor.
SPDX-License-Identifier: Apache-2.0