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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
-- contributed by Frank Barknecht
local PeekBag = pd.Class:new():register("peekbag")
function PeekBag:initialize(name, atoms)
self.inlets = 2
self.outlets = 1
self.bag = {}
self.add = false
return true
end
function PeekBag:in_1_float(f)
if self.add then
table.insert(self.bag, f)
else
-- for i=table.getn(self.bag),1,-1 do
for i = #(self.bag), 1, -1 do
if self.bag[i]==f then
table.remove(self.bag, i)
break
end
end
end
end
function PeekBag:in_1_list(l)
if type(l[2]) == "number" then
self:in_2_float(l[2])
end
if type(l[1]) == "number" then
self:in_1_float(l[1])
end
end
function PeekBag:in_1_clear(l)
self.bag = {}
self.add = false
end
function PeekBag:in_1_flush(l)
self:in_1_bang()
self:in_1_clear()
end
function PeekBag:in_2_float(f)
if f == 0 then
self.add = false
else
self.add = true
end
end
function PeekBag:in_1_bang()
-- print all values of array
for i,v in ipairs(self.bag) do
self:outlet(1, "float", {v})
end
end
function PeekBag:in_1_aslist()
-- print all values of array as list
-- if table.getn(self.bag) == 1 then
if #(self.bag) == 1 then
self:outlet(1, "float", {self.bag[1]})
-- elseif table.getn(self.bag) > 1 then
elseif #(self.bag) > 1 then
self:outlet(1, "list", self.bag)
end
end
|