'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" All rights reserved. '\" '\" Permission is hereby granted, without written agreement and without '\" license or royalty fees, to use, copy, modify, and distribute this '\" documentation for any purpose, provided that the above copyright '\" notice and the following two paragraphs appear in all copies. '\" '\" IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY '\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES '\" ARISING OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF THE UNIVERSITY OF '\" CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. '\" '\" THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, '\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY '\" AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS '\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO '\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. '\" '\" $Header: /user6/ouster/tcl/man/RCS/Eval.3,v 1.13 93/04/03 16:40:04 ouster Exp $ SPRITE (Berkeley) '\" .so man.macros .HS Tcl_Eval tclc 7.0 .BS .SH NAME Tcl_Eval, Tcl_VarEval, Tcl_EvalFile, Tcl_GlobalEval \- execute Tcl commands .SH SYNOPSIS .nf \fB#include \fR .sp int .VS \fBTcl_Eval\fR(\fIinterp, cmd\fR) .VE .sp int \fBTcl_VarEval\fR(\fIinterp, string, string, ... \fB(char *) NULL\fR) .sp int \fBTcl_EvalFile\fR(\fIinterp, fileName\fR) .sp int \fBTcl_GlobalEval\fR(\fIinterp, cmd\fR) .SH ARGUMENTS .AS Tcl_Interp **termPtr; .AP Tcl_Interp *interp in Interpreter in which to execute the command. String result will be stored in \fIinterp->result\fR. .AP char *cmd in Command (or sequence of commands) to execute. Must be in writable memory (\fBTcl_Eval\fR makes temporary modifications to the command). .AP char *string in String forming part of Tcl command. .AP char *fileName in Name of file containing Tcl command string. .BE .SH DESCRIPTION .PP All four of these procedures execute Tcl commands. \fBTcl_Eval\fR is the core procedure: it parses commands from \fIcmd\fR and executes them in .VS order until either an error occurs or it reaches the end of the string. .VE The return value from \fBTcl_Eval\fR is one of the Tcl return codes \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR, and \fIinterp->result\fR will point to a string with additional information (result value or error message). This return information corresponds to the last command executed from \fIcmd\fR. .PP \fBTcl_VarEval\fR takes any number of string arguments of any length, concatenates them into a single string, then calls \fBTcl_Eval\fR to execute that string as a Tcl command. It returns the result of the command and also modifies \fIinterp->result\fR in the usual fashion for Tcl commands. The last argument to \fBTcl_VarEval\fR must be NULL to indicate the end of arguments. .PP \fBTcl_EvalFile\fR reads the file given by \fIfileName\fR and evaluates its contents as a Tcl command by calling \fBTcl_Eval\fR. It returns a standard Tcl result that reflects the result of evaluating the file. If the file couldn't be read then a Tcl error is returned to describe why the file couldn't be read. .PP \fBTcl_GlobalEval\fR is similar to \fBTcl_Eval\fR except that it processes the command at global level. This means that the variable context for the command consists of global variables only (it ignores any Tcl procedure that is active). This produces an effect similar to the Tcl command ``\fBuplevel 0\fR''. .PP During the processing of a Tcl command it is legal to make nested calls to evaluate other commands (this is how conditionals, loops, and procedures are implemented). If a code other than \fBTCL_OK\fR is returned from a nested \fBTcl_Eval\fR invocation, then the caller should normally return immediately, passing that same return code back to its caller, and so on until the top-level application is reached. A few commands, like \fBfor\fR, will check for certain return codes, like \fBTCL_BREAK\fR and \fBTCL_CONTINUE\fR, and process them specially without returning. .PP \fBTcl_Eval\fR keeps track of how many nested Tcl_Eval invocations are in progress for \fIinterp\fR. If a code of \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR is about to be returned from the topmost \fBTcl_Eval\fR invocation for \fIinterp\fR, then \fBTcl_Eval\fR converts the return code to \fBTCL_ERROR\fR and sets \fIinterp->result\fR to point to an error message indicating that the \fBreturn\fR, \fBbreak\fR, or \fBcontinue\fR command was invoked in an inappropriate place. This means that top-level applications should never see a return code from \fBTcl_Eval\fR other then \fBTCL_OK\fR or \fBTCL_ERROR\fR. .SH KEYWORDS command, execute, file, global, interpreter, variable