org.luaj.vm2.lib
Class VarArgFunction

java.lang.Object
  extended by org.luaj.vm2.Varargs
      extended by org.luaj.vm2.LuaValue
          extended by org.luaj.vm2.LuaFunction
              extended by org.luaj.vm2.lib.LibFunction
                  extended by org.luaj.vm2.lib.VarArgFunction
Direct Known Subclasses:
LuajavaLib, PackageLib.java_searcher, PackageLib.loadlib, PackageLib.lua_searcher, PackageLib.preload_searcher, PackageLib.searchpath

public abstract class VarArgFunction
extends LibFunction

Abstract base class for Java function implementations that takes varaiable arguments and returns multiple return values.

Subclasses need only implement LuaValue.invoke(Varargs) to complete this class, simplifying development. All other uses of call(LuaValue), LuaValue.invoke(),etc, are routed through this method by this class, converting arguments to Varargs and dropping or extending return values with nil values as required.

If between one and three arguments are required, and only one return value is returned, ZeroArgFunction, OneArgFunction, TwoArgFunction, or ThreeArgFunction.

See LibFunction for more information on implementation libraries and library functions.

See Also:
invoke(Varargs), LibFunction, ZeroArgFunction, OneArgFunction, TwoArgFunction, ThreeArgFunction

Field Summary
 
Fields inherited from class org.luaj.vm2.lib.LibFunction
name, opcode
 
Fields inherited from class org.luaj.vm2.LuaFunction
s_metatable
 
Fields inherited from class org.luaj.vm2.LuaValue
ADD, CALL, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO
 
Constructor Summary
VarArgFunction()
           
 
Method Summary
 LuaValue call()
          Call this with 0 arguments, including metatag processing, and return only the first return value.
 LuaValue call(LuaValue arg)
          Call this with 1 argument, including metatag processing, and return only the first return value.
 LuaValue call(LuaValue arg1, LuaValue arg2)
          Call this with 2 arguments, including metatag processing, and return only the first return value.
 LuaValue call(LuaValue arg1, LuaValue arg2, LuaValue arg3)
          Call this with 3 arguments, including metatag processing, and return only the first return value.
 Varargs invoke(Varargs args)
          Subclass responsibility.
 Varargs onInvoke(Varargs args)
          Callback used during tail call processing to invoke the function once.
 
Methods inherited from class org.luaj.vm2.lib.LibFunction
bind, bind, call, newupe, newupl, newupn, tojstring
 
Methods inherited from class org.luaj.vm2.LuaFunction
checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename
 
Methods inherited from class org.luaj.vm2.LuaValue
add, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, buffer, call, callmt, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkinteger, checkjstring, checklong, checkmetatag, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, compareerror, compareerror, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, div, div, div, divInto, eq_b, eq, eqmtcall, equals, error, get, get, get, gettable, gt_b, gt_b, gt_b, gt, gt, gt, gteq_b, gteq_b, gteq_b, gteq, gteq, gteq, illegal, inext, initupvalue1, invoke, invoke, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, lenerror, length, listOf, listOf, load, lt_b, lt_b, lt_b, lt, lt, lt, lteq_b, lteq_b, lteq_b, lteq, lteq, lteq, metatableOf, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq_b, neq, next, not, optboolean, optclosure, optdouble, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, settable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, typerror, unimplemented, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf
 
Methods inherited from class org.luaj.vm2.Varargs
argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

VarArgFunction

public VarArgFunction()
Method Detail

call

public LuaValue call()
Description copied from class: LuaValue
Call this with 0 arguments, including metatag processing, and return only the first return value.

If this is a LuaFunction, call it, and return only its first return value, dropping any others. Otherwise, look for the LuaValue.CALL metatag and call that.

If the return value is a Varargs, only the 1st value will be returned. To get multiple values, use LuaValue.invoke() instead.

To call this as a method call, use LuaValue.method(LuaValue) instead.

Overrides:
call in class LibFunction
Returns:
First return value (this()), or LuaValue.NIL if there were none.
See Also:
LuaValue.call(LuaValue), LuaValue.call(LuaValue,LuaValue), LuaValue.call(LuaValue, LuaValue, LuaValue), LuaValue.invoke(), LuaValue.method(String), LuaValue.method(LuaValue)

call

public LuaValue call(LuaValue arg)
Description copied from class: LuaValue
Call this with 1 argument, including metatag processing, and return only the first return value.

If this is a LuaFunction, call it, and return only its first return value, dropping any others. Otherwise, look for the LuaValue.CALL metatag and call that.

If the return value is a Varargs, only the 1st value will be returned. To get multiple values, use LuaValue.invoke() instead.

To call this as a method call, use LuaValue.method(LuaValue) instead.

Overrides:
call in class LibFunction
Parameters:
arg - First argument to supply to the called function
Returns:
First return value (this(arg)), or LuaValue.NIL if there were none.
See Also:
LuaValue.call(), LuaValue.call(LuaValue,LuaValue), LuaValue.call(LuaValue, LuaValue, LuaValue), LuaValue.invoke(Varargs), LuaValue.method(String,LuaValue), LuaValue.method(LuaValue,LuaValue)

call

public LuaValue call(LuaValue arg1,
                     LuaValue arg2)
Description copied from class: LuaValue
Call this with 2 arguments, including metatag processing, and return only the first return value.

If this is a LuaFunction, call it, and return only its first return value, dropping any others. Otherwise, look for the LuaValue.CALL metatag and call that.

If the return value is a Varargs, only the 1st value will be returned. To get multiple values, use LuaValue.invoke() instead.

To call this as a method call, use LuaValue.method(LuaValue) instead.

Overrides:
call in class LibFunction
Parameters:
arg1 - First argument to supply to the called function
arg2 - Second argument to supply to the called function
Returns:
First return value (this(arg1,arg2)), or LuaValue.NIL if there were none.
See Also:
LuaValue.call(), LuaValue.call(LuaValue), LuaValue.call(LuaValue, LuaValue, LuaValue), LuaValue.invoke(LuaValue, Varargs), LuaValue.method(String,LuaValue,LuaValue), LuaValue.method(LuaValue,LuaValue,LuaValue)

call

public LuaValue call(LuaValue arg1,
                     LuaValue arg2,
                     LuaValue arg3)
Description copied from class: LuaValue
Call this with 3 arguments, including metatag processing, and return only the first return value.

If this is a LuaFunction, call it, and return only its first return value, dropping any others. Otherwise, look for the LuaValue.CALL metatag and call that.

If the return value is a Varargs, only the 1st value will be returned. To get multiple values, use LuaValue.invoke() instead.

To call this as a method call, use LuaValue.method(LuaValue) instead.

Overrides:
call in class LibFunction
Parameters:
arg1 - First argument to supply to the called function
arg2 - Second argument to supply to the called function
arg3 - Second argument to supply to the called function
Returns:
First return value (this(arg1,arg2,arg3)), or LuaValue.NIL if there were none.
See Also:
LuaValue.call(), LuaValue.call(LuaValue), LuaValue.call(LuaValue, LuaValue), LuaValue.invoke(LuaValue, LuaValue, Varargs), LuaValue.invokemethod(String,Varargs), LuaValue.invokemethod(LuaValue,Varargs)

invoke

public Varargs invoke(Varargs args)
Subclass responsibility. May not have expected behavior for tail calls. Should not be used if: - function has a possibility of returning a TailcallVarargs

Overrides:
invoke in class LibFunction
Parameters:
args - the arguments to the function call.
Returns:
All return values as a Varargs instance.
See Also:
LuaValue.varargsOf(LuaValue[]), LuaValue.call(LuaValue), LuaValue.invoke(), LuaValue.invoke(LuaValue,Varargs), LuaValue.invokemethod(String,Varargs), LuaValue.invokemethod(LuaValue,Varargs)

onInvoke

public Varargs onInvoke(Varargs args)
Description copied from class: LuaValue
Callback used during tail call processing to invoke the function once.

This may return a TailcallVarargs to be evaluated by the client.

This should not be called directly, instead use one of the call invocation functions.

Overrides:
onInvoke in class LuaValue
Parameters:
args - the arguments to the call invocation.
Returns:
Varargs the return values, possible a TailcallVarargs.
See Also:
LuaValue.call(), LuaValue.invoke(), LuaValue.method(LuaValue), LuaValue.invokemethod(LuaValue)


Copyright © 2007-2015 Luaj.org. All Rights Reserved.