local _t = {};
local lrget = rawget;
local lrset = rawset;
local lsetmeta = setmetatable;
local lIsCore = is_core;
local securedTables = {};
local function lRawGet(t,k)
return lrget(t,k)
end
local function lRawSet(t,k,v)
local answer
answer = lIsCore();
if answer==true then
return lrset(t,k,v)
else
error("Non core attempt to use lRawSet, with key: " .. k);
end
end
local function lSetMeta(t, m)
if lIsCore then
lsetmeta(t,m)
end
end
rawget = lRawGet;
rawset = lRawSet;
setmetatable = lSetMeta;
xpcall = nil;
debug = nil;
os = nil;
module = nil;
package = nil;
pcall = nil;
require = nil;
dofile = nil;
load = nil;
loadfile = nil;
coroutine = nil;
io = nil;
file = nil;
loadstring = nil;
setfenv = nil;
getfenv = nil;
collectgarbage();
for k,v in pairs(_G) do
_t[k] = v;
end;
local mt = {};
function mt.__index(t,k)
return lRawGet(_t,k);
end
function mt.__newindex(t,k,v)
if (t == nil or k == nil or v == nil) then
_t.log_string("Bad call to newindex with key: " .. k)
end
lRawSet(_t,k,v)
end;
for k,v in _t.pairs(_G) do
if k ~= '_G' then
_G[k] = nil;
end;
end;
_t.setmetatable(_G,mt);
_G = _t;