lua_next
int lua_next (lua_State *L, int index);
Pops a key from the stack,
and pushes a key-value pair from the table at the given index
(the "next" pair after the given key).
If there are no more elements in the table,
then lua_next
returns 0 (and pushes nothing).
A typical traversal looks like this:
/* table is in the stack at index 't' */ lua_pushnil(L); /* first key */ while (lua_next(L, t) != 0) { /* 'key' is at index -2 and 'value' at index -1 */ printf("%s - %s\n", lua_typename(L, lua_type(L, -2)), lua_typename(L, lua_type(L, -1))); lua_pop(L, 1); /* removes 'value'; keeps 'key' for next iteration */ }
While traversing a table,
do not call lua_tolstring
directly on a key,
unless you know that the key is actually a string.
Recall that lua_tolstring
changes
the value at the given index;
this confuses the next call to lua_next
.