Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24531
Modified Files: Tag: desiredata desire.tk Log Message: class_new Hash
Index: desire.tk =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.tk,v retrieving revision 1.1.2.600.2.297 retrieving revision 1.1.2.600.2.298 diff -C2 -d -r1.1.2.600.2.297 -r1.1.2.600.2.298 *** desire.tk 6 Aug 2007 22:42:48 -0000 1.1.2.600.2.297 --- desire.tk 7 Aug 2007 01:17:35 -0000 1.1.2.600.2.298 *************** *** 290,300 ****
#-----------------------------------------------------------------------------------# ! # object class just to make a variable watchable...? ! # should also have a look at "man 3tcl trace" too.
! class_new Variable {Observable Thing} ! def Variable init {{value ""}} {super; $self value= $value} ! def Variable value= {value} {set @value $value; $self changed} ! def Variable value {} {return $@value}
#-----------------------------------------------------------------------------------# --- 290,313 ----
#-----------------------------------------------------------------------------------# ! # This is not a real Hash, just the same interface as a Ruby/Python/Perl Hash... or quite like Tcl arrays themselves ! class_new Hash {Thing}
! def Hash init {args} {foreach {k v} $args {$self set $k $v}} ! def Hash set {k v} {set ::hash($self:$k) $v} ! def Hash get {k} {set ::hash($self:$k)} ! def Hash size {} {llength [$self keys]} ! def Hash unset {k} {unset ::hash($self:$k)} ! def Hash list {} {set r {}; foreach k [$self keys] {lappend r $k [$self get $k]}; return $r} ! def Hash keys {} { ! set r {} ! set n [string length $self:] ! foreach k [array names ::hash $self:*] {lappend r [string range $k $n end]} ! return $r ! } ! ! # set h [Hash new foo bar 1 2 3 4] ! # $h set hello world ! # puts keys=[$h keys] ! # puts list=[$h list]
#-----------------------------------------------------------------------------------#