summaryrefslogtreecommitdiffstats
path: root/tcl8.6/doc/uplevel.n
diff options
context:
space:
mode:
Diffstat (limited to 'tcl8.6/doc/uplevel.n')
-rw-r--r--tcl8.6/doc/uplevel.n103
1 files changed, 0 insertions, 103 deletions
diff --git a/tcl8.6/doc/uplevel.n b/tcl8.6/doc/uplevel.n
deleted file mode 100644
index 4decc6d..0000000
--- a/tcl8.6/doc/uplevel.n
+++ /dev/null
@@ -1,103 +0,0 @@
-'\"
-'\" Copyright (c) 1993 The Regents of the University of California.
-'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
-'\"
-'\" See the file "license.terms" for information on usage and redistribution
-'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-'\"
-.TH uplevel n "" Tcl "Tcl Built-In Commands"
-.so man.macros
-.BS
-'\" Note: do not modify the .SH NAME line immediately below!
-.SH NAME
-uplevel \- Execute a script in a different stack frame
-.SH SYNOPSIS
-\fBuplevel \fR?\fIlevel\fR?\fI arg \fR?\fIarg ...\fR?
-.BE
-.SH DESCRIPTION
-.PP
-All of the \fIarg\fR arguments are concatenated as if they had
-been passed to \fBconcat\fR; the result is then evaluated in the
-variable context indicated by \fIlevel\fR. \fBUplevel\fR returns
-the result of that evaluation.
-.PP
-If \fIlevel\fR is an integer then
-it gives a distance (up the procedure calling stack) to move before
-executing the command. If \fIlevel\fR consists of \fB#\fR followed by
-a number then the number gives an absolute level number. If \fIlevel\fR
-is omitted then it defaults to \fB1\fR. \fILevel\fR cannot be
-defaulted if the first \fIcommand\fR argument starts with a digit or \fB#\fR.
-.PP
-For example, suppose that procedure \fBa\fR was invoked
-from top-level, and that it called \fBb\fR, and that \fBb\fR called \fBc\fR.
-Suppose that \fBc\fR invokes the \fBuplevel\fR command. If \fIlevel\fR
-is \fB1\fR or \fB#2\fR or omitted, then the command will be executed
-in the variable context of \fBb\fR. If \fIlevel\fR is \fB2\fR or \fB#1\fR
-then the command will be executed in the variable context of \fBa\fR.
-If \fIlevel\fR is \fB3\fR or \fB#0\fR then the command will be executed
-at top-level (only global variables will be visible).
-.PP
-The \fBuplevel\fR command causes the invoking procedure to disappear
-from the procedure calling stack while the command is being executed.
-In the above example, suppose \fBc\fR invokes the command
-.PP
-.CS
-\fBuplevel\fR 1 {set x 43; d}
-.CE
-.PP
-where \fBd\fR is another Tcl procedure. The \fBset\fR command will
-modify the variable \fBx\fR in \fBb\fR's context, and \fBd\fR will execute
-at level 3, as if called from \fBb\fR. If it in turn executes
-the command
-.PP
-.CS
-\fBuplevel\fR {set x 42}
-.CE
-.PP
-then the \fBset\fR command will modify the same variable \fBx\fR in \fBb\fR's
-context: the procedure \fBc\fR does not appear to be on the call stack
-when \fBd\fR is executing. The \fBinfo level\fR command may
-be used to obtain the level of the current procedure.
-.PP
-\fBUplevel\fR makes it possible to implement new control
-constructs as Tcl procedures (for example, \fBuplevel\fR could
-be used to implement the \fBwhile\fR construct as a Tcl procedure).
-.PP
-The \fBnamespace eval\fR and \fBapply\fR commands offer other ways
-(besides procedure calls) that the Tcl naming context can change.
-They add a call frame to the stack to represent the namespace context.
-This means each \fBnamespace eval\fR command
-counts as another call level for \fBuplevel\fR and \fBupvar\fR commands.
-For example, \fBinfo level 1\fR will return a list
-describing a command that is either
-the outermost procedure call or the outermost \fBnamespace eval\fR command.
-Also, \fBuplevel #0\fR evaluates a script
-at top-level in the outermost namespace (the global namespace).
-.SH EXAMPLE
-As stated above, the \fBuplevel\fR command is useful for creating new
-control constructs. This example shows how (without error handling)
-it can be used to create a \fBdo\fR command that is the counterpart of
-\fBwhile\fR except for always performing the test after running the
-loop body:
-.PP
-.CS
-proc do {body while condition} {
- if {$while ne "while"} {
- error "required word missing"
- }
- set conditionCmd [list expr $condition]
- while {1} {
- \fBuplevel\fR 1 $body
- if {![\fBuplevel\fR 1 $conditionCmd]} {
- break
- }
- }
-}
-.CE
-.SH "SEE ALSO"
-apply(n), namespace(n), upvar(n)
-.SH KEYWORDS
-context, level, namespace, stack frame, variable
-.\" Local Variables:
-.\" mode: nroff
-.\" End: