fugue_ir/il/pcode/
register.rs

1use ustr::Ustr;
2
3use super::operand::Operand;
4
5#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
6#[derive(serde::Deserialize, serde::Serialize)]
7pub struct Register {
8    pub(crate) name: Ustr,
9    pub(crate) offset: u64,
10    pub(crate) size: usize,
11}
12
13impl From<Register> for Operand {
14    fn from(src: Register) -> Operand {
15        Operand::Register {
16            offset: src.offset(),
17            size: src.size(),
18            name: src.name,
19        }
20    }
21}
22
23impl Register {
24    pub fn new<N>(name: N, offset: u64, size: usize) -> Self
25    where N: Into<Ustr> {
26        Self {
27            name: name.into(),
28            offset,
29            size,
30        }
31    }
32
33    #[inline]
34    pub fn name(&self) -> &str {
35        self.name.as_ref()
36    }
37
38    #[inline]
39    pub fn offset(&self) -> u64 {
40        self.offset
41    }
42
43    #[inline]
44    pub fn size(&self) -> usize {
45        self.size
46    }
47}