Uplevel
From Wikipedia, the free encyclopedia
Uplevel is a command in Tcl that allows a command script to be executed in a scope other than the current innermost scope on the stack. Because the command script may itself call procedures that use the uplevel command, this has the net effect of transforming the call stack into a call tree.
It was originally implemented to permit Tcl procedures to reimplement built-in commands (like for, if or while) and still have the ability to manipulate local variables. For example, the following Tcl script is a reimplementation of the for command (omitting exception handling):
proc for {initCmd testExpr advanceCmd bodyScript} { uplevel 1 $initCmd set testCmd [list expr $testExpr] while {[uplevel 1 $testCmd]} { uplevel 1 $bodyScript uplevel 1 $advanceCmd } }