+++ /dev/null
-local _G = getfenv()
-local _G_mt = getmetatable(_G)
-
-
--- Set the __globals metafield in the global environment's metatable,
--- if not already there.
-if _G_mt then
- if _G_mt.__globals then return else
- print( "Warning: _G already has a metatable,"..
- " which might interfere with xglobals")
- _G_mt.__globals = { }
- end
-else
- _G_mt = { __globals = { } }
- setmetatable(_G, _G_mt)
-end
-
--- add a series of variable names to the list of declared globals
-function _G_mt.__newglobal(...)
- local g = _G_mt.__globals
- for v in ivalues{...} do g[v]=true end
-end
-
--- Try to set a global that's not in _G:
--- if it isn't declared, fail
-function _G_mt.__newindex(_G, var, val)
- if not _G_mt.__globals[var] then
- error ("Setting undeclared global variable "..var)
- end
- rawset(_G, var, val)
-end
-
--- Try to read a global that's not in _G:
--- if it isn't declared, fail
-function _G_mt.__index(_G, var)
- if not _G_mt.__globals[var] then
- error ("Reading undeclared global variable "..var)
- end
- return nil
-end
-