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?

questionAnswers(1)

yourAnswerToTheQuestion