Version 1 of mocallins

Updated 2023-03-16 08:20:37 by mocallins

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)]
  }

}