aboutsummaryrefslogtreecommitdiff
path: root/examples/ltabdump.pd_lua
diff options
context:
space:
mode:
Diffstat (limited to 'examples/ltabdump.pd_lua')
-rw-r--r--examples/ltabdump.pd_lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/ltabdump.pd_lua b/examples/ltabdump.pd_lua
new file mode 100644
index 0000000..3c44ef7
--- /dev/null
+++ b/examples/ltabdump.pd_lua
@@ -0,0 +1,36 @@
+local LTabDump = pd.Class:new():register("ltabdump")
+
+function LTabDump:initialize(sel, atoms)
+ self.inlets = 1
+ self.outlets = 2
+ if type(atoms[1]) == "string" then
+ self.name = atoms[1]
+ else
+ self.name = nil
+ end
+ return true
+end
+
+-- output table length and data
+function LTabDump:in_1_bang()
+ -- need to sync each time before accessing if ...
+ -- ... control-flow has gone outside of our scope
+ local t = pd.Table:new():sync(self.name)
+ if t ~= nil then
+ local l = t:length()
+ local a = { }
+ local i
+ for i = 1,l do
+ a[i] = t:get(i-1)
+ end
+ -- copied above before outlet() to avoid race condition
+ self:outlet(2, "float", { l })
+ self:outlet(1, "list", a)
+ end
+end
+
+-- choose a table name, then output
+function LTabDump:in_1_symbol(s)
+ self.name = s
+ self:in_1_bang()
+end