use crate::arch::Arch;
use crate::target::{Target, TargetResult};
pub trait SingleRegisterAccess<Tid>: Target
where
Tid: crate::is_valid_tid::IsValidTid,
{
fn read_register(
&mut self,
tid: Tid,
reg_id: <Self::Arch as Arch>::RegId,
buf: &mut [u8],
) -> TargetResult<usize, Self>;
fn write_register(
&mut self,
tid: Tid,
reg_id: <Self::Arch as Arch>::RegId,
val: &[u8],
) -> TargetResult<(), Self>;
}
pub type SingleRegisterAccessOps<'a, Tid, T> =
&'a mut dyn SingleRegisterAccess<Tid, Arch = <T as Target>::Arch, Error = <T as Target>::Error>;