Eval.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:8k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1989-1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1997 Sun Microsystems, Inc.
  4. '" Copyright (c) 2000 Scriptics Corporation.
  5. '"
  6. '" See the file "license.terms" for information on usage and redistribution
  7. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  8. '" 
  9. '" RCS: @(#) $Id: Eval.3,v 1.12.2.3 2003/07/18 16:56:24 dgp Exp $
  10. '" 
  11. .so man.macros
  12. .TH Tcl_Eval 3 8.1 Tcl "Tcl Library Procedures"
  13. .BS
  14. .SH NAME
  15. Tcl_EvalObjEx, Tcl_EvalFile, Tcl_EvalObjv, Tcl_Eval, Tcl_EvalEx, Tcl_GlobalEval, Tcl_GlobalEvalObj, Tcl_VarEval, Tcl_VarEvalVA - execute Tcl scripts
  16. .SH SYNOPSIS
  17. .nf
  18. fB#include <tcl.h>fR
  19. .sp
  20. .VS
  21. int
  22. fBTcl_EvalObjExfR(fIinterp, objPtr, flagsfR)
  23. .sp
  24. int
  25. fBTcl_EvalFilefR(fIinterp, fileNamefR)
  26. .sp
  27. int
  28. fBTcl_EvalObjvfR(fIinterp, objc, objv, flagsfR)
  29. .sp
  30. int
  31. fBTcl_EvalfR(fIinterp, scriptfR)
  32. .sp
  33. int
  34. fBTcl_EvalExfR(fIinterp, script, numBytes, flagsfR)
  35. .sp
  36. int
  37. fBTcl_GlobalEvalfR(fIinterp, scriptfR)
  38. .sp
  39. int
  40. fBTcl_GlobalEvalObjfR(fIinterp, objPtrfR)
  41. .sp
  42. int
  43. fBTcl_VarEvalfR(fIinterp, string, string, ... fB(char *) NULLfR)
  44. .sp
  45. int
  46. fBTcl_VarEvalVAfR(fIinterp, argListfR)
  47. .SH ARGUMENTS
  48. .AS Tcl_Interp **termPtr;
  49. .AP Tcl_Interp *interp in
  50. Interpreter in which to execute the script.  The interpreter's result is
  51. modified to hold the result or error message from the script.
  52. .AP Tcl_Obj *objPtr in
  53. A Tcl object containing the script to execute.
  54. .AP int flags in
  55. ORed combination of flag bits that specify additional options.
  56. fBTCL_EVAL_GLOBALfR and fBTCL_EVAL_DIRECTfR are currently supported.
  57. .AP "CONST char" *fileName in
  58. Name of a file containing a Tcl script.
  59. .AP int objc in
  60. The number of objects in the array pointed to by fIobjPtrfR;
  61. this is also the number of words in the command.
  62. .AP Tcl_Obj **objv in
  63. Points to an array of pointers to objects; each object holds the
  64. value of a single word in the command to execute.
  65. .AP int numBytes in
  66. The number of bytes in fIscriptfR, not including any
  67. null terminating character.  If -1, then all characters up to the
  68. first null byte are used.
  69. .AP "CONST char" *script in
  70. Points to first byte of script to execute (null-terminated and UTF-8).
  71. .AP char *string in
  72. String forming part of a Tcl script.
  73. .AP va_list argList in
  74. An argument list which must have been initialised using
  75. fBTCL_VARARGS_STARTfR, and cleared using fBva_endfR.
  76. .BE
  77. .SH DESCRIPTION
  78. .PP
  79. The procedures described here are invoked to execute Tcl scripts in
  80. various forms.
  81. fBTcl_EvalObjExfR is the core procedure and is used by many of the others.
  82. It executes the commands in the script stored in fIobjPtrfR
  83. until either an error occurs or the end of the script is reached.
  84. If this is the first time fIobjPtrfR has been executed,
  85. its commands are compiled into bytecode instructions
  86. which are then executed.  The
  87. bytecodes are saved in fIobjPtrfR so that the compilation step
  88. can be skipped if the object is evaluated again in the future.
  89. .PP
  90. The return value from fBTcl_EvalObjExfR (and all the other procedures
  91. described here) is a Tcl completion code with
  92. one of the values fBTCL_OKfR, fBTCL_ERRORfR, fBTCL_RETURNfR,
  93. fBTCL_BREAKfR, or fBTCL_CONTINUEfR, or possibly some other
  94. integer value originating in an extension.
  95. In addition, a result value or error message is left in fIinterpfR's
  96. result; it can be retrieved using fBTcl_GetObjResultfR.
  97. .PP
  98. fBTcl_EvalFilefR reads the file given by fIfileNamefR and evaluates
  99. its contents as a Tcl script.  It returns the same information as
  100. fBTcl_EvalObjExfR.
  101. If the file couldn't be read then a Tcl error is returned to describe
  102. why the file couldn't be read.
  103. .VS 8.4
  104. The eofchar for files is '\32' (^Z) for all platforms.
  105. If you require a ``^Z'' in code for string comparison, you can use
  106. ``\032'' or ``\u001a'', which will be safely substituted by the Tcl
  107. interpreter into ``^Z''.
  108. .VE 8.4
  109. .PP
  110. fBTcl_EvalObjvfR executes a single pre-parsed command instead of a
  111. script.  The fIobjcfR and fIobjvfR arguments contain the values
  112. of the words for the Tcl command, one word in each object in
  113. fIobjvfR.  fBTcl_EvalObjvfR evaluates the command and returns
  114. a completion code and result just like fBTcl_EvalObjExfR.
  115. .PP
  116. fBTcl_EvalfR is similar to fBTcl_EvalObjExfR except that the script to
  117. be executed is supplied as a string instead of an object and no compilation
  118. occurs.  The string should be a proper UTF-8 string as converted by
  119. fBTcl_ExternalToUtfDStringfR or fBTcl_ExternalToUtffR when it is known
  120. to possibly contain upper ASCII characters who's possible combinations
  121. might be a UTF-8 special code.  The string is parsed and executed directly
  122. (using fBTcl_EvalObjvfR) instead of compiling it and executing the
  123. bytecodes.  In situations where it is known that the script will never be
  124. executed again, fBTcl_EvalfR may be faster than fBTcl_EvalObjExfR.
  125.  fBTcl_EvalfR returns a completion code and result just like 
  126. fBTcl_EvalObjExfR.  Note: for backward compatibility with versions before
  127. Tcl 8.0, fBTcl_EvalfR copies the object result in fIinterpfR to
  128. fIinterp->resultfR (use is deprecated) where it can be accessed directly.
  129.  This makes fBTcl_EvalfR somewhat slower than fBTcl_EvalExfR, which
  130. doesn't do the copy.
  131. .PP
  132. fBTcl_EvalExfR is an extended version of fBTcl_EvalfR that takes
  133. additional arguments fInumBytesfR and fIflagsfR.  For the
  134. efficiency reason given above, fBTcl_EvalExfR is generally preferred
  135. over fBTcl_EvalfR.
  136. .PP
  137. fBTcl_GlobalEvalfR and fBTcl_GlobalEvalObjfR are older procedures
  138. that are now deprecated.  They are similar to fBTcl_EvalExfR and
  139. fBTcl_EvalObjExfR except that the script is evaluated in the global
  140. namespace and its variable context consists of global variables only
  141. (it ignores any Tcl procedures that are active).  These functions are
  142. equivalent to using the fBTCL_EVAL_GLOBALfR flag (see below).
  143. .PP
  144. fBTcl_VarEvalfR takes any number of string arguments
  145. of any length, concatenates them into a single string,
  146. then calls fBTcl_EvalfR to execute that string as a Tcl command.
  147. It returns the result of the command and also modifies
  148. fIinterp->resultfR in the same way as fBTcl_EvalfR.
  149. The last argument to fBTcl_VarEvalfR must be NULL to indicate the end
  150. of arguments.  fBTcl_VarEvalfR is now deprecated.
  151. .PP
  152. fBTcl_VarEvalVAfR is the same as fBTcl_VarEvalfR except that
  153. instead of taking a variable number of arguments it takes an argument
  154. list. Like fBTcl_VarEvalfR, fBTcl_VarEvalVAfR is deprecated.
  155. .SH "FLAG BITS"
  156. Any ORed combination of the following values may be used for the
  157. fIflagsfR argument to procedures such as fBTcl_EvalObjExfR:
  158. .TP 23
  159. fBTCL_EVAL_DIRECTfR
  160. This flag is only used by fBTcl_EvalObjExfR; it is ignored by
  161. other procedures.  If this flag bit is set, the script is not
  162. compiled to bytecodes; instead it is executed directly
  163. as is done by fBTcl_EvalExfR.  The
  164. fBTCL_EVAL_DIRECTfR flag is useful in situations where the
  165. contents of an object are going to change immediately, so the
  166. bytecodes won't be reused in a future execution.  In this case,
  167. it's faster to execute the script directly.
  168. .TP 23
  169. fBTCL_EVAL_GLOBALfR
  170. If this flag is set, the script is processed at global level.  This
  171. means that it is evaluated in the global namespace and its variable
  172. context consists of global variables only (it ignores any Tcl
  173. procedures at are active).
  174. .SH "MISCELLANEOUS DETAILS"
  175. .PP
  176. During the processing of a Tcl command it is legal to make nested
  177. calls to evaluate other commands (this is how procedures and
  178. some control structures are implemented).
  179. If a code other than fBTCL_OKfR is returned
  180. from a nested fBTcl_EvalObjExfR invocation,
  181. then the caller should normally return immediately,
  182. passing that same return code back to its caller,
  183. and so on until the top-level application is reached.
  184. A few commands, like fBforfR, will check for certain
  185. return codes, like fBTCL_BREAKfR and fBTCL_CONTINUEfR, and process them
  186. specially without returning.
  187. .PP
  188. fBTcl_EvalObjExfR keeps track of how many nested fBTcl_EvalObjExfR
  189. invocations are in progress for fIinterpfR.
  190. If a code of fBTCL_RETURNfR, fBTCL_BREAKfR, or fBTCL_CONTINUEfR is
  191. about to be returned from the topmost fBTcl_EvalObjExfR
  192. invocation for fIinterpfR,
  193. it converts the return code to fBTCL_ERRORfR
  194. and sets fIinterpfR's result to an error message indicating that
  195. the fBreturnfR, fBbreakfR, or fBcontinuefR command was
  196. invoked in an inappropriate place.
  197. This means that top-level applications should never see a return code
  198. from fBTcl_EvalObjExfR other then fBTCL_OKfR or fBTCL_ERRORfR.
  199. .VE
  200. .SH KEYWORDS
  201. execute, file, global, object, result, script