Attachment "patch455151.txt" to
ticket [455151ffff]
added by
msofer
2001-09-13 01:21:47.
0000: 49 6e 64 65 78 3a 20 43 68 61 6e 67 65 4c 6f 67 Index: ChangeLog
0010: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
0060: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
0070: 43 68 61 6e 67 65 4c 6f 67 2c 76 0a 72 65 74 72 ChangeLog,v.retr
0080: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 ieving revision
0090: 31 2e 36 30 33 0a 64 69 66 66 20 2d 75 20 2d 72 1.603.diff -u -r
00a0: 31 2e 36 30 33 20 43 68 61 6e 67 65 4c 6f 67 0a 1.603 ChangeLog.
00b0: 2d 2d 2d 20 43 68 61 6e 67 65 4c 6f 67 09 32 30 --- ChangeLog.20
00c0: 30 31 2f 30 39 2f 31 32 20 31 36 3a 33 32 3a 32 01/09/12 16:32:2
00d0: 31 09 31 2e 36 30 33 0a 2b 2b 2b 20 43 68 61 6e 1.1.603.+++ Chan
00e0: 67 65 4c 6f 67 09 32 30 30 31 2f 30 39 2f 31 32 geLog.2001/09/12
00f0: 20 31 38 3a 31 34 3a 30 35 0a 40 40 20 2d 31 2c 18:14:05.@@ -1,
0100: 33 20 2b 31 2c 31 37 20 40 40 0a 2b 32 30 30 31 3 +1,17 @@.+2001
0110: 2d 30 38 2d 32 38 20 20 4d 69 67 75 65 6c 20 53 -08-28 Miguel S
0120: 6f 66 65 72 20 20 3c 6d 73 6f 66 65 72 40 75 73 ofer <msofer@us
0130: 65 72 73 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e ers.sourceforge.
0140: 6e 65 74 3e 0a 2b 20 0a 2b 20 20 09 2a 20 64 6f net>.+ .+ .* do
0150: 63 2f 50 61 72 73 65 43 6d 64 2e 33 3a 20 0a 2b c/ParseCmd.3: .+
0160: 20 09 2a 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e .* generic/tcl.
0170: 64 65 63 6c 73 3a 0a 2b 20 09 2a 20 67 65 6e 65 decls:.+ .* gene
0180: 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 20 28 ric/tclCmdMZ.c (
0190: 54 63 6c 5f 53 75 62 73 74 4f 62 6a 43 6d 64 29 Tcl_SubstObjCmd)
01a0: 3a 0a 2b 20 09 2a 20 67 65 6e 65 72 69 63 2f 74 :.+ .* generic/t
01b0: 63 6c 44 65 63 6c 73 2e 68 3a 0a 2b 20 09 2a 20 clDecls.h:.+ .*
01c0: 67 65 6e 65 72 69 63 2f 74 63 6c 50 61 72 73 65 generic/tclParse
01d0: 2e 63 3a 0a 2b 20 09 2a 20 67 65 6e 65 72 69 63 .c:.+ .* generic
01e0: 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 3a 0a /tclStubInit.c:.
01f0: 2b 20 09 2a 20 74 65 73 74 73 2f 70 61 72 73 65 + .* tests/parse
0200: 2e 74 65 73 74 3a 20 44 65 70 72 65 63 61 74 65 .test: Deprecate
0210: 20 74 68 65 20 75 73 65 20 6f 66 20 54 63 6c 5f the use of Tcl_
0220: 45 76 61 6c 54 6f 6b 65 6e 73 2c 20 72 65 70 6c EvalTokens, repl
0230: 61 63 65 64 0a 2b 20 09 62 79 20 74 68 65 20 6e aced.+ .by the n
0240: 65 77 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e ew Tcl_EvalToken
0250: 73 53 74 61 6e 64 61 72 64 2e 20 54 68 65 20 6e sStandard. The n
0260: 65 77 20 66 75 6e 63 74 69 6f 6e 20 70 65 72 66 ew function perf
0270: 6f 72 6d 73 20 74 68 65 0a 2b 20 09 73 61 6d 65 orms the.+ .same
0280: 20 64 75 74 69 65 73 20 62 75 74 20 61 64 68 65 duties but adhe
0290: 72 65 73 20 74 6f 20 74 68 65 20 73 74 61 6e 64 res to the stand
02a0: 61 72 64 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 ard return conve
02b0: 6e 74 69 6f 6e 20 66 6f 72 20 54 63 6c 0a 2b 20 ntion for Tcl.+
02c0: 09 65 76 61 6c 75 61 74 69 6f 6e 73 3b 20 74 68 .evaluations; th
02d0: 65 20 64 65 70 72 65 63 61 74 65 64 20 66 75 6e e deprecated fun
02e0: 63 74 69 6f 6e 20 63 6f 75 6c 64 20 6f 6e 6c 79 ction could only
02f0: 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 20 6f return TCL_OK o
0300: 72 0a 2b 20 09 54 43 4c 5f 45 52 52 4f 52 2c 20 r.+ .TCL_ERROR,
0310: 77 68 69 63 68 20 63 61 75 73 65 64 20 5b 42 75 which caused [Bu
0320: 67 3a 20 32 31 39 33 38 34 5d 20 61 6e 64 20 5b g: 219384] and [
0330: 42 75 67 3a 20 34 35 35 31 35 31 5d 2e 0a 2b 20 Bug: 455151]..+
0340: 0a 20 32 30 30 31 2d 30 39 2d 31 32 20 20 4d 69 . 2001-09-12 Mi
0350: 67 75 65 6c 20 53 6f 66 65 72 20 20 3c 6d 73 6f guel Sofer <mso
0360: 66 65 72 40 75 73 65 72 73 2e 73 6f 75 72 63 65 [email protected]
0370: 66 6f 72 67 65 2e 6e 65 74 3e 0a 20 0a 20 09 2a forge.net>. . .*
0380: 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 generic/tcl.dec
0390: 6c 73 3a 20 72 65 73 65 72 76 65 64 20 73 74 75 ls: reserved stu
03a0: 62 20 23 34 38 31 20 66 6f 72 20 74 68 65 20 69 b #481 for the i
03b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 mplementation of
03c0: 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 50 61 72 73 .Index: doc/Pars
03d0: 65 43 6d 64 2e 33 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d eCmd.3.=========
03e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0400: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0410: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0420: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0430: 6c 2f 74 63 6c 2f 64 6f 63 2f 50 61 72 73 65 43 l/tcl/doc/ParseC
0440: 6d 64 2e 33 2c 76 0a 72 65 74 72 69 65 76 69 6e md.3,v.retrievin
0450: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34 0a 64 g revision 1.4.d
0460: 69 66 66 20 2d 75 20 2d 72 31 2e 34 20 50 61 72 iff -u -r1.4 Par
0470: 73 65 43 6d 64 2e 33 0a 2d 2d 2d 20 64 6f 63 2f seCmd.3.--- doc/
0480: 50 61 72 73 65 43 6d 64 2e 33 09 32 30 30 30 2f ParseCmd.3.2000/
0490: 30 34 2f 32 34 20 32 33 3a 35 33 3a 30 33 09 31 04/24 23:53:03.1
04a0: 2e 34 0a 2b 2b 2b 20 64 6f 63 2f 50 61 72 73 65 .4.+++ doc/Parse
04b0: 43 6d 64 2e 33 09 32 30 30 31 2f 30 39 2f 31 32 Cmd.3.2001/09/12
04c0: 20 31 38 3a 31 34 3a 30 36 0a 40 40 20 2d 31 30 18:14:06.@@ -10
04d0: 2c 37 20 2b 31 30 2c 39 20 40 40 0a 20 2e 54 48 ,7 +10,9 @@. .TH
04e0: 20 54 63 6c 5f 50 61 72 73 65 43 6f 6d 6d 61 6e Tcl_ParseComman
04f0: 64 20 33 20 38 2e 33 20 54 63 6c 20 22 54 63 6c d 3 8.3 Tcl "Tcl
0500: 20 4c 69 62 72 61 72 79 20 50 72 6f 63 65 64 75 Library Procedu
0510: 72 65 73 22 0a 20 2e 42 53 0a 20 2e 53 48 20 4e res". .BS. .SH N
0520: 41 4d 45 0a 2d 54 63 6c 5f 50 61 72 73 65 43 6f AME.-Tcl_ParseCo
0530: 6d 6d 61 6e 64 2c 20 54 63 6c 5f 50 61 72 73 65 mmand, Tcl_Parse
0540: 45 78 70 72 2c 20 54 63 6c 5f 50 61 72 73 65 42 Expr, Tcl_ParseB
0550: 72 61 63 65 73 2c 20 54 63 6c 5f 50 61 72 73 65 races, Tcl_Parse
0560: 51 75 6f 74 65 64 53 74 72 69 6e 67 2c 20 54 63 QuotedString, Tc
0570: 6c 5f 50 61 72 73 65 56 61 72 4e 61 6d 65 2c 20 l_ParseVarName,
0580: 54 63 6c 5f 50 61 72 73 65 56 61 72 2c 20 54 63 Tcl_ParseVar, Tc
0590: 6c 5f 46 72 65 65 50 61 72 73 65 2c 20 54 63 6c l_FreeParse, Tcl
05a0: 5f 45 76 61 6c 54 6f 6b 65 6e 73 20 5c 2d 20 70 _EvalTokens \- p
05b0: 61 72 73 65 20 54 63 6c 20 73 63 72 69 70 74 73 arse Tcl scripts
05c0: 20 61 6e 64 20 65 78 70 72 65 73 73 69 6f 6e 73 and expressions
05d0: 0a 2b 54 63 6c 5f 50 61 72 73 65 43 6f 6d 6d 61 .+Tcl_ParseComma
05e0: 6e 64 2c 20 54 63 6c 5f 50 61 72 73 65 45 78 70 nd, Tcl_ParseExp
05f0: 72 2c 20 54 63 6c 5f 50 61 72 73 65 42 72 61 63 r, Tcl_ParseBrac
0600: 65 73 2c 0a 2b 54 63 6c 5f 50 61 72 73 65 51 75 es,.+Tcl_ParseQu
0610: 6f 74 65 64 53 74 72 69 6e 67 2c 20 54 63 6c 5f otedString, Tcl_
0620: 50 61 72 73 65 56 61 72 4e 61 6d 65 2c 20 54 63 ParseVarName, Tc
0630: 6c 5f 50 61 72 73 65 56 61 72 2c 20 54 63 6c 5f l_ParseVar, Tcl_
0640: 46 72 65 65 50 61 72 73 65 2c 0a 2b 54 63 6c 5f FreeParse,.+Tcl_
0650: 45 76 61 6c 54 6f 6b 65 6e 73 2c 20 42 54 63 6c EvalTokens, BTcl
0660: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 _EvalTokensStand
0670: 61 72 64 20 5c 2d 20 70 61 72 73 65 20 54 63 6c ard \- parse Tcl
0680: 20 73 63 72 69 70 74 73 20 61 6e 64 20 65 78 70 scripts and exp
0690: 72 65 73 73 69 6f 6e 73 0a 20 2e 53 48 20 53 59 ressions. .SH SY
06a0: 4e 4f 50 53 49 53 0a 20 2e 6e 66 0a 20 5c 66 42 NOPSIS. .nf. \fB
06b0: 23 69 6e 63 6c 75 64 65 20 3c 74 63 6c 2e 68 3e #include <tcl.h>
06c0: 5c 66 52 0a 40 40 20 2d 33 37 2c 31 33 20 2b 33 \fR.@@ -37,13 +3
06d0: 39 2c 31 37 20 40 40 0a 20 2e 73 70 0a 20 54 63 9,17 @@. .sp. Tc
06e0: 6c 5f 4f 62 6a 20 2a 0a 20 5c 66 42 54 63 6c 5f l_Obj *. \fBTcl_
06f0: 45 76 61 6c 54 6f 6b 65 6e 73 5c 66 52 28 5c 66 EvalTokens\fR(\f
0700: 49 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 Iinterp, tokenPt
0710: 72 2c 20 6e 75 6d 54 6f 6b 65 6e 73 5c 66 52 29 r, numTokens\fR)
0720: 0a 2b 2e 73 70 0a 2b 54 63 6c 5f 4f 62 6a 20 2a .+.sp.+Tcl_Obj *
0730: 0a 2b 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b .+\fBTcl_EvalTok
0740: 65 6e 73 53 74 61 6e 64 61 72 64 5c 66 52 28 5c ensStandard\fR(\
0750: 66 49 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 50 fIinterp, tokenP
0760: 74 72 2c 20 6e 75 6d 54 6f 6b 65 6e 73 5c 66 52 tr, numTokens\fR
0770: 29 0a 20 2e 53 48 20 41 52 47 55 4d 45 4e 54 53 ). .SH ARGUMENTS
0780: 0a 20 2e 41 53 20 54 63 6c 5f 49 6e 74 65 72 70 . .AS Tcl_Interp
0790: 20 2a 75 73 65 64 50 61 72 73 65 50 74 72 0a 20 *usedParsePtr.
07a0: 2e 41 50 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a .AP Tcl_Interp *
07b0: 69 6e 74 65 72 70 20 6f 75 74 0a 2d 46 6f 72 20 interp out.-For
07c0: 70 72 6f 63 65 64 75 72 65 73 20 6f 74 68 65 72 procedures other
07d0: 20 74 68 61 6e 20 5c 66 42 54 63 6c 5f 46 72 65 than \fBTcl_Fre
07e0: 65 50 61 72 73 65 5c 66 52 20 61 6e 64 20 5c 66 eParse\fR and \f
07f0: 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 5c BTcl_EvalTokens\
0800: 66 52 2c 0a 2d 75 73 65 64 20 6f 6e 6c 79 20 66 fR,.-used only f
0810: 6f 72 20 65 72 72 6f 72 20 72 65 70 6f 72 74 69 or error reporti
0820: 6e 67 3b 0a 2b 46 6f 72 20 70 72 6f 63 65 64 75 ng;.+For procedu
0830: 72 65 73 20 6f 74 68 65 72 20 74 68 61 6e 20 5c res other than \
0840: 66 42 54 63 6c 5f 46 72 65 65 50 61 72 73 65 5c fBTcl_FreeParse\
0850: 66 52 2c 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54 fR, \fBTcl_EvalT
0860: 6f 6b 65 6e 73 5c 66 52 0a 2b 61 6e 64 20 5c 66 okens\fR.+and \f
0870: 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 BTcl_EvalTokensS
0880: 74 61 6e 64 61 72 64 5c 66 52 2c 20 75 73 65 64 tandard\fR, used
0890: 20 6f 6e 6c 79 20 66 6f 72 20 65 72 72 6f 72 20 only for error
08a0: 72 65 70 6f 72 74 69 6e 67 3b 0a 20 69 66 20 4e reporting;. if N
08b0: 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 65 72 72 ULL, then no err
08c0: 6f 72 20 6d 65 73 73 61 67 65 73 20 61 72 65 20 or messages are
08d0: 6c 65 66 74 20 61 66 74 65 72 20 65 72 72 6f 72 left after error
08e0: 73 2e 0a 2d 46 6f 72 20 5c 66 42 54 63 6c 5f 45 s..-For \fBTcl_E
08f0: 76 61 6c 54 6f 6b 65 6e 73 5c 66 52 2c 20 64 65 valTokens\fR, de
0900: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 63 6f 6e termines the con
0910: 74 65 78 74 20 66 6f 72 20 65 76 61 6c 75 61 74 text for evaluat
0920: 69 6e 67 20 74 68 65 0a 2b 46 6f 72 20 5c 66 42 ing the.+For \fB
0930: 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 5c 66 Tcl_EvalTokens\f
0940: 52 20 61 6e 64 20 5c 66 42 54 63 6c 5f 45 76 61 R and \fBTcl_Eva
0950: 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 5c lTokensStandard\
0960: 66 52 2c 0a 2b 64 65 74 65 72 6d 69 6e 65 73 20 fR,.+determines
0970: 74 68 65 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 the context for
0980: 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 0a 20 evaluating the.
0990: 73 63 72 69 70 74 20 61 6e 64 20 61 6c 73 6f 20 script and also
09a0: 69 73 20 75 73 65 64 20 66 6f 72 20 65 72 72 6f is used for erro
09b0: 72 20 72 65 70 6f 72 74 69 6e 67 3b 20 6d 75 73 r reporting; mus
09c0: 74 20 6e 6f 74 20 62 65 20 4e 55 4c 4c 2e 0a 20 t not be NULL..
09d0: 2e 41 50 20 63 68 61 72 20 2a 73 74 72 69 6e 67 .AP char *string
09e0: 20 69 6e 0a 20 50 6f 69 6e 74 65 72 20 74 6f 20 in. Pointer to
09f0: 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20 first character
0a00: 69 6e 20 73 74 72 69 6e 67 20 74 6f 20 70 61 72 in string to par
0a10: 73 65 2e 0a 40 40 20 2d 31 37 38 2c 31 38 20 2b se..@@ -178,18 +
0a20: 31 38 34 2c 32 37 20 40 40 0a 20 73 6f 20 69 66 184,27 @@. so if
0a30: 20 72 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20 repeated calls
0a40: 61 72 65 20 62 65 69 6e 67 20 6d 61 64 65 20 74 are being made t
0a50: 6f 20 61 6e 79 20 6f 66 20 74 68 65 6d 0a 20 74 o any of them. t
0a60: 68 65 6e 20 5c 66 42 54 63 6c 5f 46 72 65 65 50 hen \fBTcl_FreeP
0a70: 61 72 73 65 5c 66 52 20 6d 75 73 74 20 62 65 20 arse\fR must be
0a80: 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 61 66 74 invoked once aft
0a90: 65 72 20 65 61 63 68 20 63 61 6c 6c 2e 0a 20 2e er each call.. .
0aa0: 50 50 0a 2d 5c 66 42 54 63 6c 5f 45 76 61 6c 54 PP.-\fBTcl_EvalT
0ab0: 6f 6b 65 6e 73 5c 66 52 20 65 76 61 6c 75 61 74 okens\fR evaluat
0ac0: 65 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 es a sequence of
0ad0: 20 70 61 72 73 65 20 74 6f 6b 65 6e 73 20 66 72 parse tokens fr
0ae0: 6f 6d 20 61 20 54 63 6c 5f 50 61 72 73 65 0a 2d om a Tcl_Parse.-
0af0: 73 74 72 75 63 74 75 72 65 2e 20 20 54 68 65 20 structure. The
0b00: 74 6f 6b 65 6e 73 20 74 79 70 69 63 61 6c 6c 79 tokens typically
0b10: 20 63 6f 6e 73 69 73 74 0a 2b 5c 66 42 54 63 6c consist.+\fBTcl
0b20: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 _EvalTokensStand
0b30: 61 72 64 5c 66 52 20 65 76 61 6c 75 61 74 65 73 ard\fR evaluates
0b40: 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 70 a sequence of p
0b50: 61 72 73 65 20 74 6f 6b 65 6e 73 20 66 72 6f 6d arse tokens from
0b60: 0a 2b 61 20 54 63 6c 5f 50 61 72 73 65 20 73 74 .+a Tcl_Parse st
0b70: 72 75 63 74 75 72 65 2e 20 20 54 68 65 20 74 6f ructure. The to
0b80: 6b 65 6e 73 20 74 79 70 69 63 61 6c 6c 79 20 63 kens typically c
0b90: 6f 6e 73 69 73 74 0a 20 6f 66 20 61 6c 6c 20 74 onsist. of all t
0ba0: 68 65 20 74 6f 6b 65 6e 73 20 69 6e 20 61 20 77 he tokens in a w
0bb0: 6f 72 64 20 6f 72 20 61 6c 6c 20 74 68 65 20 74 ord or all the t
0bc0: 6f 6b 65 6e 73 20 74 68 61 74 20 6d 61 6b 65 20 okens that make
0bd0: 75 70 20 74 68 65 20 69 6e 64 65 78 20 66 6f 72 up the index for
0be0: 0a 2d 61 20 72 65 66 65 72 65 6e 63 65 20 74 6f .-a reference to
0bf0: 20 61 6e 20 61 72 72 61 79 20 76 61 72 69 61 62 an array variab
0c00: 6c 65 2e 20 20 5c 66 42 54 63 6c 5f 45 76 61 6c le. \fBTcl_Eval
0c10: 54 6f 6b 65 6e 73 5c 66 52 20 70 65 72 66 6f 72 Tokens\fR perfor
0c20: 6d 73 20 74 68 65 0a 2d 73 75 62 73 74 69 74 75 ms the.-substitu
0c30: 74 69 6f 6e 73 20 72 65 71 75 65 73 74 65 64 20 tions requested
0c40: 62 79 20 74 68 65 20 74 6f 6b 65 6e 73 2c 20 63 by the tokens, c
0c50: 6f 6e 63 61 74 65 6e 61 74 65 73 20 74 68 65 0a oncatenates the.
0c60: 2d 72 65 73 75 6c 74 69 6e 67 20 76 61 6c 75 65 -resulting value
0c70: 73 2c 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 s, and returns t
0c80: 68 65 20 72 65 73 75 6c 74 20 69 6e 20 61 20 6e he result in a n
0c90: 65 77 20 54 63 6c 5f 4f 62 6a 2e 20 20 54 68 65 ew Tcl_Obj. The
0ca0: 0a 2d 72 65 66 65 72 65 6e 63 65 20 63 6f 75 6e .-reference coun
0cb0: 74 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 t of the object
0cc0: 72 65 74 75 72 6e 65 64 20 61 73 20 72 65 73 75 returned as resu
0cd0: 6c 74 20 68 61 73 20 62 65 65 6e 0a 2b 61 20 72 lt has been.+a r
0ce0: 65 66 65 72 65 6e 63 65 20 74 6f 20 61 6e 20 61 eference to an a
0cf0: 72 72 61 79 20 76 61 72 69 61 62 6c 65 2e 20 20 rray variable.
0d00: 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e \fBTcl_EvalToken
0d10: 73 53 74 61 6e 64 61 72 64 5c 66 52 20 70 65 72 sStandard\fR per
0d20: 66 6f 72 6d 73 20 74 68 65 0a 2b 73 75 62 73 74 forms the.+subst
0d30: 69 74 75 74 69 6f 6e 73 20 72 65 71 75 65 73 74 itutions request
0d40: 65 64 20 62 79 20 74 68 65 20 74 6f 6b 65 6e 73 ed by the tokens
0d50: 20 61 6e 64 20 63 6f 6e 63 61 74 65 6e 61 74 65 and concatenate
0d60: 73 20 74 68 65 0a 2b 72 65 73 75 6c 74 69 6e 67 s the.+resulting
0d70: 20 76 61 6c 75 65 73 2e 20 0a 2b 54 68 65 20 72 values. .+The r
0d80: 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d eturn value from
0d90: 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 \fBTcl_EvalToke
0da0: 6e 73 53 74 61 6e 64 61 72 64 5c 66 52 20 69 73 nsStandard\fR is
0db0: 20 61 20 54 63 6c 20 63 6f 6d 70 6c 65 74 69 6f a Tcl completio
0dc0: 6e 0a 2b 63 6f 64 65 20 77 69 74 68 20 6f 6e 65 n.+code with one
0dd0: 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 5c of the values \
0de0: 66 42 54 43 4c 5f 4f 4b 5c 66 52 2c 20 5c 66 42 fBTCL_OK\fR, \fB
0df0: 54 43 4c 5f 45 52 52 4f 52 5c 66 52 2c 0a 2b 5c TCL_ERROR\fR,.+\
0e00: 66 42 54 43 4c 5f 52 45 54 55 52 4e 5c 66 52 2c fBTCL_RETURN\fR,
0e10: 20 5c 66 42 54 43 4c 5f 42 52 45 41 4b 5c 66 52 \fBTCL_BREAK\fR
0e20: 2c 20 6f 72 20 5c 66 42 54 43 4c 5f 43 4f 4e 54 , or \fBTCL_CONT
0e30: 49 4e 55 45 5c 66 52 2e 0a 2b 49 6e 20 61 64 64 INUE\fR..+In add
0e40: 69 74 69 6f 6e 2c 20 61 20 72 65 73 75 6c 74 20 ition, a result
0e50: 76 61 6c 75 65 20 6f 72 20 65 72 72 6f 72 20 6d value or error m
0e60: 65 73 73 61 67 65 20 69 73 20 6c 65 66 74 20 69 essage is left i
0e70: 6e 20 5c 66 49 69 6e 74 65 72 70 5c 66 52 27 73 n \fIinterp\fR's
0e80: 0a 2b 72 65 73 75 6c 74 3b 20 69 74 20 63 61 6e .+result; it can
0e90: 20 62 65 20 72 65 74 72 69 65 76 65 64 20 75 73 be retrieved us
0ea0: 69 6e 67 20 5c 66 42 54 63 6c 5f 47 65 74 4f 62 ing \fBTcl_GetOb
0eb0: 6a 52 65 73 75 6c 74 5c 66 52 2e 0a 2b 2e 50 50 jResult\fR..+.PP
0ec0: 0a 2b 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b .+\fBTcl_EvalTok
0ed0: 65 6e 73 5c 66 52 20 64 69 66 66 65 72 73 20 66 ens\fR differs f
0ee0: 72 6f 6d 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54 rom \fBTcl_EvalT
0ef0: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 5c 66 52 okensStandard\fR
0f00: 20 6f 6e 6c 79 20 69 6e 0a 2b 74 68 65 20 72 65 only in.+the re
0f10: 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 turn convention
0f20: 75 73 65 64 3a 20 69 74 20 72 65 74 75 72 6e 73 used: it returns
0f30: 20 74 68 65 20 72 65 73 75 6c 74 20 69 6e 20 61 the result in a
0f40: 20 6e 65 77 20 54 63 6c 5f 4f 62 6a 2e 0a 2b 54 new Tcl_Obj..+T
0f50: 68 65 20 72 65 66 65 72 65 6e 63 65 20 63 6f 75 he reference cou
0f60: 6e 74 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 nt of the object
0f70: 20 72 65 74 75 72 6e 65 64 20 61 73 20 72 65 73 returned as res
0f80: 75 6c 74 20 68 61 73 20 62 65 65 6e 0a 20 69 6e ult has been. in
0f90: 63 72 65 6d 65 6e 74 65 64 2c 20 73 6f 20 74 68 cremented, so th
0fa0: 65 20 63 61 6c 6c 65 72 20 6d 75 73 74 0a 20 69 e caller must. i
0fb0: 6e 76 6f 6b 65 20 5c 66 42 54 63 6c 5f 44 65 63 nvoke \fBTcl_Dec
0fc0: 72 52 65 66 43 6f 75 6e 74 5c 66 52 20 77 68 65 rRefCount\fR whe
0fd0: 6e 20 69 74 20 69 73 20 66 69 6e 69 73 68 65 64 n it is finished
0fe0: 20 77 69 74 68 20 74 68 65 20 6f 62 6a 65 63 74 with the object
0ff0: 2e 0a 2d 49 66 20 61 6e 20 65 72 72 6f 72 20 6f ..-If an error o
1000: 63 63 75 72 73 20 77 68 69 6c 65 20 65 76 61 6c ccurs while eval
1010: 75 61 74 69 6e 67 20 74 68 65 20 74 6f 6b 65 6e uating the token
1020: 73 20 28 73 75 63 68 20 61 73 20 61 20 72 65 66 s (such as a ref
1030: 65 72 65 6e 63 65 20 74 6f 0a 2d 61 20 6e 6f 6e erence to.-a non
1040: 2d 65 78 69 73 74 65 6e 74 20 76 61 72 69 61 62 -existent variab
1050: 6c 65 29 20 74 68 65 6e 20 74 68 65 20 72 65 74 le) then the ret
1060: 75 72 6e 20 76 61 6c 75 65 20 69 73 20 4e 55 4c urn value is NUL
1070: 4c 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 0a 2d L and an error.-
1080: 6d 65 73 73 61 67 65 20 69 73 20 6c 65 66 74 20 message is left
1090: 69 6e 20 5c 66 49 69 6e 74 65 72 70 5c 66 52 27 in \fIinterp\fR'
10a0: 73 20 72 65 73 75 6c 74 2e 0a 2b 49 66 20 61 6e s result..+If an
10b0: 20 65 72 72 6f 72 20 6f 72 20 6f 74 68 65 72 20 error or other
10c0: 65 78 63 65 70 74 69 6f 6e 20 6f 63 63 75 72 73 exception occurs
10d0: 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74 69 6e while evaluatin
10e0: 67 20 74 68 65 20 74 6f 6b 65 6e 73 0a 2b 28 73 g the tokens.+(s
10f0: 75 63 68 20 61 73 20 61 20 72 65 66 65 72 65 6e uch as a referen
1100: 63 65 20 74 6f 20 61 20 6e 6f 6e 2d 65 78 69 73 ce to a non-exis
1110: 74 65 6e 74 20 76 61 72 69 61 62 6c 65 29 20 74 tent variable) t
1120: 68 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 76 hen the return v
1130: 61 6c 75 65 0a 2b 69 73 20 4e 55 4c 4c 20 61 6e alue.+is NULL an
1140: 64 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 d an error messa
1150: 67 65 20 69 73 20 6c 65 66 74 20 69 6e 20 5c 66 ge is left in \f
1160: 49 69 6e 74 65 72 70 5c 66 52 27 73 20 72 65 73 Iinterp\fR's res
1170: 75 6c 74 2e 20 54 68 65 20 75 73 65 0a 2b 6f 66 ult. The use.+of
1180: 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 \fBTcl_EvalToke
1190: 6e 73 5c 66 52 20 69 73 20 64 65 70 72 65 63 61 ns\fR is depreca
11a0: 74 65 64 2e 0a 20 0a 20 2e 53 48 20 22 54 43 4c ted.. . .SH "TCL
11b0: 5f 50 41 52 53 45 20 53 54 52 55 43 54 55 52 45 _PARSE STRUCTURE
11c0: 22 0a 20 2e 50 50 0a 49 6e 64 65 78 3a 20 67 65 ". .PP.Index: ge
11d0: 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 0a neric/tcl.decls.
11e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
11f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1220: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
1230: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 vsroot/tcl/tcl/g
1240: 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 eneric/tcl.decls
1250: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
1260: 76 69 73 69 6f 6e 20 31 2e 35 37 0a 64 69 66 66 vision 1.57.diff
1270: 20 2d 75 20 2d 72 31 2e 35 37 20 74 63 6c 2e 64 -u -r1.57 tcl.d
1280: 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 ecls.--- generic
1290: 2f 74 63 6c 2e 64 65 63 6c 73 09 32 30 30 31 2f /tcl.decls.2001/
12a0: 30 39 2f 31 32 20 31 36 3a 33 32 3a 32 31 09 31 09/12 16:32:21.1
12b0: 2e 35 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f .57.+++ generic/
12c0: 74 63 6c 2e 64 65 63 6c 73 09 32 30 30 31 2f 30 tcl.decls.2001/0
12d0: 39 2f 31 32 20 31 38 3a 31 34 3a 30 38 0a 40 40 9/12 18:14:08.@@
12e0: 20 2d 31 36 38 32 2c 39 20 2b 31 36 38 32 2c 39 -1682,9 +1682,9
12f0: 20 40 40 0a 20 20 20 20 20 76 6f 69 64 20 54 63 @@. void Tc
1300: 6c 5f 46 53 4d 6f 75 6e 74 73 43 68 61 6e 67 65 l_FSMountsChange
1310: 64 28 54 63 6c 5f 46 69 6c 65 73 79 73 74 65 6d d(Tcl_Filesystem
1320: 20 2a 66 73 50 74 72 29 0a 20 7d 09 20 20 0a 20 *fsPtr). }. .
1330: 23 20 4e 65 77 20 66 75 6e 63 74 69 6f 6e 20 64 # New function d
1340: 75 65 20 74 6f 20 54 49 50 23 35 36 0a 2d 23 64 ue to TIP#56.-#d
1350: 65 63 6c 61 72 65 20 34 38 31 20 67 65 6e 65 72 eclare 481 gener
1360: 69 63 20 7b 0a 2d 23 20 20 20 20 69 6e 74 20 54 ic {.-# int T
1370: 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 cl_EvalTokensSta
1380: 6e 64 61 72 64 28 54 63 6c 5f 49 6e 74 65 72 70 ndard(Tcl_Interp
1390: 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 54 6f *interp, Tcl_To
13a0: 6b 65 6e 20 2a 74 6f 6b 65 6e 50 74 72 2c 20 69 ken *tokenPtr, i
13b0: 6e 74 20 63 6f 75 6e 74 29 0a 2d 23 7d 0a 2b 64 nt count).-#}.+d
13c0: 65 63 6c 61 72 65 20 34 38 31 20 67 65 6e 65 72 eclare 481 gener
13d0: 69 63 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54 63 ic {.+ int Tc
13e0: 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e l_EvalTokensStan
13f0: 64 61 72 64 28 54 63 6c 5f 49 6e 74 65 72 70 20 dard(Tcl_Interp
1400: 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 54 6f 6b *interp, Tcl_Tok
1410: 65 6e 20 2a 74 6f 6b 65 6e 50 74 72 2c 20 69 6e en *tokenPtr, in
1420: 74 20 63 6f 75 6e 74 29 0a 2b 7d 0a 20 20 0a 20 t count).+}. .
1430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 ##############.
1480: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f .Index: generic/
1490: 74 63 6c 43 6d 64 4d 5a 2e 63 0a 3d 3d 3d 3d 3d tclCmdMZ.c.=====
14a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ==============.R
14e0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f CS file: /cvsroo
14f0: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 t/tcl/tcl/generi
1500: 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 2c 76 0a 72 c/tclCmdMZ.c,v.r
1510: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 etrieving revisi
1520: 6f 6e 20 31 2e 34 33 0a 64 69 66 66 20 2d 75 20 on 1.43.diff -u
1530: 2d 72 31 2e 34 33 20 74 63 6c 43 6d 64 4d 5a 2e -r1.43 tclCmdMZ.
1540: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 c.--- generic/tc
1550: 6c 43 6d 64 4d 5a 2e 63 09 32 30 30 31 2f 30 38 lCmdMZ.c.2001/08
1560: 2f 30 37 20 30 30 3a 35 36 3a 31 35 09 31 2e 34 /07 00:56:15.1.4
1570: 33 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 3.+++ generic/tc
1580: 6c 43 6d 64 4d 5a 2e 63 09 32 30 30 31 2f 30 39 lCmdMZ.c.2001/09
1590: 2f 31 32 20 31 38 3a 31 34 3a 31 30 0a 40 40 20 /12 18:14:10.@@
15a0: 2d 32 33 37 31 2c 37 20 2b 32 33 37 31 2c 37 20 -2371,7 +2371,7
15b0: 40 40 0a 20 09 63 61 73 65 20 27 24 27 3a 0a 20 @@. .case '$':.
15c0: 09 20 20 20 20 69 66 20 28 66 6c 61 67 73 20 26 . if (flags &
15d0: 20 54 43 4c 5f 53 55 42 53 54 5f 56 41 52 49 41 TCL_SUBST_VARIA
15e0: 42 4c 45 53 29 20 7b 0a 20 09 09 54 63 6c 5f 50 BLES) {. ..Tcl_P
15f0: 61 72 73 65 20 70 61 72 73 65 3b 0a 2d 09 09 54 arse parse;.-..T
1600: 63 6c 5f 4f 62 6a 20 2a 74 65 6d 70 4f 62 6a 3b cl_Obj *tempObj;
1610: 0a 2b 09 09 69 6e 74 20 63 6f 64 65 3b 0a 20 0a .+..int code;. .
1620: 20 09 09 2f 2a 0a 20 09 09 20 2a 20 43 6f 64 65 ../*. .. * Code
1630: 20 69 73 20 73 69 6d 70 6c 65 72 20 6f 76 65 72 is simpler over
1640: 61 6c 6c 20 69 66 20 77 65 20 28 65 66 66 65 63 all if we (effec
1650: 74 69 76 65 6c 79 29 20 69 6e 6c 69 6e 65 0a 40 tively) inline.@
1660: 40 20 2d 32 33 39 38 2c 31 33 20 2b 32 33 39 38 @ -2398,13 +2398
1670: 2c 31 33 20 40 40 0a 20 09 09 20 20 20 20 54 63 ,13 @@. .. Tc
1680: 6c 5f 41 70 70 65 6e 64 54 6f 4f 62 6a 28 72 65 l_AppendToObj(re
1690: 73 75 6c 74 4f 62 6a 2c 20 6f 6c 64 2c 20 70 2d sultObj, old, p-
16a0: 6f 6c 64 29 3b 0a 20 09 09 7d 0a 20 09 09 70 20 old);. ..}. ..p
16b0: 2b 3d 20 70 61 72 73 65 2e 74 6f 6b 65 6e 50 74 += parse.tokenPt
16c0: 72 2d 3e 73 69 7a 65 3b 0a 2d 09 09 74 65 6d 70 r->size;.-..temp
16d0: 4f 62 6a 20 3d 20 54 63 6c 5f 45 76 61 6c 54 6f Obj = Tcl_EvalTo
16e0: 6b 65 6e 73 28 69 6e 74 65 72 70 2c 20 70 61 72 kens(interp, par
16f0: 73 65 2e 74 6f 6b 65 6e 50 74 72 2c 0a 2d 09 09 se.tokenPtr,.-..
1700: 09 09 09 20 70 61 72 73 65 2e 6e 75 6d 54 6f 6b ... parse.numTok
1710: 65 6e 73 29 3b 0a 2d 09 09 69 66 20 28 74 65 6d ens);.-..if (tem
1720: 70 4f 62 6a 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a pObj == NULL) {.
1730: 2b 09 09 63 6f 64 65 20 3d 20 54 63 6c 5f 45 76 +..code = Tcl_Ev
1740: 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 alTokensStandard
1750: 28 69 6e 74 65 72 70 2c 20 70 61 72 73 65 2e 74 (interp, parse.t
1760: 6f 6b 65 6e 50 74 72 2c 0a 2b 09 09 20 20 20 20 okenPtr,.+..
1770: 20 20 20 20 70 61 72 73 65 2e 6e 75 6d 54 6f 6b parse.numTok
1780: 65 6e 73 29 3b 0a 2b 09 09 69 66 20 28 63 6f 64 ens);.+..if (cod
1790: 65 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 e != TCL_OK) {.
17a0: 09 09 20 20 20 20 67 6f 74 6f 20 65 72 72 6f 72 .. goto error
17b0: 52 65 73 75 6c 74 3b 0a 20 09 09 7d 0a 2d 09 09 Result;. ..}.-..
17c0: 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 54 6f 4f Tcl_AppendObjToO
17d0: 62 6a 28 72 65 73 75 6c 74 4f 62 6a 2c 20 74 65 bj(resultObj, te
17e0: 6d 70 4f 62 6a 29 3b 0a 2d 09 09 54 63 6c 5f 44 mpObj);.-..Tcl_D
17f0: 65 63 72 52 65 66 43 6f 75 6e 74 28 74 65 6d 70 ecrRefCount(temp
1800: 4f 62 6a 29 3b 0a 2b 09 09 54 63 6c 5f 41 70 70 Obj);.+..Tcl_App
1810: 65 6e 64 4f 62 6a 54 6f 4f 62 6a 28 72 65 73 75 endObjToObj(resu
1820: 6c 74 4f 62 6a 2c 20 54 63 6c 5f 47 65 74 4f 62 ltObj, Tcl_GetOb
1830: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 29 jResult(interp))
1840: 3b 0a 2b 09 09 54 63 6c 5f 52 65 73 65 74 52 65 ;.+..Tcl_ResetRe
1850: 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 09 sult(interp);. .
1860: 09 6f 6c 64 20 3d 20 70 3b 0a 20 09 20 20 20 20 .old = p;. .
1870: 7d 20 65 6c 73 65 20 7b 0a 20 09 09 70 2b 2b 3b } else {. ..p++;
1880: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f .Index: generic/
1890: 74 63 6c 44 65 63 6c 73 2e 68 0a 3d 3d 3d 3d 3d tclDecls.h.=====
18a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
18b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
18c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
18d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ==============.R
18e0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f CS file: /cvsroo
18f0: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 t/tcl/tcl/generi
1900: 63 2f 74 63 6c 44 65 63 6c 73 2e 68 2c 76 0a 72 c/tclDecls.h,v.r
1910: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 etrieving revisi
1920: 6f 6e 20 31 2e 35 37 0a 64 69 66 66 20 2d 75 20 on 1.57.diff -u
1930: 2d 72 31 2e 35 37 20 74 63 6c 44 65 63 6c 73 2e -r1.57 tclDecls.
1940: 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 h.--- generic/tc
1950: 6c 44 65 63 6c 73 2e 68 09 32 30 30 31 2f 30 39 lDecls.h.2001/09
1960: 2f 30 36 20 31 37 3a 35 31 3a 30 30 09 31 2e 35 /06 17:51:00.1.5
1970: 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 7.+++ generic/tc
1980: 6c 44 65 63 6c 73 2e 68 09 32 30 30 31 2f 30 39 lDecls.h.2001/09
1990: 2f 31 32 20 31 38 3a 31 34 3a 31 34 0a 40 40 20 /12 18:14:14.@@
19a0: 2d 31 35 30 30 2c 36 20 2b 31 35 30 30 2c 31 30 -1500,6 +1500,10
19b0: 20 40 40 0a 20 2f 2a 20 34 38 30 20 2a 2f 0a 20 @@. /* 480 */.
19c0: 45 58 54 45 52 4e 20 76 6f 69 64 09 09 54 63 6c EXTERN void..Tcl
19d0: 5f 46 53 4d 6f 75 6e 74 73 43 68 61 6e 67 65 64 _FSMountsChanged
19e0: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 20 _ANSI_ARGS_((.
19f0: 09 09 09 09 54 63 6c 5f 46 69 6c 65 73 79 73 74 ....Tcl_Filesyst
1a00: 65 6d 20 2a 20 66 73 50 74 72 29 29 3b 0a 2b 2f em * fsPtr));.+/
1a10: 2a 20 34 38 31 20 2a 2f 0a 2b 45 58 54 45 52 4e * 481 */.+EXTERN
1a20: 20 69 6e 74 09 09 54 63 6c 5f 45 76 61 6c 54 6f int..Tcl_EvalTo
1a30: 6b 65 6e 73 53 74 61 6e 64 61 72 64 20 5f 41 4e kensStandard _AN
1a40: 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09 SI_ARGS_((.+....
1a50: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 Tcl_Interp * int
1a60: 65 72 70 2c 20 54 63 6c 5f 54 6f 6b 65 6e 20 2a erp, Tcl_Token *
1a70: 20 74 6f 6b 65 6e 50 74 72 2c 20 0a 2b 09 09 09 tokenPtr, .+...
1a80: 09 69 6e 74 20 63 6f 75 6e 74 29 29 3b 0a 20 0a .int count));. .
1a90: 20 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 typedef struct
1aa0: 54 63 6c 53 74 75 62 48 6f 6f 6b 73 20 7b 0a 20 TclStubHooks {.
1ab0: 20 20 20 20 73 74 72 75 63 74 20 54 63 6c 50 6c struct TclPl
1ac0: 61 74 53 74 75 62 73 20 2a 74 63 6c 50 6c 61 74 atStubs *tclPlat
1ad0: 53 74 75 62 73 3b 0a 40 40 20 2d 32 30 34 30 2c Stubs;.@@ -2040,
1ae0: 36 20 2b 32 30 34 34 2c 37 20 40 40 0a 20 20 20 6 +2044,7 @@.
1af0: 20 20 54 63 6c 5f 50 61 74 68 54 79 70 65 20 28 Tcl_PathType (
1b00: 2a 74 63 6c 5f 46 53 47 65 74 50 61 74 68 54 79 *tcl_FSGetPathTy
1b10: 70 65 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 pe) _ANSI_ARGS_(
1b20: 28 54 63 6c 5f 4f 62 6a 20 2a 20 70 61 74 68 4f (Tcl_Obj * pathO
1b30: 62 6a 50 74 72 29 29 3b 20 2f 2a 20 34 37 38 20 bjPtr)); /* 478
1b40: 2a 2f 0a 20 20 20 20 20 69 6e 74 20 28 2a 74 63 */. int (*tc
1b50: 6c 5f 4f 75 74 70 75 74 42 75 66 66 65 72 65 64 l_OutputBuffered
1b60: 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 ) _ANSI_ARGS_((T
1b70: 63 6c 5f 43 68 61 6e 6e 65 6c 20 63 68 61 6e 29 cl_Channel chan)
1b80: 29 3b 20 2f 2a 20 34 37 39 20 2a 2f 0a 20 20 20 ); /* 479 */.
1b90: 20 20 76 6f 69 64 20 28 2a 74 63 6c 5f 46 53 4d void (*tcl_FSM
1ba0: 6f 75 6e 74 73 43 68 61 6e 67 65 64 29 20 5f 41 ountsChanged) _A
1bb0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 46 NSI_ARGS_((Tcl_F
1bc0: 69 6c 65 73 79 73 74 65 6d 20 2a 20 66 73 50 74 ilesystem * fsPt
1bd0: 72 29 29 3b 20 2f 2a 20 34 38 30 20 2a 2f 0a 2b r)); /* 480 */.+
1be0: 20 20 20 20 69 6e 74 20 28 2a 74 63 6c 5f 45 76 int (*tcl_Ev
1bf0: 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 alTokensStandard
1c00: 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 ) _ANSI_ARGS_((T
1c10: 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 cl_Interp * inte
1c20: 72 70 2c 20 54 63 6c 5f 54 6f 6b 65 6e 20 2a 20 rp, Tcl_Token *
1c30: 74 6f 6b 65 6e 50 74 72 2c 20 69 6e 74 20 63 6f tokenPtr, int co
1c40: 75 6e 74 29 29 3b 20 2f 2a 20 34 38 31 20 2a 2f unt)); /* 481 */
1c50: 0a 20 7d 20 54 63 6c 53 74 75 62 73 3b 0a 20 0a . } TclStubs;. .
1c60: 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 #ifdef __cplusp
1c70: 6c 75 73 0a 40 40 20 2d 34 30 30 33 2c 36 20 2b lus.@@ -4003,6 +
1c80: 34 30 30 38 2c 31 30 20 40 40 0a 20 23 69 66 6e 4008,10 @@. #ifn
1c90: 64 65 66 20 54 63 6c 5f 46 53 4d 6f 75 6e 74 73 def Tcl_FSMounts
1ca0: 43 68 61 6e 67 65 64 0a 20 23 64 65 66 69 6e 65 Changed. #define
1cb0: 20 54 63 6c 5f 46 53 4d 6f 75 6e 74 73 43 68 61 Tcl_FSMountsCha
1cc0: 6e 67 65 64 20 5c 0a 20 09 28 74 63 6c 53 74 75 nged \. .(tclStu
1cd0: 62 73 50 74 72 2d 3e 74 63 6c 5f 46 53 4d 6f 75 bsPtr->tcl_FSMou
1ce0: 6e 74 73 43 68 61 6e 67 65 64 29 20 2f 2a 20 34 ntsChanged) /* 4
1cf0: 38 30 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23 80 */.+#endif.+#
1d00: 69 66 6e 64 65 66 20 54 63 6c 5f 45 76 61 6c 54 ifndef Tcl_EvalT
1d10: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 0a 2b 23 okensStandard.+#
1d20: 64 65 66 69 6e 65 20 54 63 6c 5f 45 76 61 6c 54 define Tcl_EvalT
1d30: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 20 5c 0a okensStandard \.
1d40: 2b 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e +.(tclStubsPtr->
1d50: 74 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 tcl_EvalTokensSt
1d60: 61 6e 64 61 72 64 29 20 2f 2a 20 34 38 31 20 2a andard) /* 481 *
1d70: 2f 0a 20 23 65 6e 64 69 66 0a 20 0a 20 23 65 6e /. #endif. . #en
1d80: 64 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 55 dif /* defined(U
1d90: 53 45 5f 54 43 4c 5f 53 54 55 42 53 29 20 26 26 SE_TCL_STUBS) &&
1da0: 20 21 64 65 66 69 6e 65 64 28 55 53 45 5f 54 43 !defined(USE_TC
1db0: 4c 5f 53 54 55 42 5f 50 52 4f 43 53 29 20 2a 2f L_STUB_PROCS) */
1dc0: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f .Index: generic/
1dd0: 74 63 6c 50 61 72 73 65 2e 63 0a 3d 3d 3d 3d 3d tclParse.c.=====
1de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1df0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1e10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ==============.R
1e20: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f CS file: /cvsroo
1e30: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 t/tcl/tcl/generi
1e40: 63 2f 74 63 6c 50 61 72 73 65 2e 63 2c 76 0a 72 c/tclParse.c,v.r
1e50: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 etrieving revisi
1e60: 6f 6e 20 31 2e 31 35 0a 64 69 66 66 20 2d 75 20 on 1.15.diff -u
1e70: 2d 72 31 2e 31 35 20 74 63 6c 50 61 72 73 65 2e -r1.15 tclParse.
1e80: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 c.--- generic/tc
1e90: 6c 50 61 72 73 65 2e 63 09 32 30 30 31 2f 30 35 lParse.c.2001/05
1ea0: 2f 30 33 20 32 31 3a 31 34 3a 35 37 09 31 2e 31 /03 21:14:57.1.1
1eb0: 35 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 5.+++ generic/tc
1ec0: 6c 50 61 72 73 65 2e 63 09 32 30 30 31 2f 30 39 lParse.c.2001/09
1ed0: 2f 31 32 20 31 38 3a 31 34 3a 31 36 0a 40 40 20 /12 18:14:16.@@
1ee0: 2d 31 31 31 37 2c 32 38 20 2b 31 31 31 37 2c 32 -1117,28 +1117,2
1ef0: 36 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 6 @@. /*. *----
1f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1f30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1f40: 2d 2d 0a 20 20 2a 0a 2d 20 2a 20 54 63 6c 5f 45 --. *.- * Tcl_E
1f50: 76 61 6c 54 6f 6b 65 6e 73 20 2d 2d 0a 2b 20 2a valTokens --.+ *
1f60: 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 Tcl_EvalTokensS
1f70: 74 61 6e 64 61 72 64 20 2d 2d 0a 20 20 2a 0a 20 tandard --. *.
1f80: 20 2a 09 47 69 76 65 6e 20 61 6e 20 61 72 72 61 *.Given an arra
1f90: 79 20 6f 66 20 74 6f 6b 65 6e 73 20 70 61 72 73 y of tokens pars
1fa0: 65 64 20 66 72 6f 6d 20 61 20 54 63 6c 20 63 6f ed from a Tcl co
1fb0: 6d 6d 61 6e 64 20 28 65 2e 67 2e 2c 20 74 68 65 mmand (e.g., the
1fc0: 0a 20 20 2a 09 74 6f 6b 65 6e 73 20 74 68 61 74 . *.tokens that
1fd0: 20 6d 61 6b 65 20 75 70 20 61 20 77 6f 72 64 20 make up a word
1fe0: 6f 72 20 74 68 65 20 69 6e 64 65 78 20 66 6f 72 or the index for
1ff0: 20 61 6e 20 61 72 72 61 79 20 76 61 72 69 61 62 an array variab
2000: 6c 65 29 0a 20 20 2a 09 74 68 69 73 20 70 72 6f le). *.this pro
2010: 63 65 64 75 72 65 20 65 76 61 6c 75 61 74 65 73 cedure evaluates
2020: 20 74 68 65 20 74 6f 6b 65 6e 73 20 61 6e 64 20 the tokens and
2030: 63 6f 6e 63 61 74 65 6e 61 74 65 73 20 74 68 65 concatenates the
2040: 69 72 0a 20 20 2a 09 76 61 6c 75 65 73 20 74 6f ir. *.values to
2050: 20 66 6f 72 6d 20 61 20 73 69 6e 67 6c 65 20 72 form a single r
2060: 65 73 75 6c 74 20 76 61 6c 75 65 2e 0a 2d 20 2a esult value..- *
2070: 0a 2b 20 2a 20 0a 20 20 2a 20 52 65 73 75 6c 74 .+ * . * Result
2080: 73 3a 0a 2d 20 2a 09 54 68 65 20 72 65 74 75 72 s:.- *.The retur
2090: 6e 20 76 61 6c 75 65 20 69 73 20 61 20 70 6f 69 n value is a poi
20a0: 6e 74 65 72 20 74 6f 20 61 20 6e 65 77 6c 79 20 nter to a newly
20b0: 61 6c 6c 6f 63 61 74 65 64 20 54 63 6c 5f 4f 62 allocated Tcl_Ob
20c0: 6a 0a 2d 20 2a 09 63 6f 6e 74 61 69 6e 69 6e 67 j.- *.containing
20d0: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 the value of th
20e0: 65 20 61 72 72 61 79 20 6f 66 20 74 6f 6b 65 6e e array of token
20f0: 73 2e 20 20 54 68 65 20 72 65 66 65 72 65 6e 63 s. The referenc
2100: 65 0a 2d 20 2a 09 63 6f 75 6e 74 20 6f 66 20 74 e.- *.count of t
2110: 68 65 20 72 65 74 75 72 6e 65 64 20 6f 62 6a 65 he returned obje
2120: 63 74 20 68 61 73 20 62 65 65 6e 20 69 6e 63 72 ct has been incr
2130: 65 6d 65 6e 74 65 64 2e 20 20 49 66 20 61 6e 20 emented. If an
2140: 65 72 72 6f 72 0a 2d 20 2a 09 6f 63 63 75 72 73 error.- *.occurs
2150: 20 69 6e 20 65 76 61 6c 75 61 74 69 6e 67 20 74 in evaluating t
2160: 68 65 20 74 6f 6b 65 6e 73 20 74 68 65 6e 20 61 he tokens then a
2170: 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 NULL value is r
2180: 65 74 75 72 6e 65 64 0a 2d 20 2a 09 61 6e 64 20 eturned.- *.and
2190: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 an error message
21a0: 20 69 73 20 6c 65 66 74 20 69 6e 20 69 6e 74 65 is left in inte
21b0: 72 70 27 73 20 72 65 73 75 6c 74 2e 0a 2b 20 2a rp's result..+ *
21c0: 09 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 .The return valu
21d0: 65 20 69 73 20 61 20 73 74 61 6e 64 61 72 64 20 e is a standard
21e0: 54 63 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 63 Tcl completion c
21f0: 6f 64 65 20 73 75 63 68 20 61 73 0a 2b 20 2a 09 ode such as.+ *.
2200: 54 43 4c 5f 4f 4b 20 6f 72 20 54 43 4c 5f 45 52 TCL_OK or TCL_ER
2210: 52 4f 52 2e 20 20 41 20 72 65 73 75 6c 74 20 6f ROR. A result o
2220: 72 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 r error message
2230: 69 73 20 6c 65 66 74 20 69 6e 0a 2b 20 2a 09 69 is left in.+ *.i
2240: 6e 74 65 72 70 27 73 20 72 65 73 75 6c 74 2e 0a nterp's result..
2250: 20 20 2a 0a 20 20 2a 20 53 69 64 65 20 65 66 66 *. * Side eff
2260: 65 63 74 73 3a 0a 2d 20 2a 09 41 20 6e 65 77 20 ects:.- *.A new
2270: 6f 62 6a 65 63 74 20 69 73 20 61 6c 6c 6f 63 61 object is alloca
2280: 74 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 ted to hold the
2290: 72 65 73 75 6c 74 2e 0a 2d 20 2a 0a 2b 20 2a 09 result..- *.+ *.
22a0: 44 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 61 Depends on the a
22b0: 72 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 20 62 rray of tokens b
22c0: 65 69 6e 67 20 65 76 61 6c 65 64 2e 0a 2b 20 20 eing evaled..+
22d0: 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *. *-----------
22e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
22f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 2f -----------. */
2320: 0a 20 0a 2d 54 63 6c 5f 4f 62 6a 20 2a 0a 2d 54 . .-Tcl_Obj *.-T
2330: 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 28 69 6e cl_EvalTokens(in
2340: 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 72 2c 20 terp, tokenPtr,
2350: 63 6f 75 6e 74 29 0a 2b 69 6e 74 0a 2b 54 63 6c count).+int.+Tcl
2360: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 _EvalTokensStand
2370: 61 72 64 28 69 6e 74 65 72 70 2c 20 74 6f 6b 65 ard(interp, toke
2380: 6e 50 74 72 2c 20 63 6f 75 6e 74 29 0a 20 20 20 nPtr, count).
2390: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e Tcl_Interp *in
23a0: 74 65 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70 terp;../* Interp
23b0: 72 65 74 65 72 20 69 6e 20 77 68 69 63 68 20 74 reter in which t
23c0: 6f 20 6c 6f 6f 6b 75 70 0a 20 09 09 09 09 20 2a o lookup. .... *
23d0: 20 76 61 72 69 61 62 6c 65 73 2c 20 65 78 65 63 variables, exec
23e0: 75 74 65 20 6e 65 73 74 65 64 20 63 6f 6d 6d 61 ute nested comma
23f0: 6e 64 73 2c 0a 20 09 09 09 09 20 2a 20 61 6e 64 nds,. .... * and
2400: 20 72 65 70 6f 72 74 20 65 72 72 6f 72 73 2e 20 report errors.
2410: 2a 2f 0a 40 40 20 2d 31 31 36 36 2c 37 20 2b 31 */.@@ -1166,7 +1
2420: 31 36 34 2c 39 20 40 40 0a 20 20 20 20 20 20 2a 164,9 @@. *
2430: 20 63 6f 6d 6d 61 6e 64 27 73 20 72 65 73 75 6c command's resul
2440: 74 20 6f 62 6a 65 63 74 20 64 69 72 65 63 74 6c t object directl
2450: 79 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2b 20 y.. */. .+
2460: 20 20 20 63 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b code = TCL_OK
2470: 3b 0a 20 20 20 20 20 72 65 73 75 6c 74 50 74 72 ;. resultPtr
2480: 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 54 63 = NULL;.+ Tc
2490: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e l_ResetResult(in
24a0: 74 65 72 70 29 3b 0a 20 20 20 20 20 66 6f 72 20 terp);. for
24b0: 28 20 3b 20 63 6f 75 6e 74 20 3e 20 30 3b 20 63 ( ; count > 0; c
24c0: 6f 75 6e 74 2d 2d 2c 20 74 6f 6b 65 6e 50 74 72 ount--, tokenPtr
24d0: 2b 2b 29 20 7b 0a 20 09 76 61 6c 75 65 50 74 72 ++) {. .valuePtr
24e0: 20 3d 20 4e 55 4c 4c 3b 0a 20 0a 40 40 20 2d 31 = NULL;. .@@ -1
24f0: 31 39 32 2c 37 20 2b 31 31 39 32 2c 37 20 40 40 192,7 +1192,7 @@
2500: 0a 20 09 09 63 6f 64 65 20 3d 20 54 63 6c 5f 45 . ..code = Tcl_E
2510: 76 61 6c 45 78 28 69 6e 74 65 72 70 2c 20 74 6f valEx(interp, to
2520: 6b 65 6e 50 74 72 2d 3e 73 74 61 72 74 2b 31 2c kenPtr->start+1,
2530: 20 74 6f 6b 65 6e 50 74 72 2d 3e 73 69 7a 65 2d tokenPtr->size-
2540: 32 2c 0a 20 09 09 09 30 29 3b 0a 20 09 09 69 66 2,. ...0);. ..if
2550: 20 28 63 6f 64 65 20 21 3d 20 54 43 4c 5f 4f 4b (code != TCL_OK
2560: 29 20 7b 0a 2d 09 09 20 20 20 20 67 6f 74 6f 20 ) {.-.. goto
2570: 65 72 72 6f 72 3b 0a 2b 09 09 20 20 20 20 67 6f error;.+.. go
2580: 74 6f 20 64 6f 6e 65 3b 0a 20 09 09 7d 0a 20 09 to done;. ..}. .
2590: 09 76 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f .valuePtr = Tcl_
25a0: 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 GetObjResult(int
25b0: 65 72 70 29 3b 0a 20 09 09 62 72 65 61 6b 3b 0a erp);. ..break;.
25c0: 40 40 20 2d 31 32 30 30 2c 31 32 20 2b 31 32 30 @@ -1200,12 +120
25d0: 30 2c 31 36 20 40 40 0a 20 09 20 20 20 20 63 61 0,16 @@. . ca
25e0: 73 65 20 54 43 4c 5f 54 4f 4b 45 4e 5f 56 41 52 se TCL_TOKEN_VAR
25f0: 49 41 42 4c 45 3a 0a 20 09 09 69 66 20 28 74 6f IABLE:. ..if (to
2600: 6b 65 6e 50 74 72 2d 3e 6e 75 6d 43 6f 6d 70 6f kenPtr->numCompo
2610: 6e 65 6e 74 73 20 3d 3d 20 31 29 20 7b 0a 20 09 nents == 1) {. .
2620: 09 20 20 20 20 69 6e 64 65 78 50 74 72 20 3d 20 . indexPtr =
2630: 4e 55 4c 4c 3b 0a 2b 09 09 20 20 20 20 69 6e 64 NULL;.+.. ind
2640: 65 78 20 3d 20 4e 55 4c 4c 3b 0a 20 09 09 7d 20 ex = NULL;. ..}
2650: 65 6c 73 65 20 7b 0a 2d 09 09 20 20 20 20 69 6e else {.-.. in
2660: 64 65 78 50 74 72 20 3d 20 54 63 6c 5f 45 76 61 dexPtr = Tcl_Eva
2670: 6c 54 6f 6b 65 6e 73 28 69 6e 74 65 72 70 2c 20 lTokens(interp,
2680: 74 6f 6b 65 6e 50 74 72 2b 32 2c 0a 2b 09 09 20 tokenPtr+2,.+..
2690: 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 5f 45 76 code = Tcl_Ev
26a0: 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 alTokensStandard
26b0: 28 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 (interp, tokenPt
26c0: 72 2b 32 2c 0a 20 09 09 09 20 20 20 20 74 6f 6b r+2,. ... tok
26d0: 65 6e 50 74 72 2d 3e 6e 75 6d 43 6f 6d 70 6f 6e enPtr->numCompon
26e0: 65 6e 74 73 20 2d 20 31 29 3b 0a 2d 09 09 20 20 ents - 1);.-..
26f0: 20 20 69 66 20 28 69 6e 64 65 78 50 74 72 20 3d if (indexPtr =
2700: 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 09 09 67 6f = NULL) {.-...go
2710: 74 6f 20 65 72 72 6f 72 3b 0a 2b 09 09 20 20 20 to error;.+..
2720: 20 69 66 20 28 63 6f 64 65 20 21 3d 20 54 43 4c if (code != TCL
2730: 5f 4f 4b 29 20 7b 0a 2b 09 09 09 67 6f 74 6f 20 _OK) {.+...goto
2740: 64 6f 6e 65 3b 0a 20 09 09 20 20 20 20 7d 0a 2b done;. .. }.+
2750: 09 09 20 20 20 20 69 6e 64 65 78 50 74 72 20 3d .. indexPtr =
2760: 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c Tcl_GetObjResul
2770: 74 28 69 6e 74 65 72 70 29 3b 0a 2b 09 09 20 20 t(interp);.+..
2780: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 Tcl_IncrRefCou
2790: 6e 74 28 69 6e 64 65 78 50 74 72 29 3b 0a 2b 09 nt(indexPtr);.+.
27a0: 09 20 20 20 20 69 6e 64 65 78 20 3d 20 54 63 6c . index = Tcl
27b0: 5f 47 65 74 53 74 72 69 6e 67 28 69 6e 64 65 78 _GetString(index
27c0: 50 74 72 29 3b 0a 20 09 09 7d 0a 20 0a 20 09 09 Ptr);. ..}. . ..
27d0: 2f 2a 0a 40 40 20 2d 31 32 32 33 2c 31 31 20 2b /*.@@ -1223,11 +
27e0: 31 32 32 37 2c 36 20 40 40 0a 20 09 09 7d 0a 20 1227,6 @@. ..}.
27f0: 09 09 73 74 72 6e 63 70 79 28 76 61 72 4e 61 6d ..strncpy(varNam
2800: 65 2c 20 74 6f 6b 65 6e 50 74 72 5b 31 5d 2e 73 e, tokenPtr[1].s
2810: 74 61 72 74 2c 20 28 73 69 7a 65 5f 74 29 20 74 tart, (size_t) t
2820: 6f 6b 65 6e 50 74 72 5b 31 5d 2e 73 69 7a 65 29 okenPtr[1].size)
2830: 3b 0a 20 09 09 76 61 72 4e 61 6d 65 5b 74 6f 6b ;. ..varName[tok
2840: 65 6e 50 74 72 5b 31 5d 2e 73 69 7a 65 5d 20 3d enPtr[1].size] =
2850: 20 30 3b 0a 2d 09 09 69 66 20 28 69 6e 64 65 78 0;.-..if (index
2860: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d Ptr != NULL) {.-
2870: 09 09 20 20 20 20 69 6e 64 65 78 20 3d 20 54 63 .. index = Tc
2880: 6c 47 65 74 53 74 72 69 6e 67 28 69 6e 64 65 78 lGetString(index
2890: 50 74 72 29 3b 0a 2d 09 09 7d 20 65 6c 73 65 20 Ptr);.-..} else
28a0: 7b 0a 2d 09 09 20 20 20 20 69 6e 64 65 78 20 3d {.-.. index =
28b0: 20 4e 55 4c 4c 3b 0a 2d 09 09 7d 0a 20 09 09 76 NULL;.-..}. ..v
28c0: 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f 47 65 aluePtr = Tcl_Ge
28d0: 74 56 61 72 32 45 78 28 69 6e 74 65 72 70 2c 20 tVar2Ex(interp,
28e0: 76 61 72 4e 61 6d 65 2c 20 69 6e 64 65 78 2c 0a varName, index,.
28f0: 20 09 09 09 54 43 4c 5f 4c 45 41 56 45 5f 45 52 ...TCL_LEAVE_ER
2900: 52 5f 4d 53 47 29 3b 0a 20 09 09 69 66 20 28 76 R_MSG);. ..if (v
2910: 61 72 4e 61 6d 65 20 21 3d 20 6e 61 6d 65 42 75 arName != nameBu
2920: 66 66 65 72 29 20 7b 0a 40 40 20 2d 31 32 33 37 ffer) {.@@ -1237
2930: 2c 31 34 20 2b 31 32 33 36 2c 31 35 20 40 40 0a ,14 +1236,15 @@.
2940: 20 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 .. Tcl_DecrR
2950: 65 66 43 6f 75 6e 74 28 69 6e 64 65 78 50 74 72 efCount(indexPtr
2960: 29 3b 0a 20 09 09 7d 0a 20 09 09 69 66 20 28 76 );. ..}. ..if (v
2970: 61 6c 75 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 aluePtr == NULL)
2980: 20 7b 0a 2d 09 09 20 20 20 20 67 6f 74 6f 20 65 {.-.. goto e
2990: 72 72 6f 72 3b 0a 2b 09 09 20 20 20 20 63 6f 64 rror;.+.. cod
29a0: 65 20 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b e = TCL_ERROR;.+
29b0: 09 09 20 20 20 20 67 6f 74 6f 20 64 6f 6e 65 3b .. goto done;
29c0: 0a 20 09 09 7d 0a 20 09 09 63 6f 75 6e 74 20 2d . ..}. ..count -
29d0: 3d 20 74 6f 6b 65 6e 50 74 72 2d 3e 6e 75 6d 43 = tokenPtr->numC
29e0: 6f 6d 70 6f 6e 65 6e 74 73 3b 0a 20 09 09 74 6f omponents;. ..to
29f0: 6b 65 6e 50 74 72 20 2b 3d 20 74 6f 6b 65 6e 50 kenPtr += tokenP
2a00: 74 72 2d 3e 6e 75 6d 43 6f 6d 70 6f 6e 65 6e 74 tr->numComponent
2a10: 73 3b 0a 20 09 09 62 72 65 61 6b 3b 0a 20 0a 20 s;. ..break;. .
2a20: 09 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 2d 09 . default:.-.
2a30: 09 70 61 6e 69 63 28 22 75 6e 65 78 70 65 63 74 .panic("unexpect
2a40: 65 64 20 74 6f 6b 65 6e 20 74 79 70 65 20 69 6e ed token type in
2a50: 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 22 Tcl_EvalTokens"
2a60: 29 3b 0a 2b 09 09 70 61 6e 69 63 28 22 75 6e 65 );.+..panic("une
2a70: 78 70 65 63 74 65 64 20 74 6f 6b 65 6e 20 74 79 xpected token ty
2a80: 70 65 20 69 6e 20 54 63 6c 5f 45 76 61 6c 54 6f pe in Tcl_EvalTo
2a90: 6b 65 6e 73 53 74 61 6e 64 61 72 64 22 29 3b 0a kensStandard");.
2aa0: 20 09 7d 0a 20 0a 20 09 2f 2a 0a 40 40 20 2d 31 .}. . ./*.@@ -1
2ab0: 32 37 32 2c 31 34 20 2b 31 32 37 32 2c 36 39 20 272,14 +1272,69
2ac0: 40 40 0a 20 09 20 20 20 20 54 63 6c 5f 41 70 70 @@. . Tcl_App
2ad0: 65 6e 64 54 6f 4f 62 6a 28 72 65 73 75 6c 74 50 endToObj(resultP
2ae0: 74 72 2c 20 70 2c 20 6c 65 6e 67 74 68 29 3b 0a tr, p, length);.
2af0: 20 09 7d 0a 20 20 20 20 20 7d 0a 2d 20 20 20 20 .}. }.-
2b00: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 50 74 72 return resultPtr
2b10: 3b 0a 2d 0a 2d 20 20 20 20 65 72 72 6f 72 3a 0a ;.-.- error:.
2b20: 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 50 if (resultP
2b30: 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 tr != NULL) {.+.
2b40: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 Tcl_SetObjResult
2b50: 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74 50 (interp, resultP
2b60: 74 72 29 3b 0a 20 09 54 63 6c 5f 44 65 63 72 52 tr);. .Tcl_DecrR
2b70: 65 66 43 6f 75 6e 74 28 72 65 73 75 6c 74 50 74 efCount(resultPt
2b80: 72 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 r);.+ } else
2b90: 7b 0a 2b 09 63 6f 64 65 20 3d 20 54 43 4c 5f 45 {.+.code = TCL_E
2ba0: 52 52 4f 52 3b 0a 20 20 20 20 20 7d 0a 2d 20 20 RROR;. }.-
2bb0: 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 2b return NULL;.+
2bc0: 0a 2b 20 20 20 20 64 6f 6e 65 3a 0a 2b 20 20 20 .+ done:.+
2bd0: 20 72 65 74 75 72 6e 20 63 6f 64 65 3b 0a 20 7d return code;. }
2be0: 0a 2b 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d .+.+.+/*.+ *----
2bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c30: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 5f 45 --.+ *.+ * Tcl_E
2c40: 76 61 6c 54 6f 6b 65 6e 73 20 2d 2d 0a 2b 20 2a valTokens --.+ *
2c50: 0a 2b 20 2a 09 47 69 76 65 6e 20 61 6e 20 61 72 .+ *.Given an ar
2c60: 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 20 70 61 ray of tokens pa
2c70: 72 73 65 64 20 66 72 6f 6d 20 61 20 54 63 6c 20 rsed from a Tcl
2c80: 63 6f 6d 6d 61 6e 64 20 28 65 2e 67 2e 2c 20 74 command (e.g., t
2c90: 68 65 0a 2b 20 2a 09 74 6f 6b 65 6e 73 20 74 68 he.+ *.tokens th
2ca0: 61 74 20 6d 61 6b 65 20 75 70 20 61 20 77 6f 72 at make up a wor
2cb0: 64 20 6f 72 20 74 68 65 20 69 6e 64 65 78 20 66 d or the index f
2cc0: 6f 72 20 61 6e 20 61 72 72 61 79 20 76 61 72 69 or an array vari
2cd0: 61 62 6c 65 29 0a 2b 20 2a 09 74 68 69 73 20 70 able).+ *.this p
2ce0: 72 6f 63 65 64 75 72 65 20 65 76 61 6c 75 61 74 rocedure evaluat
2cf0: 65 73 20 74 68 65 20 74 6f 6b 65 6e 73 20 61 6e es the tokens an
2d00: 64 20 63 6f 6e 63 61 74 65 6e 61 74 65 73 20 74 d concatenates t
2d10: 68 65 69 72 0a 2b 20 2a 09 76 61 6c 75 65 73 20 heir.+ *.values
2d20: 74 6f 20 66 6f 72 6d 20 61 20 73 69 6e 67 6c 65 to form a single
2d30: 20 72 65 73 75 6c 74 20 76 61 6c 75 65 2e 0a 2b result value..+
2d40: 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a *.+ * Results:.
2d50: 2b 20 2a 09 54 68 65 20 72 65 74 75 72 6e 20 76 + *.The return v
2d60: 61 6c 75 65 20 69 73 20 61 20 70 6f 69 6e 74 65 alue is a pointe
2d70: 72 20 74 6f 20 61 20 6e 65 77 6c 79 20 61 6c 6c r to a newly all
2d80: 6f 63 61 74 65 64 20 54 63 6c 5f 4f 62 6a 0a 2b ocated Tcl_Obj.+
2d90: 20 2a 09 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 *.containing th
2da0: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 e value of the a
2db0: 72 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 2e 20 rray of tokens.
2dc0: 20 54 68 65 20 72 65 66 65 72 65 6e 63 65 0a 2b The reference.+
2dd0: 20 2a 09 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 *.count of the
2de0: 72 65 74 75 72 6e 65 64 20 6f 62 6a 65 63 74 20 returned object
2df0: 68 61 73 20 62 65 65 6e 20 69 6e 63 72 65 6d 65 has been increme
2e00: 6e 74 65 64 2e 20 20 49 66 20 61 6e 20 65 72 72 nted. If an err
2e10: 6f 72 0a 2b 20 2a 09 6f 63 63 75 72 73 20 69 6e or.+ *.occurs in
2e20: 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20 evaluating the
2e30: 74 6f 6b 65 6e 73 20 74 68 65 6e 20 61 20 4e 55 tokens then a NU
2e40: 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 LL value is retu
2e50: 72 6e 65 64 0a 2b 20 2a 09 61 6e 64 20 61 6e 20 rned.+ *.and an
2e60: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 error message is
2e70: 20 6c 65 66 74 20 69 6e 20 69 6e 74 65 72 70 27 left in interp'
2e80: 73 20 72 65 73 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 s result..+ *.+
2e90: 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a * Side effects:.
2ea0: 2b 20 2a 09 41 20 6e 65 77 20 6f 62 6a 65 63 74 + *.A new object
2eb0: 20 69 73 20 61 6c 6c 6f 63 61 74 65 64 20 74 6f is allocated to
2ec0: 20 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74 hold the result
2ed0: 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d ..+ *.+ *-------
2ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
2f20: 2b 20 2a 0a 2b 20 2a 20 54 68 69 73 20 75 73 65 + *.+ * This use
2f30: 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 s a non-standard
2f40: 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69 return conventi
2f50: 6f 6e 3b 20 69 74 73 20 75 73 65 20 69 73 20 6e on; its use is n
2f60: 6f 77 20 64 65 70 72 65 63 61 74 65 64 2e 0a 2b ow deprecated..+
2f70: 20 2a 20 49 74 20 69 73 20 61 20 77 72 61 70 70 * It is a wrapp
2f80: 65 72 20 66 6f 72 20 74 68 65 20 6e 65 77 20 66 er for the new f
2f90: 75 6e 63 74 69 6f 6e 20 54 63 6c 5f 45 76 61 6c unction Tcl_Eval
2fa0: 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 2c 20 TokensStandard,
2fb0: 61 6e 64 20 69 73 20 6e 6f 74 20 0a 2b 20 2a 20 and is not .+ *
2fc0: 75 73 65 64 20 69 6e 20 74 68 65 20 63 6f 72 65 used in the core
2fd0: 20 61 6e 79 20 6c 6f 6e 67 65 72 2e 20 49 74 20 any longer. It
2fe0: 69 73 20 6f 6e 6c 79 20 6b 65 70 74 20 66 6f 72 is only kept for
2ff0: 20 62 61 63 6b 77 61 72 64 20 63 6f 6d 70 61 74 backward compat
3000: 69 62 69 6c 69 74 79 2e 0a 2b 20 2a 2f 0a 2b 0a ibility..+ */.+.
3010: 2b 54 63 6c 5f 4f 62 6a 20 2a 0a 2b 54 63 6c 5f +Tcl_Obj *.+Tcl_
3020: 45 76 61 6c 54 6f 6b 65 6e 73 28 69 6e 74 65 72 EvalTokens(inter
3030: 70 2c 20 74 6f 6b 65 6e 50 74 72 2c 20 63 6f 75 p, tokenPtr, cou
3040: 6e 74 29 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 nt).+ Tcl_Int
3050: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a erp *interp;../*
3060: 20 49 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20 Interpreter in
3070: 77 68 69 63 68 20 74 6f 20 6c 6f 6f 6b 75 70 0a which to lookup.
3080: 2b 09 09 09 09 20 2a 20 76 61 72 69 61 62 6c 65 +.... * variable
3090: 73 2c 20 65 78 65 63 75 74 65 20 6e 65 73 74 65 s, execute neste
30a0: 64 20 63 6f 6d 6d 61 6e 64 73 2c 0a 2b 09 09 09 d commands,.+...
30b0: 09 20 2a 20 61 6e 64 20 72 65 70 6f 72 74 20 65 . * and report e
30c0: 72 72 6f 72 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 rrors. */.+ T
30d0: 63 6c 5f 54 6f 6b 65 6e 20 2a 74 6f 6b 65 6e 50 cl_Token *tokenP
30e0: 74 72 3b 09 2f 2a 20 50 6f 69 6e 74 65 72 20 74 tr;./* Pointer t
30f0: 6f 20 66 69 72 73 74 20 69 6e 20 61 6e 20 61 72 o first in an ar
3100: 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 0a 2b 09 ray of tokens.+.
3110: 09 09 09 20 2a 20 74 6f 20 65 76 61 6c 75 61 74 ... * to evaluat
3120: 65 20 61 6e 64 20 63 6f 6e 63 61 74 65 6e 61 74 e and concatenat
3130: 65 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 63 e. */.+ int c
3140: 6f 75 6e 74 3b 09 09 09 2f 2a 20 4e 75 6d 62 65 ount;.../* Numbe
3150: 72 20 6f 66 20 74 6f 6b 65 6e 73 20 74 6f 20 63 r of tokens to c
3160: 6f 6e 73 69 64 65 72 20 61 74 20 74 6f 6b 65 6e onsider at token
3170: 50 74 72 2e 0a 2b 09 09 09 09 20 2a 20 4d 75 73 Ptr..+.... * Mus
3180: 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 31 2e t be at least 1.
3190: 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 6e 74 20 */.+{.+ int
31a0: 63 6f 64 65 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f code;.+ Tcl_O
31b0: 62 6a 20 2a 72 65 73 50 74 72 3b 0a 2b 20 20 20 bj *resPtr;.+
31c0: 20 0a 2b 20 20 20 20 63 6f 64 65 20 3d 20 54 63 .+ code = Tc
31d0: 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e l_EvalTokensStan
31e0: 64 61 72 64 28 69 6e 74 65 72 70 2c 20 74 6f 6b dard(interp, tok
31f0: 65 6e 50 74 72 2c 20 63 6f 75 6e 74 29 3b 0a 2b enPtr, count);.+
3200: 20 20 20 20 69 66 20 28 63 6f 64 65 20 3d 3d 20 if (code ==
3210: 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 72 65 73 50 TCL_OK) {.+.resP
3220: 74 72 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a 52 tr = Tcl_GetObjR
3230: 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 2b esult(interp);.+
3240: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e .Tcl_IncrRefCoun
3250: 74 28 72 65 73 50 74 72 29 3b 0a 2b 09 54 63 6c t(resPtr);.+.Tcl
3260: 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74 _ResetResult(int
3270: 65 72 70 29 3b 0a 2b 09 72 65 74 75 72 6e 20 72 erp);.+.return r
3280: 65 73 50 74 72 3b 0a 2b 20 20 20 20 7d 20 65 6c esPtr;.+ } el
3290: 73 65 20 7b 0a 2b 09 72 65 74 75 72 6e 20 4e 55 se {.+.return NU
32a0: 4c 4c 3b 0a 2b 20 20 20 20 7d 0a 2b 7d 0a 2b 0a LL;.+ }.+}.+.
32b0: 20 0c 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d .. /*. *------
32c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
32d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
32e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
32f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3300: 0a 40 40 20 2d 31 33 37 38 2c 31 30 20 2b 31 34 .@@ -1378,10 +14
3310: 33 33 2c 31 32 20 40 40 0a 20 09 20 20 20 20 66 33,12 @@. . f
3320: 6f 72 20 28 6f 62 6a 65 63 74 73 55 73 65 64 20 or (objectsUsed
3330: 3d 20 30 2c 20 74 6f 6b 65 6e 50 74 72 20 3d 20 = 0, tokenPtr =
3340: 70 61 72 73 65 2e 74 6f 6b 65 6e 50 74 72 3b 0a parse.tokenPtr;.
3350: 20 09 09 20 20 20 20 6f 62 6a 65 63 74 73 55 73 .. objectsUs
3360: 65 64 20 3c 20 70 61 72 73 65 2e 6e 75 6d 57 6f ed < parse.numWo
3370: 72 64 73 3b 0a 20 09 09 20 20 20 20 6f 62 6a 65 rds;. .. obje
3380: 63 74 73 55 73 65 64 2b 2b 2c 20 74 6f 6b 65 6e ctsUsed++, token
3390: 50 74 72 20 2b 3d 20 28 74 6f 6b 65 6e 50 74 72 Ptr += (tokenPtr
33a0: 2d 3e 6e 75 6d 43 6f 6d 70 6f 6e 65 6e 74 73 20 ->numComponents
33b0: 2b 20 31 29 29 20 7b 0a 2d 09 09 6f 62 6a 76 5b + 1)) {.-..objv[
33c0: 6f 62 6a 65 63 74 73 55 73 65 64 5d 20 3d 20 54 objectsUsed] = T
33d0: 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 28 69 6e cl_EvalTokens(in
33e0: 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 72 2b 31 terp, tokenPtr+1
33f0: 2c 0a 2d 09 09 09 74 6f 6b 65 6e 50 74 72 2d 3e ,.-...tokenPtr->
3400: 6e 75 6d 43 6f 6d 70 6f 6e 65 6e 74 73 29 3b 0a numComponents);.
3410: 2d 09 09 69 66 20 28 6f 62 6a 76 5b 6f 62 6a 65 -..if (objv[obje
3420: 63 74 73 55 73 65 64 5d 20 3d 3d 20 4e 55 4c 4c ctsUsed] == NULL
3430: 29 20 7b 0a 2d 09 09 20 20 20 20 63 6f 64 65 20 ) {.-.. code
3440: 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 09 = TCL_ERROR;.+..
3450: 63 6f 64 65 20 3d 20 54 63 6c 5f 45 76 61 6c 54 code = Tcl_EvalT
3460: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 28 69 6e okensStandard(in
3470: 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 72 2b 31 terp, tokenPtr+1
3480: 2c 20 0a 2b 09 09 20 20 20 20 20 20 20 20 20 20 , .+..
3490: 20 20 74 6f 6b 65 6e 50 74 72 2d 3e 6e 75 6d 43 tokenPtr->numC
34a0: 6f 6d 70 6f 6e 65 6e 74 73 29 3b 0a 2b 09 09 69 omponents);.+..i
34b0: 66 20 28 63 6f 64 65 20 3d 3d 20 54 43 4c 5f 4f f (code == TCL_O
34c0: 4b 29 20 7b 0a 2b 09 09 20 20 20 20 6f 62 6a 76 K) {.+.. objv
34d0: 5b 6f 62 6a 65 63 74 73 55 73 65 64 5d 20 3d 20 [objectsUsed] =
34e0: 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74 Tcl_GetObjResult
34f0: 28 69 6e 74 65 72 70 29 3b 0a 2b 09 09 20 20 20 (interp);.+..
3500: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e Tcl_IncrRefCoun
3510: 74 28 6f 62 6a 76 5b 6f 62 6a 65 63 74 73 55 73 t(objv[objectsUs
3520: 65 64 5d 29 3b 0a 2b 09 09 7d 20 65 6c 73 65 20 ed]);.+..} else
3530: 7b 0a 20 09 09 20 20 20 20 67 6f 74 6f 20 65 72 {. .. goto er
3540: 72 6f 72 3b 0a 20 09 09 7d 0a 20 09 20 20 20 20 ror;. ..}. .
3550: 7d 0a 40 40 20 2d 31 38 34 31 2c 36 20 2b 31 38 }.@@ -1841,6 +18
3560: 39 38 2c 37 20 40 40 0a 20 7b 0a 20 20 20 20 20 98,7 @@. {.
3570: 54 63 6c 5f 50 61 72 73 65 20 70 61 72 73 65 3b Tcl_Parse parse;
3580: 0a 20 20 20 20 20 72 65 67 69 73 74 65 72 20 54 . register T
3590: 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 3b 0a cl_Obj *objPtr;.
35a0: 2b 20 20 20 20 69 6e 74 20 63 6f 64 65 3b 0a 20 + int code;.
35b0: 0a 20 20 20 20 20 69 66 20 28 54 63 6c 5f 50 61 . if (Tcl_Pa
35c0: 72 73 65 56 61 72 4e 61 6d 65 28 69 6e 74 65 72 rseVarName(inter
35d0: 70 2c 20 73 74 72 69 6e 67 2c 20 2d 31 2c 20 26 p, string, -1, &
35e0: 70 61 72 73 65 2c 20 30 29 20 21 3d 20 54 43 4c parse, 0) != TCL
35f0: 5f 4f 4b 29 20 7b 0a 20 09 72 65 74 75 72 6e 20 _OK) {. .return
3600: 4e 55 4c 4c 3b 0a 40 40 20 2d 31 38 35 37 2c 32 NULL;.@@ -1857,2
3610: 32 20 2b 31 39 31 35 2c 31 39 20 40 40 0a 20 09 2 +1915,19 @@. .
3620: 72 65 74 75 72 6e 20 22 24 22 3b 0a 20 20 20 20 return "$";.
3630: 20 7d 0a 20 0a 2d 20 20 20 20 6f 62 6a 50 74 72 }. .- objPtr
3640: 20 3d 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e = Tcl_EvalToken
3650: 73 28 69 6e 74 65 72 70 2c 20 70 61 72 73 65 2e s(interp, parse.
3660: 74 6f 6b 65 6e 50 74 72 2c 20 70 61 72 73 65 2e tokenPtr, parse.
3670: 6e 75 6d 54 6f 6b 65 6e 73 29 3b 0a 2d 20 20 20 numTokens);.-
3680: 20 69 66 20 28 6f 62 6a 50 74 72 20 3d 3d 20 4e if (objPtr == N
3690: 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 63 6f 64 65 ULL) {.+ code
36a0: 20 3d 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e = Tcl_EvalToken
36b0: 73 53 74 61 6e 64 61 72 64 28 69 6e 74 65 72 70 sStandard(interp
36c0: 2c 20 70 61 72 73 65 2e 74 6f 6b 65 6e 50 74 72 , parse.tokenPtr
36d0: 2c 20 70 61 72 73 65 2e 6e 75 6d 54 6f 6b 65 6e , parse.numToken
36e0: 73 29 3b 0a 2b 20 20 20 20 69 66 20 28 63 6f 64 s);.+ if (cod
36f0: 65 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 e != TCL_OK) {.
3700: 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 .return NULL;.
3710: 20 20 20 7d 0a 2b 20 20 20 20 6f 62 6a 50 74 72 }.+ objPtr
3720: 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 = Tcl_GetObjRes
3730: 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 0a 20 ult(interp);. .
3740: 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 41 /*. * A
3750: 74 20 74 68 69 73 20 70 6f 69 6e 74 20 77 65 20 t this point we
3760: 73 68 6f 75 6c 64 20 68 61 76 65 20 61 6e 20 6f should have an o
3770: 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 bject containing
3780: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 the value of.
3790: 20 20 20 20 2a 20 61 20 76 61 72 69 61 62 6c 65 * a variable
37a0: 2e 20 20 4a 75 73 74 20 72 65 74 75 72 6e 20 74 . Just return t
37b0: 68 65 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 74 he string from t
37c0: 68 61 74 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 hat object..
37d0: 20 20 2a 2f 0a 20 0a 2d 23 69 66 64 65 66 20 54 */. .-#ifdef T
37e0: 43 4c 5f 43 4f 4d 50 49 4c 45 5f 44 45 42 55 47 CL_COMPILE_DEBUG
37f0: 0a 2d 20 20 20 20 69 66 20 28 6f 62 6a 50 74 72 .- if (objPtr
3800: 2d 3e 72 65 66 43 6f 75 6e 74 20 3c 20 32 29 20 ->refCount < 2)
3810: 7b 0a 2d 09 70 61 6e 69 63 28 22 54 63 6c 5f 50 {.-.panic("Tcl_P
3820: 61 72 73 65 56 61 72 20 67 6f 74 20 74 65 6d 70 arseVar got temp
3830: 6f 72 61 72 79 20 6f 62 6a 65 63 74 20 66 72 6f orary object fro
3840: 6d 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 m Tcl_EvalTokens
3850: 22 29 3b 0a 2d 20 20 20 20 7d 0a 2d 23 65 6e 64 ");.- }.-#end
3860: 69 66 20 2f 2a 54 43 4c 5f 43 4f 4d 50 49 4c 45 if /*TCL_COMPILE
3870: 5f 44 45 42 55 47 2a 2f 20 20 20 20 0a 2d 20 20 _DEBUG*/ .-
3880: 20 20 54 63 6c 44 65 63 72 52 65 66 43 6f 75 6e TclDecrRefCoun
3890: 74 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20 t(objPtr);.+
38a0: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 Tcl_IncrRefCount
38b0: 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20 54 (objPtr);.+ T
38c0: 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 cl_ResetResult(i
38d0: 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 72 65 74 nterp);. ret
38e0: 75 72 6e 20 54 63 6c 47 65 74 53 74 72 69 6e 67 urn TclGetString
38f0: 28 6f 62 6a 50 74 72 29 3b 0a 20 7d 0a 20 0c 0a (objPtr);. }. ..
3900: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
3910: 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d 3d 3d clStubInit.c.===
3920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3950: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3960: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
3970: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 oot/tcl/tcl/gene
3980: 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e ric/tclStubInit.
3990: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 c,v.retrieving r
39a0: 65 76 69 73 69 6f 6e 20 31 2e 36 30 0a 64 69 66 evision 1.60.dif
39b0: 66 20 2d 75 20 2d 72 31 2e 36 30 20 74 63 6c 53 f -u -r1.60 tclS
39c0: 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 67 65 tubInit.c.--- ge
39d0: 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 neric/tclStubIni
39e0: 74 2e 63 09 32 30 30 31 2f 30 39 2f 31 30 20 31 t.c.2001/09/10 1
39f0: 37 3a 31 37 3a 34 31 09 31 2e 36 30 0a 2b 2b 2b 7:17:41.1.60.+++
3a00: 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 generic/tclStub
3a10: 49 6e 69 74 2e 63 09 32 30 30 31 2f 30 39 2f 31 Init.c.2001/09/1
3a20: 32 20 31 38 3a 31 34 3a 31 37 0a 40 40 20 2d 38 2 18:14:17.@@ -8
3a30: 37 38 2c 36 20 2b 38 37 38 2c 37 20 40 40 0a 20 78,6 +878,7 @@.
3a40: 20 20 20 20 54 63 6c 5f 46 53 47 65 74 50 61 74 Tcl_FSGetPat
3a50: 68 54 79 70 65 2c 20 2f 2a 20 34 37 38 20 2a 2f hType, /* 478 */
3a60: 0a 20 20 20 20 20 54 63 6c 5f 4f 75 74 70 75 74 . Tcl_Output
3a70: 42 75 66 66 65 72 65 64 2c 20 2f 2a 20 34 37 39 Buffered, /* 479
3a80: 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 46 53 4d */. Tcl_FSM
3a90: 6f 75 6e 74 73 43 68 61 6e 67 65 64 2c 20 2f 2a ountsChanged, /*
3aa0: 20 34 38 30 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 480 */.+ Tcl
3ab0: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 _EvalTokensStand
3ac0: 61 72 64 2c 20 2f 2a 20 34 38 31 20 2a 2f 0a 20 ard, /* 481 */.
3ad0: 7d 3b 0a 20 0a 20 2f 2a 20 21 45 4e 44 21 3a 20 };. . /* !END!:
3ae0: 44 6f 20 6e 6f 74 20 65 64 69 74 20 61 62 6f 76 Do not edit abov
3af0: 65 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a 2f 0a e this line. */.
3b00: 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 70 61 72 Index: tests/par
3b10: 73 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d se.test.========
3b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3b30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3b40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3b50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
3b60: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
3b70: 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 70 61 72 cl/tcl/tests/par
3b80: 73 65 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 se.test,v.retrie
3b90: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
3ba0: 37 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 37 20 7.diff -u -r1.7
3bb0: 70 61 72 73 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 parse.test.--- t
3bc0: 65 73 74 73 2f 70 61 72 73 65 2e 74 65 73 74 09 ests/parse.test.
3bd0: 32 30 30 30 2f 30 34 2f 31 30 20 31 37 3a 31 39 2000/04/10 17:19
3be0: 3a 30 32 09 31 2e 37 0a 2b 2b 2b 20 74 65 73 74 :02.1.7.+++ test
3bf0: 73 2f 70 61 72 73 65 2e 74 65 73 74 09 32 30 30 s/parse.test.200
3c00: 31 2f 30 39 2f 31 32 20 31 38 3a 31 34 3a 31 37 1/09/12 18:14:17
3c10: 0a 40 40 20 2d 37 33 32 2c 36 20 2b 37 33 32 2c .@@ -732,6 +732,
3c20: 31 30 20 40 40 0a 20 20 20 20 20 73 75 62 73 74 10 @@. subst
3c30: 20 7b 5b 65 76 61 6c 20 7b 72 65 74 75 72 6e 20 {[eval {return
3c40: 66 6f 6f 7d 5d 62 61 72 7d 0a 20 7d 20 66 6f 6f foo}]bar}. } foo
3c50: 62 61 72 0a 20 0a 2b 74 65 73 74 20 70 61 72 73 bar. .+test pars
3c60: 65 2d 31 37 2e 31 20 7b 43 6f 72 72 65 63 74 20 e-17.1 {Correct
3c70: 72 65 74 75 72 6e 20 63 6f 64 65 73 20 66 72 6f return codes fro
3c80: 6d 20 65 72 72 6f 72 73 20 64 75 72 69 6e 67 20 m errors during
3c90: 73 75 62 73 74 69 74 75 74 69 6f 6e 7d 20 7b 0a substitution} {.
3ca0: 2b 20 20 20 20 63 61 74 63 68 20 7b 65 76 61 6c + catch {eval
3cb0: 20 7b 77 5b 63 6f 6e 74 69 6e 75 65 5d 7d 7d 0a {w[continue]}}.
3cc0: 2b 7d 20 34 0a 2b 0a 20 23 20 63 6c 65 61 6e 75 +} 4.+. # cleanu
3cd0: 70 0a 20 63 61 74 63 68 20 7b 75 6e 73 65 74 20 p. catch {unset
3ce0: 61 7d 0a 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 a}. ::tcltest::c
3cf0: 6c 65 61 6e 75 70 54 65 73 74 73 0a leanupTests.