fugue_ir/il/pcode/
register.rs1use 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}