Skip to main content

tenda_runtime/
frame.rs

1use crate::environment::{Environment, ValueCell};
2
3#[derive(Debug, Clone)]
4pub struct Frame {
5    env: Environment,
6    return_value: Option<ValueCell>,
7}
8
9impl Frame {
10    pub fn new() -> Self {
11        Frame {
12            env: Environment::new(),
13            return_value: None,
14        }
15    }
16
17    pub fn from_env(env: Environment) -> Self {
18        Frame {
19            env,
20            return_value: None,
21        }
22    }
23
24    pub fn get_env(&self) -> &Environment {
25        &self.env
26    }
27
28    pub fn get_env_mut(&mut self) -> &mut Environment {
29        &mut self.env
30    }
31
32    pub fn set_return_value(&mut self, value: ValueCell) {
33        self.return_value = Some(value);
34    }
35
36    pub fn get_return_value(&self) -> Option<&ValueCell> {
37        self.return_value.as_ref()
38    }
39
40    pub fn clear_return_value(&mut self) {
41        self.return_value = None;
42    }
43}
44
45impl Default for Frame {
46    fn default() -> Self {
47        Self::new()
48    }
49}