comparison src/luan/LuaClosure.java @ 24:7ee247560db5

add VarArgs git-svn-id: https://luan-java.googlecode.com/svn/trunk@25 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Thu, 06 Dec 2012 04:40:54 +0000
parents 1e37f22a34c8
children
comparison
equal deleted inserted replaced
23:2446c1755d9b 24:7ee247560db5
12 } 12 }
13 13
14 public Object[] call(LuaState lua,Object... args) throws LuaException { 14 public Object[] call(LuaState lua,Object... args) throws LuaException {
15 Chunk chunk = this.chunk; 15 Chunk chunk = this.chunk;
16 while(true) { 16 while(true) {
17 Object[] stack = lua.newStack(chunk.stackSize); 17 Object[] varArgs = null;
18 if( chunk.isVarArg ) {
19 if( args.length > chunk.numArgs ) {
20 varArgs = new Object[ args.length - chunk.numArgs ];
21 for( int i=0; i<varArgs.length; i++ ) {
22 varArgs[i] = args[chunk.numArgs+i];
23 }
24 } else {
25 varArgs = LuaFunction.EMPTY_RTN;
26 }
27 }
28 Object[] stack = lua.newStack(chunk.stackSize,varArgs);
18 final int n = Math.min(args.length,chunk.numArgs); 29 final int n = Math.min(args.length,chunk.numArgs);
19 for( int i=0; i<n; i++ ) { 30 for( int i=0; i<n; i++ ) {
20 stack[i] = args[i]; 31 stack[i] = args[i];
21 } 32 }
22 Object[] returnValues; 33 Object[] returnValues;