Lua 5.2 LUA_GLOBALSINDEX Alternativa
Eu tenho um programa que incorpora Lua e implementa uma forma de pesquisa de função lenta.
Como funcionava em Lua 5.1, sempre que um símbolo fosse indefinido, o intérprete chamaria um gancho de função global que resolveria o símbolo.
Esta é uma pequena parte do código C que implementou esta pesquisa de função lenta:
<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>
Agora estou tentando mover este código para o Lua 5.2 e me deparo com um problema.
Em Lua 5.2, o valor LUA_GLOBALSINDEX não é mais definido, portanto, essa linha de código não é mais compilada.
<code>//-- set global call back hook lua_setmetatable(pLuaState, LUA_GLOBALSINDEX); </code>
Existe umreferência para essa alteração para LUA_GLOBALSINDEX mas infelizmente não ajudou.
Qual seria a melhor maneira de reescrever essa linha de código para que o intérprete chame o function_hook sempre que encontrar um símbolo não resolvido?