Eval


     Confidential.
      *---------
     --------------------------------------------------------------------
      */
















































     _________________________________________________________________

     NAME
          Tcl_Eval,  Tcl_VarEval,   Tcl_EvalFile,   Tcl_GlobalEval   -
          execute Tcl commands

     SYNOPSIS
          #include <tcl.h>

          int
          Tcl_Eval(interp, cmd)                                         |

          int
          Tcl_VarEval(interp, string, string, ... (char *) NULL)

          int
          Tcl_EvalFile(interp, fileName)

          int
          Tcl_GlobalEval(interp, cmd)

     ARGUMENTS
          Tcl_Interp   *interp      (in)      Interpreter in which  to
                                              execute   the   command.
                                              String  result  will  be
                                              stored     in    interp-
                                              >result.

          char         *cmd         (in)      Command (or sequence  of
                                              commands)   to  execute.
                                              Must  be   in   writable
                                              memory  (Tcl_Eval  makes
                                              temporary  modifications
                                              to the command).

          char         *string      (in)      String forming  part  of
                                              Tcl command.

          char         *fileName    (in)      Name of file  containing
                                              Tcl command string.
     _________________________________________________________________


     DESCRIPTION
          All four of these procedures execute Tcl commands.  Tcl_Eval
          is  the  core  procedure:   it  parses commands from cmd and
          executes them in order until either an error  occurs  or  it  |
          reaches  the  end  of  the  string.   The  return value from
          Tcl_Eval is one of the Tcl return codes  TCL_OK,  TCL_ERROR,
          TCL_RETURN,  TCL_BREAK,  or TCL_CONTINUE, and interp->result
          will point to a string with additional  information  (result
          value   or   error   message).    This   return  information
          corresponds to the last command executed from cmd.

          Tcl_VarEval takes any number  of  string  arguments  of  any
          length,  concatenates  them into a single string, then calls
          Tcl_Eval to execute  that  string  as  a  Tcl  command.   It
          returns  the result of the command and also modifies interp-
          >result in the usual fashion for  Tcl  commands.   The  last
          argument  to Tcl_VarEval must be NULL to indicate the end of
          arguments.

          Tcl_EvalFile reads the file given by fileName and  evaluates
          its  contents  as  a  Tcl  command  by calling Tcl_Eval.  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.

          Tcl_GlobalEval  is  similar  to  Tcl_Eval  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
          ``uplevel 0''.

          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  TCL_OK is returned from a nested Tcl_Eval
          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 for, will check for certain
          return codes, like TCL_BREAK and TCL_CONTINUE,  and  process
          them specially without returning.

          Tcl_Eval keeps track of how many nested Tcl_Eval invocations
          are  in  progress  for  interp.   If  a  code of TCL_RETURN,
          TCL_BREAK, or TCL_CONTINUE is about to be returned from  the
          topmost   Tcl_Eval  invocation  for  interp,  then  Tcl_Eval
          converts the return  code  to  TCL_ERROR  and  sets  interp-
          >result  to  point  to  an error message indicating that the
          return,  break,  or  continue  command  was  invoked  in  an
          inappropriate place.  This means that top-level applications
          should never see a return  code  from  Tcl_Eval  other  then
          TCL_OK or TCL_ERROR.


     KEYWORDS
          command, execute, file, global, interpreter, variable