Attachment "tip181.patch" to
ticket [958222ffff]
added by
tallniel
2004-05-22 03:09:12.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d 65 73 Index: doc/names
0010: 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d pace.n.=========
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 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 73 70 l/tcl/doc/namesp
0080: 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 ace.n,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 33 ng revision 1.13
00a0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 33 20 .diff -u -r1.13
00b0: 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 2d 20 namespace.n.---
00c0: 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e 6e 09 doc/namespace.n.
00d0: 39 20 4d 61 72 20 32 30 30 34 20 31 32 3a 35 39 9 Mar 2004 12:59
00e0: 3a 30 34 20 2d 30 30 30 30 09 31 2e 31 33 0a 2b :04 -0000.1.13.+
00f0: 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 ++ doc/namespace
0100: 2e 6e 09 32 31 20 4d 61 79 20 32 30 30 34 20 31 .n.21 May 2004 1
0110: 39 3a 31 39 3a 31 33 20 2d 30 30 30 30 0a 40 40 9:19:13 -0000.@@
0120: 20 2d 32 33 37 2c 36 20 2b 32 33 37 2c 31 36 20 -237,6 +237,16
0130: 40 40 0a 20 49 74 20 64 6f 65 73 20 6e 6f 74 20 @@. It does not
0140: 63 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 68 check whether th
0150: 65 20 6e 61 6d 65 73 70 61 63 65 20 6e 61 6d 65 e namespace name
0160: 73 20 61 72 65 2c 20 69 6e 20 66 61 63 74 2c 0a s are, in fact,.
0170: 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 63 75 the names of cu
0180: 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 20 rrently defined
0190: 6e 61 6d 65 73 70 61 63 65 73 2e 0a 20 2e 54 50 namespaces.. .TP
01a0: 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 75 .+\fBnamespace u
01b0: 6e 6b 6e 6f 77 6e 5c 66 52 20 3f 5c 66 49 73 63 nknown\fR ?\fIsc
01c0: 72 69 70 74 5c 66 52 3f 0a 2b 53 65 74 73 20 6f ript\fR?.+Sets o
01d0: 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 75 6e r returns the un
01e0: 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 known command ha
01f0: 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 ndler for the cu
0200: 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 2e rrent namespace.
0210: 0a 2b 54 68 65 20 68 61 6e 64 6c 65 72 20 69 73 .+The handler is
0220: 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 invoked when a
0230: 63 6f 6d 6d 61 6e 64 20 63 61 6c 6c 65 64 20 66 command called f
0240: 72 6f 6d 20 77 69 74 68 69 6e 20 74 68 65 20 6e rom within the n
0250: 61 6d 65 73 70 61 63 65 0a 2b 63 61 6e 6e 6f 74 amespace.+cannot
0260: 20 62 65 20 66 6f 75 6e 64 2e 20 54 68 65 20 5c be found. The \
0270: 66 49 73 63 72 69 70 74 5c 66 52 20 61 72 67 75 fIscript\fR argu
0280: 6d 65 6e 74 2c 20 69 66 20 67 69 76 65 6e 2c 20 ment, if given,
0290: 73 68 6f 75 6c 64 20 62 65 20 61 20 77 65 6c 6c should be a well
02a0: 0a 2b 66 6f 72 6d 65 64 20 6c 69 73 74 20 72 65 .+formed list re
02b0: 70 72 65 73 65 6e 74 69 6e 67 20 61 20 63 6f 6d presenting a com
02c0: 6d 61 6e 64 20 6e 61 6d 65 20 61 6e 64 20 6f 70 mand name and op
02d0: 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 tional arguments
02e0: 2e 20 57 68 65 6e 0a 2b 74 68 65 20 68 61 6e 64 . When.+the hand
02f0: 6c 65 72 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 ler is invoked,
0300: 74 68 65 20 66 75 6c 6c 20 69 6e 76 6f 63 61 74 the full invocat
0310: 69 6f 6e 20 6c 69 6e 65 20 77 69 6c 6c 20 62 65 ion line will be
0320: 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 appended to the
0330: 0a 2b 73 63 72 69 70 74 20 61 6e 64 20 74 68 65 .+script and the
0340: 20 72 65 73 75 6c 74 20 65 76 61 6c 75 61 74 65 result evaluate
0350: 64 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 d in the context
0360: 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 of the namespac
0370: 65 2e 20 54 68 65 20 0a 2b 64 65 66 61 75 6c 74 e. The .+default
0380: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 6c 6c handler for all
0390: 20 6e 61 6d 65 73 70 61 63 65 73 20 69 73 20 5c namespaces is \
03a0: 66 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e 20 fB::unknown\fR.
03b0: 49 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 0a 2b If no argument.+
03c0: 69 73 20 67 69 76 65 6e 2c 20 69 74 20 72 65 74 is given, it ret
03d0: 75 72 6e 73 20 74 68 65 20 68 61 6e 64 6c 65 72 urns the handler
03e0: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 for the current
03f0: 20 6e 61 6d 65 73 70 61 63 65 2e 0a 2b 2e 54 50 namespace..+.TP
0400: 0a 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 77 . \fBnamespace w
0410: 68 69 63 68 5c 66 52 20 3f 5c 2d 5c 66 42 63 6f hich\fR ?\-\fBco
0420: 6d 6d 61 6e 64 5c 66 52 3f 20 3f 5c 2d 5c 66 42 mmand\fR? ?\-\fB
0430: 76 61 72 69 61 62 6c 65 5c 66 52 3f 20 5c 66 49 variable\fR? \fI
0440: 6e 61 6d 65 5c 66 52 0a 20 4c 6f 6f 6b 73 20 75 name\fR. Looks u
0450: 70 20 5c 66 49 6e 61 6d 65 5c 66 52 20 61 73 20 p \fIname\fR as
0460: 65 69 74 68 65 72 20 61 20 63 6f 6d 6d 61 6e 64 either a command
0470: 20 6f 72 20 76 61 72 69 61 62 6c 65 0a 20 61 6e or variable. an
0480: 64 20 72 65 74 75 72 6e 73 20 69 74 73 20 66 75 d returns its fu
0490: 6c 6c 79 2d 71 75 61 6c 69 66 69 65 64 20 6e 61 lly-qualified na
04a0: 6d 65 2e 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 75 me..Index: doc/u
04b0: 6e 6b 6e 6f 77 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d nknown.n.=======
04c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
0500: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
0510: 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 75 6e 6b 6e tcl/tcl/doc/unkn
0520: 6f 77 6e 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 own.n,v.retrievi
0530: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34 0a ng revision 1.4.
0540: 64 69 66 66 20 2d 75 20 2d 72 31 2e 34 20 75 6e diff -u -r1.4 un
0550: 6b 6e 6f 77 6e 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f known.n.--- doc/
0560: 75 6e 6b 6e 6f 77 6e 2e 6e 09 32 37 20 4a 75 6e unknown.n.27 Jun
0570: 20 32 30 30 31 20 32 31 3a 30 30 3a 34 35 20 2d 2001 21:00:45 -
0580: 30 30 30 30 09 31 2e 34 0a 2b 2b 2b 20 64 6f 63 0000.1.4.+++ doc
0590: 2f 75 6e 6b 6e 6f 77 6e 2e 6e 09 32 31 20 4d 61 /unknown.n.21 Ma
05a0: 79 20 32 30 30 34 20 31 39 3a 31 39 3a 31 33 20 y 2004 19:19:13
05b0: 2d 30 30 30 30 0a 40 40 20 2d 32 33 2c 31 35 20 -0000.@@ -23,15
05c0: 2b 32 33 2c 31 37 20 40 40 0a 20 74 72 69 65 73 +23,17 @@. tries
05d0: 20 74 6f 20 69 6e 76 6f 6b 65 20 61 20 63 6f 6d to invoke a com
05e0: 6d 61 6e 64 20 74 68 61 74 20 64 6f 65 73 6e 27 mand that doesn'
05f0: 74 20 65 78 69 73 74 2e 20 20 54 68 65 20 64 65 t exist. The de
0600: 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 fault implementa
0610: 74 69 6f 6e 0a 20 6f 66 20 5c 66 42 75 6e 6b 6e tion. of \fBunkn
0620: 6f 77 6e 5c 66 52 20 69 73 20 61 20 6c 69 62 72 own\fR is a libr
0630: 61 72 79 20 70 72 6f 63 65 64 75 72 65 20 64 65 ary procedure de
0640: 66 69 6e 65 64 20 77 68 65 6e 20 54 63 6c 20 69 fined when Tcl i
0650: 6e 69 74 69 61 6c 69 7a 65 73 20 61 6e 0a 20 69 nitializes an. i
0660: 6e 74 65 72 70 72 65 74 65 72 2e 20 20 59 6f 75 nterpreter. You
0670: 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 can override th
0680: 65 20 64 65 66 61 75 6c 74 20 5c 66 42 75 6e 6b e default \fBunk
0690: 6e 6f 77 6e 5c 66 52 20 74 6f 20 63 68 61 6e 67 nown\fR to chang
06a0: 65 20 69 74 73 0a 2d 66 75 6e 63 74 69 6f 6e 61 e its.-functiona
06b0: 6c 69 74 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 lity. Note that
06c0: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 there is no def
06d0: 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 ault implementat
06e0: 69 6f 6e 20 6f 66 0a 2d 5c 66 42 75 6e 6b 6e 6f ion of.-\fBunkno
06f0: 77 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 wn\fR in a safe
0700: 69 6e 74 65 72 70 72 65 74 65 72 2e 0a 2b 66 75 interpreter..+fu
0710: 6e 63 74 69 6f 6e 61 6c 69 74 79 2c 20 6f 72 20 nctionality, or
0720: 79 6f 75 20 63 61 6e 20 72 65 67 69 73 74 65 72 you can register
0730: 20 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 66 a new handler f
0740: 6f 72 20 69 6e 64 69 76 69 64 75 61 6c 20 6e 61 or individual na
0750: 6d 65 73 70 61 63 65 73 0a 2b 75 73 69 6e 67 20 mespaces.+using
0760: 74 68 65 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 the \fBnamespace
0770: 20 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d unknown\fR comm
0780: 61 6e 64 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 and. Note that
0790: 74 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 there is no defa
07a0: 75 6c 74 20 0a 2b 69 6d 70 6c 65 6d 65 6e 74 61 ult .+implementa
07b0: 74 69 6f 6e 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f tion of \fBunkno
07c0: 77 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 wn\fR in a safe
07d0: 69 6e 74 65 72 70 72 65 74 65 72 2e 0a 20 2e 50 interpreter.. .P
07e0: 50 0a 20 49 66 20 74 68 65 20 54 63 6c 20 69 6e P. If the Tcl in
07f0: 74 65 72 70 72 65 74 65 72 20 65 6e 63 6f 75 6e terpreter encoun
0800: 74 65 72 73 20 61 20 63 6f 6d 6d 61 6e 64 20 6e ters a command n
0810: 61 6d 65 20 66 6f 72 20 77 68 69 63 68 20 74 68 ame for which th
0820: 65 72 65 0a 20 69 73 20 6e 6f 74 20 61 20 64 65 ere. is not a de
0830: 66 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 2c 20 74 fined command, t
0840: 68 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 hen Tcl checks f
0850: 6f 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 or the existence
0860: 20 6f 66 0a 2d 61 20 63 6f 6d 6d 61 6e 64 20 6e of.-a command n
0870: 61 6d 65 64 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c amed \fBunknown\
0880: 66 52 2e 0a 2d 49 66 20 74 68 65 72 65 20 69 73 fR..-If there is
0890: 20 6e 6f 20 73 75 63 68 20 63 6f 6d 6d 61 6e 64 no such command
08a0: 2c 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 , then the inter
08b0: 70 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 preter returns a
08c0: 6e 0a 2d 65 72 72 6f 72 2e 0a 2d 49 66 20 74 68 n.-error..-If th
08d0: 65 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 e \fBunknown\fR
08e0: 63 6f 6d 6d 61 6e 64 20 65 78 69 73 74 73 2c 20 command exists,
08f0: 74 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b then it is invok
0900: 65 64 20 77 69 74 68 0a 2b 61 6e 20 75 6e 6b 6e ed with.+an unkn
0910: 6f 77 6e 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 own handler for
0920: 74 68 65 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 the current name
0930: 73 70 61 63 65 2e 20 42 79 20 64 65 66 61 75 6c space. By defaul
0940: 74 2c 20 74 68 69 73 0a 2b 68 61 6e 64 6c 65 72 t, this.+handler
0950: 20 69 73 20 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 is a command na
0960: 6d 65 64 20 5c 66 42 3a 3a 75 6e 6b 6e 6f 77 6e med \fB::unknown
0970: 5c 66 52 2e 20 20 49 66 20 74 68 65 72 65 20 69 \fR. If there i
0980: 73 20 6e 6f 20 73 75 63 68 20 0a 2b 63 6f 6d 6d s no such .+comm
0990: 61 6e 64 2c 20 74 68 65 6e 20 74 68 65 20 69 6e and, then the in
09a0: 74 65 72 70 72 65 74 65 72 20 72 65 74 75 72 6e terpreter return
09b0: 73 20 61 6e 20 65 72 72 6f 72 2e 0a 2b 49 66 20 s an error..+If
09c0: 74 68 65 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 the \fBunknown\f
09d0: 52 20 63 6f 6d 6d 61 6e 64 20 65 78 69 73 74 73 R command exists
09e0: 20 28 6f 72 20 61 20 6e 65 77 20 68 61 6e 64 6c (or a new handl
09f0: 65 72 20 68 61 73 20 62 65 65 6e 0a 2b 72 65 67 er has been.+reg
0a00: 69 73 74 65 72 65 64 20 66 6f 72 20 74 68 65 20 istered for the
0a10: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
0a20: 65 29 2c 20 74 68 65 6e 20 69 74 20 69 73 20 69 e), then it is i
0a30: 6e 76 6f 6b 65 64 20 77 69 74 68 0a 20 61 72 67 nvoked with. arg
0a40: 75 6d 65 6e 74 73 20 63 6f 6e 73 69 73 74 69 6e uments consistin
0a50: 67 20 6f 66 20 74 68 65 20 66 75 6c 6c 79 2d 73 g of the fully-s
0a60: 75 62 73 74 69 74 75 74 65 64 20 6e 61 6d 65 20 ubstituted name
0a70: 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 0a 20 66 and arguments. f
0a80: 6f 72 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 or the original
0a90: 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20 63 6f 6d non-existent com
0aa0: 6d 61 6e 64 2e 0a 20 54 68 65 20 5c 66 42 75 6e mand.. The \fBun
0ab0: 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64 known\fR command
0ac0: 20 74 79 70 69 63 61 6c 6c 79 20 64 6f 65 73 20 typically does
0ad0: 74 68 69 6e 67 73 20 6c 69 6b 65 20 73 65 61 72 things like sear
0ae0: 63 68 69 6e 67 0a 40 40 20 2d 37 33 2c 37 20 2b ching.@@ -73,7 +
0af0: 37 35 2c 37 20 40 40 0a 20 65 78 65 63 75 74 65 75,7 @@. execute
0b00: 64 2e 0a 20 0a 20 2e 53 48 20 22 53 45 45 20 41 d.. . .SH "SEE A
0b10: 4c 53 4f 22 0a 2d 69 6e 66 6f 28 6e 29 2c 20 70 LSO".-info(n), p
0b20: 72 6f 63 28 6e 29 2c 20 69 6e 74 65 72 70 28 6e roc(n), interp(n
0b30: 29 2c 20 6c 69 62 72 61 72 79 28 6e 29 0a 2b 69 ), library(n).+i
0b40: 6e 66 6f 28 6e 29 2c 20 70 72 6f 63 28 6e 29 2c nfo(n), proc(n),
0b50: 20 69 6e 74 65 72 70 28 6e 29 2c 20 6c 69 62 72 interp(n), libr
0b60: 61 72 79 28 6e 29 2c 20 6e 61 6d 65 73 70 61 63 ary(n), namespac
0b70: 65 28 6e 29 0a 20 0a 20 2e 53 48 20 4b 45 59 57 e(n). . .SH KEYW
0b80: 4f 52 44 53 0a 20 65 72 72 6f 72 2c 20 6e 6f 6e ORDS. error, non
0b90: 2d 65 78 69 73 74 65 6e 74 20 63 6f 6d 6d 61 6e -existent comman
0ba0: 64 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 d.Index: generic
0bb0: 2f 74 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d /tclBasic.c.====
0bc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0bd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0be0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0bf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============.
0c00: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f RCS file: /cvsro
0c10: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 ot/tcl/tcl/gener
0c20: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a ic/tclBasic.c,v.
0c30: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 retrieving revis
0c40: 69 6f 6e 20 31 2e 31 30 32 0a 64 69 66 66 20 2d ion 1.102.diff -
0c50: 75 20 2d 72 31 2e 31 30 32 20 74 63 6c 42 61 73 u -r1.102 tclBas
0c60: 69 63 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 ic.c.--- generic
0c70: 2f 74 63 6c 42 61 73 69 63 2e 63 09 32 30 20 4d /tclBasic.c.20 M
0c80: 61 79 20 32 30 30 34 20 31 33 3a 30 34 3a 31 31 ay 2004 13:04:11
0c90: 20 2d 30 30 30 30 09 31 2e 31 30 32 0a 2b 2b 2b -0000.1.102.+++
0ca0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 generic/tclBasi
0cb0: 63 2e 63 09 32 31 20 4d 61 79 20 32 30 30 34 20 c.c.21 May 2004
0cc0: 31 39 3a 31 39 3a 32 34 20 2d 30 30 30 30 0a 40 19:19:24 -0000.@
0cd0: 40 20 2d 39 2c 31 33 20 2b 39 2c 31 33 20 40 40 @ -9,13 +9,13 @@
0ce0: 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 . * Copyright (
0cf0: 63 29 20 31 39 39 34 2d 31 39 39 37 20 53 75 6e c) 1994-1997 Sun
0d00: 20 4d 69 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 Microsystems, I
0d10: 6e 63 2e 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 nc.. * Copyrigh
0d20: 74 20 28 63 29 20 31 39 39 38 2d 31 39 39 39 20 t (c) 1998-1999
0d30: 62 79 20 53 63 72 69 70 74 69 63 73 20 43 6f 72 by Scriptics Cor
0d40: 70 6f 72 61 74 69 6f 6e 2e 0a 20 20 2a 20 43 6f poration.. * Co
0d50: 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 31 pyright (c) 2001
0d60: 2c 20 32 30 30 32 20 62 79 20 4b 65 76 69 6e 20 , 2002 by Kevin
0d70: 42 2e 20 4b 65 6e 6e 79 2e 20 20 41 6c 6c 20 72 B. Kenny. All r
0d80: 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a ights reserved..
0d90: 2b 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 + * Copyright (c
0da0: 29 20 32 30 30 34 20 4e 65 69 6c 20 4d 61 64 64 ) 2004 Neil Madd
0db0: 65 6e 2e 0a 20 20 2a 0a 20 20 2a 20 53 65 65 20 en.. *. * See
0dc0: 74 68 65 20 66 69 6c 65 20 22 6c 69 63 65 6e 73 the file "licens
0dd0: 65 2e 74 65 72 6d 73 22 20 66 6f 72 20 69 6e 66 e.terms" for inf
0de0: 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 73 61 67 ormation on usag
0df0: 65 20 61 6e 64 20 72 65 64 69 73 74 72 69 62 75 e and redistribu
0e00: 74 69 6f 6e 0a 20 20 2a 20 6f 66 20 74 68 69 73 tion. * of this
0e10: 20 66 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20 61 file, and for a
0e20: 20 44 49 53 43 4c 41 49 4d 45 52 20 4f 46 20 41 DISCLAIMER OF A
0e30: 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 2e 0a 20 LL WARRANTIES..
0e40: 20 2a 0a 20 20 2a 20 52 43 53 3a 20 40 28 23 29 *. * RCS: @(#)
0e50: 20 24 49 64 3a 20 74 63 6c 42 61 73 69 63 2e 63 $Id: tclBasic.c
0e60: 2c 76 20 31 2e 31 30 32 20 32 30 30 34 2f 30 35 ,v 1.102 2004/05
0e70: 2f 32 30 20 31 33 3a 30 34 3a 31 31 20 64 6b 66 /20 13:04:11 dkf
0e80: 20 45 78 70 20 24 0a 20 20 2a 2f 0a 2d 0a 20 23 Exp $. */.-. #
0e90: 69 6e 63 6c 75 64 65 20 22 74 63 6c 49 6e 74 2e include "tclInt.
0ea0: 68 22 0a 20 23 69 6e 63 6c 75 64 65 20 22 74 63 h". #include "tc
0eb0: 6c 43 6f 6d 70 69 6c 65 2e 68 22 0a 20 0a 40 40 lCompile.h". .@@
0ec0: 20 2d 33 30 34 32 2c 36 20 2b 33 30 34 32 2c 31 -3042,6 +3042,1
0ed0: 30 20 40 40 0a 20 20 20 20 20 69 6e 74 20 69 3b 0 @@. int i;
0ee0: 0a 20 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 . CallFrame
0ef0: 2a 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 *savedVarFramePt
0f00: 72 3b 09 2f 2a 20 53 61 76 65 73 20 6f 6c 64 20 r;./* Saves old
0f10: 63 6f 70 79 20 6f 66 20 69 50 74 72 2d 3e 76 61 copy of iPtr->va
0f20: 72 46 72 61 6d 65 50 74 72 0a 20 09 09 09 09 09 rFramePtr. .....
0f30: 20 2a 20 69 6e 20 63 61 73 65 20 54 43 4c 5f 45 * in case TCL_E
0f40: 56 41 4c 5f 47 4c 4f 42 41 4c 20 77 61 73 20 73 VAL_GLOBAL was s
0f50: 65 74 2e 20 2a 2f 0a 2b 20 20 20 20 4e 61 6d 65 et. */.+ Name
0f60: 73 70 61 63 65 20 2a 63 75 72 72 4e 73 50 74 72 space *currNsPtr
0f70: 20 3d 20 4e 55 4c 4c 3b 09 2f 2a 20 55 73 65 64 = NULL;./* Used
0f80: 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 2c 20 61 to check for, a
0f90: 6e 64 20 69 6e 76 6f 6b 65 20 61 6e 79 0a 2b 09 nd invoke any.+.
0fa0: 09 09 09 09 20 2a 20 72 65 67 69 73 74 65 72 65 .... * registere
0fb0: 64 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 6d 61 d unknown commma
0fc0: 6e 64 0a 2b 09 09 09 09 09 20 2a 20 68 61 6e 64 nd.+..... * hand
0fd0: 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 ler for the curr
0fe0: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 0a 2b 09 ent namespace.+.
0ff0: 09 09 09 09 20 2a 20 28 73 65 65 20 54 49 50 20 .... * (see TIP
1000: 31 38 31 29 2e 20 2a 2f 0a 20 20 20 20 20 69 6e 181). */. in
1010: 74 20 63 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b t code = TCL_OK;
1020: 0a 20 20 20 20 20 69 6e 74 20 74 72 61 63 65 43 . int traceC
1030: 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 ode = TCL_OK;.
1040: 20 20 20 69 6e 74 20 63 68 65 63 6b 54 72 61 63 int checkTrac
1050: 65 73 20 3d 20 31 3b 0a 40 40 20 2d 33 30 37 37 es = 1;.@@ -3077
1060: 2c 31 35 20 2b 33 30 38 31 2c 36 31 20 40 40 0a ,15 +3081,61 @@.
1070: 20 09 20 20 20 20 69 50 74 72 2d 3e 76 61 72 46 . iPtr->varF
1080: 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a ramePtr = NULL;.
1090: 20 09 7d 0a 20 20 20 20 20 20 20 20 20 63 6d 64 .}. cmd
10a0: 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e 64 20 2a Ptr = (Command *
10b0: 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64 ) Tcl_GetCommand
10c0: 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 FromObj(interp,
10d0: 6f 62 6a 76 5b 30 5d 29 3b 0a 2b 09 2f 2a 0a 2b objv[0]);.+./*.+
10e0: 09 20 2a 20 47 72 61 62 20 63 75 72 72 65 6e 74 . * Grab current
10f0: 20 6e 61 6d 65 73 70 61 63 65 20 62 65 66 6f 72 namespace befor
1100: 65 20 72 65 73 74 6f 72 69 6e 67 20 76 61 72 20 e restoring var
1110: 66 72 61 6d 65 2c 20 66 6f 72 20 75 6e 6b 6e 6f frame, for unkno
1120: 77 6e 0a 2b 09 20 2a 20 68 61 6e 64 6c 65 72 20 wn.+. * handler
1130: 63 68 65 63 6b 20 62 65 6c 6f 77 2e 20 49 6d 70 check below. Imp
1140: 6f 72 74 61 6e 74 20 74 6f 20 67 72 61 62 20 69 ortant to grab i
1150: 74 20 68 65 72 65 20 73 6f 20 74 68 61 74 20 77 t here so that w
1160: 65 0a 2b 09 20 2a 20 72 65 73 70 65 63 74 20 74 e.+. * respect t
1170: 68 65 20 54 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f he TCL_EVAL_INVO
1180: 4b 45 2f 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 KE/TCL_EVAL_GLOB
1190: 41 4c 20 66 6c 61 67 73 20 77 68 69 63 68 20 6d AL flags which m
11a0: 61 79 0a 2b 09 20 2a 20 68 61 76 65 20 62 65 65 ay.+. * have bee
11b0: 6e 20 70 61 73 73 65 64 2e 0a 2b 09 20 2a 2f 0a n passed..+. */.
11c0: 2b 09 69 66 20 28 69 50 74 72 2d 3e 76 61 72 46 +.if (iPtr->varF
11d0: 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 ramePtr != NULL)
11e0: 20 7b 0a 2b 09 20 20 20 20 63 75 72 72 4e 73 50 {.+. currNsP
11f0: 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 tr = iPtr->varFr
1200: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 2b amePtr->nsPtr;.+
1210: 09 20 20 20 20 69 66 20 28 63 75 72 72 4e 73 50 . if (currNsP
1220: 74 72 20 3d 3d 20 4e 55 4c 4c 20 7c 7c 20 63 75 tr == NULL || cu
1230: 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e rrNsPtr->unknown
1240: 48 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 HandlerPtr == NU
1250: 4c 4c 29 20 7b 0a 2b 09 09 2f 2a 20 44 65 66 61 LL) {.+../* Defa
1260: 75 6c 74 20 68 61 6e 64 6c 65 72 20 69 73 20 74 ult handler is t
1270: 6f 20 66 6f 72 77 61 72 64 20 6f 6e 20 74 6f 20 o forward on to
1280: 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 global namespace
1290: 2e 20 2a 2f 0a 2b 09 09 63 75 72 72 4e 73 50 74 . */.+..currNsPt
12a0: 72 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c r = iPtr->global
12b0: 4e 73 50 74 72 3b 0a 2b 09 20 20 20 20 7d 0a 2b NsPtr;.+. }.+
12c0: 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 20 20 20 .} else {.+.
12d0: 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50 74 72 currNsPtr = iPtr
12e0: 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 3b 0a 2b ->globalNsPtr;.+
12f0: 09 7d 0a 2b 09 2f 2a 20 52 65 73 74 6f 72 65 20 .}.+./* Restore
1300: 76 61 72 20 66 72 61 6d 65 2e 20 2a 2f 0a 20 09 var frame. */. .
1310: 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 iPtr->varFramePt
1320: 72 20 3d 20 73 61 76 65 64 56 61 72 46 72 61 6d r = savedVarFram
1330: 65 50 74 72 3b 0a 20 0a 20 20 20 20 20 20 20 20 ePtr;. .
1340: 20 69 66 20 28 63 6d 64 50 74 72 20 3d 3d 20 4e if (cmdPtr == N
1350: 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 6e 65 77 ULL) {.-. new
1360: 4f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 Objv = (Tcl_Obj
1370: 2a 2a 29 20 63 6b 61 6c 6c 6f 63 28 28 75 6e 73 **) ckalloc((uns
1380: 69 67 6e 65 64 29 0a 2d 09 09 28 28 6f 62 6a 63 igned).-..((objc
1390: 20 2b 20 31 29 20 2a 20 73 69 7a 65 6f 66 20 28 + 1) * sizeof (
13a0: 54 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a 2d 09 Tcl_Obj *)));.-.
13b0: 20 20 20 20 66 6f 72 20 28 69 20 3d 20 6f 62 6a for (i = obj
13c0: 63 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d c-1; i >= 0; i--
13d0: 29 20 7b 0a 2d 09 20 20 20 20 20 20 20 20 6e 65 ) {.-. ne
13e0: 77 4f 62 6a 76 5b 69 2b 31 5d 20 3d 20 6f 62 6a wObjv[i+1] = obj
13f0: 76 5b 69 5d 3b 0a 2b 09 20 20 20 20 69 6e 74 20 v[i];.+. int
1400: 6e 65 77 4f 62 6a 63 3b 0a 2b 09 20 20 20 20 2f newObjc;.+. /
1410: 2a 0a 2b 09 20 20 20 20 20 2a 20 43 68 65 63 6b *.+. * Check
1420: 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 if there is an
1430: 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 20 unknown handler
1440: 72 65 67 69 73 74 65 72 65 64 20 66 6f 72 20 74 registered for t
1450: 68 69 73 0a 2b 09 20 20 20 20 20 2a 20 6e 61 6d his.+. * nam
1460: 65 73 70 61 63 65 2e 0a 2b 09 20 20 20 20 20 2a espace..+. *
1470: 2f 0a 2b 09 20 20 20 20 69 66 20 28 63 75 72 72 /.+. if (curr
1480: 4e 73 50 74 72 20 21 3d 20 4e 55 4c 4c 20 26 26 NsPtr != NULL &&
1490: 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e currNsPtr->unkn
14a0: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 21 3d ownHandlerPtr !=
14b0: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 09 69 6e 74 20 NULL) {.+..int
14c0: 68 61 6e 64 6c 65 72 4f 62 6a 63 3b 0a 2b 09 09 handlerObjc;.+..
14d0: 54 63 6c 5f 4f 62 6a 20 2a 2a 68 61 6e 64 6c 65 Tcl_Obj **handle
14e0: 72 4f 62 6a 76 3b 0a 2b 0a 2b 09 09 69 66 20 28 rObjv;.+.+..if (
14f0: 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c Tcl_ListObjGetEl
1500: 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 0a 2b ements(interp,.+
1510: 09 09 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d .. currNsPtr-
1520: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
1530: 74 72 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a 63 tr, &handlerObjc
1540: 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a 76 29 0a , &handlerObjv).
1550: 2b 09 09 20 20 20 20 21 3d 20 54 43 4c 5f 4f 4b +.. != TCL_OK
1560: 29 20 7b 0a 2b 09 09 20 20 20 20 72 65 74 75 72 ) {.+.. retur
1570: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 09 n TCL_ERROR;.+..
1580: 7d 0a 2b 09 09 6e 65 77 4f 62 6a 63 20 3d 20 6f }.+..newObjc = o
1590: 62 6a 63 20 2b 20 68 61 6e 64 6c 65 72 4f 62 6a bjc + handlerObj
15a0: 63 3b 0a 2b 09 09 6e 65 77 4f 62 6a 76 20 3d 20 c;.+..newObjv =
15b0: 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 61 (Tcl_Obj **) cka
15c0: 6c 6c 6f 63 28 28 75 6e 73 69 67 6e 65 64 29 0a lloc((unsigned).
15d0: 2b 09 09 20 20 20 20 28 6e 65 77 4f 62 6a 63 20 +.. (newObjc
15e0: 2a 20 73 69 7a 65 6f 66 20 28 54 63 6c 5f 4f 62 * sizeof (Tcl_Ob
15f0: 6a 20 2a 29 29 29 3b 0a 2b 09 09 66 6f 72 20 28 j *)));.+..for (
1600: 69 20 3d 20 30 3b 20 69 20 3c 20 68 61 6e 64 6c i = 0; i < handl
1610: 65 72 4f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b erObjc; i++) {.+
1620: 09 09 20 20 20 20 6e 65 77 4f 62 6a 76 5b 69 5d .. newObjv[i]
1630: 20 3d 20 68 61 6e 64 6c 65 72 4f 62 6a 76 5b 69 = handlerObjv[i
1640: 5d 3b 0a 2b 09 09 7d 0a 2b 09 09 66 6f 72 20 28 ];.+..}.+..for (
1650: 69 20 3d 20 6f 62 6a 63 2d 31 3b 20 69 20 3e 3d i = objc-1; i >=
1660: 20 30 3b 20 69 2d 2d 29 20 7b 0a 2b 09 09 20 20 0; i--) {.+..
1670: 20 20 6e 65 77 4f 62 6a 76 5b 69 2b 68 61 6e 64 newObjv[i+hand
1680: 6c 65 72 4f 62 6a 63 5d 20 3d 20 6f 62 6a 76 5b lerObjc] = objv[
1690: 69 5d 3b 0a 2b 09 09 7d 0a 2b 09 20 20 20 20 7d i];.+..}.+. }
16a0: 20 65 6c 73 65 20 7b 0a 2b 09 09 2f 2a 0a 2b 09 else {.+../*.+.
16b0: 09 20 2a 20 44 65 66 61 75 6c 74 20 67 6c 6f 62 . * Default glob
16c0: 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 68 61 6e al namespace han
16d0: 64 6c 65 72 20 2d 20 73 69 6d 70 6c 79 20 63 61 dler - simply ca
16e0: 6c 6c 73 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b 09 lls ::unknown.+.
16f0: 09 20 2a 20 61 73 20 69 74 20 64 69 64 20 70 72 . * as it did pr
1700: 65 2d 54 49 50 2d 31 38 31 2e 0a 2b 09 09 20 2a e-TIP-181..+.. *
1710: 2f 0a 2b 09 09 6e 65 77 4f 62 6a 63 20 3d 20 6f /.+..newObjc = o
1720: 62 6a 63 20 2b 20 31 3b 0a 2b 09 09 6e 65 77 4f bjc + 1;.+..newO
1730: 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a bjv = (Tcl_Obj *
1740: 2a 29 20 63 6b 61 6c 6c 6f 63 28 28 75 6e 73 69 *) ckalloc((unsi
1750: 67 6e 65 64 29 0a 2b 09 09 20 20 20 20 28 6e 65 gned).+.. (ne
1760: 77 4f 62 6a 63 20 2a 20 73 69 7a 65 6f 66 20 28 wObjc * sizeof (
1770: 54 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a 2b 09 Tcl_Obj *)));.+.
1780: 09 66 6f 72 20 28 69 20 3d 20 6f 62 6a 63 2d 31 .for (i = objc-1
1790: 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d 29 20 7b ; i >= 0; i--) {
17a0: 0a 2b 09 09 20 20 20 20 6e 65 77 4f 62 6a 76 5b .+.. newObjv[
17b0: 69 2b 31 5d 20 3d 20 6f 62 6a 76 5b 69 5d 3b 0a i+1] = objv[i];.
17c0: 2b 09 09 7d 0a 2b 09 09 6e 65 77 4f 62 6a 76 5b +..}.+..newObjv[
17d0: 30 5d 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 0] = Tcl_NewStri
17e0: 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e ngObj("::unknown
17f0: 22 2c 20 2d 31 29 3b 0a 20 09 20 20 20 20 7d 0a ", -1);. . }.
1800: 2d 09 20 20 20 20 6e 65 77 4f 62 6a 76 5b 30 5d -. newObjv[0]
1810: 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 = Tcl_NewString
1820: 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c Obj("::unknown",
1830: 20 2d 31 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f -1);. . Tcl_
1840: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 IncrRefCount(new
1850: 4f 62 6a 76 5b 30 5d 29 3b 0a 20 09 20 20 20 20 Objv[0]);. .
1860: 63 6d 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e cmdPtr = (Comman
1870: 64 20 2a 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d d *) Tcl_GetComm
1880: 61 6e 64 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 andFromObj(inter
1890: 70 2c 20 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a p, newObjv[0]);.
18a0: 20 09 20 20 20 20 69 66 20 28 63 6d 64 50 74 72 . if (cmdPtr
18b0: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 40 40 20 2d == NULL) {.@@ -
18c0: 33 30 39 35 2c 37 20 2b 33 31 34 35 2c 37 20 40 3095,7 +3145,7 @
18d0: 40 0a 20 09 20 20 20 20 20 20 20 20 63 6f 64 65 @. . code
18e0: 20 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 = TCL_ERROR;. .
18f0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 09 20 } else {. .
1900: 20 20 20 20 20 20 20 69 50 74 72 2d 3e 6e 75 6d iPtr->num
1910: 4c 65 76 65 6c 73 2b 2b 3b 0a 2d 09 20 20 20 20 Levels++;.-.
1920: 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 45 76 code = TclEv
1930: 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 28 69 alObjvInternal(i
1940: 6e 74 65 72 70 2c 20 6f 62 6a 63 2b 31 2c 20 6e nterp, objc+1, n
1950: 65 77 4f 62 6a 76 2c 20 63 6f 6d 6d 61 6e 64 2c ewObjv, command,
1960: 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a 2b 09 20 length, 0);.+.
1970: 20 20 20 20 20 20 20 63 6f 64 65 20 3d 20 54 63 code = Tc
1980: 6c 45 76 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 lEvalObjvInterna
1990: 6c 28 69 6e 74 65 72 70 2c 20 6e 65 77 4f 62 6a l(interp, newObj
19a0: 63 2c 20 6e 65 77 4f 62 6a 76 2c 20 63 6f 6d 6d c, newObjv, comm
19b0: 61 6e 64 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b and, length, 0);
19c0: 0a 20 09 20 20 20 20 20 20 20 20 69 50 74 72 2d . . iPtr-
19d0: 3e 6e 75 6d 4c 65 76 65 6c 73 2d 2d 3b 0a 20 09 >numLevels--;. .
19e0: 20 20 20 20 7d 0a 20 09 20 20 20 20 54 63 6c 5f }. . Tcl_
19f0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 DecrRefCount(new
1a00: 4f 62 6a 76 5b 30 5d 29 3b 0a 49 6e 64 65 78 3a Objv[0]);.Index:
1a10: 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e generic/tclInt.
1a20: 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d h.==============
1a30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1a40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1a50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1a60: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 =====.RCS file:
1a70: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c /cvsroot/tcl/tcl
1a80: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e /generic/tclInt.
1a90: 68 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 h,v.retrieving r
1aa0: 65 76 69 73 69 6f 6e 20 31 2e 31 36 31 0a 64 69 evision 1.161.di
1ab0: 66 66 20 2d 75 20 2d 72 31 2e 31 36 31 20 74 63 ff -u -r1.161 tc
1ac0: 6c 49 6e 74 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 lInt.h.--- gener
1ad0: 69 63 2f 74 63 6c 49 6e 74 2e 68 09 32 30 20 4d ic/tclInt.h.20 M
1ae0: 61 79 20 32 30 30 34 20 31 33 3a 30 34 3a 31 31 ay 2004 13:04:11
1af0: 20 2d 30 30 30 30 09 31 2e 31 36 31 0a 2b 2b 2b -0000.1.161.+++
1b00: 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e generic/tclInt.
1b10: 68 09 32 31 20 4d 61 79 20 32 30 30 34 20 31 39 h.21 May 2004 19
1b20: 3a 31 39 3a 33 31 20 2d 30 30 30 30 0a 40 40 20 :19:31 -0000.@@
1b30: 2d 32 32 32 2c 36 20 2b 32 32 32 2c 39 20 40 40 -222,6 +222,9 @@
1b40: 0a 20 20 20 20 20 54 63 6c 5f 45 6e 73 65 6d 62 . Tcl_Ensemb
1b50: 6c 65 20 2a 65 6e 73 65 6d 62 6c 65 73 3b 09 2f le *ensembles;./
1b60: 2a 20 4c 69 73 74 20 6f 66 20 73 74 72 75 63 74 * List of struct
1b70: 75 72 65 73 20 74 68 61 74 20 63 6f 6e 74 61 69 ures that contai
1b80: 6e 20 74 68 65 20 64 65 74 61 69 6c 73 0a 20 09 n the details. .
1b90: 09 09 09 20 2a 20 6f 66 20 74 68 65 20 65 6e 73 ... * of the ens
1ba0: 65 6d 62 6c 65 73 20 74 68 61 74 20 61 72 65 20 embles that are
1bb0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 6f 6e 0a 20 implemented on.
1bc0: 09 09 09 09 20 2a 20 74 6f 70 20 6f 66 20 74 68 .... * top of th
1bd0: 69 73 20 6e 61 6d 65 73 70 61 63 65 2e 20 2a 2f is namespace. */
1be0: 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 75 .+ Tcl_Obj *u
1bf0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
1c00: 3b 09 2f 2a 20 41 20 73 63 72 69 70 74 20 66 72 ;./* A script fr
1c10: 61 67 6d 65 6e 74 20 74 6f 20 62 65 20 75 73 65 agment to be use
1c20: 64 20 77 68 65 6e 20 63 6f 6d 6d 61 6e 64 0a 2b d when command.+
1c30: 09 09 09 09 20 2a 20 72 65 73 6f 6c 75 74 69 6f .... * resolutio
1c40: 6e 20 69 6e 20 74 68 69 73 20 6e 61 6d 65 73 70 n in this namesp
1c50: 61 63 65 20 66 61 69 6c 73 2e 20 53 65 65 20 54 ace fails. See T
1c60: 49 50 0a 2b 09 09 09 09 20 2a 20 31 38 31 20 66 IP.+.... * 181 f
1c70: 6f 72 20 64 65 74 61 69 6c 73 2e 20 2a 2f 0a 20 or details. */.
1c80: 7d 20 4e 61 6d 65 73 70 61 63 65 3b 0a 20 0a 20 } Namespace;. .
1c90: 2f 2a 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 /*.Index: generi
1ca0: 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d 3d c/tclNamesp.c.==
1cb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1cc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1cd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1ce0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1cf0: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
1d00: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e root/tcl/tcl/gen
1d10: 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 eric/tclNamesp.c
1d20: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
1d30: 76 69 73 69 6f 6e 20 31 2e 33 37 0a 64 69 66 66 vision 1.37.diff
1d40: 20 2d 75 20 2d 72 31 2e 33 37 20 74 63 6c 4e 61 -u -r1.37 tclNa
1d50: 6d 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 mesp.c.--- gener
1d60: 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 32 ic/tclNamesp.c.2
1d70: 34 20 4d 61 72 20 32 30 30 34 20 32 31 3a 35 34 4 Mar 2004 21:54
1d80: 3a 33 32 20 2d 30 30 30 30 09 31 2e 33 37 0a 2b :32 -0000.1.37.+
1d90: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 ++ generic/tclNa
1da0: 6d 65 73 70 2e 63 09 32 31 20 4d 61 79 20 32 30 mesp.c.21 May 20
1db0: 30 34 20 31 39 3a 31 39 3a 34 34 20 2d 30 30 30 04 19:19:44 -000
1dc0: 30 0a 40 40 20 2d 31 32 2c 36 20 2b 31 32 2c 37 0.@@ -12,6 +12,7
1dd0: 20 40 40 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 @@. * Copyrigh
1de0: 74 20 28 63 29 20 31 39 39 37 20 53 75 6e 20 4d t (c) 1997 Sun M
1df0: 69 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 icrosystems, Inc
1e00: 2e 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 20 .. * Copyright
1e10: 28 63 29 20 31 39 39 38 2d 31 39 39 39 20 62 79 (c) 1998-1999 by
1e20: 20 53 63 72 69 70 74 69 63 73 20 43 6f 72 70 6f Scriptics Corpo
1e30: 72 61 74 69 6f 6e 2e 0a 20 20 2a 20 43 6f 70 79 ration.. * Copy
1e40: 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2d 32 right (c) 2002-2
1e50: 30 30 33 20 44 6f 6e 61 6c 20 4b 2e 20 46 65 6c 003 Donal K. Fel
1e60: 6c 6f 77 73 2e 0a 2b 20 2a 20 43 6f 70 79 72 69 lows..+ * Copyri
1e70: 67 68 74 20 28 63 29 20 32 30 30 34 20 4e 65 69 ght (c) 2004 Nei
1e80: 6c 20 4d 61 64 64 65 6e 2e 0a 20 20 2a 0a 20 20 l Madden.. *.
1e90: 2a 20 4f 72 69 67 69 6e 61 6c 6c 79 20 69 6d 70 * Originally imp
1ea0: 6c 65 6d 65 6e 74 65 64 20 62 79 0a 20 20 2a 20 lemented by. *
1eb0: 20 20 4d 69 63 68 61 65 6c 20 4a 2e 20 4d 63 4c Michael J. McL
1ec0: 65 6e 6e 61 6e 0a 40 40 20 2d 32 33 32 2c 36 20 ennan.@@ -232,6
1ed0: 2b 32 33 33 2c 39 20 40 40 0a 20 73 74 61 74 69 +233,9 @@. stati
1ee0: 63 20 69 6e 74 09 09 4e 61 6d 65 73 70 61 63 65 c int..Namespace
1ef0: 54 61 69 6c 43 6d 64 20 5f 41 4e 53 49 5f 41 52 TailCmd _ANSI_AR
1f00: 47 53 5f 28 28 0a 20 09 09 09 20 20 20 20 43 6c GS_((. ... Cl
1f10: 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 ientData dummy,
1f20: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
1f30: 72 70 2c 0a 20 09 09 09 20 20 20 20 69 6e 74 20 rp,. ... int
1f40: 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 objc, Tcl_Obj *C
1f50: 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 29 3b 0a 2b ONST objv[]));.+
1f60: 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 6d 65 static int..Name
1f70: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 20 spaceUnknownCmd
1f80: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 _ANSI_ARGS_((.+.
1f90: 09 09 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 .. ClientData
1fa0: 20 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 dummy, Tcl_Inte
1fb0: 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b 09 09 09 rp *interp,.+...
1fc0: 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 int objc, Tc
1fd0: 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a l_Obj *CONST obj
1fe0: 76 5b 5d 29 29 3b 0a 20 73 74 61 74 69 63 20 69 v[]));. static i
1ff0: 6e 74 09 09 4e 61 6d 65 73 70 61 63 65 57 68 69 nt..NamespaceWhi
2000: 63 68 43 6d 64 20 5f 41 4e 53 49 5f 41 52 47 53 chCmd _ANSI_ARGS
2010: 5f 28 28 0a 20 09 09 09 20 20 20 20 43 6c 69 65 _((. ... Clie
2020: 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 ntData dummy, Tc
2030: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 l_Interp *interp
2040: 2c 0a 20 09 09 09 20 20 20 20 69 6e 74 20 6f 62 ,. ... int ob
2050: 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e jc, Tcl_Obj *CON
2060: 53 54 20 6f 62 6a 76 5b 5d 29 29 3b 0a 40 40 20 ST objv[]));.@@
2070: 2d 36 36 37 2c 36 20 2b 36 37 31 2c 37 20 40 40 -667,6 +671,7 @@
2080: 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f 6d . nsPtr->com
2090: 70 69 6c 65 64 56 61 72 52 65 73 50 72 6f 63 20 piledVarResProc
20a0: 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 6e 73 50 = NULL;. nsP
20b0: 74 72 2d 3e 65 78 70 6f 72 74 4c 6f 6f 6b 75 70 tr->exportLookup
20c0: 45 70 6f 63 68 20 3d 20 30 3b 0a 20 20 20 20 20 Epoch = 0;.
20d0: 6e 73 50 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 73 nsPtr->ensembles
20e0: 09 20 20 20 20 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 . = NULL;.+
20f0: 20 20 20 6e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 nsPtr->unknow
2100: 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 4e 55 nHandlerPtr = NU
2110: 4c 4c 3b 0a 20 0a 20 20 20 20 20 69 66 20 28 70 LL;. . if (p
2120: 61 72 65 6e 74 50 74 72 20 21 3d 20 4e 55 4c 4c arentPtr != NULL
2130: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 65 6e 74 ) {. ent
2140: 72 79 50 74 72 20 3d 20 54 63 6c 5f 43 72 65 61 ryPtr = Tcl_Crea
2150: 74 65 48 61 73 68 45 6e 74 72 79 28 26 70 61 72 teHashEntry(&par
2160: 65 6e 74 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 entPtr->childTab
2170: 6c 65 2c 20 73 69 6d 70 6c 65 4e 61 6d 65 2c 0a le, simpleName,.
2180: 40 40 20 2d 37 35 36 2c 36 20 2b 37 36 31 2c 31 @@ -756,6 +761,1
2190: 34 20 40 40 0a 20 20 20 20 20 7d 0a 20 0a 20 20 4 @@. }. .
21a0: 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 49 66 /*.+ * If
21b0: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 68 the namespace h
21c0: 61 73 20 61 20 72 65 67 69 73 74 65 72 65 64 20 as a registered
21d0: 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 20 unknown handler
21e0: 28 54 49 50 20 31 38 31 29 2c 20 74 68 65 6e 20 (TIP 181), then
21f0: 66 72 65 65 0a 2b 20 20 20 20 20 2a 20 69 74 20 free.+ * it
2200: 68 65 72 65 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b here..+ */.+
2210: 20 20 20 20 69 66 20 28 6e 73 50 74 72 2d 3e 75 if (nsPtr->u
2220: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
2230: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54 63 != NULL) {.+.Tc
2240: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6e l_DecrRefCount(n
2250: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
2260: 64 6c 65 72 50 74 72 29 3b 0a 2b 20 20 20 20 7d dlerPtr);.+ }
2270: 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 20 20 20 20 20 .+.+ /*.
2280: 20 2a 20 49 66 20 74 68 65 20 6e 61 6d 65 73 70 * If the namesp
2290: 61 63 65 20 69 73 20 6f 6e 20 74 68 65 20 63 61 ace is on the ca
22a0: 6c 6c 20 66 72 61 6d 65 20 73 74 61 63 6b 2c 20 ll frame stack,
22b0: 69 74 20 69 73 20 6d 61 72 6b 65 64 20 61 73 20 it is marked as
22c0: 22 64 79 69 6e 67 22 0a 20 20 20 20 20 20 2a 20 "dying". *
22d0: 28 4e 53 5f 44 59 49 4e 47 20 69 73 20 4f 52 27 (NS_DYING is OR'
22e0: 64 20 69 6e 74 6f 20 69 74 73 20 66 6c 61 67 73 d into its flags
22f0: 29 3a 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 ): the namespace
2300: 20 63 61 6e 27 74 20 62 65 20 6c 6f 6f 6b 65 64 can't be looked
2310: 20 75 70 0a 20 20 20 20 20 20 2a 20 62 79 20 6e up. * by n
2320: 61 6d 65 20 62 75 74 20 69 74 73 20 63 6f 6d 6d ame but its comm
2330: 61 6e 64 73 20 61 6e 64 20 76 61 72 69 61 62 6c ands and variabl
2340: 65 73 20 61 72 65 20 73 74 69 6c 6c 20 75 73 61 es are still usa
2350: 62 6c 65 20 62 79 20 74 68 6f 73 65 0a 40 40 20 ble by those.@@
2360: 2d 32 36 35 30 2c 31 33 20 2b 32 36 36 33 2c 31 -2650,13 +2663,1
2370: 33 20 40 40 0a 20 09 22 63 68 69 6c 64 72 65 6e 3 @@. ."children
2380: 22 2c 20 22 63 6f 64 65 22 2c 20 22 63 75 72 72 ", "code", "curr
2390: 65 6e 74 22 2c 20 22 64 65 6c 65 74 65 22 2c 20 ent", "delete",
23a0: 22 65 6e 73 65 6d 62 6c 65 22 2c 0a 20 09 22 65 "ensemble",. ."e
23b0: 76 61 6c 22 2c 20 22 65 78 69 73 74 73 22 2c 20 val", "exists",
23c0: 22 65 78 70 6f 72 74 22 2c 20 22 66 6f 72 67 65 "export", "forge
23d0: 74 22 2c 20 22 69 6d 70 6f 72 74 22 2c 0a 20 09 t", "import",. .
23e0: 22 69 6e 73 63 6f 70 65 22 2c 20 22 6f 72 69 67 "inscope", "orig
23f0: 69 6e 22 2c 20 22 70 61 72 65 6e 74 22 2c 20 22 in", "parent", "
2400: 71 75 61 6c 69 66 69 65 72 73 22 2c 0a 2d 09 22 qualifiers",.-."
2410: 74 61 69 6c 22 2c 20 22 77 68 69 63 68 22 2c 20 tail", "which",
2420: 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 0a 2b 09 (char *) NULL.+.
2430: 22 74 61 69 6c 22 2c 20 22 75 6e 6b 6e 6f 77 6e "tail", "unknown
2440: 22 2c 20 22 77 68 69 63 68 22 2c 20 28 63 68 61 ", "which", (cha
2450: 72 20 2a 29 20 4e 55 4c 4c 0a 20 20 20 20 20 7d r *) NULL. }
2460: 3b 0a 20 20 20 20 20 65 6e 75 6d 20 4e 53 53 75 ;. enum NSSu
2470: 62 43 6d 64 49 64 78 20 7b 0a 20 09 4e 53 43 68 bCmdIdx {. .NSCh
2480: 69 6c 64 72 65 6e 49 64 78 2c 20 4e 53 43 6f 64 ildrenIdx, NSCod
2490: 65 49 64 78 2c 20 4e 53 43 75 72 72 65 6e 74 49 eIdx, NSCurrentI
24a0: 64 78 2c 20 4e 53 44 65 6c 65 74 65 49 64 78 2c dx, NSDeleteIdx,
24b0: 20 4e 53 45 6e 73 65 6d 62 6c 65 49 64 78 2c 0a NSEnsembleIdx,.
24c0: 20 09 4e 53 45 76 61 6c 49 64 78 2c 20 4e 53 45 .NSEvalIdx, NSE
24d0: 78 69 73 74 73 49 64 78 2c 20 4e 53 45 78 70 6f xistsIdx, NSExpo
24e0: 72 74 49 64 78 2c 20 4e 53 46 6f 72 67 65 74 49 rtIdx, NSForgetI
24f0: 64 78 2c 20 4e 53 49 6d 70 6f 72 74 49 64 78 2c dx, NSImportIdx,
2500: 0a 20 09 4e 53 49 6e 73 63 6f 70 65 49 64 78 2c . .NSInscopeIdx,
2510: 20 4e 53 4f 72 69 67 69 6e 49 64 78 2c 20 4e 53 NSOriginIdx, NS
2520: 50 61 72 65 6e 74 49 64 78 2c 20 4e 53 51 75 61 ParentIdx, NSQua
2530: 6c 69 66 69 65 72 73 49 64 78 2c 0a 2d 09 4e 53 lifiersIdx,.-.NS
2540: 54 61 69 6c 49 64 78 2c 20 4e 53 57 68 69 63 68 TailIdx, NSWhich
2550: 49 64 78 0a 2b 09 4e 53 54 61 69 6c 49 64 78 2c Idx.+.NSTailIdx,
2560: 20 4e 53 55 6e 6b 6e 6f 77 6e 49 64 78 2c 20 4e NSUnknownIdx, N
2570: 53 57 68 69 63 68 49 64 78 0a 20 20 20 20 20 7d SWhichIdx. }
2580: 3b 0a 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 ;. int index
2590: 2c 20 72 65 73 75 6c 74 3b 0a 20 0a 40 40 20 2d , result;. .@@ -
25a0: 32 37 32 31 2c 36 20 2b 32 37 33 34 2c 39 20 40 2721,6 +2734,9 @
25b0: 40 0a 20 20 20 20 20 20 20 20 20 63 61 73 65 20 @. case
25c0: 4e 53 54 61 69 6c 49 64 78 3a 0a 20 09 20 20 20 NSTailIdx:. .
25d0: 20 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 result = Namesp
25e0: 61 63 65 54 61 69 6c 43 6d 64 28 63 6c 69 65 6e aceTailCmd(clien
25f0: 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f tData, interp, o
2600: 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 20 20 20 bjc, objv);.
2610: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a break;.
2620: 2b 09 63 61 73 65 20 4e 53 55 6e 6b 6e 6f 77 6e +.case NSUnknown
2630: 49 64 78 3a 0a 2b 09 20 20 20 20 72 65 73 75 6c Idx:.+. resul
2640: 74 20 3d 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b t = NamespaceUnk
2650: 6e 6f 77 6e 43 6d 64 28 63 6c 69 65 6e 74 44 61 nownCmd(clientDa
2660: 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 ta, interp, objc
2670: 2c 20 6f 62 6a 76 29 3b 0a 2b 09 20 20 20 20 62 , objv);.+. b
2680: 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 63 reak;. c
2690: 61 73 65 20 4e 53 57 68 69 63 68 49 64 78 3a 0a ase NSWhichIdx:.
26a0: 20 09 20 20 20 20 72 65 73 75 6c 74 20 3d 20 4e . result = N
26b0: 61 6d 65 73 70 61 63 65 57 68 69 63 68 43 6d 64 amespaceWhichCmd
26c0: 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 (clientData, int
26d0: 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 erp, objc, objv)
26e0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 62 ;. b
26f0: 72 65 61 6b 3b 0a 40 40 20 2d 33 37 38 31 2c 36 reak;.@@ -3781,6
2700: 20 2b 33 37 39 37 2c 39 33 20 40 40 0a 20 2f 2a +3797,93 @@. /*
2710: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *------------
2720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2b ----------. *.+
2760: 20 2a 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e * NamespaceUnkn
2770: 6f 77 6e 43 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 ownCmd --.+ *.+
2780: 2a 09 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 *.Invoked to imp
2790: 6c 65 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 lement the "name
27a0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 22 20 63 space unknown" c
27b0: 6f 6d 6d 61 6e 64 20 28 54 49 50 20 31 38 31 29 ommand (TIP 181)
27c0: 20 74 68 61 74 0a 2b 20 2a 09 73 65 74 73 20 6f that.+ *.sets o
27d0: 72 20 71 75 65 72 69 65 73 20 61 20 70 65 72 2d r queries a per-
27e0: 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 namespace unknow
27f0: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
2800: 72 2e 20 54 68 69 73 20 68 61 6e 64 6c 65 72 0a r. This handler.
2810: 2b 20 2a 09 69 73 20 63 61 6c 6c 65 64 20 77 68 + *.is called wh
2820: 65 6e 20 63 6f 6d 6d 61 6e 64 20 6c 6f 6f 6b 75 en command looku
2830: 70 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 p in the current
2840: 20 6e 61 6d 65 73 70 61 63 65 20 66 61 69 6c 73 namespace fails
2850: 2e 20 54 68 65 0a 2b 20 2a 09 64 65 66 61 75 6c . The.+ *.defaul
2860: 74 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 6e 61 t handler for na
2870: 6d 65 73 70 61 63 65 73 20 28 68 61 72 64 2d 63 mespaces (hard-c
2880: 6f 64 65 64 20 69 6e 74 6f 20 54 63 6c 45 76 61 oded into TclEva
2890: 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 29 0a 2b lObjvInternal).+
28a0: 20 2a 09 73 69 6d 70 6c 79 20 73 65 61 72 63 68 *.simply search
28b0: 65 73 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 es the global na
28c0: 6d 65 73 70 61 63 65 2e 20 54 68 65 20 64 65 66 mespace. The def
28d0: 61 75 6c 74 20 68 61 6e 64 6c 65 72 20 66 6f 72 ault handler for
28e0: 20 74 68 65 0a 2b 20 2a 09 67 6c 6f 62 61 6c 20 the.+ *.global
28f0: 6e 61 6d 65 73 70 61 63 65 20 63 61 6c 6c 73 20 namespace calls
2900: 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 64 20 a command named
2910: 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2e 20 54 68 69 "::unknown". Thi
2920: 73 20 62 65 68 61 76 69 6f 75 72 20 69 73 0a 2b s behaviour is.+
2930: 20 2a 09 66 75 6c 6c 79 20 62 61 63 6b 77 61 72 *.fully backwar
2940: 64 73 2d 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 ds-compatible wi
2950: 74 68 20 54 63 6c 20 70 72 65 2d 54 49 50 2d 31 th Tcl pre-TIP-1
2960: 38 31 2e 20 48 61 6e 64 6c 65 73 20 74 68 65 20 81. Handles the
2970: 66 6f 6c 6c 6f 77 69 6e 67 0a 2b 20 2a 09 73 79 following.+ *.sy
2980: 6e 74 61 78 3a 0a 2b 20 2a 0a 2b 20 2a 09 20 20 ntax:.+ *.+ *.
2990: 20 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e namespace unkn
29a0: 6f 77 6e 20 3f 68 61 6e 64 6c 65 72 3f 0a 2b 20 own ?handler?.+
29b0: 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b *.+ * Results:.+
29c0: 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f *.Returns TCL_O
29d0: 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c K if successful,
29e0: 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 69 and TCL_ERROR i
29f0: 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20 f anything goes
2a00: 77 72 6f 6e 67 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 wrong..+ *.+ * S
2a10: 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a ide effects:.+ *
2a20: 09 49 66 20 6e 6f 20 68 61 6e 64 6c 65 72 20 69 .If no handler i
2a30: 73 20 73 70 65 63 69 66 69 65 64 2c 20 72 65 74 s specified, ret
2a40: 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 69 6e urns a result in
2a50: 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 the interpreter
2a60: 27 73 0a 2b 20 2a 09 72 65 73 75 6c 74 20 6f 62 's.+ *.result ob
2a70: 6a 65 63 74 2c 20 6f 74 68 65 72 77 69 73 65 20 ject, otherwise
2a80: 69 74 20 73 65 74 73 20 74 68 65 20 75 6e 6b 6e it sets the unkn
2a90: 6f 77 6e 20 68 61 6e 64 6c 65 72 20 70 6f 69 6e own handler poin
2aa0: 74 65 72 20 69 6e 20 74 68 65 0a 2b 20 2a 09 63 ter in the.+ *.c
2ab0: 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 urrent namespace
2ac0: 20 74 6f 20 74 68 65 20 73 63 72 69 70 74 20 66 to the script f
2ad0: 72 61 67 6d 65 6e 74 20 70 72 6f 76 69 64 65 64 ragment provided
2ae0: 2e 20 49 66 20 61 6e 79 74 68 69 6e 67 20 67 6f . If anything go
2af0: 65 73 0a 2b 20 2a 09 77 72 6f 6e 67 2c 20 74 68 es.+ *.wrong, th
2b00: 65 20 72 65 73 75 6c 74 20 69 73 20 61 6e 20 65 e result is an e
2b10: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a 2b 20 rror message..+
2b20: 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *.+ *-----------
2b30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2b40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f -----------.+ */
2b70: 0a 2b 73 74 61 74 69 63 20 69 6e 74 0a 2b 4e 61 .+static int.+Na
2b80: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d mespaceUnknownCm
2b90: 64 28 64 75 6d 6d 79 2c 20 69 6e 74 65 72 70 2c d(dummy, interp,
2ba0: 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 0a 2b 20 20 objc, objv).+
2bb0: 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d ClientData dum
2bc0: 6d 79 3b 09 09 2f 2a 20 4e 6f 74 20 75 73 65 64 my;../* Not used
2bd0: 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 6e . */.+ Tcl_In
2be0: 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f terp *interp;../
2bf0: 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 * Current interp
2c00: 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 69 reter. */.+ i
2c10: 6e 74 20 6f 62 6a 63 3b 09 09 09 2f 2a 20 4e 75 nt objc;.../* Nu
2c20: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 mber of argument
2c30: 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f s. */.+ Tcl_O
2c40: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d bj *CONST objv[]
2c50: 3b 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62 ;./* Argument ob
2c60: 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 jects. */.+{.+
2c70: 20 20 4e 61 6d 65 73 70 61 63 65 20 2a 63 75 72 Namespace *cur
2c80: 72 4e 73 50 74 72 3b 0a 2b 20 20 20 20 54 63 6c rNsPtr;.+ Tcl
2c90: 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 50 74 72 _Obj *handlerPtr
2ca0: 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a ;.+.+ if (obj
2cb0: 63 20 3e 20 33 29 20 7b 0a 2b 09 54 63 6c 5f 57 c > 3) {.+.Tcl_W
2cc0: 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 rongNumArgs(inte
2cd0: 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 3f 73 rp, 2, objv, "?s
2ce0: 63 72 69 70 74 3f 22 29 3b 0a 2b 20 20 20 20 20 cript?");.+
2cf0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 return TCL_ER
2d00: 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 ROR;.+ }.+.+
2d10: 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 28 currNsPtr = (
2d20: 4e 61 6d 65 73 70 61 63 65 20 2a 29 20 54 63 6c Namespace *) Tcl
2d30: 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 6d 65 73 _GetCurrentNames
2d40: 70 61 63 65 28 69 6e 74 65 72 70 29 3b 0a 2b 0a pace(interp);.+.
2d50: 2b 20 20 20 20 69 66 20 28 6f 62 6a 63 20 3d 3d + if (objc ==
2d60: 20 32 29 20 7b 0a 2b 09 2f 2a 0a 2b 09 20 2a 20 2) {.+./*.+. *
2d70: 49 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 2d 20 Introspection -
2d80: 72 65 74 75 72 6e 20 74 68 65 20 63 75 72 72 65 return the curre
2d90: 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 68 61 6e nt namespace han
2da0: 64 6c 65 72 2e 0a 2b 09 20 2a 2f 0a 2b 09 20 69 dler..+. */.+. i
2db0: 66 20 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e f (currNsPtr->un
2dc0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 knownHandlerPtr
2dd0: 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 != NULL) {.+.
2de0: 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 Tcl_SetObjResu
2df0: 6c 74 28 69 6e 74 65 72 70 2c 20 63 75 72 72 4e lt(interp, currN
2e00: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
2e10: 64 6c 65 72 50 74 72 29 3b 0a 2b 09 20 7d 20 65 dlerPtr);.+. } e
2e20: 6c 73 65 20 7b 0a 2b 09 20 20 20 20 20 2f 2a 0a lse {.+. /*.
2e30: 2b 09 20 20 20 20 20 20 2a 20 44 65 66 61 75 6c +. * Defaul
2e40: 74 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 t unknown handle
2e50: 72 20 66 6f 72 20 61 6e 79 20 6e 73 20 69 73 20 r for any ns is
2e60: 3a 3a 75 6e 6b 6e 6f 77 6e 2e 20 57 65 20 64 6f ::unknown. We do
2e70: 6e 27 74 0a 2b 09 20 20 20 20 20 20 2a 20 63 61 n't.+. * ca
2e80: 63 68 65 20 74 68 69 73 2c 20 61 73 20 69 74 20 che this, as it
2e90: 69 73 20 71 75 69 63 6b 65 72 20 74 6f 20 74 65 is quicker to te
2ea0: 73 74 20 66 6f 72 20 4e 55 4c 4c 20 69 6e 20 74 st for NULL in t
2eb0: 68 65 20 68 61 72 64 63 6f 64 65 64 0a 2b 09 20 he hardcoded.+.
2ec0: 20 20 20 20 20 2a 20 64 65 66 61 75 6c 74 20 68 * default h
2ed0: 61 6e 64 6c 65 72 73 20 69 6e 20 54 63 6c 45 76 andlers in TclEv
2ee0: 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 2e 0a alObjvInternal..
2ef0: 2b 09 20 20 20 20 20 20 2a 2f 0a 2b 09 20 20 20 +. */.+.
2f00: 20 20 20 68 61 6e 64 6c 65 72 50 74 72 20 3d 20 handlerPtr =
2f10: 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a Tcl_NewStringObj
2f20: 28 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 ("::unknown", -1
2f30: 29 3b 0a 2b 09 20 20 20 20 20 20 54 63 6c 5f 53 );.+. Tcl_S
2f40: 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 etObjResult(inte
2f50: 72 70 2c 20 68 61 6e 64 6c 65 72 50 74 72 29 3b rp, handlerPtr);
2f60: 0a 2b 09 20 7d 0a 2b 20 20 20 20 7d 20 65 6c 73 .+. }.+ } els
2f70: 65 20 7b 0a 2b 09 2f 2a 0a 2b 09 20 2a 20 53 65 e {.+./*.+. * Se
2f80: 74 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 t the namespace
2f90: 68 61 6e 64 6c 65 72 2e 0a 2b 09 20 2a 2f 0a 2b handler..+. */.+
2fa0: 09 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d . if (currNsPtr-
2fb0: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
2fc0: 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 tr != NULL) {.+.
2fd0: 20 20 20 20 20 2f 2a 20 52 65 6d 6f 76 65 20 6f /* Remove o
2fe0: 6c 64 20 68 61 6e 64 6c 65 72 20 66 69 72 73 74 ld handler first
2ff0: 2e 20 2a 2f 0a 2b 09 20 20 20 20 20 54 63 6c 5f . */.+. Tcl_
3000: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 63 75 72 DecrRefCount(cur
3010: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 rNsPtr->unknownH
3020: 61 6e 64 6c 65 72 50 74 72 29 3b 0a 2b 09 20 7d andlerPtr);.+. }
3030: 0a 2b 09 20 2f 2a 0a 2b 09 20 20 2a 20 49 66 20 .+. /*.+. * If
3040: 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 the empty string
3050: 20 69 73 20 70 61 73 73 65 64 2c 20 74 68 65 6e is passed, then
3060: 20 73 69 6d 70 6c 79 20 72 65 76 65 72 74 20 74 simply revert t
3070: 6f 20 74 68 65 20 64 65 66 61 75 6c 74 0a 2b 09 o the default.+.
3080: 20 20 2a 20 68 61 6e 64 6c 65 72 2e 0a 2b 09 20 * handler..+.
3090: 20 2a 2f 0a 2b 09 20 69 66 20 28 54 63 6c 5f 47 */.+. if (Tcl_G
30a0: 65 74 43 68 61 72 4c 65 6e 67 74 68 28 6f 62 6a etCharLength(obj
30b0: 76 5b 32 5d 29 20 3d 3d 20 30 29 20 7b 0a 2b 09 v[2]) == 0) {.+.
30c0: 20 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e currNsPtr->
30d0: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
30e0: 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 09 20 7d 20 65 r = NULL;.+. } e
30f0: 6c 73 65 20 7b 0a 2b 09 20 20 20 20 20 2f 2a 20 lse {.+. /*
3100: 0a 2b 09 20 20 20 20 20 20 2a 20 49 6e 63 72 65 .+. * Incre
3110: 6d 65 6e 74 20 72 65 66 20 63 6f 75 6e 74 20 61 ment ref count a
3120: 6e 64 20 73 74 6f 72 65 2e 20 54 68 65 20 72 65 nd store. The re
3130: 66 65 72 65 6e 63 65 20 63 6f 75 6e 74 20 69 73 ference count is
3140: 20 0a 2b 09 20 20 20 20 20 20 2a 20 64 65 63 72 .+. * decr
3150: 65 6d 65 6e 74 65 64 20 65 69 74 68 65 72 20 69 emented either i
3160: 6e 20 74 68 65 20 63 6f 64 65 20 61 62 6f 76 65 n the code above
3170: 2c 20 6f 72 20 77 68 65 6e 20 74 68 65 20 6e 61 , or when the na
3180: 6d 65 73 70 61 63 65 20 0a 2b 09 20 20 20 20 20 mespace .+.
3190: 20 2a 20 69 73 20 64 65 6c 65 74 65 64 2e 0a 2b * is deleted..+
31a0: 09 20 20 20 20 20 20 2a 2f 0a 2b 09 20 20 20 20 . */.+.
31b0: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e Tcl_IncrRefCoun
31c0: 74 28 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 09 20 20 t(objv[2]);.+.
31d0: 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e currNsPtr->un
31e0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 knownHandlerPtr
31f0: 3d 20 6f 62 6a 76 5b 32 5d 3b 0a 2b 09 20 20 20 = objv[2];.+.
3200: 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 Tcl_SetObjResu
3210: 6c 74 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b lt(interp, objv[
3220: 32 5d 29 3b 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2]);.+.}.+ }.
3230: 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f + return TCL_
3240: 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 OK;.+}.+..+/*.+
3250: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
3260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3290: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 20 2a 20 -------.+ *. *
32a0: 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43 6d 64 NamespaceTailCmd
32b0: 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 49 6e 76 6f --. *. *.Invo
32c0: 6b 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 ked to implement
32d0: 20 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 20 the "namespace
32e0: 74 61 69 6c 22 20 63 6f 6d 6d 61 6e 64 20 74 68 tail" command th
32f0: 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 0a 49 at returns the.I
3300: 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e 61 6d 65 ndex: tests/name
3310: 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d space.test.=====
3320: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3330: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3340: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ==============.R
3360: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f CS file: /cvsroo
3370: 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f t/tcl/tcl/tests/
3380: 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 2c 76 namespace.test,v
3390: 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 .retrieving revi
33a0: 73 69 6f 6e 20 31 2e 32 34 0a 64 69 66 66 20 2d sion 1.24.diff -
33b0: 75 20 2d 72 31 2e 32 34 20 6e 61 6d 65 73 70 61 u -r1.24 namespa
33c0: 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 ce.test.--- test
33d0: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 s/namespace.test
33e0: 09 32 34 20 4d 61 72 20 32 30 30 34 20 32 31 3a .24 Mar 2004 21:
33f0: 35 34 3a 33 32 20 2d 30 30 30 30 09 31 2e 32 34 54:32 -0000.1.24
3400: 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 61 6d 65 73 .+++ tests/names
3410: 70 61 63 65 2e 74 65 73 74 09 32 31 20 4d 61 79 pace.test.21 May
3420: 20 32 30 30 34 20 31 39 3a 31 39 3a 35 36 20 2d 2004 19:19:56 -
3430: 30 30 30 30 0a 40 40 20 2d 36 34 31 2c 37 20 2b 0000.@@ -641,7 +
3440: 36 34 31 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 641,7 @@. } {1 {
3450: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 wrong # args: sh
3460: 6f 75 6c 64 20 62 65 20 22 6e 61 6d 65 73 70 61 ould be "namespa
3470: 63 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 ce subcommand ?a
3480: 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 rg ...?"}}. test
3490: 20 6e 61 6d 65 73 70 61 63 65 2d 32 30 2e 32 20 namespace-20.2
34a0: 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 4f 62 {Tcl_NamespaceOb
34b0: 6a 43 6d 64 2c 20 62 61 64 20 73 75 62 63 6f 6d jCmd, bad subcom
34c0: 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69 73 mand} {. lis
34d0: 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 73 70 t [catch {namesp
34e0: 61 63 65 20 77 6f 6d 62 61 74 20 7b 7d 7d 20 6d ace wombat {}} m
34f0: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b sg] $msg.-} {1 {
3500: 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f 6d 62 bad option "womb
3510: 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 68 69 at": must be chi
3520: 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 75 72 ldren, code, cur
3530: 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 65 6e rent, delete, en
3540: 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 65 78 semble, eval, ex
3550: 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 66 6f ists, export, fo
3560: 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 69 6e rget, import, in
3570: 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c 20 70 scope, origin, p
3580: 61 72 65 6e 74 2c 20 71 75 61 6c 69 66 69 65 72 arent, qualifier
3590: 73 2c 20 74 61 69 6c 2c 20 6f 72 20 77 68 69 63 s, tail, or whic
35a0: 68 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 6f h}}.+} {1 {bad o
35b0: 70 74 69 6f 6e 20 22 77 6f 6d 62 61 74 22 3a 20 ption "wombat":
35c0: 6d 75 73 74 20 62 65 20 63 68 69 6c 64 72 65 6e must be children
35d0: 2c 20 63 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c , code, current,
35e0: 20 64 65 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c delete, ensembl
35f0: 65 2c 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c e, eval, exists,
3600: 20 65 78 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c export, forget,
3610: 20 69 6d 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 import, inscope
3620: 2c 20 6f 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 , origin, parent
3630: 2c 20 71 75 61 6c 69 66 69 65 72 73 2c 20 74 61 , qualifiers, ta
3640: 69 6c 2c 20 75 6e 6b 6e 6f 77 6e 2c 20 6f 72 20 il, unknown, or
3650: 77 68 69 63 68 7d 7d 0a 20 74 65 73 74 20 6e 61 which}}. test na
3660: 6d 65 73 70 61 63 65 2d 32 30 2e 33 20 7b 54 63 mespace-20.3 {Tc
3670: 6c 5f 4e 61 6d 65 73 70 61 63 65 4f 62 6a 43 6d l_NamespaceObjCm
3680: 64 2c 20 61 62 62 72 65 76 69 61 74 69 6f 6e 73 d, abbreviations
3690: 20 61 72 65 20 6f 6b 61 79 7d 20 7b 0a 20 20 20 are okay} {.
36a0: 20 20 6e 61 6d 65 73 70 61 63 65 20 63 68 20 3a namespace ch :
36b0: 3a 20 74 65 73 74 5f 6e 73 5f 2a 0a 20 7d 20 7b : test_ns_*. } {
36c0: 7d 0a 40 40 20 2d 37 34 38 2c 37 20 2b 37 34 38 }.@@ -748,7 +748
36d0: 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f ,7 @@. } {1 {wro
36e0: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c ng # args: shoul
36f0: 64 20 62 65 20 22 6e 61 6d 65 73 70 61 63 65 20 d be "namespace
3700: 65 76 61 6c 20 6e 61 6d 65 20 61 72 67 20 3f 61 eval name arg ?a
3710: 72 67 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 20 rg...?"}}. test
3720: 6e 61 6d 65 73 70 61 63 65 2d 32 35 2e 32 20 7b namespace-25.2 {
3730: 4e 61 6d 65 73 70 61 63 65 45 76 61 6c 43 6d 64 NamespaceEvalCmd
3740: 2c 20 62 61 64 20 61 72 67 73 7d 20 7b 0a 20 20 , bad args} {.
3750: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b list [catch {
3760: 6e 61 6d 65 73 70 61 63 65 20 74 65 73 74 5f 6e namespace test_n
3770: 73 5f 31 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d s_1} msg] $msg.-
3780: 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e } {1 {bad option
3790: 20 22 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 "test_ns_1": mu
37a0: 73 74 20 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 st be children,
37b0: 63 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 code, current, d
37c0: 65 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c elete, ensemble,
37d0: 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 eval, exists, e
37e0: 78 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 xport, forget, i
37f0: 6d 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 mport, inscope,
3800: 6f 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 origin, parent,
3810: 71 75 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c qualifiers, tail
3820: 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a 2b 7d 20 , or which}}.+}
3830: 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 {1 {bad option "
3840: 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 73 74 test_ns_1": must
3850: 20 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 63 6f be children, co
3860: 64 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 65 6c de, current, del
3870: 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 65 ete, ensemble, e
3880: 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 70 val, exists, exp
3890: 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 6d 70 ort, forget, imp
38a0: 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 6f 72 ort, inscope, or
38b0: 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 71 75 igin, parent, qu
38c0: 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c 20 alifiers, tail,
38d0: 75 6e 6b 6e 6f 77 6e 2c 20 6f 72 20 77 68 69 63 unknown, or whic
38e0: 68 7d 7d 0a 20 63 61 74 63 68 20 7b 75 6e 73 65 h}}. catch {unse
38f0: 74 20 76 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 t v}. test names
3900: 70 61 63 65 2d 32 35 2e 33 20 7b 4e 61 6d 65 73 pace-25.3 {Names
3910: 70 61 63 65 45 76 61 6c 43 6d 64 2c 20 6e 65 77 paceEvalCmd, new
3920: 20 6e 61 6d 65 73 70 61 63 65 7d 20 7b 0a 20 20 namespace} {.
3930: 20 20 20 73 65 74 20 76 20 31 32 33 0a 40 40 20 set v 123.@@
3940: 2d 31 36 33 34 2c 36 20 2b 31 36 33 34 2c 37 37 -1634,6 +1634,77
3950: 20 40 40 0a 20 20 20 20 20 77 68 69 6c 65 20 70 @@. while p
3960: 61 72 73 69 6e 67 20 72 65 73 75 6c 74 20 6f 66 arsing result of
3970: 20 65 6e 73 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 ensemble unknow
3980: 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e n subcommand han
3990: 64 6c 65 72 0a 20 20 20 20 20 69 6e 76 6f 6b 65 dler. invoke
39a0: 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 0a 20 22 d from within. "
39b0: 66 6f 6f 20 62 61 72 22 7d 7d 0a 2b 23 20 54 49 foo bar"}}.+# TI
39c0: 50 20 31 38 31 20 2d 20 6e 61 6d 65 73 70 61 63 P 181 - namespac
39d0: 65 20 75 6e 6b 6e 6f 77 6e 20 74 65 73 74 73 0a e unknown tests.
39e0: 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d +test namespace-
39f0: 34 38 2e 31 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 48.1 {unknown: d
3a00: 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 20 3a efault handler :
3a10: 3a 75 6e 6b 6e 6f 77 6e 7d 20 7b 0a 2b 20 20 20 :unknown} {.+
3a20: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 6e 61 6d set result [nam
3a30: 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 62 espace eval foob
3a40: 61 72 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 ar { namespace u
3a50: 6e 6b 6e 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 6c nknown }].+ l
3a60: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 6e append result [n
3a70: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
3a80: 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b { namespace unk
3a90: 6e 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 6e 61 6d nown }].+ nam
3aa0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
3ab0: 6f 62 61 72 0a 2b 20 20 20 20 73 65 74 20 72 65 obar.+ set re
3ac0: 73 75 6c 74 0a 2b 7d 20 7b 3a 3a 75 6e 6b 6e 6f sult.+} {::unkno
3ad0: 77 6e 20 3a 3a 75 6e 6b 6e 6f 77 6e 7d 0a 2b 74 wn ::unknown}.+t
3ae0: 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 38 est namespace-48
3af0: 2e 32 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 65 66 .2 {unknown: def
3b00: 61 75 6c 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 ault resolution
3b10: 67 6c 6f 62 61 6c 7d 20 7b 0a 2b 20 20 20 20 70 global} {.+ p
3b20: 72 6f 63 20 3a 3a 66 6f 6f 20 7b 7d 20 7b 20 72 roc ::foo {} { r
3b30: 65 74 75 72 6e 20 22 47 4c 4f 42 41 4c 22 20 7d eturn "GLOBAL" }
3b40: 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 .+ namespace
3b50: 65 76 61 6c 20 3a 3a 62 61 72 20 7b 20 70 72 6f eval ::bar { pro
3b60: 63 20 66 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 c foo {} { retur
3b70: 6e 20 22 4e 41 4d 45 53 50 41 43 45 22 20 7d 20 n "NAMESPACE" }
3b80: 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 }.+ namespace
3b90: 20 65 76 61 6c 20 3a 3a 62 61 72 3a 3a 6a 69 6d eval ::bar::jim
3ba0: 20 7b 20 70 72 6f 63 20 74 65 73 74 20 7b 7d 20 { proc test {}
3bb0: 7b 20 66 6f 6f 20 7d 20 7d 0a 2b 20 20 20 20 73 { foo } }.+ s
3bc0: 65 74 20 72 65 73 75 6c 74 20 5b 3a 3a 62 61 72 et result [::bar
3bd0: 3a 3a 6a 69 6d 3a 3a 74 65 73 74 5d 0a 2b 20 20 ::jim::test].+
3be0: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 namespace dele
3bf0: 74 65 20 3a 3a 62 61 72 0a 2b 20 20 20 20 72 65 te ::bar.+ re
3c00: 6e 61 6d 65 20 3a 3a 66 6f 6f 20 7b 7d 0a 2b 20 name ::foo {}.+
3c10: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d set result.+}
3c20: 20 7b 47 4c 4f 42 41 4c 7d 0a 2b 74 65 73 74 20 {GLOBAL}.+test
3c30: 6e 61 6d 65 73 70 61 63 65 2d 34 38 2e 33 20 7b namespace-48.3 {
3c40: 75 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 unknown: default
3c50: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6c 6f 63 61 resolution loca
3c60: 6c 7d 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a l} {.+ proc :
3c70: 3a 66 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e :foo {} { return
3c80: 20 22 47 4c 4f 42 41 4c 22 20 7d 0a 2b 20 20 20 "GLOBAL" }.+
3c90: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 namespace eval
3ca0: 3a 3a 62 61 72 20 7b 0a 2b 09 70 72 6f 63 20 66 ::bar {.+.proc f
3cb0: 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 oo {} { return "
3cc0: 4e 41 4d 45 53 50 41 43 45 22 20 7d 0a 2b 09 70 NAMESPACE" }.+.p
3cd0: 72 6f 63 20 74 65 73 74 20 7b 7d 20 7b 20 66 6f roc test {} { fo
3ce0: 6f 20 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 o }.+ }.+
3cf0: 73 65 74 20 72 65 73 75 6c 74 20 5b 3a 3a 62 61 set result [::ba
3d00: 72 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 r::test].+ na
3d10: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a mespace delete :
3d20: 3a 62 61 72 0a 2b 20 20 20 20 72 65 6e 61 6d 65 :bar.+ rename
3d30: 20 3a 3a 66 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 ::foo {}.+ s
3d40: 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 4e 41 et result.+} {NA
3d50: 4d 45 53 50 41 43 45 7d 0a 2b 74 65 73 74 20 6e MESPACE}.+test n
3d60: 61 6d 65 73 70 61 63 65 2d 34 38 2e 34 20 7b 75 amespace-48.4 {u
3d70: 6e 6b 6e 6f 77 6e 3a 20 73 65 74 20 68 61 6e 64 nknown: set hand
3d80: 6c 65 72 7d 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 ler} {.+ name
3d90: 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b space eval foo {
3da0: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b .+.namespace unk
3db0: 6e 6f 77 6e 20 5b 6c 69 73 74 20 64 69 73 70 61 nown [list dispa
3dc0: 74 63 68 5d 0a 2b 09 70 72 6f 63 20 64 69 73 70 tch].+.proc disp
3dd0: 61 74 63 68 20 7b 61 72 67 73 7d 20 7b 20 72 65 atch {args} { re
3de0: 74 75 72 6e 20 24 61 72 67 73 20 7d 0a 2b 09 70 turn $args }.+.p
3df0: 72 6f 63 20 74 65 73 74 20 7b 7d 20 7b 0a 2b 09 roc test {} {.+.
3e00: 20 20 20 20 55 6e 6b 6e 6f 77 6e 43 6d 64 20 61 UnknownCmd a
3e10: 20 62 20 63 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a b c.+.}.+ }.
3e20: 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 + set result
3e30: 5b 66 6f 6f 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 [foo::test].+
3e40: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
3e50: 65 20 66 6f 6f 0a 2b 20 20 20 20 73 65 74 20 72 e foo.+ set r
3e60: 65 73 75 6c 74 0a 2b 7d 20 7b 55 6e 6b 6e 6f 77 esult.+} {Unknow
3e70: 6e 43 6d 64 20 61 20 62 20 63 7d 0a 2b 74 65 73 nCmd a b c}.+tes
3e80: 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 38 2e 35 t namespace-48.5
3e90: 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 73 65 61 72 63 {unknown: searc
3ea0: 68 20 70 61 74 68 20 62 65 66 6f 72 65 20 75 6e h path before un
3eb0: 6b 6e 6f 77 6e 20 69 73 20 75 6e 61 6c 74 65 72 known is unalter
3ec0: 65 64 7d 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 ed} {.+ proc
3ed0: 3a 3a 74 65 73 74 32 20 7b 61 72 67 73 7d 20 7b ::test2 {args} {
3ee0: 20 72 65 74 75 72 6e 20 22 54 45 53 54 32 3a 20 return "TEST2:
3ef0: 24 61 72 67 73 22 20 7d 0a 2b 20 20 20 20 6e 61 $args" }.+ na
3f00: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f mespace eval foo
3f10: 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 {.+.namespace u
3f20: 6e 6b 6e 6f 77 6e 20 5b 6c 69 73 74 20 64 69 73 nknown [list dis
3f30: 70 61 74 63 68 5d 0a 2b 09 70 72 6f 63 20 64 69 patch].+.proc di
3f40: 73 70 61 74 63 68 20 7b 61 72 67 73 7d 20 7b 20 spatch {args} {
3f50: 72 65 74 75 72 6e 20 22 55 4e 4b 4e 4f 57 4e 3a return "UNKNOWN:
3f60: 20 24 61 72 67 73 22 20 7d 0a 2b 09 70 72 6f 63 $args" }.+.proc
3f70: 20 74 65 73 74 31 20 7b 61 72 67 73 7d 20 7b 20 test1 {args} {
3f80: 72 65 74 75 72 6e 20 22 54 45 53 54 31 3a 20 24 return "TEST1: $
3f90: 61 72 67 73 22 20 7d 0a 2b 09 70 72 6f 63 20 74 args" }.+.proc t
3fa0: 65 73 74 20 7b 7d 20 7b 0a 2b 09 20 20 20 20 73 est {} {.+. s
3fb0: 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 et result [list
3fc0: 5b 74 65 73 74 31 20 61 20 62 20 63 5d 5d 0a 2b [test1 a b c]].+
3fd0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
3fe0: 75 6c 74 20 5b 74 65 73 74 32 20 61 20 62 20 63 ult [test2 a b c
3ff0: 5d 0a 2b 09 20 20 20 20 6c 61 70 70 65 6e 64 20 ].+. lappend
4000: 72 65 73 75 6c 74 20 5b 74 65 73 74 33 20 61 20 result [test3 a
4010: 62 20 63 5d 0a 2b 09 20 20 20 20 72 65 74 75 72 b c].+. retur
4020: 6e 20 24 72 65 73 75 6c 74 0a 2b 09 7d 0a 2b 20 n $result.+.}.+
4030: 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 }.+ set re
4040: 73 75 6c 74 20 5b 66 6f 6f 3a 3a 74 65 73 74 5d sult [foo::test]
4050: 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 .+ namespace
4060: 64 65 6c 65 74 65 20 66 6f 6f 0a 2b 20 20 20 20 delete foo.+
4070: 72 65 6e 61 6d 65 20 3a 3a 74 65 73 74 32 20 7b rename ::test2 {
4080: 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c }.+ set resul
4090: 74 0a 2b 7d 20 7b 7b 54 45 53 54 31 3a 20 61 20 t.+} {{TEST1: a
40a0: 62 20 63 7d 20 7b 54 45 53 54 32 3a 20 61 20 62 b c} {TEST2: a b
40b0: 20 63 7d 20 7b 55 4e 4b 4e 4f 57 4e 3a 20 74 65 c} {UNKNOWN: te
40c0: 73 74 33 20 61 20 62 20 63 7d 7d 0a 2b 74 65 73 st3 a b c}}.+tes
40d0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 38 2e 36 t namespace-48.6
40e0: 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 65 6c 65 74 {unknown: delet
40f0: 69 6e 67 20 68 61 6e 64 6c 65 72 20 72 65 73 74 ing handler rest
4100: 6f 72 65 73 20 64 65 66 61 75 6c 74 7d 20 7b 0a ores default} {.
4110: 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e + rename ::un
4120: 6b 6e 6f 77 6e 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e known ::_unknown
4130: 5f 6f 72 69 67 0a 2b 20 20 20 20 70 72 6f 63 20 _orig.+ proc
4140: 3a 3a 75 6e 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d ::unknown {args}
4150: 20 7b 20 72 65 74 75 72 6e 20 22 44 45 46 41 55 { return "DEFAU
4160: 4c 54 3a 20 24 61 72 67 73 22 20 7d 0a 2b 20 20 LT: $args" }.+
4170: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
4180: 20 66 6f 6f 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 foo {.+.namespa
4190: 63 65 20 75 6e 6b 6e 6f 77 6e 20 64 75 6d 6d 79 ce unknown dummy
41a0: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b .+.namespace unk
41b0: 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 20 20 7d 0a 2b nown {}.+ }.+
41c0: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b set result [
41d0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 namespace eval f
41e0: 6f 6f 20 7b 20 64 75 6d 6d 79 20 61 20 62 20 63 oo { dummy a b c
41f0: 20 7d 5d 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 }].+ rename
4200: 3a 3a 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 ::unknown {}.+
4210: 20 20 72 65 6e 61 6d 65 20 3a 3a 5f 75 6e 6b 6e rename ::_unkn
4220: 6f 77 6e 5f 6f 72 69 67 20 3a 3a 75 6e 6b 6e 6f own_orig ::unkno
4230: 77 6e 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 wn.+ namespac
4240: 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b 20 20 e delete foo.+
4250: 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 set result.+}
4260: 7b 44 45 46 41 55 4c 54 3a 20 64 75 6d 6d 79 20 {DEFAULT: dummy
4270: 61 20 62 20 63 7d 0a 2b 0a 20 0a 20 23 20 63 6c a b c}.+. . # cl
4280: 65 61 6e 75 70 0a 20 63 61 74 63 68 20 7b 72 65 eanup. catch {re
4290: 6e 61 6d 65 20 63 6d 64 31 20 7b 7d 7d 0a name cmd1 {}}.