Mercurial Hosting > luan
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; |