I have created a Lua table in C, but I\'m not sure how to push that table onto the top of a stack so I can pass it to a Lua function.
Does anyone know h
Here's a quick helper function to push strings to the table
void l_pushtablestring(lua_State* L , char* key , char* value) {
lua_pushstring(L, key);
lua_pushstring(L, value);
lua_settable(L, -3);
}
Here I use the helper function to create the table and pass it to a function
// create a lua function
luaL_loadstring(L, "function fullName(t) print(t.fname,t.lname) end");
lua_pcall(L, 0, 0, 0);
// push the function to the stack
lua_getglobal(L, "fullName");
// create a table in c (it will be at the top of the stack)
lua_newtable(L);
l_pushtablestring(L, "fname", "john");
l_pushtablestring(L, "lname", "stewart");
// call the function with one argument
lua_pcall(L, 1, 0, 0);
The table is already in the stack, where lua_newtable
left it, isn't it?
I made a small snippet open source that solves pushing simple Lua dictionary tables from C to Lua.
You can check it out here, should work well.