Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What should a C function called from Lua that pushes a table return?

Tags:

c

lua

lua-table

When writing a C function that pushes a table onto the stack as its return value to the Lua caller, what should it return in the C context? I know you are supposed to return the number of values that you are passing back to the Lua caller, but in the case of a table, is it 1 for the table reference, or do you need to account for the contents of the table?

The method of passing back a table I am using is shown in "Pushing a Lua Table."

like image 643
Jesse Craig Avatar asked May 29 '13 23:05

Jesse Craig


1 Answers

You are only returning one lua value directly, so your C function should return 1.

Something like this:

int my_table( luaState * L) {
  lua_newtable(L);
  lua_pushstring(L, "a_key");
  lua_pushstring(L, "a_value");
  lua_settable(L, -3);
  return 1;
}
like image 185
Michael Anderson Avatar answered Sep 20 '22 05:09

Michael Anderson