LuaJIT, как конвертировать cdata в userdata?
Я хочу использовать LuaJIT для его способности создавать структуры и массивы в Lua. Но мои функции, которые используют данные, требуют пользовательских данных или строки (не строковое представление, просто используемое в качестве контейнера), в котором хранятся данные.
Но, глядя через API, я не вижу, возможно ли это вообще. Это?
Благодарю.
1 ответ
LuaJIT FFI не следует смешивать с классическим C/API. Хотя есть механизмы для преобразования const char*
указатель на строку Lua (ffi.string
), нет способа конвертировать структуру FFI в пользовательские данные Lua.
Функции FFI не знают lua_State, который необходим для создания пользовательских данных на стороне C.
Я не знаю, насколько велика ваша база привязки C / API в данный момент, но одним из решений было бы переписать ваши функции C / API в FFI, если вы настроены на использование FFI. Вы можете сделать это постепенно, убедившись, что между FFI и C / API существует четкая грань.