Articles of lua api

Lua – Почему функции C возвращаются как userdata?

Я работаю над сценарием для своего движка и использую метатет для перенаправления функций из таблицы (которая хранит пользовательские функции и данные для игроков) в объект userdata (который является основной реализацией для моего classа Player), чтобы пользователи могли используйте self чтобы ссылаться на оба. Вот как я делаю свою привязку в C # в classе Player […]

В чем разница между реестром Lua с легкими пользовательскими данными и ссылками?

Таким образом, с помощью API Lua C вы можете сохранить значение Lua в реестре и получить его позже. Существуют разные способы сделать это, вы можете создать переменную и использовать ее указатель как ключ в реестре, поскольку он всегда уникален. Вы нажимаете указатель как легкие пользовательские данные. Вы также можете создать ссылку, используя LuaL_ref(L, LUA_REGISTRYINDEX) . […]

Получите размер таблицы Lua в C

Как я могу получить размер таблицы Lua в C? static int lstage_build_polling_table (lua_State * L) { lua_settop(L, 1); luaL_checktype(L, 1, LUA_TTABLE); lua_objlen(L,1); int len = lua_tointeger(L,1); printf(“%d\n”,len); … } Мой код Lua: local stages = {} stages[1] = stage1 stages[2] = stage2 stages[3] = stage3 lstage.buildpollingtable(stages) Он всегда печатает 0. Что я делаю неправильно?

Доступ и методы доступа к ресурсам пользователя Lua

Я пишу в C тип userdata для использования в Lua. Он имеет некоторые свойства типа массива и различные методы. Прямо сейчас, если u имеет этот тип, я использую u:set(k,v) resp. u:get(k) для доступа к данным и, например, u:sort() как метод. Для этого я установил __index в таблицу, содержащую эти методы. Теперь, если я хочу получить […]

Слабая таблица и GC-финализатор с использованием API-интерфейса C

Я пытаюсь создать GC-финализатор для значения функции, сохраняя его в слабой таблице с использованием C API. Я начал писать прототип в чистом Lua 5.2: local function myfinalizer() print ‘Called finalizer’ end function myfunc() print ‘Called myfunc’ end local sentinels = setmetatable({}, { __mode=’k’ }) sentinels[myfunc] = setmetatable({}, { __gc=myfinalizer }) myfunc() myfunc = nil collectgarbage […]

Итерирование таблицы таблиц с помощью API Lua C

Я пытаюсь перебрать таблицу таблиц в Lua и выводить: Ключ каждой таблицы. Пара ключей / значений каждой записи в каждой таблице. Вот код: void print_table(lua_State *L) { lua_pushnil(L); while(lua_next(L, -2) != 0) { const char *key = lua_tostring(L, -2); if(lua_isstring(L, -1)) printf(“%s = %s”, key, lua_tostring(L, -1)); else if(lua_isnumber(L, -1)) printf(“%s = %d”, key, lua_tonumber(L, […]

Intereting Posts
Достижение пространства сеанса ядра из драйвера ядра Нулевой процесс? Параллельные вычисления – перепутал выход? Как получить class Objective-C для ivar? C ++: каков оптимальный способ преобразования double в строку? Каково обоснование одного из последних элементов массива? Понимание того, как. Внутренние функции C обрабатываются в R в чем разница между streamами (и процессом) в режиме ядра и режимами пользователя? Почему этот государственный аппарат не поддерживает свое состояние? Есть ли документ, описывающий, как Clang обрабатывает избыточную точность с плавающей запятой? Чтение файлов, разделенных вкладкой в ​​c Как найти самый длинный путь в циклическом графике между двумя узлами? fputs против fprintf и двойной связь между дочерними и родительскими процессами в C linux: родительский процесс не блокирует Правильный спецификатор формата для печати указателя или адреса?