When a C function is created,
it is possible to associate some values with it,
thus creating a C closure;
these values are called upvalues and are
accessible to the function whenever it is called
(see lua_pushcclosure ).
Whenever a C function is called,
its upvalues are located at specific pseudo-indices.
These pseudo-indices are produced by the macro
lua_upvalueindex .
The first value associated with a function is at position
lua_upvalueindex(1) , and so on.
Any access to lua_upvalueindex(n) ,
where n is greater than the number of upvalues of the
current function (but not greater than 256),
produces an acceptable (but invalid) index. |