Как получить возвращенную таблицу из функции Lua в C ++? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь выяснить, как получить возвращенную таблицу из функции Lua в C ++.

Мой код:

if (lua_pcall(L, 0, 1, 0)) {
        std::cout << "ERROR : " << lua_tostring(L, -1) << std::endl;
}
vector<float> vec;

if (lua_istable(L, -1) { 

    //how to copy table to vec?
}

Как я могу скопировать возвращенную таблицу в вектор, если размер таблицы неизвестен? Спасибо!

1 Ответ

0 голосов
/ 28 июня 2018

Кажется, я узнал, как это сделать, используя lua_next.

lua_getglobal(L, name);

if (lua_pcall(L, 0, 1, 0)) {
        std::cout << "ERROR : " << lua_tostring(L, -1) << std::endl;
}
vector<float> vec;

if (lua_istable(L, -1) { 

   lua_pushvalue(L, -1);
   lua_pushnil(L);

   while (lua_next(L, -2))
   {

        if (lua_isnumber(L, -1))
        {
            vec.push_back(lua_tonumber(L, -1));
        }
        lua_pop(L, 1);
    }
    lua_pop(L, 1);
}
...