refactoring
This commit is contained in:
+15
-15
@@ -12,7 +12,7 @@ do
|
||||
t.reset, t.reset = nil, 1
|
||||
setn(t, 0)
|
||||
end
|
||||
public.wipe = wipe
|
||||
M.wipe = wipe
|
||||
|
||||
CreateFrame'Frame':SetScript('OnUpdate', function()
|
||||
for t in auto_release do release(t) end
|
||||
@@ -42,37 +42,37 @@ do
|
||||
overflow_pool[t] = true
|
||||
end
|
||||
end
|
||||
public.release = release
|
||||
M.release = release
|
||||
|
||||
function set_auto_release(v, enable)
|
||||
if type(v) ~= 'table' then return end
|
||||
auto_release[v] = enable and true or nil
|
||||
end
|
||||
public.set_auto_release = set_auto_release
|
||||
M.set_auto_release = set_auto_release
|
||||
end
|
||||
|
||||
public.get_t = acquire
|
||||
M.get_t = acquire
|
||||
|
||||
function public.get_tt()
|
||||
function M.get_tt()
|
||||
local t = acquire()
|
||||
set_auto_release(t, true)
|
||||
return t
|
||||
end
|
||||
|
||||
public.auto = setmetatable({}, {
|
||||
M.auto = setmetatable({}, {
|
||||
__metatable = false,
|
||||
__newindex = function(_, k, v) set_auto_release(k, v) end,
|
||||
})
|
||||
public.temp = setmetatable({}, {
|
||||
M.temp = setmetatable({}, {
|
||||
__metatable = false,
|
||||
__sub = function(_, v) set_auto_release(v, true); return v end,
|
||||
})
|
||||
public.perm = setmetatable({}, {
|
||||
M.perm = setmetatable({}, {
|
||||
__metatable = false,
|
||||
__sub = function(_, v) set_auto_release(v, false); return v end,
|
||||
})
|
||||
|
||||
public.init = setmetatable({}, {
|
||||
M.init = setmetatable({}, {
|
||||
__metatable = false,
|
||||
__newindex = function(_, t, init)
|
||||
wipe(t)
|
||||
@@ -91,10 +91,10 @@ do
|
||||
release(t)
|
||||
end
|
||||
end
|
||||
public.ret = ret
|
||||
M.ret = ret
|
||||
end
|
||||
|
||||
public.empty = setmetatable({}, { __metatable=false, __newindex=nop })
|
||||
M.empty = setmetatable({}, { __metatable=false, __newindex=nop })
|
||||
|
||||
local vararg
|
||||
do
|
||||
@@ -137,24 +137,24 @@ do
|
||||
setfenv(chunk, { f=f, setn=setn, acquire=acquire, set_auto_release=set_auto_release })
|
||||
return chunk()
|
||||
end
|
||||
public.vararg = setmetatable({}, {
|
||||
M.vararg = setmetatable({}, {
|
||||
__metatable = false,
|
||||
__sub = function(_, v) return vararg(v) end,
|
||||
})
|
||||
end
|
||||
|
||||
public.A = vararg(function(arg)
|
||||
M.A = vararg(function(arg)
|
||||
set_auto_release(arg, false)
|
||||
return arg
|
||||
end)
|
||||
public.S = vararg(function(arg)
|
||||
M.S = vararg(function(arg)
|
||||
local t = acquire()
|
||||
for _, v in arg do
|
||||
t[v] = true
|
||||
end
|
||||
return t
|
||||
end)
|
||||
public.T = vararg(function(arg)
|
||||
M.T = vararg(function(arg)
|
||||
local t = acquire()
|
||||
for i = 1, getn(arg), 2 do
|
||||
t[arg[i]] = arg[i + 1]
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ function create_module(name)
|
||||
if type(name) ~= 'string' then error('Invalid module name "%s".', name) end
|
||||
local P, environment, interface, public_modifier, accessors, mutators, fields, public_accessors, public_mutators, public_fields
|
||||
environment, interface, public_modifier = {}, {}, setmetatable({}, public_modifier_mt)
|
||||
accessors = {public=function() return public_modifier end}
|
||||
accessors = {M=function() return public_modifier end}
|
||||
mutators = setmetatable({_=nop}, {__index=function(_, k) return function(v) define(name, k, v, true) end end})
|
||||
fields = setmetatable(
|
||||
{_M=environment, _G=_G, include=function(interface) include(name, interface) end, error=error, nop=nop, id=id},
|
||||
@@ -49,7 +49,7 @@ function create_module(name)
|
||||
setmetatable(environment, proxy_mt(fields, mutators))
|
||||
setmetatable(interface, proxy_mt(public_fields, public_mutators))
|
||||
P = {
|
||||
defined = {_M=true, _G=true, include=true, error=true, nop=true, id=true, public=true, set__=true, require=true},
|
||||
defined = {_M=true, _G=true, include=true, error=true, nop=true, id=true, M=true, set__=true, require=true},
|
||||
fields = fields, accessors = accessors, mutators = mutators,
|
||||
public_fields = public_fields, public_accessors = public_accessors, public_mutators = public_mutators,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user