私はLua C APIを使って自分のゲームエンジンを作っています。また、私はいくつかのC関数を持っLua C APIを使ってサブテーブル内に関数を挿入する
my_lib = {
system = { ... },
keyboard = { ... },
graphics = { ... },
...
}
、私は、そのような何かに登録したい:私はそのようなLuaのテーブルの階層を得たので、
inline static int lua_mylib_do_cool_things(lua_State *L) {
mylib_do_cool_things(luaL_checknumber(L, 1));
return 0;
}
を、どのように私はmy_libサブのメンバーのようにそれを登録することができますテーブル、ちょうどそう?サブテーブルについて
inline void mylib_registerFuncAsTMem(const char *table, lua_CFunction func, const char *index) {
lua_getglobal(mylib_luaState, table);
lua_pushstring(mylib_luaState, index);
lua_pushcfunction(mylib_luaState, func);
lua_rawset(mylib_luaState, -3);
}
しかし、どのような:
my_lib = {
system = { do_cool_things, ... },
keyboard = { ... }
graphics = { ...}
}
今、私は唯一のグローバルテーブルのメンバーを登録する方法を知っている、それはそのように動作しますか?
[API関数が】あり(https://www.lua.org/manual/5.3/manual.html#:
これは、以下の構造を有するモジュールテーブルをもたらすはずですluaL_setfuncs)は、テーブルに関数を登録する際に役立ちます。どのバージョンのLuaを使用していますか? – Adam
お返事ありがとうございます。私はLua 5.1を使用しています。そこにはそのようなAPI関数がないように見えます。 –
実際、この関数はLua 5.2で追加されましたが、代わりに[luaL_register](https://www.lua.org/manual/5.1/manual.html#luaL_register)を使用することができます。 – Adam