Как я интегрирую Lua в мою программу на C, я использовал указатель static
для структуры C для хранения объекта, который мне нужно повторно использовать в методах, которые я связываю с Lua государство.Сохранение структуры C в реестре Lua
Однако это не сработает, когда я разделил Lua lib из основной программы, поэтому мне кажется, что мне нужно использовать реестр для хранения моей структуры.
Как мне сохранить мой указатель структуры C в реестре Lua?
Это то, что я сейчас делаю:
static augeas *aug = NULL;
static int lua_aug_get(lua_State *L) {
// Use aug to do something here
/* return the number of results */
return 1;
}
struct lua_State *luaopen_augeas(augeas *a) {
lua_State *L = luaL_newstate();
aug = a; // this clearly does not work
luaL_openlibs(L);
// The methods below will need to access the augeas * struct
// so I need to push it to the registry (I guess)
static const luaL_Reg augfuncs[] = {
{ "get", lua_aug_get },
{ "label", lua_aug_label },
{ "set", lua_aug_set },
{ NULL, NULL }
};
luaL_newlib(L, augfuncs);
lua_setglobal(L, "aug");
return L;
}
Edit: от ответа я получил на IRC, мне кажется, я должен использовать в metatable, так что я в настоящее время изучает это.