Mercurial Hosting > luan
view 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 |
line wrap: on
line source
package luan.interp; import luan.LuaState; import luan.LuaTable; import luan.LuaFunction; final class LuaStateImpl implements LuaState { private final LuaTable env = new LuaTable(); public LuaTable env() { return env; } private static class LuaStack { final LuaStack previousStack; final Object[] a; final Object[] varArgs; LuaStack( LuaStack previousStack, int stackSize, Object[] varArgs) { this.previousStack = previousStack; this.a = new Object[stackSize]; this.varArgs = varArgs; } } private LuaStack stack = null; public Object[] returnValues; public LuaClosure tailFn; Object[] newStack(int stackSize, Object[] varArgs) { stack = new LuaStack(stack,stackSize,varArgs); return stack.a; } void popStack() { returnValues = LuaFunction.EMPTY_RTN; tailFn = null; stack = stack.previousStack; } public Object[] stack() { return stack.a; } public Object[] varArgs() { return stack.varArgs; } }