1use std::collections::HashMap;
3
4use crate::error;
5
6pub type Registers = HashMap<String, u64>;
8
9pub trait RegistersExt {
10 fn from_gdb<T: AsRef<str>>(registers: T) -> error::Result<Registers>;
16}
17
18impl RegistersExt for Registers {
19 fn from_gdb<T: AsRef<str>>(registers: T) -> error::Result<Registers> {
20 let mut regs = HashMap::new();
21 let splited = registers.as_ref().lines().map(|s| s.split_whitespace());
22 for mut e in splited {
23 if let Some(reg) = e.next() {
24 if let Some(value) = e.next() {
25 regs.insert(
26 reg.to_string(),
27 u64::from_str_radix(value.get(2..).unwrap_or(""), 16)?,
28 );
29 }
30 }
31 }
32 Ok(regs)
33 }
34}