Есть ли какая-либо оболочка итератора таблицы Lua для C ++?

Я хочу вызвать некоторую функцию C ++ из кода Lua и передать таблицу Lua в параметрах, что-то вроде этого:

call_cpp_function_from_lua({ x = 10, y = 20 })

В call_cpp_function_from_lua Я хотел бы получить и использовать итератор для C ++ представления таблицы Lua, что-то вроде этого:

std::map<boost::variant<LuaTypesList>, boost::variant<LuaTypesList>>::iterator it = getLuaTableBegin();

Я могу использовать C API, чтобы сделать это, но это утомительно подвержено ошибкам, см. Итерация по таблице Lua из C ++?.

2

Решение

Библиотека QtLua реализует итераторы C ++ для таблиц Lua. Она имеет Value::iterator а также Value::const_iterator классы, допускающие итерацию таблиц Lua. Вот краткий пример того, как их использовать:

// code from examples/cpp/value/iterate.cc:32

QtLua::State state;

// New lua table value
state.exec_statements("table = { a = 1, b = 2, c = 3 }");

QtLua::Value table = state["table"];

// Iterate over lua table from C++ code
for (QtLua::Value::const_iterator i = table.begin(); i != table.end(); i++)
qDebug() << i.key().to_string_p()
<< i.value().to_string_p();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]