[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: lua_getupvalue question
- From: Philipp Janda <siffiejoe@...>
- Date: Tue, 03 Dec 2013 03:13:53 +0100
Am 03.12.2013 02:48 schröbte Andrew Starks:
I get the upvalue. It's on the stack. It's value is 0. I want it so that
the next time I enter the c function and retrieve the value at the same
lua_upvalueindex address, it returns unto me the previous value, added
to one.
Please to illustrate?
static int iter( lua_State* L ) {
/* increment and push value to stack */
lua_pushinteger( L, lua_tointeger( L, lua_upvalueindex( 1 ) )+1 );
/* replace upvalue with incremented value at stack top */
lua_replace( L, lua_upvalueindex( 1 ) );
/* lua_replace popped the updated value, so push it again to
* return it */
lua_pushvalue( L, lua_upvalueindex( 1 ) );
return 1;
}
On the Lua side:
> print( iter() )
1
> print( iter() )
2
> print( iter() )
3
I hope that's what you wanted ...
-Andrew
Philipp