microfmt
Zero-allocation C++ formatting for constrained environments
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
register_context.hpp File Reference
#include "../microfmt.hpp"
#include "../reloco.hpp"
#include "address_space.hpp"
#include "dwarf_registers.hpp"
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <type_traits>
#include <utility>
Include dependency graph for register_context.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  microfmt::read_only_register_context_tag< State, Read >
 
struct  microfmt::write_only_register_context_tag< State, Write >
 
struct  microfmt::read_write_register_context_tag< State, Read, Write >
 
struct  microfmt::empty_register_context_tag< State >
 
struct  microfmt::register_context_traits< empty_register_context_tag< State > >
 
struct  microfmt::register_context_traits< read_only_register_context_tag< State, Read > >
 
struct  microfmt::register_context_traits< write_only_register_context_tag< State, Write > >
 
struct  microfmt::register_context_traits< read_write_register_context_tag< State, Read, Write > >
 
struct  microfmt::detail::has_register_context_read< Tag, typename >
 
struct  microfmt::detail::has_register_context_read< Tag, std::void_t< decltype(register_context_traits< Tag >::read_register(std::declval< value_ref< const typename register_context_traits< Tag >::context_type > >(), std::declval< address_space_ref >(), std::declval< uint32_t >(), std::declval< void * >(), std::declval< size_t >()))> >
 
struct  microfmt::detail::has_register_context_write< Tag, typename >
 
struct  microfmt::detail::has_register_context_write< Tag, std::void_t< decltype(register_context_traits< Tag >::write_register(std::declval< value_ref< typename register_context_traits< Tag >::context_type > >(), std::declval< address_space_ref >(), std::declval< uint32_t >(), std::declval< const void * >(), std::declval< size_t >()))> >
 
struct  microfmt::detail::mapped_register_context_tag< State, FieldTraits >
 
class  microfmt::register_context_ref
 Zero-allocation, type-erased handle for inspecting and modifying CPU registers from a frame context. More...
 
class  microfmt::register_context< Tag >
 Typed owner for a register-context traits specialization. More...
 
struct  microfmt::register_member_field< Member, Registers >
 Compile-time register-field trait backed by a pointer to member. More...
 
struct  microfmt::register_selected_field< State, Value, Selector, Registers >
 Compile-time field trait with state-dependent member selection. More...
 
struct  microfmt::register_callback_field< State, Value, ReadCallback, WriteCallback, Registers >
 Compile-time register field queried through typed callbacks. More...
 
class  microfmt::register_context_ref_with< State, FieldTraits >
 Typed owner that exposes a C/C++ register structure as a register_context_ref. More...
 
struct  microfmt::register_context_traits< detail::mapped_register_context_tag< State, FieldTraits... > >
 

Namespaces

namespace  microfmt
 
namespace  microfmt::detail
 

Functions

template<auto Read, typename State >
constexpr register_context_ref microfmt::make_read_only_register_context_ref (State &state RELOCO_LIFETIMEBOUND, address_space_ref space, span< std::byte > scratch RELOCO_LIFETIMEBOUND) noexcept
 
template<auto Read, auto Write, typename State >
constexpr register_context_ref microfmt::make_register_context_ref (State &state RELOCO_LIFETIMEBOUND, address_space_ref space, span< std::byte > scratch RELOCO_LIFETIMEBOUND) noexcept