public static void SetSearcher(IntPtr L, LuaCSFunction loader)
{
int top = LuaDLL.lua_gettop(L);
LuaDLL.wlua_getglobal(L, "package"); //package
LuaDLL.wlua_getfield(L, -1, "searchers"); //package,searchers
LuaDLL.wlua_getglobal(L, "cswrapfunc"); //package,searchers,wrap
LuaDLL.wLua_wrapfunction(L, -1, loader); //package,searchers,wrap,loader
LuaDLL.wlua_pushcclosure(L, LuaFuncs.searcher, 1); //package,searchers,wrap,searcher
LuaDLL.lua_remove(L, -2); //package,searchers,searcher
int searchersIndex = LuaDLL.lua_gettop(L) - 1;
for (int e = (int)LuaDLL.lua_rawlen(L, searchersIndex) + 1; e > 1; e--)
{
LuaDLL.lua_rawgeti(L, searchersIndex, e - 1); //package,searchers,searcher,value
LuaDLL.lua_rawseti(L, searchersIndex, e); //package,searchers,searcher
}
LuaDLL.lua_rawseti(L, searchersIndex, 1); //package,searchers
LuaDLL.lua_settop(L, top);
}