comparison src/luan/interp/LuaStateImpl.java @ 31:5cf15507d77e

separate interpreter from interface git-svn-id: https://luan-java.googlecode.com/svn/trunk@32 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Thu, 13 Dec 2012 02:50:04 +0000
parents src/luan/LuaState.java@7ee247560db5
children c3eab5a3ce3c
comparison
equal deleted inserted replaced
30:8d8f4f5caef4 31:5cf15507d77e
1 package luan.interp;
2
3 import luan.LuaState;
4 import luan.LuaTable;
5 import luan.LuaFunction;
6
7
8 final class LuaStateImpl implements LuaState {
9 private final LuaTable env = new LuaTable();
10
11 public LuaTable env() {
12 return env;
13 }
14
15
16 private static class LuaStack {
17 final LuaStack previousStack;
18 final Object[] a;
19 final Object[] varArgs;
20
21 LuaStack( LuaStack previousStack, int stackSize, Object[] varArgs) {
22 this.previousStack = previousStack;
23 this.a = new Object[stackSize];
24 this.varArgs = varArgs;
25 }
26 }
27
28 private LuaStack stack = null;
29 public Object[] returnValues;
30 public LuaClosure tailFn;
31
32 Object[] newStack(int stackSize, Object[] varArgs) {
33 stack = new LuaStack(stack,stackSize,varArgs);
34 return stack.a;
35 }
36
37 void popStack() {
38 returnValues = LuaFunction.EMPTY_RTN;
39 tailFn = null;
40 stack = stack.previousStack;
41 }
42
43 public Object[] stack() {
44 return stack.a;
45 }
46
47 public Object[] varArgs() {
48 return stack.varArgs;
49 }
50 }