Posted to tcl by dkf at Mon Jul 13 08:01:02 GMT 2009view pretty
proc oo::define::Variable args { set existing [uplevel 1 [list info class variables $currentclass]] switch [lindex $args 0] { -append { set vars $existing lappend vars {*}[lrange $args 1 end] } -prepend { set vars [lrange $args 1 end] lappend vars {*}$existing } -remove { set vars $existing foreach var [lrange $args 1 end] { set idx [lsearch -exact $vars $var] if {$idx >= 0} { set vars [lreplace $vars $idx $idx] } } } -set - default { set vars [lrange $args 1 end] } } uplevel 1 [list variables {*}$vars] return }
Comments
Posted by dkf at Mon Jul 13 08:02:57 GMT 2009 [text] [code]
The problem is determining $currentclass
Posted by dkf at Mon Jul 13 08:06:53 GMT 2009 [text] [code]
Use this: set currentclass [lindex [info level 1] 1] (It's not suitable for per-object declarations due to problems with self-decls, but will work for class declarations)