From 69118070c6c46b2c097b8b2e6fd0870c634b7114 Mon Sep 17 00:00:00 2001 From: mescalinum Date: Sun, 13 Sep 2009 15:50:31 +0000 Subject: added support for pd_bind/pd_unbind; added destructor call in tclpd_free svn path=/trunk/externals/tclpd/; revision=12330 --- pdlib.tcl | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'pdlib.tcl') diff --git a/pdlib.tcl b/pdlib.tcl index a854e04..e2cd347 100644 --- a/pdlib.tcl +++ b/pdlib.tcl @@ -18,13 +18,17 @@ namespace eval ::pd { tclpd_add_proxyinlet [tclpd_get_instance $self] } - proc add_outlet {self sel} { + proc add_outlet {self {sel {}}} { if $::verbose {post [info level 0]} - if {[lsearch -exact {bang float list symbol} $sel] == -1} { + variable _ + if {$sel == {}} { + set o [outlet_new [tclpd_get_object $self] [null_symbol]] + } else { + if {[lsearch -exact {bang float list symbol} $sel] == -1} { return -code error [error_msg "unsupported selector: $sel"] + } + set o [outlet_new [tclpd_get_object $self] [gensym $sel]] } - variable _ - set o [outlet_new [tclpd_get_object $self] [gensym $sel]] lappend _($self:x_outlet) $o return $o } @@ -57,7 +61,14 @@ namespace eval ::pd { outlet_bang $outlet } default { - return -code error [error_msg "unknown selector: $sel"] + set v [lindex $args 0] + set sz [llength $v] + set aa [new_atom_array $sz] + for {set i 0} {$i < $sz} {incr i} { + set_atom_array $aa $i [lindex $v $i] + } + outlet_anything $outlet [gensym $sel] $sz $aa + delete_atom_array $aa $sz } } } -- cgit v1.2.1