[Xotcl] "tie" command

Uwe Zdun uwe.zdun at wu-wien.ac.at
Fri Jan 24 10:32:47 CET 2003


nice idea, I've played a bit with var traces to make some tie functionality 
work; is this what you were thinking of?

--Uwe


####################################################### TIE code

Object instproc tie {varname objname} {
    my set $varname $objname
    my trace variable $varname wu "Object tie_cb $objname [self]"    
}
Object proc tie_cb {tieobj obj n1 n2 mode} {
    ## delete the tieobj
    if {[my isobject $tieobj]} {
	$tieobj destroy
    }
    ## delete the trace for this tieobj
    if {$mode == "w" && [my isobject $obj]} {
	foreach t [$obj trace vinfo $n1] {
	    set mode [lindex $t 0]
	    set cmd [lindex $t 1]
	    if {[string equal $cmd "Object tie_cb $tieobj $obj"]} {
		$obj trace vdelete $n1 $mode $cmd
	    }
	}
    }
}

####################################################### Test

Object x
x proc test {} {
    set n 0
    while {$n < 10} {
	my tie myVar [Object new]
	incr n
    }
}
x test

### test unset
#x unset myVar
#x set myVar abc

### only one should have survived
puts [Object info instances]

### it gets killed when the obj gets killed
x destroy
puts [Object info instances]

###############################################################



On Friday 24 January 2003 04:32, Kristoffer Lawson wrote:
> Been thinking if this would make sense:
>
> while {$stuff} {
>   tie myVar [MyClass new]
>   ...
> }
>
> And the instance created from MyClass would be automagically collected on
> each iteration. Ie. [tie] would tie an object to a variable: when the
> variable's value is changed, or when the variable is destroyed, the object
> is too -- or at least the refcount decreased. I often have Message objects
> which are used once (after some data is read from somewhere) and then
> destroyed. Quite often I forget the latter part ;-)
>
>                               / http://www.fishpool.com/~setok/
>
>
> _______________________________________________
> Xotcl mailing list  -  Xotcl at alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl

-- 
Uwe Zdun
Department of Information Systems, Vienna University of Economics
Phone: +43 1 313 36 4796, Fax: +43 1 313 36 746
zdun@{xotcl,computer,acm}.org, uwe.zdun at wu-wien.ac.at




More information about the Xotcl mailing list