pub struct VM<T: Clone + VMValue<T> + Default + PartialEq> {
pub fp: usize,
pub frames: Vec<Frame<T>>,
pub functions: Vec<VMFunction<T>>,
pub registers: HashMap<Length, T>,
pub index_registers: HashMap<Length, Length>,
pub stack: Vec<usize>,
pub program_data: Bytes,
pub hcf_trigger: Option<fn(_: &mut VM<T>) -> Result<(), VMError>>,
}Fields§
§fp: usize§frames: Vec<Frame<T>>§functions: Vec<VMFunction<T>>§registers: HashMap<Length, T>§index_registers: HashMap<Length, Length>§stack: Vec<usize>§program_data: Bytes§hcf_trigger: Option<fn(_: &mut VM<T>) -> Result<(), VMError>>Implementations§
source§impl<T: Clone + VMValue<T> + Default + PartialEq> VM<T>
impl<T: Clone + VMValue<T> + Default + PartialEq> VM<T>
pub fn empty() -> VM<T>
pub fn pc(&mut self) -> usize
pub fn pc_set(&mut self, new: usize) -> usize
pub fn instructions(&mut self) -> &Vec<u8>
pub fn instruction(&mut self, index: usize) -> u8
pub fn get_local(&mut self, fp: usize, var: String) -> Result<T, VMError>
pub fn local_exists(&mut self, fp: usize, var: &String) -> (bool, usize)
pub fn set_local( &mut self, fp: usize, var: String, value: T, ) -> Result<(), VMError>
pub fn set_mutable_local( &mut self, fp: usize, var: String, value: T, ) -> Result<(), VMError>
pub fn remove_register(&mut self, index: &Length) -> Result<T, VMError>
pub fn remove_index_register( &mut self, index: &Length, ) -> Result<Length, VMError>
pub fn run(&mut self) -> Result<(), VMError>
pub fn next_str(&mut self) -> String
pub fn set_register_value(&mut self, register: Length, value: T) -> &mut Self
pub fn set_index_register_value( &mut self, register: Length, value: Length, ) -> &mut Self
pub fn next_len(&mut self) -> Length
pub fn next_byte(&mut self) -> u8
pub fn next_n_bytes<const N: usize>(&mut self) -> [u8; N]
pub fn next_n_bytes_vec(&mut self, n: Length) -> Vec<u8>
Auto Trait Implementations§
impl<T> !Freeze for VM<T>
impl<T> RefUnwindSafe for VM<T>where
T: RefUnwindSafe,
impl<T> Send for VM<T>where
T: Send,
impl<T> Sync for VM<T>where
T: Sync,
impl<T> Unpin for VM<T>where
T: Unpin,
impl<T> UnwindSafe for VM<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more