use lief_ffi as ffi;
use crate::{assembly::riscv::registers::Reg, common::FromFFI};
use super::Operand;
pub struct Memory {
ptr: cxx::UniquePtr<ffi::asm_riscv_operands_Memory>,
}
impl FromFFI<ffi::asm_riscv_operands_Memory> for Memory {
fn from_ffi(ptr: cxx::UniquePtr<ffi::asm_riscv_operands_Memory>) -> Self {
Self { ptr }
}
}
impl Operand for Memory {
#[doc(hidden)]
fn as_generic(&self) -> &ffi::asm_riscv_Operand {
self.ptr.as_ref().unwrap().as_ref()
}
}
impl Memory {
pub fn base(&self) -> Reg {
Reg::from(self.ptr.base())
}
pub fn displacement(&self) -> i64 {
self.ptr.displacement()
}
}