How to read Lua table return value from C++
Question
I have a Lua function that returns table (contains set of strings) the function run fine using this code:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
the function returns a table. How do I read it's contents from my C++ code?
Solution
If you are asking how to traverse the resulting table, you need lua_next (the link also contains an example). As egarcia said, if lua_pcall
returns 0, the table the function returned can be found on top of the stack.
OTHER TIPS
If the function doesn't throw any errors, then lua_pcall will:
- Remove the parameters from the stack
- Push the result to the stack
This means that, if your function doesn't throw any errors, you can use lua_setfield right away - lua_pcall
will work just like lua_call:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
lua_setfield(L, LUA_GLOBALSINDEX, "a"); /* set global 'a' */
would be the equivalent of:
a = funcname(someparam)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow