blob: 93881fe22254e640500f77533f23cc1ee7958e2c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
if sharedluaxstore == nil then
sharedluaxstore = { } -- initialize store only once
end
return function (self, sel, atoms)
if type(atoms[1]) == "string" then
if sharedluaxstore[atoms[1]] == nil then
sharedluaxstore[atoms[1]] = { sel = "bang", msg = { }, count = 1 }
else
sharedluaxstore[atoms[1]].count = sharedluaxstore[atoms[1]].count + 1
end
self.name = atoms[1]
self.inlets = 2
self.outlets = 1
self.in_1_bang = function(self)
local s = sharedluaxstore[self.name]
self:outlet(1, s.sel, s.msg)
end
self.in_2 = function(self, s, m)
local c = sharedluaxstore[self.name].count
sharedluaxstore[self.name] = { sel = s, msg = m, count = c }
end
self.finalize = function (self)
sharedluaxstore[self.name].count = sharedluaxstore[self.name].count - 1
if sharedluaxstore[self.name].count == 0 then
sharedluaxstore[self.name] = nil
end
end
return true
else
return false
end
end
|