1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#
#
#
#
proc shift {arrayname} {
upvar $arrayname array
set first [lindex $array 0]
set array [lrange $array 1 end]
return $first
}
set util_trace_id 0
proc set_trace {varname op cmd} {
global util_trace_id util_trace_varname util_trace_operation
upvar \#0 $varname var
set id $util_trace_id
proc util:trace_handler_$id {name elem op} [list uplevel \#0 $cmd]
trace variable var $op util:trace_handler_$id
set util_trace_varname($id) $varname
set util_trace_operation($id) $op
incr util_trace_id
return $id
}
proc del_trace {id} {
global util_trace_varname util_trace_operation
set varname $util_trace_varname($id)
set operation $util_trace_operation($id)
if {$varname != "" && $operation != ""} {
set util_trace_varname($id) {}
set util_trace_operation($id) {}
upvar \#0 $varname var
trace vdelete var $operation util:trace_handler_$id
rename util:trace_handler_$id {}
}
}
|