add signal module

This commit is contained in:
2025-02-14 15:16:42 +03:00
parent d766e4e34b
commit aff1bfd247
2 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,30 @@
local util = require "util"
local Signal = {}
Signal.__index = Signal
function Signal:connect(f)
util.list_insert_once(self._connections, f)
end
function Signal:disconnect(f)
util.list_remove_value(self._connections, f)
end
function Signal:emit(...)
-- don't care about order
for _, v in pairs(self._connections) do
v(...)
end
end
function Signal.new()
local s = {
_connections = {},
}
return setmetatable(s, Signal)
end
return Signal