Lua 5.2 LUA_GLOBALSINDEX Альтернатива

У меня есть программа, которая встраивает Lua и реализует форму ленивого поиска функций.

Как это работало в Lua 5.1, всякий раз, когда символ был неопределенным, интерпретатор вызывал глобальную функцию-ловушку, которая затем разрешала символ.

Это небольшая часть кода C, в котором реализован этот ленивый поиск функций.:

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);

Сейчас я пытаюсь перенести этот код на Lua 5.2 и столкнулся с проблемой.

В Lua 5.2 значение LUA_GLOBALSINDEX больше не определено, поэтому эта строка кода больше не компилируется.

//-- set global call back hook
lua_setmetatable(pLuaState, LUA_GLOBALSINDEX);

Существует ссылка на это изменение в LUA_GLOBALSINDEX, но, к сожалению, это не помогло.

Как лучше всего пере-написать эту одну строку кода, чтобы интерпретатор вызывал функцию_hook всякий раз, когда находит неразрешенный символ?

16
задан greatwolf 14 January 2014 в 22:43
поделиться