[Xotcl] "tie" command

Gustaf Neumann neumann@wu-wien.ac.at
Fri Jan 24 14:01:33 CET 2003


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/

 there are already many approaches for destroying object automatically.
 look at the following code (hope there are not to many typos)
  
Class C
C instproc destroy {} {puts "[self] destroy"; next}

C c1
c1 proc t1 {} {
  for {set i 0} {$i < 10} {incr i} {
    O new -volatile 
  }
}
c1 proc t2 {} {
  for {set i 0} {$i < 10} {incr i} {
    O new -childof [self] 
  }
}
c1 proc t3 {} {
  for {set i 0} {$i < 10} {incr i} {
    O [self]::$i 
  }
}
c1 proc t4 {} {
  for {set i 0} {$i < 10} {incr i} {
    O [self]::i 
  }
}


 -t1: after the loop, all objects exist, the automatically destroyed, when t1 is left.
 -t2: all objects survive t2, they are deleted, when c1 is destroyed
 -t3: same as t2, but the programmer has more control over object names (see also t4)
 -t4: on each iteration an object is created and destroys a potentially same-named object.
    after t4, c1 contains one sub-object, which is destroyed, when c1 is destroyed
    (this is somewhat similar in the behavior to the code that uwe posted).

 we could provide an option -bind <varname> to the new instproc to allow
 the user to specify a local or a per-object or global variable name, but
 this does not provide reference counting at all. i have started some time ago
 to work on reference counting, and xotcl has some good prerequirements
 for this: we have tcl_objs for xotcl objects, they maintain already a reference
 count. the obvious idea is to destroy the object, when the reference count
 reaches 0. however, practically this showed to be quite tricky in the current
 implementation since the refcount = 0 condition happens in some unvonveniant
 situations... i have not given up on this, but it needs a bigger chunk of time to
 devote to this...

 best regards
-gustaf


>
>
> _______________________________________________
> Xotcl mailing list  -  Xotcl@alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl

-- 
Univ.Prof. Dr.Gustaf Neumann
Abteilung für Wirtschaftsinformatik
WU-Wien, Augasse 2-6, 1090 Wien



More information about the Xotcl mailing list