OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / HP / util / HP / man / man3 / Tcl_EvalObjv.3
1 '\"
2 '\" Copyright (c) 1989-1993 The Regents of the University of California.
3 '\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
4 '\"
5 '\" See the file "license.terms" for information on usage and redistribution
6 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7 '\" 
8 '\" RCS: @(#) $Id: Eval.3,v 1.6 2000/04/14 23:01:50 hobbs Exp $
9 '\" 
10 '\" The definitions below are for supplemental macros used in Tcl/Tk
11 '\" manual entries.
12 '\"
13 '\" .AP type name in/out ?indent?
14 '\"     Start paragraph describing an argument to a library procedure.
15 '\"     type is type of argument (int, etc.), in/out is either "in", "out",
16 '\"     or "in/out" to describe whether procedure reads or modifies arg,
17 '\"     and indent is equivalent to second arg of .IP (shouldn't ever be
18 '\"     needed;  use .AS below instead)
19 '\"
20 '\" .AS ?type? ?name?
21 '\"     Give maximum sizes of arguments for setting tab stops.  Type and
22 '\"     name are examples of largest possible arguments that will be passed
23 '\"     to .AP later.  If args are omitted, default tab stops are used.
24 '\"
25 '\" .BS
26 '\"     Start box enclosure.  From here until next .BE, everything will be
27 '\"     enclosed in one large box.
28 '\"
29 '\" .BE
30 '\"     End of box enclosure.
31 '\"
32 '\" .CS
33 '\"     Begin code excerpt.
34 '\"
35 '\" .CE
36 '\"     End code excerpt.
37 '\"
38 '\" .VS ?version? ?br?
39 '\"     Begin vertical sidebar, for use in marking newly-changed parts
40 '\"     of man pages.  The first argument is ignored and used for recording
41 '\"     the version when the .VS was added, so that the sidebars can be
42 '\"     found and removed when they reach a certain age.  If another argument
43 '\"     is present, then a line break is forced before starting the sidebar.
44 '\"
45 '\" .VE
46 '\"     End of vertical sidebar.
47 '\"
48 '\" .DS
49 '\"     Begin an indented unfilled display.
50 '\"
51 '\" .DE
52 '\"     End of indented unfilled display.
53 '\"
54 '\" .SO
55 '\"     Start of list of standard options for a Tk widget.  The
56 '\"     options follow on successive lines, in four columns separated
57 '\"     by tabs.
58 '\"
59 '\" .SE
60 '\"     End of list of standard options for a Tk widget.
61 '\"
62 '\" .OP cmdName dbName dbClass
63 '\"     Start of description of a specific option.  cmdName gives the
64 '\"     option's name as specified in the class command, dbName gives
65 '\"     the option's name in the option database, and dbClass gives
66 '\"     the option's class in the option database.
67 '\"
68 '\" .UL arg1 arg2
69 '\"     Print arg1 underlined, then print arg2 normally.
70 '\"
71 '\" RCS: @(#) $Id: man.macros,v 1.3 1999/04/16 00:46:35 stanton Exp $
72 '\"
73 '\"     # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
74 .if t .wh -1.3i ^B
75 .nr ^l \n(.l
76 .ad b
77 '\"     # Start an argument description
78 .de AP
79 .ie !"\\$4"" .TP \\$4
80 .el \{\
81 .   ie !"\\$2"" .TP \\n()Cu
82 .   el          .TP 15
83 .\}
84 .ta \\n()Au \\n()Bu
85 .ie !"\\$3"" \{\
86 \&\\$1  \\fI\\$2\\fP    (\\$3)
87 .\".b
88 .\}
89 .el \{\
90 .br
91 .ie !"\\$2"" \{\
92 \&\\$1  \\fI\\$2\\fP
93 .\}
94 .el \{\
95 \&\\fI\\$1\\fP
96 .\}
97 .\}
98 ..
99 '\"     # define tabbing values for .AP
100 .de AS
101 .nr )A 10n
102 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
103 .nr )B \\n()Au+15n
104 .\"
105 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
106 .nr )C \\n()Bu+\\w'(in/out)'u+2n
107 ..
108 .AS Tcl_Interp Tcl_CreateInterp in/out
109 '\"     # BS - start boxed text
110 '\"     # ^y = starting y location
111 '\"     # ^b = 1
112 .de BS
113 .br
114 .mk ^y
115 .nr ^b 1u
116 .if n .nf
117 .if n .ti 0
118 .if n \l'\\n(.lu\(ul'
119 .if n .fi
120 ..
121 '\"     # BE - end boxed text (draw box now)
122 .de BE
123 .nf
124 .ti 0
125 .mk ^t
126 .ie n \l'\\n(^lu\(ul'
127 .el \{\
128 .\"     Draw four-sided box normally, but don't draw top of
129 .\"     box if the box started on an earlier page.
130 .ie !\\n(^b-1 \{\
131 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
132 .\}
133 .el \}\
134 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
135 .\}
136 .\}
137 .fi
138 .br
139 .nr ^b 0
140 ..
141 '\"     # VS - start vertical sidebar
142 '\"     # ^Y = starting y location
143 '\"     # ^v = 1 (for troff;  for nroff this doesn't matter)
144 .de VS
145 .if !"\\$2"" .br
146 .mk ^Y
147 .ie n 'mc \s12\(br\s0
148 .el .nr ^v 1u
149 ..
150 '\"     # VE - end of vertical sidebar
151 .de VE
152 .ie n 'mc
153 .el \{\
154 .ev 2
155 .nf
156 .ti 0
157 .mk ^t
158 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
159 .sp -1
160 .fi
161 .ev
162 .\}
163 .nr ^v 0
164 ..
165 '\"     # Special macro to handle page bottom:  finish off current
166 '\"     # box/sidebar if in box/sidebar mode, then invoked standard
167 '\"     # page bottom macro.
168 .de ^B
169 .ev 2
170 'ti 0
171 'nf
172 .mk ^t
173 .if \\n(^b \{\
174 .\"     Draw three-sided box if this is the box's first page,
175 .\"     draw two sides but no top otherwise.
176 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
177 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
178 .\}
179 .if \\n(^v \{\
180 .nr ^x \\n(^tu+1v-\\n(^Yu
181 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
182 .\}
183 .bp
184 'fi
185 .ev
186 .if \\n(^b \{\
187 .mk ^y
188 .nr ^b 2
189 .\}
190 .if \\n(^v \{\
191 .mk ^Y
192 .\}
193 ..
194 '\"     # DS - begin display
195 .de DS
196 .RS
197 .nf
198 .sp
199 ..
200 '\"     # DE - end display
201 .de DE
202 .fi
203 .RE
204 .sp
205 ..
206 '\"     # SO - start of list of standard options
207 .de SO
208 .SH "STANDARD OPTIONS"
209 .LP
210 .nf
211 .ta 4c 8c 12c
212 .ft B
213 ..
214 '\"     # SE - end of list of standard options
215 .de SE
216 .fi
217 .ft R
218 .LP
219 See the \\fBoptions\\fR manual entry for details on the standard options.
220 ..
221 '\"     # OP - start of full description for a single option
222 .de OP
223 .LP
224 .nf
225 .ta 4c
226 Command-Line Name:      \\fB\\$1\\fR
227 Database Name:  \\fB\\$2\\fR
228 Database Class: \\fB\\$3\\fR
229 .fi
230 .IP
231 ..
232 '\"     # CS - begin code excerpt
233 .de CS
234 .RS
235 .nf
236 .ta .25i .5i .75i 1i
237 ..
238 '\"     # CE - end code excerpt
239 .de CE
240 .fi
241 .RE
242 ..
243 .de UL
244 \\$1\l'|0\(ul'\\$2
245 ..
246 .TH Tcl_Eval 3 8.1 Tcl "Tcl Library Procedures"
247 .BS
248 .SH NAME
249 Tcl_EvalObjEx, Tcl_EvalFile, Tcl_EvalObjv, Tcl_Eval, Tcl_EvalEx, Tcl_GlobalEval, Tcl_GlobalEvalObj, Tcl_VarEval, Tcl_VarEvalVA \- execute Tcl scripts
250 .SH SYNOPSIS
251 .nf
252 \fB#include <tcl.h>\fR
253 .sp
254 .VS
255 int
256 \fBTcl_EvalObjEx\fR(\fIinterp, objPtr, flags\fR)
257 .sp
258 int
259 \fBTcl_EvalFile\fR(\fIinterp, fileName\fR)
260 .sp
261 int
262 \fBTcl_EvalObjv\fR(\fIinterp, objc, objv, flags\fR)
263 .sp
264 int
265 \fBTcl_Eval\fR(\fIinterp, script\fR)
266 .sp
267 int
268 \fBTcl_EvalEx\fR(\fIinterp, script, numBytes, flags\fR)
269 .sp
270 int
271 \fBTcl_GlobalEval\fR(\fIinterp, script\fR)
272 .sp
273 int
274 \fBTcl_GlobalEvalObj\fR(\fIinterp, objPtr, flags\fR)
275 .sp
276 int
277 \fBTcl_VarEval\fR(\fIinterp, string, string, ... \fB(char *) NULL\fR)
278 .sp
279 int
280 \fBTcl_VarEvalVA\fR(\fIinterp, argList\fR)
281 .SH ARGUMENTS
282 .AS Tcl_Interp **termPtr;
283 .AP Tcl_Interp *interp in
284 Interpreter in which to execute the script.  The interpreter's result is
285 modified to hold the result or error message from the script.
286 .AP Tcl_Obj *objPtr in
287 A Tcl object containing the script to execute.
288 .AP int flags in
289 ORed combination of flag bits that specify additional options.
290 \fBTCL_EVAL_GLOBAL\fR and \fBTCL_EVAL_DIRECT\fR are currently supported.
291 .AP char *fileName in
292 Name of a file containing a Tcl script.
293 .AP int objc in
294 The number of objects in the array pointed to by \fIobjPtr\fR;
295 this is also the number of words in the command.
296 .AP Tcl_Obj **objv in
297 Points to an array of pointers to objects; each object holds the
298 value of a single word in the command to execute.
299 .AP int numBytes in
300 The number of bytes in \fIscript\fR, not including any
301 null terminating character.  If \-1, then all characters up to the
302 first null byte are used.
303 .AP char *script in
304 Points to first byte of script to execute.  This script must be in
305 writable memory: temporary modifications are made to it during
306 parsing.
307 .AP char *string in
308 String forming part of a Tcl script.
309 .AP va_list argList in
310 An argument list which must have been initialised using
311 \fBTCL_VARARGS_START\fR, and cleared using \fBva_end\fR.
312 .BE
313
314 .SH DESCRIPTION
315 .PP
316 The procedures described here are invoked to execute Tcl scripts in
317 various forms.
318 \fBTcl_EvalObjEx\fR is the core procedure and is used by many of the others.
319 It executes the commands in the script stored in \fIobjPtr\fR
320 until either an error occurs or the end of the script is reached.
321 If this is the first time \fIobjPtr\fR has been executed,
322 its commands are compiled into bytecode instructions
323 which are then executed.  The
324 bytecodes are saved in \fIobjPtr\fR so that the compilation step
325 can be skipped if the object is evaluated again in the future.
326 .PP
327 The return value from \fBTcl_EvalObjEx\fR (and all the other procedures
328 described here) is a Tcl completion code with
329 one of the values \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR,
330 \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR.
331 In addition, a result value or error message is left in \fIinterp\fR's
332 result; it can be retrieved using \fBTcl_GetObjResult\fR.
333 .PP
334 \fBTcl_EvalFile\fR reads the file given by \fIfileName\fR and evaluates
335 its contents as a Tcl script.  It returns the same information as
336 \fBTcl_EvalObjEx\fR.
337 If the file couldn't be read then a Tcl error is returned to describe
338 why the file couldn't be read.
339 .PP
340 \fBTcl_EvalObjv\fR executes a single pre-parsed command instead of a
341 script.  The \fIobjc\fR and \fIobjv\fR arguments contain the values
342 of the words for the Tcl command, one word in each object in
343 \fIobjv\fR.  \fBTcl_EvalObjv\fR evaluates the command and returns
344 a completion code and result just like \fBTcl_EvalObjEx\fR.
345 .PP
346 \fBTcl_Eval\fR is similar to \fBTcl_EvalObjEx\fR except that the script to
347 be executed is supplied as a string instead of an object and no compilation
348 occurs.  The string is parsed and executed directly (using
349 \fBTcl_EvalObjv\fR) instead of compiling it and executing the bytecodes.
350 In situations where it is known that the script will never be executed
351 again, \fBTcl_Eval\fR may be faster than \fBTcl_EvalObjEx\fR.
352 \fBTcl_Eval\fR returns a completion code and result just like
353 \fBTcl_EvalObjEx\fR.  Note: for backward compatibility with versions before
354 Tcl 8.0, \fBTcl_Eval\fR copies the object result in \fIinterp\fR to
355 \fIinterp->result\fR (use is deprecated) where it can be accessed directly.
356 This makes \fBTcl_Eval\fR somewhat slower than \fBTcl_EvalEx\fR, which
357 doesn't do the copy.
358 .PP
359 \fBTcl_EvalEx\fR is an extended version of \fBTcl_Eval\fR that takes
360 additional arguments \fInumBytes\fR and \fIflags\fR.  For the
361 efficiency reason given above, \fBTcl_EvalEx\fR is generally preferred
362 over \fBTcl_Eval\fR.
363 .PP
364 \fBTcl_GlobalEval\fR and \fBTcl_GlobalEvalObj\fR are older procedures
365 that are now deprecated.  They are similar to \fBTcl_EvalEx\fR and
366 \fBTcl_EvalObjEx\fR except that the script is evaluated in the global
367 namespace and its variable context consists of global variables only
368 (it ignores any Tcl procedures that are active).  These functions are
369 equivalent to using the \fBTCL_EVAL_GLOBAL\fR flag (see below).
370 .PP
371 \fBTcl_VarEval\fR takes any number of string arguments
372 of any length, concatenates them into a single string,
373 then calls \fBTcl_Eval\fR to execute that string as a Tcl command.
374 It returns the result of the command and also modifies
375 \fIinterp->result\fR in the same way as \fBTcl_Eval\fR.
376 The last argument to \fBTcl_VarEval\fR must be NULL to indicate the end
377 of arguments.  \fBTcl_VarEval\fR is now deprecated.
378 .PP
379 \fBTcl_VarEvalVA\fR is the same as \fBTcl_VarEval\fR except that
380 instead of taking a variable number of arguments it takes an argument
381 list. Like \fBTcl_VarEval\fR, \fBTcl_VarEvalVA\fR is deprecated.
382
383 .SH "FLAG BITS"
384 Any ORed combination of the following values may be used for the
385 \fIflags\fR argument to procedures such as \fBTcl_EvalObjEx\fR:
386 .TP 23
387 \fBTCL_EVAL_DIRECT\fR
388 This flag is only used by \fBTcl_EvalObjEx\fR; it is ignored by
389 other procedures.  If this flag bit is set, the script is not
390 compiled to bytecodes; instead it is executed directly
391 as is done by \fBTcl_EvalEx\fR.  The
392 \fBTCL_EVAL_DIRECT\fR flag is useful in situations where the
393 contents of an object are going to change immediately, so the
394 bytecodes won't be reused in a future execution.  In this case,
395 it's faster to execute the script directly.
396 .TP 23
397 \fBTCL_EVAL_GLOBAL\fR
398 If this flag is set, the script is processed at global level.  This
399 means that it is evaluated in the global namespace and its variable
400 context consists of global variables only (it ignores any Tcl
401 procedures at are active).
402
403 .SH "MISCELLANEOUS DETAILS"
404 .PP
405 During the processing of a Tcl command it is legal to make nested
406 calls to evaluate other commands (this is how procedures and
407 some control structures are implemented).
408 If a code other than \fBTCL_OK\fR is returned
409 from a nested \fBTcl_EvalObjEx\fR invocation,
410 then the caller should normally return immediately,
411 passing that same return code back to its caller,
412 and so on until the top-level application is reached.
413 A few commands, like \fBfor\fR, will check for certain
414 return codes, like \fBTCL_BREAK\fR and \fBTCL_CONTINUE\fR, and process them
415 specially without returning.
416 .PP
417 \fBTcl_EvalObjEx\fR keeps track of how many nested \fBTcl_EvalObjEx\fR
418 invocations are in progress for \fIinterp\fR.
419 If a code of \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR is
420 about to be returned from the topmost \fBTcl_EvalObjEx\fR
421 invocation for \fIinterp\fR,
422 it converts the return code to \fBTCL_ERROR\fR
423 and sets \fIinterp\fR's result to an error message indicating that
424 the \fBreturn\fR, \fBbreak\fR, or \fBcontinue\fR command was
425 invoked in an inappropriate place.
426 This means that top-level applications should never see a return code
427 from \fBTcl_EvalObjEx\fR other then \fBTCL_OK\fR or \fBTCL_ERROR\fR.
428 .VE
429
430 .SH KEYWORDS
431 execute, file, global, object, result, script