Ignore:
Timestamp:
Dec 1, 2003, 8:58:11 PM (15 years ago)
Author:
landonf
Message:

Use variable traces for the option proc handlers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/port1.0/portutil.tcl

    r3908 r4105  
    102102                \if \{!\[info exists user_options(${option})\]\} \{ \n\
    103103                     set ${option} \$args \n\
    104                          if \{\[info exists option_procs($option)\]\} \{ \n\
    105                                 foreach p \$option_procs($option) \{ \n\
    106                                         eval \"\$p $option set \$args\" \n\
    107                                 \} \n\
    108                          \} \n\
    109104                \} \n\
    110105        \}"
     
    118113                    if \{\[string length \$\{${option}\}\] == 0\} \{ \n\
    119114                        unset ${option} \n\
    120                     \} \n\
    121                         if \{\[info exists option_procs($option)\]\} \{ \n\
    122                             foreach p \$option_procs($option) \{ \n\
    123                                 eval \"\$p $option delete \$args\" \n\
    124                         \} \n\
    125115                    \} \n\
    126116                \} \n\
     
    133123                    \} else \{ \n\
    134124                        set ${option} \$args \n\
    135                     \} \n\
    136                     if \{\[info exists option_procs($option)\]\} \{ \n\
    137                         foreach p \$option_procs($option) \{ \n\
    138                             eval \"\$p $option append \$args\" \n\
    139                         \} \n\
    140125                    \} \n\
    141126                \} \n\
     
    186171    eval "lappend option_procs($option) $args"
    187172    # Add a read trace to the variable, as the option procedures have no access to reads
    188     trace variable $option r option_proc_trace
     173    trace variable $option rwu option_proc_trace
    189174}
    190175
     
    193178proc option_proc_trace {optionName index op} {
    194179    global option_procs
    195     foreach p $option_procs($optionName) {
    196         eval "$p $optionName read"
     180    switch $op {
     181        w {
     182            foreach p $option_procs($optionName) {
     183                eval "$p $optionName set"
     184            }
     185            return
     186        }
     187        r {
     188            foreach p $option_procs($optionName) {
     189                eval "$p $optionName read"
     190            }
     191            return
     192        }
     193        u {
     194            foreach p $option_procs($optionName) {
     195                eval "$p $optionName delete"
     196                trace vdelete $optionName rwu $p
     197            }
     198            return
     199        }
    197200    }
    198201}
Note: See TracChangeset for help on using the changeset viewer.