Version 0 of Itcl trace

Updated 2006-05-31 12:38:04

GWM Trace can be performed within an Itcl class for tracing member variables. Here is how to do it. The main difference from basic Tcl trace is to use the itcl::scope command to get the full name of the variable for the trace command.

  package require Itcl
  itcl::class testtrace {
        variable member "";#[eval $$name1]
        constructor {} {
  if {1==0} {

Here is the trace set to a local variable. Note use of itcl::scope.

  }
                trace add variable [itcl::scope member] write "$this traceit"
        }
        method traceit {name1 name2 op} {
           set v [$this info variable $name1 -value]
           puts "Class $this, variable \"$name1\" set to >>$v<<" }
        method setmember {v} { set member $v}
        method getmember {} { return $member }
  }
  set tic [testtrace tickle]  ;# one instance of class testtrace
  set tock [testtrace secondclass]  ;# another instance of class testtrace

  $tic setmember blob  ;# set the member, returns a traceit 
  $tic setmember gurkin
  $tic getmember
  $tic setmember "Open trace"
  $tock setmember "Hello from trace"
  $tic setmember "Open the [$tic getmember] door"

The output from this is:

  Class ::tickle, variable "member" set to >>blob<<
  Class ::tickle, variable "member" set to >>gurkin<<
  Class ::tickle, variable "member" set to >>Open trace<<
  Class ::secondclass, variable "member" set to >>Hello from trace<<
  Class ::tickle, variable "member" set to >>Open the Open trace door<<

Category tcllib Category Development Category Debugging Category Object Orientation