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?

questionAnswers(1)

yourAnswerToTheQuestion