Lua 5.2 LUA_GLOBALSINDEX Alternative
Mam program, który osadza Lua i implementuje formę wyszukiwania leniwych funkcji.
Sposób, w jaki działał w Lua 5.1, ilekroć symbol był niezdefiniowany, interpreter nazywałby hak funkcji globalnej, który następnie rozwiązywałby symbol.
Jest to niewielka część kodu C, który zaimplementował to leniwe wyszukiwanie funkcji:
<code>int function_hook(lua_State *pLuaState) { // do the function lookup here .... return 1; } ...... //-- create table containing the hook details lua_newtable(pLuaState); lua_pushstring(pLuaState, "__index"); lua_pushcfunction(pLuaState, function_hook); lua_settable(pLuaState, -3); //-- set global index callback hook lua_setmetatable(pLuaState, LUA_GLOBALSINDEX); </code>
Próbuję teraz przenieść ten kod do Lua 5.2 i napotkałem problem.
W Lua 5.2 wartość LUA_GLOBALSINDEX nie jest już zdefiniowana, więc ta linia kodu nie jest już kompilowana.
<code>//-- set global call back hook lua_setmetatable(pLuaState, LUA_GLOBALSINDEX); </code>
Tam jestodniesienie do tej zmiany na LUA_GLOBALSINDEX, ale niestety to nie pomogło.
Jaki byłby najlepszy sposób, aby ponownie napisać ten jeden wiersz kodu, aby interpreter wywołał funkcję function_hook, gdy tylko znajdzie nierozwiązany symbol?