diff options
author | Martin Peach <mrpeach@users.sourceforge.net> | 2011-03-15 20:53:57 +0000 |
---|---|---|
committer | Martin Peach <mrpeach@users.sourceforge.net> | 2011-03-15 20:53:57 +0000 |
commit | 267170167d52cab9e97f879d9127a1cf04f6bb58 (patch) | |
tree | 00260a90ce6472e34c5eff41602af57595c8830d /examples/ltabdump.pd_lua |
This is a version of Claude Heiland-Allen's lua for Pd. The objects are named pdlua and pdluax instead of lua and luax. So far it seems to work on linux.svn2git-root
svn path=/trunk/externals/pdlua/; revision=15030
Diffstat (limited to 'examples/ltabdump.pd_lua')
-rw-r--r-- | examples/ltabdump.pd_lua | 36 |
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 |