comparison src/luan/LuaClosure.java @ 21:c93d8c781853

add functions git-svn-id: https://luan-java.googlecode.com/svn/trunk@22 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 04 Dec 2012 09:16:03 +0000
parents
children 1e37f22a34c8
comparison
equal deleted inserted replaced
20:d85510d92eee 21:c93d8c781853
1 package luan;
2
3 import luan.interp.Chunk;
4 import luan.interp.ReturnException;
5
6
7 public final class LuaClosure extends LuaFunction {
8 private final Chunk chunk;
9
10 public LuaClosure(Chunk chunk,LuaState lua) {
11 this.chunk = chunk;
12 }
13
14 public Object[] call(LuaState lua,Object... args) throws LuaException {
15 Object[] stack = lua.newStack(chunk.stackSize);
16 final int n = Math.min(args.length,chunk.numArgs);
17 for( int i=0; i<n; i++ ) {
18 stack[i] = args[i];
19 }
20 try {
21 chunk.block.eval(lua);
22 } catch(ReturnException e) {
23 } finally {
24 lua.popStack();
25 }
26 return lua.returnValues;
27 }
28
29 }