From 44913ead9b37fb6fe6a30760abf94b00220c4373 Mon Sep 17 00:00:00 2001 From: Manuel Simon Hirsig Date: Mon, 12 Sep 2016 15:25:37 +0200 Subject: [PATCH] refactoring --- control.lua | 2 +- core/scan.lua | 2 +- libs/green_t.lua | 6 +++++- util/core.lua | 5 +++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/control.lua b/control.lua index 75138df..815ca22 100644 --- a/control.lua +++ b/control.lua @@ -58,7 +58,7 @@ end function public.event_listener(event, cb) local listener_id = unique_id - listeners[listener_id] = { event=event, cb=cb, kill=function(...) auto[arg] = true if arg.n == 0 or arg[1] then kill_listener(listener_id) end end } + listeners[listener_id] = { event=event, cb=cb, kill=vararg-function(arg) if getn(arg) == 0 or arg[1] then kill_listener(listener_id) end end } event_frame:RegisterEvent(event) return listener_id end diff --git a/core/scan.lua b/core/scan.lua index 1990152..2bbf59f 100644 --- a/core/scan.lua +++ b/core/scan.lua @@ -44,7 +44,7 @@ end function private.query.get() return state.params.queries[state.query_index] end -function wait_for_callback(...) auto[arg] = true +function private.vararg.wait_for_callback(arg) local send_signal, signal_received = signal() local suspended, ret diff --git a/libs/green_t.lua b/libs/green_t.lua index a56abd1..5c788b0 100644 --- a/libs/green_t.lua +++ b/libs/green_t.lua @@ -139,7 +139,11 @@ do setfenv(chunk, {f=f, setn=setn, acquire=acquire, set_auto_release=set_auto_release}) return chunk() end - public.vararg = vararg + public.vararg = setmetatable({}, { + __metatable = false, + __call = function(_, v) return vararg(v) end, + __sub = function(_, v) return vararg(v) end, + }) end public.A = vararg(function(arg) diff --git a/util/core.lua b/util/core.lua index ffd9691..bcd98fb 100644 --- a/util/core.lua +++ b/util/core.lua @@ -101,8 +101,9 @@ function public.vararg.partial(arg) end) end -function public.index(t, ...) auto[arg] = true - for i = 1, arg.n do t = t and t[arg[i]] end return t +function public.vararg.index(arg) + local t = tremove(arg, 1) + for i = 1, getn(arg) do t = t and t[arg[i]] end return t end public.huge = 1.8 * 10 ^ 308