lualua-tablelua-apilua-c++-connection

How to create Lua table with name C-API


How to create Lua table from C-API like this:

TableName = {a, b, c}

How to set table name? I only know how to create table and put values, but don't know how to set name of table.

Code for creating table without name:

lua_createtable(L, 0, 3);

lua_pushnumber(L, 1);
lua_setfield(L, -2, "a");

lua_pushnumber(L, 2);
lua_setfield(L, -2, "b");

lua_pushnumber(L, 3);
lua_setfield(L, -2, "c");

Solution

  • All you need is to add this line at the end

    lua_setglobal(L, "TableName");
    

    However, your C code is not equivalent to your Lua code. The C code corresponds to this Lua code:

    TableName = { a=1, b=2, c=3 }
    

    If you want C code equivalent to

    TableName = {"a", "b", "c"}
    

    use

    lua_pushliteral(L, "a"); lua_rawseti(L, -2, 1);
    lua_pushliteral(L, "b"); lua_rawseti(L, -2, 2);
    lua_pushliteral(L, "c"); lua_rawseti(L, -2, 3);