1use crate::write_many_table::WriteManyTable;
6use crate::table::Table;
7
8#[derive(Debug)]
15pub struct Frame<T> {
16 locals: WriteManyTable<T>,
17 pub return_address: usize
18}
19
20impl<T> Frame<T> {
21 pub fn new(return_address: usize) -> Frame<T> {
23 Frame {
24 locals: WriteManyTable::new(),
25 return_address
26 }
27 }
28
29 pub fn get_local(&self, name: &str) -> Option<&T> {
31 self.locals.get(name)
32 }
33
34 pub fn set_local(&mut self, name: &str, value: T) {
36 self.locals.insert(name, value);
37 }
38}
39
40#[cfg(test)]
41mod test {
42 use super::*;
43
44 #[test]
45 fn new_has_locals() {
46 let frame: Frame<usize> = Frame::new(0);
47 assert!(frame.locals.is_empty())
48 }
49}