**Mike Collins** '''TCL programmer since 2000''' ` Just giving back to the TCL community ` ****Improvements welcome**** ====== package provide Equals 0.1 # After doing some work trying converting a C library example into TCL it dawned on me, we don't have +=, -= ... proc plusEq {var val {float ""}} { upvar $var lVar if {![info exists lVar]} {set lVar 0} if {[regexp -nocase -- {^f(|l|lt|loat)$} $float]} { if {[regexp -nocase -- {\.} $val]} { set lVar [expr $lVar + ${val}] } else { set lVar [expr $lVar + ${val}.0] } } else { set lVar [expr $lVar + int($val)] } } proc minusEq {var val {float ""}} { upvar $var lVar if {![info exists lVar]} {set lVar 0} if {[regexp -nocase -- {^f(l|lt|loat)$} $float]} { if {[regexp -nocase -- {\.} $val]} { set lVar [expr $lVar - ${val}] } else { set lVar [expr $lVar - ${val}.0] } } else { set lVar [expr $lVar - int($val)] } } proc timesEq {var val {float ""}} { upvar $var lVar if {![info exists lVar]} {set lVar 1} if {[regexp -nocase -- {^f(l|lt|loat)$} $float]} { if {[regexp -nocase -- {\.} $val]} { set lVar [expr $lVar * ${val}] } else { set lVar [expr $lVar * ${val}.0] } } else { set lVar [expr $lVar * int($val)] } } proc divEq {var val {float ""}} { upvar $var lVar if {![info exists lVar]} {set lVar 1} if {[regexp -nocase -- {^f(l|lt|loat)$} $float]} { if {[regexp -nocase -- {\.} $val]} { set lVar [expr $lVar / ${val}] } else { set lVar [expr $lVar / ${val}.0] } } else { set lVar [expr $lVar / int($val)] } } ======