trusty (3) Tcl_EvalFile.3tcl.gz

Provided by: tcl8.4-doc_8.4.20-7_all bug

NAME

       Tcl_EvalObjEx,  Tcl_EvalFile,  Tcl_EvalObjv,  Tcl_Eval,  Tcl_EvalEx,  Tcl_GlobalEval,  Tcl_GlobalEvalObj,
       Tcl_VarEval, Tcl_VarEvalVA - execute Tcl scripts

SYNOPSIS

       #include <tcl.h>

       int                                                                                                       │
       Tcl_EvalObjEx(interp, objPtr, flags)                                                                      │

       int                                                                                                       │
       Tcl_EvalFile(interp, fileName)                                                                            │

       int                                                                                                       │
       Tcl_EvalObjv(interp, objc, objv, flags)                                                                   │

       int                                                                                                       │
       Tcl_Eval(interp, script)                                                                                  │

       int                                                                                                       │
       Tcl_EvalEx(interp, script, numBytes, flags)                                                               │

       int                                                                                                       │
       Tcl_GlobalEval(interp, script)                                                                            │

       int                                                                                                       │
       Tcl_GlobalEvalObj(interp, objPtr)                                                                         │

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

       int                                                                                                       │
       Tcl_VarEvalVA(interp, argList)                                                                            │

ARGUMENTS                                                                                                        │
       Tcl_Interp   *interp      (in)                                                                            │
                                           Interpreter in which to execute the script.  The interpreter's result │
                                           is modified to hold the result or error message from the script.      │

       Tcl_Obj      *objPtr      (in)                                                                            │
                                           A Tcl object containing the script to execute.                        │

       int          flags        (in)                                                                            │
                                           ORed  combination  of  flag  bits  that  specify  additional options. │
                                           TCL_EVAL_GLOBAL and TCL_EVAL_DIRECT are currently supported.          │

       CONST char   *fileName    (in)                                                                            │
                                           Name of a file containing a Tcl script.                               │

       int          objc         (in)                                                                            │
                                           The number of objects in the array pointed to by objPtr; this is also │
                                           the number of words in the command.                                   │

       Tcl_Obj      **objv       (in)                                                                            │
                                           Points  to  an  array  of  pointers to objects; each object holds the │
                                           value of a single word in the command to execute.                     │

       int          numBytes     (in)                                                                            │
                                           The number of bytes in script, not  including  any  null  terminating │
                                           character.   If -1, then all characters up to the first null byte are │
                                           used.                                                                 │

       CONST char   *script      (in)                                                                            │
                                           Points to first  byte  of  script  to  execute  (null-terminated  and │
                                           UTF-8).                                                               │

       char         *string      (in)                                                                            │
                                           String forming part of a Tcl script.                                  │

       va_list      argList      (in)                                                                            │
                                           An   argument   list   which   must   have   been  initialised  using │
                                           TCL_VARARGS_START, and cleared using va_end.                          │
DESCRIPTION                                                                                                      │
       The procedures described here are invoked to execute Tcl scripts in various forms.  Tcl_EvalObjEx is  the │
       core  procedure  and  is  used  by  many of the others.  It executes the commands in the script stored in │
       objPtr until either an error occurs or the end of the script is reached.   If  this  is  the  first  time │
       objPtr  has  been executed, its commands are compiled into bytecode instructions which are then executed. │
       The bytecodes are saved in objPtr so that the compilation step can be skipped if the object is  evaluated │
       again in the future.                                                                                      │

       The  return  value  from  Tcl_EvalObjEx (and all the other procedures described here) is a Tcl completion │
       code with one of the values TCL_OK, TCL_ERROR, TCL_RETURN, TCL_BREAK, or TCL_CONTINUE, or  possibly  some │
       other integer value originating in an extension.  In addition, a result value or error message is left in │
       interp's result; it can be retrieved using Tcl_GetObjResult.                                              │

       Tcl_EvalFile reads the file given by fileName and evaluates its contents as a Tcl script.  It returns the │
       same information as Tcl_EvalObjEx.  If the file couldn't be read then a Tcl error is returned to describe │
       why the file couldn't be read.  The eofchar for files is '\32' (^Z) for all platforms.  If you require  a │
       ``^Z''  in  code  for  string  comparison,  you  can  use  ``\032''  or  ``\u001a'', which will be safely │
       substituted by the Tcl interpreter into ``^Z''.

       Tcl_EvalObjv executes a single pre-parsed command instead of a  script.   The  objc  and  objv  arguments
       contain  the  values  of  the  words  for the Tcl command, one word in each object in objv.  Tcl_EvalObjv
       evaluates the command and returns a completion code and result just like Tcl_EvalObjEx.

       Tcl_Eval is similar to Tcl_EvalObjEx except that the script to  be  executed  is  supplied  as  a  string
       instead  of an object and no compilation occurs.  The string should be a proper UTF-8 string as converted
       by Tcl_ExternalToUtfDString or Tcl_ExternalToUtf when  it  is  known  to  possibly  contain  upper  ASCII
       characters  who's possible combinations might be a UTF-8 special code.  The string is parsed and executed
       directly (using Tcl_EvalObjv) instead of compiling it and executing the bytecodes.  In  situations  where
       it is known that the script will never be executed again, Tcl_Eval may be faster than Tcl_EvalObjEx.
        Tcl_Eval returns a completion code and result just like Tcl_EvalObjEx.  Note: for backward compatibility
       with versions before Tcl 8.0, Tcl_Eval copies the object result  in  interp  to  interp->result  (use  is
       deprecated) where it can be accessed directly.
        This makes Tcl_Eval somewhat slower than Tcl_EvalEx, which doesn't do the copy.

       Tcl_EvalEx  is  an  extended version of Tcl_Eval that takes additional arguments numBytes and flags.  For
       the efficiency reason given above, Tcl_EvalEx is generally preferred over Tcl_Eval.

       Tcl_GlobalEval and Tcl_GlobalEvalObj are older procedures that are now deprecated.  They are  similar  to
       Tcl_EvalEx and Tcl_EvalObjEx except that the script is evaluated in the global namespace and its variable
       context consists of global variables only (it  ignores  any  Tcl  procedures  that  are  active).   These
       functions are equivalent to using the TCL_EVAL_GLOBAL flag (see below).

       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 same way as Tcl_Eval.  The last argument to Tcl_VarEval must be NULL
       to indicate the end of arguments.  Tcl_VarEval is now deprecated.

       Tcl_VarEvalVA is the same as Tcl_VarEval except that instead of taking a variable number of arguments  it
       takes an argument list. Like Tcl_VarEval, Tcl_VarEvalVA is deprecated.

FLAG BITS

       Any  ORed  combination  of  the following values may be used for the flags argument to procedures such as
       Tcl_EvalObjEx:

       TCL_EVAL_DIRECT        This flag is only used by Tcl_EvalObjEx; it is ignored by  other  procedures.   If
                              this  flag  bit  is  set,  the  script is not compiled to bytecodes; instead it is
                              executed directly as is done by Tcl_EvalEx.  The TCL_EVAL_DIRECT flag is useful in
                              situations where the contents of an object are going to change immediately, so the
                              bytecodes won't be reused in a future execution.  In this  case,  it's  faster  to
                              execute the script directly.

       TCL_EVAL_GLOBAL        If  this flag is set, the script is processed at global level.  This means that it
                              is evaluated in the global namespace and its variable context consists  of  global
                              variables only (it ignores any Tcl procedures at are active).

MISCELLANEOUS DETAILS

       During  the processing of a Tcl command it is legal to make nested calls to evaluate other commands (this
       is how procedures and some control structures are implemented).  If a code other than TCL_OK is  returned
       from  a nested Tcl_EvalObjEx 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_EvalObjEx keeps track of how many nested Tcl_EvalObjEx 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_EvalObjEx
       invocation for interp, it converts the return code to TCL_ERROR and sets  interp's  result  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_EvalObjEx  other  then
       TCL_OK or TCL_ERROR.

KEYWORDS

       execute, file, global, object, result, script