Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a Lua Table from a const char **

Tags:

c++

lua

lua-table

I have a const char ** which is going to be of varying lengths, but I want to create a Lua array from the const char **.

Myconst char ** is something like this

arg[0]="Red"
arg[1]="Purple"
arg[2]="Yellow"

I need to convert this array to a global table in Lua, but I'm not sure about how to go about this as I'm not very good at manipulating Lua.

like image 323
Nowayz Avatar asked May 07 '26 03:05

Nowayz


1 Answers

int main()
{
   char* arg[3] = {
      "Red",
      "Purple",
      "Yellow" };

   //create lua state
   Lua_state* L = luaL_newstate();

   // create the table for arg
   lua_createtable(L,3,0);
   int table_index = lua_gettop(L);

   for(int i =0; i<3; ++i )
   {
      // get the string on Lua's stack so it can be used
      lua_pushstring(L,arg[i]);

      // this could be done with lua_settable, but that would require pushing the integer as well
      // the string we just push is removed from the stack
      // notice the index is i+1 as lua is ones based
      lua_rawseti(L,table_index,i+1);
   }

   //now put that table we've been messing with into the globals
   //lua will remove the table from the stack leaving it empty once again
   lua_setglobal(L,"arg");
}
like image 80
deft_code Avatar answered May 08 '26 17:05

deft_code