neige_lua/state/
mod.rs

1mod meta;
2mod node;
3mod stack;
4mod state;
5
6use crate::{api::LuaApi, value::value::LuaValue};
7pub use {stack::LuaStack, state::LuaState};
8
9impl LuaApi for LuaState {}
10
11/// 用于实现栈相关函数
12impl LuaState {
13    pub(super) fn stack_get(&self, idx: isize) -> LuaValue {
14        let node = self.get_node();
15        let stack = node.get_stack();
16        stack.get(idx)
17    }
18
19    pub(super) fn stack_check(&self, n: usize) {
20        let node = self.get_node();
21        let mut stack = node.get_stack_mut();
22        stack.check(n)
23    }
24
25    pub(super) fn stack_push(&self, val: LuaValue) {
26        let node = self.get_node();
27        let mut stack = node.get_stack_mut();
28        stack.push(val)
29    }
30
31    pub(super) fn stack_push_n(&self, vals: Vec<LuaValue>, n: isize) {
32        let node = self.get_node();
33        let mut stack = node.get_stack_mut();
34        stack.push_n(vals, n)
35    }
36
37    pub(super) fn stack_pop(&self) -> LuaValue {
38        let node = self.get_node();
39        let mut stack = node.get_stack_mut();
40        stack.pop()
41    }
42
43    pub(super) fn stack_pop_n(&self, n: usize) -> Vec<LuaValue> {
44        let node = self.get_node();
45        let mut stack = node.get_stack_mut();
46        stack.pop_n(n)
47    }
48
49    pub(super) fn stack_abs_index(&self, idx: isize) -> isize {
50        let node = self.get_node();
51        let stack = node.get_stack();
52        stack.abs_index(idx)
53    }
54
55    pub(super) fn stack_is_valid(&self, idx: isize) -> bool {
56        let node = self.get_node();
57        let stack = node.get_stack();
58        stack.is_valid(idx)
59    }
60
61    pub(super) fn stack_set(&self, idx: isize, val: LuaValue) {
62        let node = self.get_node();
63        let mut stack = node.get_stack_mut();
64        stack.set(idx, val)
65    }
66
67    pub(super) fn stack_reverse(&self, from: isize, to: isize) {
68        let node = self.get_node();
69        let mut stack = node.get_stack_mut();
70        stack.reverse(from, to)
71    }
72}