Attachment "tip283-1.patch" to
ticket [1577282fff]
added by
msofer
2006-11-02 03:40:28.
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 32 31 ng revision 1.21
00a0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 31 20 .diff -u -r1.21
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: 32 36 20 41 75 67 20 32 30 30 36 20 31 33 3a 30 26 Aug 2006 13:0
00e0: 30 3a 33 38 20 2d 30 30 30 30 09 31 2e 32 31 0a 0:38 -0000.1.21.
00f0: 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 +++ doc/namespac
0100: 65 2e 6e 09 31 20 4e 6f 76 20 32 30 30 36 20 32 e.n.1 Nov 2006 2
0110: 30 3a 32 36 3a 33 32 20 2d 30 30 30 30 0a 40 40 0:26:32 -0000.@@
0120: 20 2d 36 37 39 2c 37 20 2b 36 37 39 2c 38 20 40 -679,7 +679,8 @
0130: 40 0a 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 @. the result of
0140: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 4e the command. N
0150: 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20 6c ote that it is l
0160: 65 67 61 6c 20 74 6f 20 6d 61 6b 65 20 74 68 65 egal to make the
0170: 20 74 61 72 67 65 74 0a 20 6f 66 20 61 6e 20 65 target. of an e
0180: 6e 73 65 6d 62 6c 65 20 72 65 77 72 69 74 65 20 nsemble rewrite
0190: 62 65 20 61 6e 6f 74 68 65 72 20 28 6f 72 20 65 be another (or e
01a0: 76 65 6e 20 74 68 65 20 73 61 6d 65 29 20 65 6e ven the same) en
01b0: 73 65 6d 62 6c 65 0a 20 63 6f 6d 6d 61 6e 64 2e semble. command.
01c0: 20 20 54 68 65 20 65 6e 73 65 6d 62 6c 65 20 63 The ensemble c
01d0: 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 6e 6f 74 20 ommand will not
01e0: 62 65 20 76 69 73 69 62 6c 65 20 74 68 72 6f 75 be visible throu
01f0: 67 68 20 74 68 65 20 75 73 65 20 6f 66 0a 2d 74 gh the use of.-t
0200: 68 65 20 5c 66 42 75 70 6c 65 76 65 6c 5c 66 52 he \fBuplevel\fR
0210: 20 6f 72 20 5c 66 42 69 6e 66 6f 20 6c 65 76 65 or \fBinfo leve
0220: 6c 5c 66 52 20 63 6f 6d 6d 61 6e 64 73 2e 0a 2b l\fR commands..+
0230: 74 68 65 20 5c 66 42 75 70 6c 65 76 65 6c 5c 66 the \fBuplevel\f
0240: 52 20 6f 72 20 5c 66 42 69 6e 66 6f 20 6c 65 76 R or \fBinfo lev
0250: 65 6c 5c 66 52 20 63 6f 6d 6d 61 6e 64 73 2c 20 el\fR commands,
0260: 77 69 74 68 20 74 68 65 20 65 78 63 65 70 74 69 with the excepti
0270: 6f 6e 20 6f 66 0a 2b 5c 66 42 69 6e 66 6f 20 6c on of.+\fBinfo l
0280: 65 76 65 6c 20 30 5c 66 52 2e 0a 20 2e 53 53 20 evel 0\fR.. .SS
0290: 22 45 4e 53 45 4d 42 4c 45 20 4f 50 54 49 4f 4e "ENSEMBLE OPTION
02a0: 53 22 0a 20 2e 50 50 0a 20 54 68 65 20 66 6f 6c S". .PP. The fol
02b0: 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 2c 20 lowing options,
02c0: 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 65 supported by the
02d0: 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 65 6e \fBnamespace en
02e0: 73 65 6d 62 6c 65 0a 40 40 20 2d 36 38 37 2c 31 semble.@@ -687,1
02f0: 33 20 2b 36 38 38 2c 31 36 20 40 40 0a 20 61 6e 3 +688,16 @@. an
0300: 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d 61 6e ensemble comman
0310: 64 20 62 65 68 61 76 65 73 3a 0a 20 2e 54 50 0a d behaves:. .TP.
0320: 20 5c 66 42 5c 2d 6d 61 70 5c 66 52 0a 2d 57 68 \fB\-map\fR.-Wh
0330: 65 6e 20 6e 6f 6e 2d 65 6d 70 74 79 2c 20 74 68 en non-empty, th
0340: 69 73 20 6f 70 74 69 6f 6e 20 73 75 70 70 6c 69 is option suppli
0350: 65 73 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 es a dictionary
0360: 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 61 0a that provides a.
0370: 2d 6d 61 70 70 69 6e 67 20 66 72 6f 6d 20 73 75 -mapping from su
0380: 62 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 73 20 74 bcommand names t
0390: 6f 20 61 20 6c 69 73 74 20 6f 66 20 70 72 65 66 o a list of pref
03a0: 69 78 20 77 6f 72 64 73 20 74 6f 20 73 75 62 73 ix words to subs
03b0: 74 69 74 75 74 65 0a 2d 69 6e 20 70 6c 61 63 65 titute.-in place
03c0: 20 6f 66 20 74 68 65 20 65 6e 73 65 6d 62 6c 65 of the ensemble
03d0: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 73 75 62 command and sub
03e0: 63 6f 6d 6d 61 6e 64 20 77 6f 72 64 73 20 28 69 command words (i
03f0: 6e 20 61 20 6d 61 6e 6e 65 72 0a 2d 73 69 6d 69 n a manner.-simi
0400: 6c 61 72 20 74 6f 20 61 6e 20 61 6c 69 61 73 20 lar to an alias
0410: 63 72 65 61 74 65 64 20 77 69 74 68 20 5c 66 42 created with \fB
0420: 69 6e 74 65 72 70 20 61 6c 69 61 73 5c 66 52 3b interp alias\fR;
0430: 20 74 68 65 20 77 6f 72 64 73 20 61 72 65 20 6e the words are n
0440: 6f 74 0a 2d 72 65 70 61 72 73 65 64 20 61 66 74 ot.-reparsed aft
0450: 65 72 20 73 75 62 73 74 69 74 75 74 69 6f 6e 29 er substitution)
0460: 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 74 . When this opt
0470: 69 6f 6e 20 69 73 20 65 6d 70 74 79 2c 20 74 68 ion is empty, th
0480: 65 20 6d 61 70 70 69 6e 67 0a 2d 77 69 6c 6c 20 e mapping.-will
0490: 62 65 20 66 72 6f 6d 20 74 68 65 20 6c 6f 63 61 be from the loca
04a0: 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 75 l name of the su
04b0: 62 63 6f 6d 6d 61 6e 64 20 74 6f 20 69 74 73 20 bcommand to its
04c0: 66 75 6c 6c 79 2d 71 75 61 6c 69 66 69 65 64 0a fully-qualified.
04d0: 2d 6e 61 6d 65 2e 20 20 4e 6f 74 65 20 74 68 61 -name. Note tha
04e0: 74 20 77 68 65 6e 20 74 68 69 73 20 6f 70 74 69 t when this opti
04f0: 6f 6e 20 69 73 20 6e 6f 6e 2d 65 6d 70 74 79 20 on is non-empty
0500: 61 6e 64 20 74 68 65 0a 2b 57 68 65 6e 20 6e 6f and the.+When no
0510: 6e 2d 65 6d 70 74 79 2c 20 74 68 69 73 20 6f 70 n-empty, this op
0520: 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20 61 20 tion supplies a
0530: 64 69 63 74 69 6f 6e 61 72 79 20 74 68 61 74 20 dictionary that
0540: 70 72 6f 76 69 64 65 73 20 61 20 6d 61 70 70 69 provides a mappi
0550: 6e 67 0a 2b 66 72 6f 6d 20 73 75 62 63 6f 6d 6d ng.+from subcomm
0560: 61 6e 64 20 6e 61 6d 65 73 20 74 6f 20 61 20 6c and names to a l
0570: 69 73 74 20 6f 66 20 70 72 65 66 69 78 20 77 6f ist of prefix wo
0580: 72 64 73 20 74 6f 20 73 75 62 73 74 69 74 75 74 rds to substitut
0590: 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 2b 74 e in place of.+t
05a0: 68 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d he ensemble comm
05b0: 61 6e 64 20 61 6e 64 20 73 75 62 63 6f 6d 6d 61 and and subcomma
05c0: 6e 64 20 77 6f 72 64 73 20 28 69 6e 20 61 20 6d nd words (in a m
05d0: 61 6e 6e 65 72 20 73 69 6d 69 6c 61 72 20 74 6f anner similar to
05e0: 20 61 6e 20 61 6c 69 61 73 0a 2b 63 72 65 61 74 an alias.+creat
05f0: 65 64 20 77 69 74 68 20 69 6e 74 65 72 70 20 61 ed with interp a
0600: 6c 69 61 73 3b 20 74 68 65 20 77 6f 72 64 73 20 lias; the words
0610: 61 72 65 20 6e 6f 74 20 72 65 70 61 72 73 65 64 are not reparsed
0620: 20 61 66 74 65 72 0a 2b 73 75 62 73 74 69 74 75 after.+substitu
0630: 74 69 6f 6e 29 2e 20 54 68 65 20 72 65 73 75 6c tion). The resul
0640: 74 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 69 73 20 ting command is
0650: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65 invoked with the
0660: 20 6f 72 69 67 69 6e 61 6c 20 61 72 67 75 6d 65 original argume
0670: 6e 74 73 0a 2b 69 6e 20 74 68 65 20 6e 61 6d 65 nts.+in the name
0680: 73 70 61 63 65 20 6f 66 20 74 68 65 20 65 6e 73 space of the ens
0690: 65 6d 62 6c 65 2e 20 0a 2b 57 68 65 6e 20 74 68 emble. .+When th
06a0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 6d 70 is option is emp
06b0: 74 79 2c 20 74 68 65 20 6d 61 70 70 69 6e 67 0a ty, the mapping.
06c0: 2b 77 69 6c 6c 20 62 65 20 66 72 6f 6d 20 74 68 +will be from th
06d0: 65 20 6c 6f 63 61 6c 20 6e 61 6d 65 20 6f 66 20 e local name of
06e0: 74 68 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 74 the subcommand t
06f0: 6f 20 69 74 73 20 61 6c 69 61 73 2c 20 72 65 73 o its alias, res
0700: 6f 6c 76 65 64 20 66 72 6f 6d 0a 2b 74 68 65 20 olved from.+the
0710: 65 6e 73 65 6d 62 6c 65 27 73 20 6e 61 6d 65 73 ensemble's names
0720: 70 61 63 65 2e 0a 2b 4e 6f 74 65 20 74 68 61 74 pace..+Note that
0730: 20 77 68 65 6e 20 74 68 69 73 20 6f 70 74 69 6f when this optio
0740: 6e 20 69 73 20 6e 6f 6e 2d 65 6d 70 74 79 20 61 n is non-empty a
0750: 6e 64 20 74 68 65 0a 20 5c 66 42 5c 2d 73 75 62 nd the. \fB\-sub
0760: 63 6f 6d 6d 61 6e 64 73 5c 66 52 20 6f 70 74 69 commands\fR opti
0770: 6f 6e 20 69 73 20 65 6d 70 74 79 2c 20 74 68 65 on is empty, the
0780: 20 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 6f 6d ensemble subcom
0790: 6d 61 6e 64 20 6e 61 6d 65 73 0a 20 77 69 6c 6c mand names. will
07a0: 20 62 65 20 65 78 61 63 74 6c 79 20 74 68 6f 73 be exactly thos
07b0: 65 20 77 6f 72 64 73 20 74 68 61 74 20 68 61 76 e words that hav
07c0: 65 20 6d 61 70 70 69 6e 67 73 20 69 6e 20 74 68 e mappings in th
07d0: 65 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 20 2e e dictionary.. .
07e0: 54 50 0a 40 40 20 2d 37 37 31 2c 39 20 2b 37 37 TP.@@ -771,9 +77
07f0: 35 2c 39 20 40 40 0a 20 2e 50 50 0a 20 57 68 65 5,9 @@. .PP. Whe
0800: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 n the result is
0810: 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 74 a non-empty list
0820: 2c 20 74 68 65 20 77 6f 72 64 73 20 6f 66 20 74 , the words of t
0830: 68 61 74 20 6c 69 73 74 20 61 72 65 20 75 73 65 hat list are use
0840: 64 0a 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 d. to replace th
0850: 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d 61 e ensemble comma
0860: 6e 64 20 61 6e 64 20 73 75 62 63 6f 6d 6d 61 6e nd and subcomman
0870: 64 2c 20 6a 75 73 74 20 61 73 20 69 66 20 74 68 d, just as if th
0880: 65 79 20 68 61 64 0a 2d 62 65 65 6e 20 6c 6f 6f ey had.-been loo
0890: 6b 65 64 20 75 70 20 69 6e 20 74 68 65 20 5c 66 ked up in the \f
08a0: 42 5c 2d 6d 61 70 5c 66 52 2e 20 49 74 20 69 73 B\-map\fR. It is
08b0: 20 75 70 20 74 6f 20 74 68 65 20 75 6e 6b 6e 6f up to the unkno
08c0: 77 6e 20 68 61 6e 64 6c 65 72 20 74 6f 0a 2d 73 wn handler to.-s
08d0: 75 70 70 6c 79 20 61 6c 6c 20 6e 61 6d 65 73 70 upply all namesp
08e0: 61 63 65 20 71 75 61 6c 69 66 69 65 72 73 20 69 ace qualifiers i
08f0: 66 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 69 f the implementi
0900: 6e 67 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 73 ng subcommand is
0910: 20 6e 6f 74 0a 2d 69 6e 20 74 68 65 20 6e 61 6d not.-in the nam
0920: 65 73 70 61 63 65 20 6f 66 20 74 68 65 20 63 61 espace of the ca
0930: 6c 6c 65 72 20 6f 66 20 74 68 65 20 65 6e 73 65 ller of the ense
0940: 6d 62 6c 65 20 63 6f 6d 6d 61 6e 64 2e 20 41 6c mble command. Al
0950: 73 6f 20 6e 6f 74 65 20 74 68 61 74 0a 2b 62 65 so note that.+be
0960: 65 6e 20 6c 6f 6f 6b 65 64 20 75 70 20 69 6e 20 en looked up in
0970: 74 68 65 20 5c 66 42 5c 2d 6d 61 70 5c 66 52 2e the \fB\-map\fR.
0980: 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e The implementin
0990: 67 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 73 20 g subcommand is
09a0: 6c 6f 6f 6b 65 64 20 75 70 0a 2b 69 6e 20 74 68 looked up.+in th
09b0: 65 20 65 6e 73 65 6d 62 6c 65 27 73 20 6e 61 6d e ensemble's nam
09c0: 65 73 70 61 63 65 20 75 73 69 6e 67 20 6e 6f 72 espace using nor
09d0: 6d 61 6c 20 63 6f 6d 6d 61 6e 64 20 6c 6f 63 61 mal command loca
09e0: 74 69 6f 6e 20 72 75 6c 65 73 2e 0a 2b 41 6c 73 tion rules..+Als
09f0: 6f 20 6e 6f 74 65 20 74 68 61 74 0a 20 77 68 65 o note that. whe
0a00: 6e 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d 61 n ensemble comma
0a10: 6e 64 73 20 61 72 65 20 63 68 61 69 6e 65 64 20 nds are chained
0a20: 28 65 2e 67 2e 20 69 66 20 79 6f 75 20 6d 61 6b (e.g. if you mak
0a30: 65 20 6f 6e 65 20 6f 66 20 74 68 65 0a 20 63 6f e one of the. co
0a40: 6d 6d 61 6e 64 73 20 74 68 61 74 20 69 6d 70 6c mmands that impl
0a50: 65 6d 65 6e 74 20 61 6e 20 65 6e 73 65 6d 62 6c ement an ensembl
0a60: 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 6e 74 e subcommand int
0a70: 6f 20 61 6e 20 65 6e 73 65 6d 62 6c 65 2c 20 69 o an ensemble, i
0a80: 6e 20 61 0a 20 6d 61 6e 6e 65 72 20 73 69 6d 69 n a. manner simi
0a90: 6c 61 72 20 74 6f 20 74 68 65 20 74 65 78 74 20 lar to the text
0aa0: 77 69 64 67 65 74 27 73 20 74 61 67 20 61 6e 64 widget's tag and
0ab0: 20 6d 61 72 6b 20 73 75 62 63 6f 6d 6d 61 6e 64 mark subcommand
0ac0: 73 29 20 74 68 65 6e 20 74 68 65 0a 49 6e 64 65 s) then the.Inde
0ad0: 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 x: generic/tclBa
0ae0: 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d sic.c.==========
0af0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0b00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0b10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 =========.RCS fi
0b30: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c le: /cvsroot/tcl
0b40: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c /tcl/generic/tcl
0b50: 42 61 73 69 63 2e 63 2c 76 0a 72 65 74 72 69 65 Basic.c,v.retrie
0b60: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
0b70: 32 30 39 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 209.diff -u -r1.
0b80: 32 30 39 20 74 63 6c 42 61 73 69 63 2e 63 0a 2d 209 tclBasic.c.-
0b90: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 -- generic/tclBa
0ba0: 73 69 63 2e 63 09 33 31 20 4f 63 74 20 32 30 30 sic.c.31 Oct 200
0bb0: 36 20 32 30 3a 31 39 3a 34 34 20 2d 30 30 30 30 6 20:19:44 -0000
0bc0: 09 31 2e 32 30 39 0a 2b 2b 2b 20 67 65 6e 65 72 .1.209.+++ gener
0bd0: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09 31 20 ic/tclBasic.c.1
0be0: 4e 6f 76 20 32 30 30 36 20 32 30 3a 32 36 3a 33 Nov 2006 20:26:3
0bf0: 34 20 2d 30 30 30 30 0a 40 40 20 2d 33 32 39 32 4 -0000.@@ -3292
0c00: 2c 31 33 20 2b 33 32 39 32 2c 31 32 20 40 40 0a ,13 +3292,12 @@.
0c10: 20 09 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 .varFramePtr =
0c20: 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 6d 65 50 iPtr->rootFrameP
0c30: 74 72 3b 0a 20 09 73 61 76 65 64 56 61 72 46 72 tr;. .savedVarFr
0c40: 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 amePtr = iPtr->v
0c50: 61 72 46 72 61 6d 65 50 74 72 3b 0a 20 09 69 50 arFramePtr;. .iP
0c60: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 tr->varFramePtr
0c70: 3d 20 76 61 72 46 72 61 6d 65 50 74 72 3b 20 0a = varFramePtr; .
0c80: 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 + } else if (
0c90: 69 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 74 iPtr->lookupNsPt
0ca0: 72 29 20 7b 0a 2b 09 73 61 76 65 64 4e 73 50 74 r) {.+.savedNsPt
0cb0: 72 20 3d 20 76 61 72 46 72 61 6d 65 50 74 72 2d r = varFramePtr-
0cc0: 3e 6e 73 50 74 72 3b 0a 2b 09 76 61 72 46 72 61 >nsPtr;.+.varFra
0cd0: 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 69 mePtr->nsPtr = i
0ce0: 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 74 72 Ptr->lookupNsPtr
0cf0: 3b 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 ;. } else if
0d00: 20 28 66 6c 61 67 73 20 26 20 54 43 4c 5f 45 56 (flags & TCL_EV
0d10: 41 4c 5f 49 4e 56 4f 4b 45 29 20 7b 0a 20 09 73 AL_INVOKE) {. .s
0d20: 61 76 65 64 4e 73 50 74 72 20 3d 20 76 61 72 46 avedNsPtr = varF
0d30: 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a ramePtr->nsPtr;.
0d40: 2d 09 69 66 20 28 69 50 74 72 2d 3e 6c 6f 6f 6b -.if (iPtr->look
0d50: 75 70 4e 73 50 74 72 29 20 7b 0a 2d 09 20 20 20 upNsPtr) {.-.
0d60: 20 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 varFramePtr->ns
0d70: 50 74 72 20 3d 20 69 50 74 72 2d 3e 6c 6f 6f 6b Ptr = iPtr->look
0d80: 75 70 4e 73 50 74 72 3b 0a 2d 09 7d 20 65 6c 73 upNsPtr;.-.} els
0d90: 65 20 7b 0a 2d 09 20 20 20 20 76 61 72 46 72 61 e {.-. varFra
0da0: 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 69 mePtr->nsPtr = i
0db0: 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 Ptr->globalNsPtr
0dc0: 3b 0a 2d 09 7d 0a 2b 09 76 61 72 46 72 61 6d 65 ;.-.}.+.varFrame
0dd0: 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 69 50 74 Ptr->nsPtr = iPt
0de0: 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 3b 0a r->globalNsPtr;.
0df0: 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f 2a }. . /*
0e00: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f .Index: generic/
0e10: 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d tclInt.h.=======
0e20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0e30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0e40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0e50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
0e60: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
0e70: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f tcl/tcl/generic/
0e80: 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 tclInt.h,v.retri
0e90: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
0ea0: 2e 32 39 30 0a 64 69 66 66 20 2d 75 20 2d 72 31 .290.diff -u -r1
0eb0: 2e 32 39 30 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d .290 tclInt.h.--
0ec0: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 - generic/tclInt
0ed0: 2e 68 09 33 31 20 4f 63 74 20 32 30 30 36 20 32 .h.31 Oct 2006 2
0ee0: 30 3a 31 39 3a 34 35 20 2d 30 30 30 30 09 31 2e 0:19:45 -0000.1.
0ef0: 32 39 30 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 290.+++ generic/
0f00: 74 63 6c 49 6e 74 2e 68 09 31 20 4e 6f 76 20 32 tclInt.h.1 Nov 2
0f10: 30 30 36 20 32 30 3a 32 36 3a 33 37 20 2d 30 30 006 20:26:37 -00
0f20: 30 30 0a 40 40 20 2d 31 33 37 30 2c 38 20 2b 31 00.@@ -1370,8 +1
0f30: 33 37 30 2c 38 20 40 40 0a 20 09 09 09 09 20 2a 370,8 @@. .... *
0f40: 20 6f 72 20 4e 55 4c 4c 20 69 66 20 6e 6f 20 61 or NULL if no a
0f50: 63 74 69 76 65 20 74 72 61 63 65 73 2e 20 2a 2f ctive traces. */
0f60: 0a 20 20 20 20 20 69 6e 74 20 72 65 74 75 72 6e . int return
0f70: 43 6f 64 65 3b 09 09 2f 2a 20 5b 72 65 74 75 72 Code;../* [retur
0f80: 6e 20 2d 63 6f 64 65 5d 20 70 61 72 61 6d 65 74 n -code] paramet
0f90: 65 72 20 2a 2f 0a 20 20 20 20 20 43 61 6c 6c 46 er */. CallF
0fa0: 72 61 6d 65 20 2a 72 6f 6f 74 46 72 61 6d 65 50 rame *rootFrameP
0fb0: 74 72 3b 20 20 20 20 2f 2a 20 47 6c 6f 62 61 6c tr; /* Global
0fc0: 20 66 72 61 6d 65 20 70 6f 69 6e 74 65 72 20 66 frame pointer f
0fd0: 6f 72 20 74 68 69 73 20 69 6e 74 65 72 70 72 65 or this interpre
0fe0: 74 65 72 20 2a 2f 0a 2d 20 20 20 20 4e 61 6d 65 ter */.- Name
0ff0: 73 70 61 63 65 20 2a 6c 6f 6f 6b 75 70 4e 73 50 space *lookupNsP
1000: 74 72 3b 09 2f 2a 20 4e 61 6d 65 73 70 61 63 65 tr;./* Namespace
1010: 20 74 6f 20 75 73 65 20 4f 4e 4c 59 20 6f 6e 20 to use ONLY on
1020: 74 68 65 20 6e 65 78 74 0a 2d 09 09 09 09 20 2a the next.-.... *
1030: 20 54 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f 4b 45 TCL_EVAL_INVOKE
1040: 20 63 61 6c 6c 20 74 6f 20 54 63 6c 5f 45 76 61 call to Tcl_Eva
1050: 6c 4f 62 6a 76 20 2a 2f 0a 2b 20 20 20 20 4e 61 lObjv */.+ Na
1060: 6d 65 73 70 61 63 65 20 2a 6c 6f 6f 6b 75 70 4e mespace *lookupN
1070: 73 50 74 72 3b 09 2f 2a 20 4e 61 6d 65 73 70 61 sPtr;./* Namespa
1080: 63 65 20 74 6f 20 75 73 65 20 66 6f 72 20 63 6f ce to use for co
1090: 6d 6d 61 6e 64 20 6c 6f 6f 6b 75 70 20 4f 4e 4c mmand lookup ONL
10a0: 59 20 6f 6e 0a 2b 09 09 09 09 20 2a 20 74 68 65 Y on.+.... * the
10b0: 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f 20 54 63 next call to Tc
10c0: 6c 5f 45 76 61 6c 4f 62 6a 76 20 2a 2f 20 0a 20 l_EvalObjv */ .
10d0: 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a . /*. *
10e0: 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 75 73 65 Information use
10f0: 64 20 62 79 20 54 63 6c 5f 41 70 70 65 6e 64 52 d by Tcl_AppendR
1100: 65 73 75 6c 74 20 74 6f 20 6b 65 65 70 20 74 72 esult to keep tr
1110: 61 63 6b 20 6f 66 20 70 61 72 74 69 61 6c 20 72 ack of partial r
1120: 65 73 75 6c 74 73 2e 0a 49 6e 64 65 78 3a 20 67 esults..Index: g
1130: 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 eneric/tclNamesp
1140: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
1150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1180: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
1190: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
11a0: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d l/generic/tclNam
11b0: 65 73 70 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 esp.c,v.retrievi
11c0: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 31 ng revision 1.11
11d0: 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 31 4.diff -u -r1.11
11e0: 34 20 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 2d 2d 4 tclNamesp.c.--
11f0: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d - generic/tclNam
1200: 65 73 70 2e 63 09 33 31 20 4f 63 74 20 32 30 30 esp.c.31 Oct 200
1210: 36 20 32 30 3a 31 39 3a 34 35 20 2d 30 30 30 30 6 20:19:45 -0000
1220: 09 31 2e 31 31 34 0a 2b 2b 2b 20 67 65 6e 65 72 .1.114.+++ gener
1230: 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 31 ic/tclNamesp.c.1
1240: 20 4e 6f 76 20 32 30 30 36 20 32 30 3a 32 36 3a Nov 2006 20:26:
1250: 34 31 20 2d 30 30 30 30 0a 40 40 20 2d 35 30 31 41 -0000.@@ -501
1260: 36 2c 37 20 2b 35 30 31 36 2c 37 20 40 40 0a 20 6,7 +5016,7 @@.
1270: 09 63 68 61 72 20 2a 6e 61 6d 65 3b 0a 20 09 54 .char *name;. .T
1280: 63 6c 5f 44 69 63 74 53 65 61 72 63 68 20 73 65 cl_DictSearch se
1290: 61 72 63 68 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 arch;. .Tcl_Obj
12a0: 2a 6c 69 73 74 4f 62 6a 3b 0a 2d 09 69 6e 74 20 *listObj;.-.int
12b0: 64 6f 6e 65 2c 20 6c 65 6e 2c 20 61 6c 6c 6f 63 done, len, alloc
12c0: 61 74 65 64 4d 61 70 46 6c 61 67 20 3d 20 30 3b atedMapFlag = 0;
12d0: 0a 2b 09 69 6e 74 20 64 6f 6e 65 2c 20 6c 65 6e .+.int done, len
12e0: 3b 0a 20 09 2f 2a 0a 20 09 20 2a 20 44 65 66 61 ;. ./*. . * Defa
12f0: 75 6c 74 73 0a 20 09 20 2a 2f 0a 40 40 20 2d 35 ults. . */.@@ -5
1300: 30 34 36 2c 39 20 2b 35 30 34 36 2c 36 20 40 40 046,9 +5046,6 @@
1310: 0a 20 09 66 6f 72 20 28 3b 20 6f 62 6a 63 3e 31 . .for (; objc>1
1320: 20 3b 20 6f 62 6a 63 2d 3d 32 2c 6f 62 6a 76 2b ; objc-=2,objv+
1330: 3d 32 20 29 20 7b 0a 20 09 20 20 20 20 69 66 20 =2 ) {. . if
1340: 28 54 63 6c 5f 47 65 74 49 6e 64 65 78 46 72 6f (Tcl_GetIndexFro
1350: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a mObj(interp, obj
1360: 76 5b 30 5d 2c 20 63 72 65 61 74 65 4f 70 74 69 v[0], createOpti
1370: 6f 6e 73 2c 20 22 6f 70 74 69 6f 6e 22 2c 0a 20 ons, "option",.
1380: 09 09 20 20 20 20 30 2c 20 26 69 6e 64 65 78 29 .. 0, &index)
1390: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 != TCL_OK) {.-.
13a0: 09 69 66 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 .if (allocatedMa
13b0: 70 46 6c 61 67 29 20 7b 0a 2d 09 09 20 20 20 20 pFlag) {.-..
13c0: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
13d0: 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 7d 0a 20 (mapObj);.-..}.
13e0: 09 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 ..return TCL_ERR
13f0: 4f 52 3b 0a 20 09 20 20 20 20 7d 0a 20 09 20 20 OR;. . }. .
1400: 20 20 73 77 69 74 63 68 20 28 28 65 6e 75 6d 20 switch ((enum
1410: 45 6e 73 43 72 65 61 74 65 4f 70 74 73 29 20 69 EnsCreateOpts) i
1420: 6e 64 65 78 29 20 7b 0a 40 40 20 2d 35 30 35 37 ndex) {.@@ -5057
1430: 2c 32 35 20 2b 35 30 35 34 2c 31 39 20 40 40 0a ,25 +5054,19 @@.
1440: 20 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 20 09 20 ..continue;. .
1450: 20 20 20 63 61 73 65 20 43 52 54 5f 53 55 42 43 case CRT_SUBC
1460: 4d 44 53 3a 0a 20 09 09 69 66 20 28 54 63 6c 5f MDS:. ..if (Tcl_
1470: 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e ListObjLength(in
1480: 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d 2c 20 26 terp, objv[1], &
1490: 6c 65 6e 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 len) != TCL_OK)
14a0: 7b 0a 2d 09 09 20 20 20 20 69 66 20 28 61 6c 6c {.-.. if (all
14b0: 6f 63 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b ocatedMapFlag) {
14c0: 0a 2d 09 09 09 54 63 6c 5f 44 65 63 72 52 65 66 .-...Tcl_DecrRef
14d0: 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d Count(mapObj);.-
14e0: 09 09 20 20 20 20 7d 0a 20 09 09 20 20 20 20 72 .. }. .. r
14f0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
1500: 0a 20 09 09 7d 0a 20 09 09 73 75 62 63 6d 64 4f . ..}. ..subcmdO
1510: 62 6a 20 3d 20 28 6c 65 6e 20 3e 20 30 20 3f 20 bj = (len > 0 ?
1520: 6f 62 6a 76 5b 31 5d 20 3a 20 4e 55 4c 4c 29 3b objv[1] : NULL);
1530: 0a 20 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 20 09 . ..continue;. .
1540: 20 20 20 20 63 61 73 65 20 43 52 54 5f 4d 41 50 case CRT_MAP
1550: 3a 20 7b 0a 2d 09 09 54 63 6c 5f 4f 62 6a 20 2a : {.-..Tcl_Obj *
1560: 70 61 74 63 68 65 64 44 69 63 74 20 3d 20 4e 55 patchedDict = NU
1570: 4c 4c 2c 20 2a 73 75 62 63 6d 64 4f 62 6a 3b 0a LL, *subcmdObj;.
1580: 2d 0a 2d 09 09 2f 2a 0a 2b 09 09 54 63 6c 5f 4f -.-../*.+..Tcl_O
1590: 62 6a 20 2a 73 75 62 63 6d 64 4f 62 6a 3b 0a 2b bj *subcmdObj;.+
15a0: 09 09 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 ...+
15b0: 20 20 20 20 2f 2a 0a 20 09 09 20 2a 20 56 65 72 /*. .. * Ver
15c0: 69 66 79 20 74 68 61 74 20 74 68 65 20 6d 61 70 ify that the map
15d0: 20 69 73 20 73 65 6e 73 69 62 6c 65 2e 0a 20 09 is sensible.. .
15e0: 09 20 2a 2f 0a 20 0a 20 09 09 69 66 20 28 54 63 . */. . ..if (Tc
15f0: 6c 5f 44 69 63 74 4f 62 6a 46 69 72 73 74 28 69 l_DictObjFirst(i
1600: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d 2c 20 nterp, objv[1],
1610: 26 73 65 61 72 63 68 2c 0a 20 09 09 09 26 73 75 &search,. ...&su
1620: 62 63 6d 64 4f 62 6a 2c 20 26 6c 69 73 74 4f 62 bcmdObj, &listOb
1630: 6a 2c 20 26 64 6f 6e 65 29 20 21 3d 20 54 43 4c j, &done) != TCL
1640: 5f 4f 4b 29 20 7b 0a 2d 09 09 20 20 20 20 69 66 _OK) {.-.. if
1650: 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c (allocatedMapFl
1660: 61 67 29 20 7b 0a 2d 09 09 09 54 63 6c 5f 44 65 ag) {.-...Tcl_De
1670: 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 crRefCount(mapOb
1680: 6a 29 3b 0a 2d 09 09 20 20 20 20 7d 0a 20 09 09 j);.-.. }. ..
1690: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 return TCL_E
16a0: 52 52 4f 52 3b 0a 20 09 09 7d 0a 20 09 09 69 66 RROR;. ..}. ..if
16b0: 20 28 64 6f 6e 65 29 20 7b 0a 40 40 20 2d 35 30 (done) {.@@ -50
16c0: 38 34 2c 31 37 20 2b 35 30 37 35 2c 31 30 20 40 84,17 +5075,10 @
16d0: 40 0a 20 09 09 7d 0a 20 09 09 64 6f 20 7b 0a 20 @. ..}. ..do {.
16e0: 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 2a .. Tcl_Obj **
16f0: 6c 69 73 74 76 3b 0a 2d 09 09 20 20 20 20 63 68 listv;.-.. ch
1700: 61 72 20 2a 63 6d 64 3b 0a 20 0a 20 09 09 20 20 ar *cmd;. . ..
1710: 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 if (Tcl_ListOb
1720: 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 jGetElements(int
1730: 65 72 70 2c 20 6c 69 73 74 4f 62 6a 2c 20 26 6c erp, listObj, &l
1740: 65 6e 2c 0a 20 09 09 09 20 20 20 20 26 6c 69 73 en,. ... &lis
1750: 74 76 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b tv) != TCL_OK) {
1760: 0a 20 09 09 09 54 63 6c 5f 44 69 63 74 4f 62 6a . ...Tcl_DictObj
1770: 44 6f 6e 65 28 26 73 65 61 72 63 68 29 3b 0a 2d Done(&search);.-
1780: 09 09 09 69 66 20 28 70 61 74 63 68 65 64 44 69 ...if (patchedDi
1790: 63 74 29 20 7b 0a 2d 09 09 09 20 20 20 20 54 63 ct) {.-... Tc
17a0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 70 l_DecrRefCount(p
17b0: 61 74 63 68 65 64 44 69 63 74 29 3b 0a 2d 09 09 atchedDict);.-..
17c0: 09 7d 0a 2d 09 09 09 69 66 20 28 61 6c 6c 6f 63 .}.-...if (alloc
17d0: 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d atedMapFlag) {.-
17e0: 09 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 ... Tcl_DecrR
17f0: 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b efCount(mapObj);
1800: 0a 2d 09 09 09 7d 0a 20 09 09 09 72 65 74 75 72 .-...}. ...retur
1810: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 n TCL_ERROR;. ..
1820: 20 20 20 20 7d 0a 20 09 09 20 20 20 20 69 66 20 }. .. if
1830: 28 6c 65 6e 20 3c 20 31 29 20 7b 0a 40 40 20 2d (len < 1) {.@@ -
1840: 35 31 30 32 2c 35 35 20 2b 35 30 38 36 2c 32 32 5102,55 +5086,22
1850: 20 40 40 0a 20 09 09 09 09 22 65 6e 73 65 6d 62 @@. ...."ensemb
1860: 6c 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 6d le subcommand im
1870: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 22 0a plementations ".
1880: 20 09 09 09 09 22 6d 75 73 74 20 62 65 20 6e 6f ...."must be no
1890: 6e 2d 65 6d 70 74 79 20 6c 69 73 74 73 22 2c 20 n-empty lists",
18a0: 54 43 4c 5f 53 54 41 54 49 43 29 3b 0a 20 09 09 TCL_STATIC);. ..
18b0: 09 54 63 6c 5f 44 69 63 74 4f 62 6a 44 6f 6e 65 .Tcl_DictObjDone
18c0: 28 26 73 65 61 72 63 68 29 3b 0a 2d 09 09 09 69 (&search);.-...i
18d0: 66 20 28 70 61 74 63 68 65 64 44 69 63 74 29 20 f (patchedDict)
18e0: 7b 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f 44 65 {.-... Tcl_De
18f0: 63 72 52 65 66 43 6f 75 6e 74 28 70 61 74 63 68 crRefCount(patch
1900: 65 64 44 69 63 74 29 3b 0a 2d 09 09 09 7d 0a 2d edDict);.-...}.-
1910: 09 09 09 69 66 20 28 61 6c 6c 6f 63 61 74 65 64 ...if (allocated
1920: 4d 61 70 46 6c 61 67 29 20 7b 0a 2d 09 09 09 20 MapFlag) {.-...
1930: 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f Tcl_DecrRefCo
1940: 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 unt(mapObj);.-..
1950: 09 7d 0a 20 09 09 09 72 65 74 75 72 6e 20 54 43 .}. ...return TC
1960: 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 20 20 20 20 L_ERROR;. ..
1970: 7d 0a 2d 09 09 20 20 20 20 63 6d 64 20 3d 20 54 }.-.. cmd = T
1980: 63 6c 47 65 74 53 74 72 69 6e 67 28 6c 69 73 74 clGetString(list
1990: 76 5b 30 5d 29 3b 0a 2d 09 09 20 20 20 20 69 66 v[0]);.-.. if
19a0: 20 28 21 28 63 6d 64 5b 30 5d 20 3d 3d 20 27 3a (!(cmd[0] == ':
19b0: 27 20 26 26 20 63 6d 64 5b 31 5d 20 3d 3d 20 27 ' && cmd[1] == '
19c0: 3a 27 29 29 20 7b 0a 2d 09 09 09 54 63 6c 5f 4f :')) {.-...Tcl_O
19d0: 62 6a 20 2a 6e 65 77 4c 69 73 74 20 3d 20 54 63 bj *newList = Tc
19e0: 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 6c 65 6e l_NewListObj(len
19f0: 2c 20 6c 69 73 74 76 29 3b 0a 2d 09 09 09 54 63 , listv);.-...Tc
1a00: 6c 5f 4f 62 6a 20 2a 6e 65 77 43 6d 64 20 3d 20 l_Obj *newCmd =
1a10: 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a Tcl_NewStringObj
1a20: 28 6e 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 6d 65 (nsPtr->fullName
1a30: 2c 2d 31 29 3b 0a 2d 0a 2d 09 09 09 69 66 20 28 ,-1);.-.-...if (
1a40: 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 72 nsPtr->parentPtr
1a50: 29 20 7b 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f ) {.-... Tcl_
1a60: 41 70 70 65 6e 64 53 74 72 69 6e 67 73 54 6f 4f AppendStringsToO
1a70: 62 6a 28 6e 65 77 43 6d 64 2c 20 22 3a 3a 22 2c bj(newCmd, "::",
1a80: 20 4e 55 4c 4c 29 3b 0a 2d 09 09 09 7d 0a 2d 09 NULL);.-...}.-.
1a90: 09 09 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 54 ..Tcl_AppendObjT
1aa0: 6f 4f 62 6a 28 6e 65 77 43 6d 64 2c 20 6c 69 73 oObj(newCmd, lis
1ab0: 74 76 5b 30 5d 29 3b 0a 2d 09 09 09 54 63 6c 5f tv[0]);.-...Tcl_
1ac0: 4c 69 73 74 4f 62 6a 52 65 70 6c 61 63 65 28 4e ListObjReplace(N
1ad0: 55 4c 4c 2c 20 6e 65 77 4c 69 73 74 2c 20 30 2c ULL, newList, 0,
1ae0: 20 31 2c 20 31 2c 20 26 6e 65 77 43 6d 64 29 3b 1, 1, &newCmd);
1af0: 0a 2d 09 09 09 69 66 20 28 70 61 74 63 68 65 64 .-...if (patched
1b00: 44 69 63 74 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a Dict == NULL) {.
1b10: 2d 09 09 09 20 20 20 20 70 61 74 63 68 65 64 44 -... patchedD
1b20: 69 63 74 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 ict = Tcl_Duplic
1b30: 61 74 65 4f 62 6a 28 6f 62 6a 76 5b 31 5d 29 3b ateObj(objv[1]);
1b40: 0a 2d 09 09 09 7d 0a 2d 09 09 09 54 63 6c 5f 44 .-...}.-...Tcl_D
1b50: 69 63 74 4f 62 6a 50 75 74 28 4e 55 4c 4c 2c 20 ictObjPut(NULL,
1b60: 70 61 74 63 68 65 64 44 69 63 74 2c 20 73 75 62 patchedDict, sub
1b70: 63 6d 64 4f 62 6a 2c 20 6e 65 77 4c 69 73 74 29 cmdObj, newList)
1b80: 3b 0a 2d 09 09 20 20 20 20 7d 0a 20 09 09 20 20 ;.-.. }. ..
1b90: 20 20 54 63 6c 5f 44 69 63 74 4f 62 6a 4e 65 78 Tcl_DictObjNex
1ba0: 74 28 26 73 65 61 72 63 68 2c 20 26 73 75 62 63 t(&search, &subc
1bb0: 6d 64 4f 62 6a 2c 20 26 6c 69 73 74 4f 62 6a 2c mdObj, &listObj,
1bc0: 20 26 64 6f 6e 65 29 3b 0a 20 09 09 7d 20 77 68 &done);. ..} wh
1bd0: 69 6c 65 20 28 21 64 6f 6e 65 29 3b 0a 20 0a 2d ile (!done);. .-
1be0: 09 09 69 66 20 28 61 6c 6c 6f 63 61 74 65 64 4d ..if (allocatedM
1bf0: 61 70 46 6c 61 67 29 20 7b 0a 2d 09 09 20 20 20 apFlag) {.-..
1c00: 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e Tcl_DecrRefCoun
1c10: 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 7d 0a t(mapObj);.-..}.
1c20: 2d 09 09 6d 61 70 4f 62 6a 20 3d 20 28 70 61 74 -..mapObj = (pat
1c30: 63 68 65 64 44 69 63 74 20 3f 20 70 61 74 63 68 chedDict ? patch
1c40: 65 64 44 69 63 74 20 3a 20 6f 62 6a 76 5b 31 5d edDict : objv[1]
1c50: 29 3b 0a 2d 09 09 69 66 20 28 70 61 74 63 68 65 );.-..if (patche
1c60: 64 44 69 63 74 29 20 7b 0a 2d 09 09 20 20 20 20 dDict) {.-..
1c70: 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c 61 67 allocatedMapFlag
1c80: 20 3d 20 31 3b 0a 2d 09 09 7d 0a 2b 09 09 6d 61 = 1;.-..}.+..ma
1c90: 70 4f 62 6a 20 3d 20 6f 62 6a 76 5b 31 5d 3b 0a pObj = objv[1];.
1ca0: 20 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 20 09 20 ..continue;. .
1cb0: 20 20 20 7d 0a 20 09 20 20 20 20 63 61 73 65 20 }. . case
1cc0: 43 52 54 5f 50 52 45 46 49 58 3a 0a 20 09 09 69 CRT_PREFIX:. ..i
1cd0: 66 20 28 54 63 6c 5f 47 65 74 42 6f 6f 6c 65 61 f (Tcl_GetBoolea
1ce0: 6e 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c nFromObj(interp,
1cf0: 20 6f 62 6a 76 5b 31 5d 2c 0a 20 09 09 09 26 70 objv[1],. ...&p
1d00: 65 72 6d 69 74 50 72 65 66 69 78 29 20 21 3d 20 ermitPrefix) !=
1d10: 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 09 20 20 20 TCL_OK) {.-..
1d20: 20 69 66 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 if (allocatedMa
1d30: 70 46 6c 61 67 29 20 7b 0a 2d 09 09 09 54 63 6c pFlag) {.-...Tcl
1d40: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 _DecrRefCount(ma
1d50: 70 4f 62 6a 29 3b 0a 2d 09 09 20 20 20 20 7d 0a pObj);.-.. }.
1d60: 20 09 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 .. return TC
1d70: 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 7d 0a 20 09 L_ERROR;. ..}. .
1d80: 09 63 6f 6e 74 69 6e 75 65 3b 0a 20 09 20 20 20 .continue;. .
1d90: 20 63 61 73 65 20 43 52 54 5f 55 4e 4b 4e 4f 57 case CRT_UNKNOW
1da0: 4e 3a 0a 20 09 09 69 66 20 28 54 63 6c 5f 4c 69 N:. ..if (Tcl_Li
1db0: 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 stObjLength(inte
1dc0: 72 70 2c 20 6f 62 6a 76 5b 31 5d 2c 20 26 6c 65 rp, objv[1], &le
1dd0: 6e 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a n) != TCL_OK) {.
1de0: 2d 09 09 20 20 20 20 69 66 20 28 61 6c 6c 6f 63 -.. if (alloc
1df0: 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d atedMapFlag) {.-
1e00: 09 09 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f ...Tcl_DecrRefCo
1e10: 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 unt(mapObj);.-..
1e20: 20 20 20 20 7d 0a 20 09 09 20 20 20 20 72 65 74 }. .. ret
1e30: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 urn TCL_ERROR;.
1e40: 09 09 7d 0a 20 09 09 75 6e 6b 6e 6f 77 6e 4f 62 ..}. ..unknownOb
1e50: 6a 20 3d 20 28 6c 65 6e 20 3e 20 30 20 3f 20 6f j = (len > 0 ? o
1e60: 62 6a 76 5b 31 5d 20 3a 20 4e 55 4c 4c 29 3b 0a bjv[1] : NULL);.
1e70: 40 40 20 2d 35 33 33 38 2c 37 20 2b 35 32 38 39 @@ -5338,7 +5289
1e80: 2c 37 20 40 40 0a 20 09 09 20 20 20 20 73 75 62 ,7 @@. .. sub
1e90: 63 6d 64 4f 62 6a 20 3d 20 28 6c 65 6e 20 3e 20 cmdObj = (len >
1ea0: 30 20 3f 20 6f 62 6a 76 5b 31 5d 20 3a 20 4e 55 0 ? objv[1] : NU
1eb0: 4c 4c 29 3b 0a 20 09 09 20 20 20 20 63 6f 6e 74 LL);. .. cont
1ec0: 69 6e 75 65 3b 0a 20 09 09 63 61 73 65 20 43 4f inue;. ..case CO
1ed0: 4e 46 5f 4d 41 50 3a 20 7b 0a 2d 09 09 20 20 20 NF_MAP: {.-..
1ee0: 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74 63 68 65 Tcl_Obj *patche
1ef0: 64 44 69 63 74 20 3d 20 4e 55 4c 4c 2c 20 2a 73 dDict = NULL, *s
1f00: 75 62 63 6d 64 4f 62 6a 3b 0a 2b 09 09 20 20 20 ubcmdObj;.+..
1f10: 20 54 63 6c 5f 4f 62 6a 20 2a 73 75 62 63 6d 64 Tcl_Obj *subcmd
1f20: 4f 62 6a 3b 0a 20 0a 20 09 09 20 20 20 20 2f 2a Obj;. . .. /*
1f30: 0a 20 09 09 20 20 20 20 20 2a 20 56 65 72 69 66 . .. * Verif
1f40: 79 20 74 68 61 74 20 74 68 65 20 6d 61 70 20 69 y that the map i
1f50: 73 20 73 65 6e 73 69 62 6c 65 2e 0a 40 40 20 2d s sensible..@@ -
1f60: 35 33 34 36 2c 39 20 2b 35 32 39 37 2c 36 20 40 5346,9 +5297,6 @
1f70: 40 0a 20 0a 20 09 09 20 20 20 20 69 66 20 28 54 @. . .. if (T
1f80: 63 6c 5f 44 69 63 74 4f 62 6a 46 69 72 73 74 28 cl_DictObjFirst(
1f90: 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d 2c interp, objv[1],
1fa0: 20 26 73 65 61 72 63 68 2c 0a 20 09 09 09 20 20 &search,. ...
1fb0: 20 20 26 73 75 62 63 6d 64 4f 62 6a 2c 20 26 6c &subcmdObj, &l
1fc0: 69 73 74 4f 62 6a 2c 20 26 64 6f 6e 65 29 20 21 istObj, &done) !
1fd0: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 09 09 = TCL_OK) {.-...
1fe0: 69 66 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 if (allocatedMap
1ff0: 46 6c 61 67 29 20 7b 0a 2d 09 09 09 20 20 20 20 Flag) {.-...
2000: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
2010: 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 09 7d 0a (mapObj);.-...}.
2020: 20 09 09 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 ...return TCL_E
2030: 52 52 4f 52 3b 0a 20 09 09 20 20 20 20 7d 0a 20 RROR;. .. }.
2040: 09 09 20 20 20 20 69 66 20 28 64 6f 6e 65 29 20 .. if (done)
2050: 7b 0a 40 40 20 2d 35 33 35 37 2c 31 37 20 2b 35 {.@@ -5357,17 +5
2060: 33 30 35 2c 31 30 20 40 40 0a 20 09 09 20 20 20 305,10 @@. ..
2070: 20 7d 0a 20 09 09 20 20 20 20 64 6f 20 7b 0a 20 }. .. do {.
2080: 09 09 09 54 63 6c 5f 4f 62 6a 20 2a 2a 6c 69 73 ...Tcl_Obj **lis
2090: 74 76 3b 0a 2d 09 09 09 63 68 61 72 20 2a 63 6d tv;.-...char *cm
20a0: 64 3b 0a 20 0a 20 09 09 09 69 66 20 28 54 63 6c d;. . ...if (Tcl
20b0: 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 _ListObjGetEleme
20c0: 6e 74 73 28 69 6e 74 65 72 70 2c 20 6c 69 73 74 nts(interp, list
20d0: 4f 62 6a 2c 20 26 6c 65 6e 2c 0a 20 09 09 09 09 Obj, &len,. ....
20e0: 26 6c 69 73 74 76 29 20 21 3d 20 54 43 4c 5f 4f &listv) != TCL_O
20f0: 4b 29 20 7b 0a 20 09 09 09 20 20 20 20 54 63 6c K) {. ... Tcl
2100: 5f 44 69 63 74 4f 62 6a 44 6f 6e 65 28 26 73 65 _DictObjDone(&se
2110: 61 72 63 68 29 3b 0a 2d 09 09 09 20 20 20 20 69 arch);.-... i
2120: 66 20 28 70 61 74 63 68 65 64 44 69 63 74 29 20 f (patchedDict)
2130: 7b 0a 2d 09 09 09 09 54 63 6c 5f 44 65 63 72 52 {.-....Tcl_DecrR
2140: 65 66 43 6f 75 6e 74 28 70 61 74 63 68 65 64 44 efCount(patchedD
2150: 69 63 74 29 3b 0a 2d 09 09 09 20 20 20 20 7d 0a ict);.-... }.
2160: 2d 09 09 09 20 20 20 20 69 66 20 28 61 6c 6c 6f -... if (allo
2170: 63 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a catedMapFlag) {.
2180: 2d 09 09 09 09 54 63 6c 5f 44 65 63 72 52 65 66 -....Tcl_DecrRef
2190: 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d Count(mapObj);.-
21a0: 09 09 09 20 20 20 20 7d 0a 20 09 09 09 20 20 20 ... }. ...
21b0: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f return TCL_ERRO
21c0: 52 3b 0a 20 09 09 09 7d 0a 20 09 09 09 69 66 20 R;. ...}. ...if
21d0: 28 6c 65 6e 20 3c 20 31 29 20 7b 0a 40 40 20 2d (len < 1) {.@@ -
21e0: 35 33 37 35 2c 33 39 20 2b 35 33 31 36 2c 31 31 5375,39 +5316,11
21f0: 20 40 40 0a 20 09 09 09 09 20 20 20 20 22 65 6e @@. .... "en
2200: 73 65 6d 62 6c 65 20 73 75 62 63 6f 6d 6d 61 6e semble subcomman
2210: 64 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e d implementation
2220: 73 20 22 0a 20 09 09 09 09 20 20 20 20 22 6d 75 s ". .... "mu
2230: 73 74 20 62 65 20 6e 6f 6e 2d 65 6d 70 74 79 20 st be non-empty
2240: 6c 69 73 74 73 22 2c 20 54 43 4c 5f 53 54 41 54 lists", TCL_STAT
2250: 49 43 29 3b 0a 20 09 09 09 20 20 20 20 54 63 6c IC);. ... Tcl
2260: 5f 44 69 63 74 4f 62 6a 44 6f 6e 65 28 26 73 65 _DictObjDone(&se
2270: 61 72 63 68 29 3b 0a 2d 09 09 09 20 20 20 20 69 arch);.-... i
2280: 66 20 28 70 61 74 63 68 65 64 44 69 63 74 29 20 f (patchedDict)
2290: 7b 0a 2d 09 09 09 09 54 63 6c 5f 44 65 63 72 52 {.-....Tcl_DecrR
22a0: 65 66 43 6f 75 6e 74 28 70 61 74 63 68 65 64 44 efCount(patchedD
22b0: 69 63 74 29 3b 0a 2d 09 09 09 20 20 20 20 7d 0a ict);.-... }.
22c0: 2d 09 09 09 20 20 20 20 69 66 20 28 61 6c 6c 6f -... if (allo
22d0: 63 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a catedMapFlag) {.
22e0: 2d 09 09 09 09 54 63 6c 5f 44 65 63 72 52 65 66 -....Tcl_DecrRef
22f0: 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d Count(mapObj);.-
2300: 09 09 09 20 20 20 20 7d 0a 20 09 09 09 20 20 20 ... }. ...
2310: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f return TCL_ERRO
2320: 52 3b 0a 20 09 09 09 7d 0a 2d 09 09 09 63 6d 64 R;. ...}.-...cmd
2330: 20 3d 20 54 63 6c 47 65 74 53 74 72 69 6e 67 28 = TclGetString(
2340: 6c 69 73 74 76 5b 30 5d 29 3b 0a 2d 09 09 09 69 listv[0]);.-...i
2350: 66 20 28 21 28 63 6d 64 5b 30 5d 20 3d 3d 20 27 f (!(cmd[0] == '
2360: 3a 27 20 26 26 20 63 6d 64 5b 31 5d 20 3d 3d 20 :' && cmd[1] ==
2370: 27 3a 27 29 29 20 7b 0a 2d 09 09 09 20 20 20 20 ':')) {.-...
2380: 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 4c 69 73 74 Tcl_Obj *newList
2390: 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 = Tcl_NewListOb
23a0: 6a 28 6c 65 6e 2c 20 6c 69 73 74 76 29 3b 0a 2d j(len, listv);.-
23b0: 09 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a ... Tcl_Obj *
23c0: 6e 65 77 43 6d 64 20 3d 0a 2d 09 09 09 09 20 20 newCmd =.-....
23d0: 20 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f Tcl_NewStringO
23e0: 62 6a 28 6e 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 bj(nsPtr->fullNa
23f0: 6d 65 2c 20 2d 31 29 3b 0a 2d 09 09 09 20 20 20 me, -1);.-...
2400: 20 69 66 20 28 6e 73 50 74 72 2d 3e 70 61 72 65 if (nsPtr->pare
2410: 6e 74 50 74 72 29 20 7b 0a 2d 09 09 09 09 54 63 ntPtr) {.-....Tc
2420: 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67 73 54 l_AppendStringsT
2430: 6f 4f 62 6a 28 6e 65 77 43 6d 64 2c 20 22 3a 3a oObj(newCmd, "::
2440: 22 2c 20 4e 55 4c 4c 29 3b 0a 2d 09 09 09 20 20 ", NULL);.-...
2450: 20 20 7d 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f }.-... Tcl_
2460: 41 70 70 65 6e 64 4f 62 6a 54 6f 4f 62 6a 28 6e AppendObjToObj(n
2470: 65 77 43 6d 64 2c 20 6c 69 73 74 76 5b 30 5d 29 ewCmd, listv[0])
2480: 3b 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f 4c 69 ;.-... Tcl_Li
2490: 73 74 4f 62 6a 52 65 70 6c 61 63 65 28 4e 55 4c stObjReplace(NUL
24a0: 4c 2c 20 6e 65 77 4c 69 73 74 2c 20 30 2c 31 2c L, newList, 0,1,
24b0: 20 31 2c 26 6e 65 77 43 6d 64 29 3b 0a 2d 09 09 1,&newCmd);.-..
24c0: 09 20 20 20 20 69 66 20 28 70 61 74 63 68 65 64 . if (patched
24d0: 44 69 63 74 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a Dict == NULL) {.
24e0: 2d 09 09 09 09 70 61 74 63 68 65 64 44 69 63 74 -....patchedDict
24f0: 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 61 74 65 = Tcl_Duplicate
2500: 4f 62 6a 28 6f 62 6a 76 5b 31 5d 29 3b 0a 2d 09 Obj(objv[1]);.-.
2510: 09 09 20 20 20 20 7d 0a 2d 09 09 09 20 20 20 20 .. }.-...
2520: 54 63 6c 5f 44 69 63 74 4f 62 6a 50 75 74 28 4e Tcl_DictObjPut(N
2530: 55 4c 4c 2c 20 70 61 74 63 68 65 64 44 69 63 74 ULL, patchedDict
2540: 2c 20 73 75 62 63 6d 64 4f 62 6a 2c 0a 2d 09 09 , subcmdObj,.-..
2550: 09 09 20 20 20 20 6e 65 77 4c 69 73 74 29 3b 0a .. newList);.
2560: 2d 09 09 09 7d 0a 20 09 09 09 54 63 6c 5f 44 69 -...}. ...Tcl_Di
2570: 63 74 4f 62 6a 4e 65 78 74 28 26 73 65 61 72 63 ctObjNext(&searc
2580: 68 2c 20 26 73 75 62 63 6d 64 4f 62 6a 2c 20 26 h, &subcmdObj, &
2590: 6c 69 73 74 4f 62 6a 2c 20 26 64 6f 6e 65 29 3b listObj, &done);
25a0: 0a 20 09 09 20 20 20 20 7d 20 77 68 69 6c 65 20 . .. } while
25b0: 28 21 64 6f 6e 65 29 3b 0a 2d 09 09 20 20 20 20 (!done);.-..
25c0: 69 66 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 if (allocatedMap
25d0: 46 6c 61 67 29 20 7b 0a 2d 09 09 09 54 63 6c 5f Flag) {.-...Tcl_
25e0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 DecrRefCount(map
25f0: 4f 62 6a 29 3b 0a 2d 09 09 20 20 20 20 7d 0a 2d Obj);.-.. }.-
2600: 09 09 20 20 20 20 6d 61 70 4f 62 6a 20 3d 20 28 .. mapObj = (
2610: 70 61 74 63 68 65 64 44 69 63 74 20 3f 20 70 61 patchedDict ? pa
2620: 74 63 68 65 64 44 69 63 74 20 3a 20 6f 62 6a 76 tchedDict : objv
2630: 5b 31 5d 29 3b 0a 2d 09 09 20 20 20 20 69 66 20 [1]);.-.. if
2640: 28 70 61 74 63 68 65 64 44 69 63 74 29 20 7b 0a (patchedDict) {.
2650: 2d 09 09 09 61 6c 6c 6f 63 61 74 65 64 4d 61 70 -...allocatedMap
2660: 46 6c 61 67 20 3d 20 31 3b 0a 2d 09 09 20 20 20 Flag = 1;.-..
2670: 20 7d 0a 2b 09 09 20 20 20 20 6d 61 70 4f 62 6a }.+.. mapObj
2680: 20 3d 20 6f 62 6a 76 5b 31 5d 3b 0a 20 09 09 20 = objv[1];. ..
2690: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 09 09 continue;. ..
26a0: 7d 0a 20 09 09 63 61 73 65 20 43 4f 4e 46 5f 4e }. ..case CONF_N
26b0: 41 4d 45 53 50 41 43 45 3a 0a 40 40 20 2d 36 32 AMESPACE:.@@ -62
26c0: 37 37 2c 36 20 2b 36 31 39 30 2c 37 20 40 40 0a 77,6 +6190,7 @@.
26d0: 20 09 09 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 ..sizeof(Tcl_Ob
26e0: 6a 20 2a 29 20 2a 20 28 6f 62 6a 63 20 2d 20 32 j *) * (objc - 2
26f0: 20 2b 20 70 72 65 66 69 78 4f 62 6a 63 29 29 3b + prefixObjc));
2700: 0a 20 09 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 . .memcpy(tempOb
2710: 6a 76 2c 20 70 72 65 66 69 78 4f 62 6a 76 2c 20 jv, prefixObjv,
2720: 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a sizeof(Tcl_Obj *
2730: 29 20 2a 20 70 72 65 66 69 78 4f 62 6a 63 29 3b ) * prefixObjc);
2740: 0a 20 09 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 . .memcpy(tempOb
2750: 6a 76 2b 70 72 65 66 69 78 4f 62 6a 63 2c 20 6f jv+prefixObjc, o
2760: 62 6a 76 2b 32 2c 20 73 69 7a 65 6f 66 28 54 63 bjv+2, sizeof(Tc
2770: 6c 5f 4f 62 6a 20 2a 29 20 2a 20 28 6f 62 6a 63 l_Obj *) * (objc
2780: 2d 32 29 29 3b 0a 2b 09 69 50 74 72 2d 3e 6c 6f -2));.+.iPtr->lo
2790: 6f 6b 75 70 4e 73 50 74 72 20 3d 20 65 6e 73 65 okupNsPtr = ense
27a0: 6d 62 6c 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a mblePtr->nsPtr;.
27b0: 20 09 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f 45 .result = Tcl_E
27c0: 76 61 6c 4f 62 6a 76 28 69 6e 74 65 72 70 2c 20 valObjv(interp,
27d0: 6f 62 6a 63 2d 32 2b 70 72 65 66 69 78 4f 62 6a objc-2+prefixObj
27e0: 63 2c 20 74 65 6d 70 4f 62 6a 76 2c 0a 20 09 09 c, tempObjv,. ..
27f0: 54 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f 4b 45 29 TCL_EVAL_INVOKE)
2800: 3b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 66 43 ;. .Tcl_DecrRefC
2810: 6f 75 6e 74 28 70 72 65 66 69 78 4f 62 6a 29 3b ount(prefixObj);
2820: 0a 40 40 20 2d 36 32 39 38 2c 36 20 2b 36 32 31 .@@ -6298,6 +621
2830: 32 2c 37 20 40 40 0a 20 20 20 20 20 20 2a 2f 0a 2,7 @@. */.
2840: 20 0a 20 20 20 20 20 69 66 20 28 65 6e 73 65 6d . if (ensem
2850: 62 6c 65 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 blePtr->unknownH
2860: 61 6e 64 6c 65 72 20 21 3d 20 4e 55 4c 4c 20 26 andler != NULL &
2870: 26 20 72 65 70 61 72 73 65 43 6f 75 6e 74 2b 2b & reparseCount++
2880: 20 3c 20 31 29 20 7b 0a 2b 09 49 6e 74 65 72 70 < 1) {.+.Interp
2890: 20 2a 69 50 74 72 20 3d 20 28 49 6e 74 65 72 70 *iPtr = (Interp
28a0: 20 2a 29 20 69 6e 74 65 72 70 3b 0a 20 09 69 6e *) interp;. .in
28b0: 74 20 70 61 72 61 6d 63 2c 20 69 3b 0a 20 09 54 t paramc, i;. .T
28c0: 63 6c 5f 4f 62 6a 20 2a 2a 70 61 72 61 6d 76 2c cl_Obj **paramv,
28d0: 20 2a 75 6e 6b 6e 6f 77 6e 43 6d 64 2c 20 2a 65 *unknownCmd, *e
28e0: 6e 73 4f 62 6a 3b 0a 20 0a 40 40 20 2d 36 33 31 nsObj;. .@@ -631
28f0: 31 2c 36 20 2b 36 32 32 36 2c 37 20 40 40 0a 20 1,6 +6226,7 @@.
2900: 09 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 .Tcl_ListObjGetE
2910: 6c 65 6d 65 6e 74 73 28 4e 55 4c 4c 2c 20 75 6e lements(NULL, un
2920: 6b 6e 6f 77 6e 43 6d 64 2c 20 26 70 61 72 61 6d knownCmd, ¶m
2930: 63 2c 20 26 70 61 72 61 6d 76 29 3b 0a 20 09 54 c, ¶mv);. .T
2940: 63 6c 5f 50 72 65 73 65 72 76 65 28 65 6e 73 65 cl_Preserve(ense
2950: 6d 62 6c 65 50 74 72 29 3b 0a 20 09 54 63 6c 5f mblePtr);. .Tcl_
2960: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 75 6e 6b IncrRefCount(unk
2970: 6e 6f 77 6e 43 6d 64 29 3b 0a 2b 09 69 50 74 72 nownCmd);.+.iPtr
2980: 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 74 72 20 3d 20 ->lookupNsPtr =
2990: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 73 50 ensemblePtr->nsP
29a0: 74 72 3b 0a 20 09 72 65 73 75 6c 74 20 3d 20 54 tr;. .result = T
29b0: 63 6c 5f 45 76 61 6c 4f 62 6a 76 28 69 6e 74 65 cl_EvalObjv(inte
29c0: 72 70 2c 20 70 61 72 61 6d 63 2c 20 70 61 72 61 rp, paramc, para
29d0: 6d 76 2c 20 30 29 3b 0a 20 09 69 66 20 28 72 65 mv, 0);. .if (re
29e0: 73 75 6c 74 20 3d 3d 20 54 43 4c 5f 4f 4b 29 20 sult == TCL_OK)
29f0: 7b 0a 20 09 20 20 20 20 70 72 65 66 69 78 4f 62 {. . prefixOb
2a00: 6a 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 j = Tcl_GetObjRe
2a10: 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 40 40 sult(interp);.@@
2a20: 20 2d 36 36 36 37 2c 31 32 20 2b 36 35 38 33 2c -6667,12 +6583,
2a30: 37 20 40 40 0a 20 09 20 20 20 20 20 2a 20 74 68 7 @@. . * th
2a40: 65 20 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 72 e programmer's r
2a50: 65 73 70 6f 6e 73 69 62 69 6c 69 74 79 20 28 6f esponsibility (o
2a60: 72 20 5b 3a 3a 75 6e 6b 6e 6f 77 6e 5d 20 6f 66 r [::unknown] of
2a70: 20 63 6f 75 72 73 65 29 2e 0a 20 09 20 20 20 20 course).. .
2a80: 20 2a 2f 0a 20 0a 2d 09 20 20 20 20 63 6d 64 4f */. .-. cmdO
2a90: 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 bj = Tcl_NewStri
2aa0: 6e 67 4f 62 6a 28 65 6e 73 65 6d 62 6c 65 50 74 ngObj(ensemblePt
2ab0: 72 2d 3e 6e 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 r->nsPtr->fullNa
2ac0: 6d 65 2c 20 2d 31 29 3b 0a 2d 09 20 20 20 20 69 me, -1);.-. i
2ad0: 66 20 28 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e f (ensemblePtr->
2ae0: 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 72 nsPtr->parentPtr
2af0: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 09 54 != NULL) {.-..T
2b00: 63 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67 73 cl_AppendStrings
2b10: 54 6f 4f 62 6a 28 63 6d 64 4f 62 6a 2c 20 22 3a ToObj(cmdObj, ":
2b20: 3a 22 2c 20 6e 61 6d 65 2c 20 4e 55 4c 4c 29 3b :", name, NULL);
2b30: 0a 2d 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a .-. } else {.
2b40: 2d 09 09 54 63 6c 5f 41 70 70 65 6e 64 53 74 72 -..Tcl_AppendStr
2b50: 69 6e 67 73 54 6f 4f 62 6a 28 63 6d 64 4f 62 6a ingsToObj(cmdObj
2b60: 2c 20 6e 61 6d 65 2c 20 4e 55 4c 4c 29 3b 0a 2d , name, NULL);.-
2b70: 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 63 6d 64 . }.+. cmd
2b80: 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 Obj = Tcl_NewStr
2b90: 69 6e 67 4f 62 6a 28 6e 61 6d 65 2c 20 2d 31 29 ingObj(name, -1)
2ba0: 3b 0a 20 09 20 20 20 20 63 6d 64 50 72 65 66 69 ;. . cmdPrefi
2bb0: 78 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 xObj = Tcl_NewLi
2bc0: 73 74 4f 62 6a 28 31 2c 20 26 63 6d 64 4f 62 6a stObj(1, &cmdObj
2bd0: 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f 53 65 74 );. . Tcl_Set
2be0: 48 61 73 68 56 61 6c 75 65 28 68 50 74 72 2c 20 HashValue(hPtr,
2bf0: 28 43 6c 69 65 6e 74 44 61 74 61 29 20 63 6d 64 (ClientData) cmd
2c00: 50 72 65 66 69 78 4f 62 6a 29 3b 0a 20 09 20 20 PrefixObj);. .
2c10: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 Tcl_IncrRefCou
2c20: 6e 74 28 63 6d 64 50 72 65 66 69 78 4f 62 6a 29 nt(cmdPrefixObj)
2c30: 3b 0a 40 40 20 2d 36 37 33 33 2c 31 31 20 2b 36 ;.@@ -6733,11 +6
2c40: 36 34 34 2c 37 20 40 40 0a 20 09 09 20 20 20 20 644,7 @@. ..
2c50: 69 66 20 28 69 73 4e 65 77 29 20 7b 0a 20 09 09 if (isNew) {. ..
2c60: 09 54 63 6c 5f 4f 62 6a 20 2a 63 6d 64 4f 62 6a .Tcl_Obj *cmdObj
2c70: 2c 20 2a 63 6d 64 50 72 65 66 69 78 4f 62 6a 3b , *cmdPrefixObj;
2c80: 0a 20 0a 2d 09 09 09 54 63 6c 4e 65 77 4f 62 6a . .-...TclNewObj
2c90: 28 63 6d 64 4f 62 6a 29 3b 0a 2d 09 09 09 54 63 (cmdObj);.-...Tc
2ca0: 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67 73 54 l_AppendStringsT
2cb0: 6f 4f 62 6a 28 63 6d 64 4f 62 6a 2c 0a 2d 09 09 oObj(cmdObj,.-..
2cc0: 09 09 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e ..ensemblePtr->n
2cd0: 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 6d 65 2c 0a sPtr->fullName,.
2ce0: 2d 09 09 09 09 28 65 6e 73 65 6d 62 6c 65 50 74 -....(ensemblePt
2cf0: 72 2d 3e 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 r->nsPtr->parent
2d00: 50 74 72 20 3f 20 22 3a 3a 22 20 3a 20 22 22 29 Ptr ? "::" : "")
2d10: 2c 0a 2d 09 09 09 09 6e 73 43 6d 64 4e 61 6d 65 ,.-....nsCmdName
2d20: 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 09 09 63 6d 64 , NULL);.+...cmd
2d30: 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 Obj = Tcl_NewStr
2d40: 69 6e 67 4f 62 6a 28 6e 73 43 6d 64 4e 61 6d 65 ingObj(nsCmdName
2d50: 2c 20 2d 31 29 3b 0a 20 09 09 09 63 6d 64 50 72 , -1);. ...cmdPr
2d60: 65 66 69 78 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 efixObj = Tcl_Ne
2d70: 77 4c 69 73 74 4f 62 6a 28 31 2c 20 26 63 6d 64 wListObj(1, &cmd
2d80: 4f 62 6a 29 3b 0a 20 09 09 09 54 63 6c 5f 53 65 Obj);. ...Tcl_Se
2d90: 74 48 61 73 68 56 61 6c 75 65 28 68 50 74 72 2c tHashValue(hPtr,
2da0: 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 63 6d (ClientData) cm
2db0: 64 50 72 65 66 69 78 4f 62 6a 29 3b 0a 20 09 09 dPrefixObj);. ..
2dc0: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e .Tcl_IncrRefCoun
2dd0: 74 28 63 6d 64 50 72 65 66 69 78 4f 62 6a 29 3b t(cmdPrefixObj);
2de0: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e 61 .Index: tests/na
2df0: 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d 3d mespace.test.===
2e00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2e10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2e20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2e30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2e40: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
2e50: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 oot/tcl/tcl/test
2e60: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 s/namespace.test
2e70: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
2e80: 76 69 73 69 6f 6e 20 31 2e 36 31 0a 64 69 66 66 vision 1.61.diff
2e90: 20 2d 75 20 2d 72 31 2e 36 31 20 6e 61 6d 65 73 -u -r1.61 names
2ea0: 70 61 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 pace.test.--- te
2eb0: 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 sts/namespace.te
2ec0: 73 74 09 33 31 20 4f 63 74 20 32 30 30 36 20 31 st.31 Oct 2006 1
2ed0: 33 3a 34 36 3a 33 33 20 2d 30 30 30 30 09 31 2e 3:46:33 -0000.1.
2ee0: 36 31 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 61 6d 61.+++ tests/nam
2ef0: 65 73 70 61 63 65 2e 74 65 73 74 09 31 20 4e 6f espace.test.1 No
2f00: 76 20 32 30 30 36 20 32 30 3a 32 36 3a 34 32 20 v 2006 20:26:42
2f10: 2d 30 30 30 30 0a 40 40 20 2d 31 35 32 39 2c 37 -0000.@@ -1529,7
2f20: 20 2b 31 35 32 39 2c 37 20 40 40 0a 20 20 20 20 +1529,7 @@.
2f30: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 set result [lis
2f40: 74 20 5b 6e 73 20 78 30 20 7a 5d 20 5b 6e 73 20 t [ns x0 z] [ns
2f50: 78 31 5d 20 5b 6e 73 20 78 32 5d 20 5b 6e 73 20 x1] [ns x2] [ns
2f60: 78 33 5d 5d 0a 20 20 20 20 20 6e 61 6d 65 73 70 x3]]. namesp
2f70: 61 63 65 20 64 65 6c 65 74 65 20 6e 73 0a 20 20 ace delete ns.
2f80: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2d 7d set result.-}
2f90: 20 7b 7b 31 20 3a 3a 6e 73 3a 3a 78 30 3a 3a 7a {{1 ::ns::x0::z
2fa0: 7d 20 31 20 32 20 33 7d 0a 2b 7d 20 7b 7b 31 20 } 1 2 3}.+} {{1
2fb0: 7a 7d 20 31 20 32 20 33 7d 0a 20 0a 20 74 65 73 z} 1 2 3}. . tes
2fc0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 t namespace-43.1
2fd0: 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 64 69 63 {ensembles: dic
2fe0: 74 2d 64 72 69 76 65 6e 7d 20 7b 0a 20 20 20 20 t-driven} {.
2ff0: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 namespace eval
3000: 6e 73 20 7b 0a 40 40 20 2d 31 35 35 35 2c 36 20 ns {.@@ -1555,6
3010: 2b 31 35 35 35 2c 31 39 20 40 40 0a 20 20 20 20 +1555,19 @@.
3020: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
3030: 65 20 6e 73 0a 20 20 20 20 20 73 65 74 20 72 65 e ns. set re
3040: 73 75 6c 74 0a 20 7d 20 7b 7b 31 20 7b 7d 7d 20 sult. } {{1 {}}
3050: 7b 32 20 30 7d 20 7b 31 20 2e 7d 20 7b 31 20 7b {2 0} {1 .} {1 {
3060: 2e 20 66 6f 6f 7d 7d 20 7b 32 20 31 7d 20 7b 32 . foo}} {2 1} {2
3070: 20 32 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 2}}.+test names
3080: 70 61 63 65 2d 34 33 2e 32 2e 61 20 7b 65 6e 73 pace-43.2.a {ens
3090: 65 6d 62 6c 65 73 3a 20 64 69 63 74 2d 64 72 69 embles: dict-dri
30a0: 76 65 6e 7d 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 ven} {.+ name
30b0: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
30c0: 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f +.namespace expo
30d0: 72 74 20 78 2a 0a 2b 09 70 72 6f 63 20 78 31 20 rt x*.+.proc x1
30e0: 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 31 20 24 {args} {list 1 $
30f0: 61 72 67 73 7d 0a 2b 09 70 72 6f 63 20 78 32 20 args}.+.proc x2
3100: 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 32 20 5b {args} {list 2 [
3110: 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 7d 0a llength $args]}.
3120: 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 +.namespace ense
3130: 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 6d 61 70 mble create -map
3140: 20 7b 0a 2b 09 20 20 20 20 61 20 78 31 20 62 20 {.+. a x1 b
3150: 78 32 20 63 20 7b 78 31 20 2e 7d 20 64 20 7b 78 x2 c {x1 .} d {x
3160: 32 20 2e 7d 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2 .}.+.}.+ }.
3170: 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 + set result
3180: 5b 6c 69 73 74 20 5b 6e 73 20 61 5d 20 5b 6e 73 [list [ns a] [ns
3190: 20 62 5d 20 5b 6e 73 20 63 5d 20 5b 6e 73 20 63 b] [ns c] [ns c
31a0: 20 66 6f 6f 5d 20 5b 6e 73 20 64 5d 20 5b 6e 73 foo] [ns d] [ns
31b0: 20 64 20 66 6f 6f 5d 5d 0a 2b 20 20 20 20 6e 61 d foo]].+ na
31c0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e mespace delete n
31d0: 73 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c s.+ set resul
31e0: 74 0a 2b 7d 20 7b 7b 31 20 7b 7d 7d 20 7b 32 20 t.+} {{1 {}} {2
31f0: 30 7d 20 7b 31 20 2e 7d 20 7b 31 20 7b 2e 20 66 0} {1 .} {1 {. f
3200: 6f 6f 7d 7d 20 7b 32 20 31 7d 20 7b 32 20 32 7d oo}} {2 1} {2 2}
3210: 7d 0a 20 73 65 74 20 53 45 54 55 50 20 7b 0a 20 }. set SETUP {.
3220: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 namespace ev
3230: 61 6c 20 6e 73 20 7b 0a 20 09 6e 61 6d 65 73 70 al ns {. .namesp
3240: 61 63 65 20 65 78 70 6f 72 74 20 61 20 62 0a 40 ace export a b.@
3250: 40 20 2d 31 35 38 38 2c 36 20 2b 31 36 30 31 2c @ -1588,6 +1601,
3260: 37 20 40 40 0a 20 09 70 72 6f 63 20 63 20 61 72 7 @@. .proc c ar
3270: 67 73 20 7b 66 6f 72 6d 61 74 20 33 2c 5b 6c 6c gs {format 3,[ll
3280: 65 6e 67 74 68 20 24 61 72 67 73 5d 7d 0a 20 09 ength $args]}. .
3290: 70 72 6f 63 20 64 20 61 72 67 73 20 7b 66 6f 72 proc d args {for
32a0: 6d 61 74 20 34 2c 5b 6c 6c 65 6e 67 74 68 20 24 mat 4,[llength $
32b0: 61 72 67 73 5d 7d 0a 20 09 6e 61 6d 65 73 70 61 args]}. .namespa
32c0: 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 ce ensemble crea
32d0: 74 65 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 73 20 te -subcommands
32e0: 7b 62 20 63 7d 20 2d 6d 61 70 20 7b 63 20 3a 3a {b c} -map {c ::
32f0: 6e 73 3a 3a 64 7d 0a 2b 09 6e 61 6d 65 73 70 61 ns::d}.+.namespa
3300: 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 ce ensemble crea
3310: 74 65 20 2d 63 6f 6d 6d 61 6e 64 20 3a 3a 6e 73 te -command ::ns
3320: 61 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 73 20 7b a -subcommands {
3330: 62 20 63 7d 20 2d 6d 61 70 20 7b 63 20 64 7d 0a b c} -map {c d}.
3340: 20 20 20 20 20 7d 0a 20 7d 0a 20 74 65 73 74 20 }. }. test
3350: 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 38 20 7b namespace-43.8 {
3360: 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 73 74 2d ensembles: list-
3370: 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 6e 7d 20 and-map-driven}
3380: 2d 73 65 74 75 70 20 24 53 45 54 55 50 20 2d 62 -setup $SETUP -b
3390: 6f 64 79 20 7b 0a 40 40 20 2d 31 35 39 39 2c 39 ody {.@@ -1599,9
33a0: 20 2b 31 36 31 33 2c 31 35 20 40 40 0a 20 74 65 +1613,15 @@. te
33b0: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e st namespace-43.
33c0: 31 30 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 10 {ensembles: l
33d0: 69 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 ist-and-map-driv
33e0: 65 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 en} -setup $SETU
33f0: 50 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 6e P -body {. n
3400: 73 20 62 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 s b foo bar boo
3410: 73 70 6f 6e 67 20 77 69 62 62 6c 65 0a 20 7d 20 spong wibble. }
3420: 2d 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 -cleanup {namesp
3430: 61 63 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d ace delete ns} -
3440: 72 65 73 75 6c 74 20 32 2c 35 0a 2b 74 65 73 74 result 2,5.+test
3450: 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 30 namespace-43.10
3460: 61 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 a {ensembles: li
3470: 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 st-and-map-drive
3480: 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 50 n} -setup $SETUP
3490: 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 6e 73 -body {.+ ns
34a0: 61 20 62 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 a b foo bar boo
34b0: 73 70 6f 6e 67 20 77 69 62 62 6c 65 0a 2b 7d 20 spong wibble.+}
34c0: 2d 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 -cleanup {namesp
34d0: 61 63 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d ace delete ns} -
34e0: 72 65 73 75 6c 74 20 32 2c 35 0a 20 74 65 73 74 result 2,5. test
34f0: 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 31 namespace-43.11
3500: 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 73 {ensembles: lis
3510: 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 6e t-and-map-driven
3520: 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 50 20 } -setup $SETUP
3530: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 6e 73 20 -body {. ns
3540: 63 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 73 70 c foo bar boo sp
3550: 6f 6e 67 20 77 69 62 62 6c 65 0a 20 7d 20 2d 63 ong wibble. } -c
3560: 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 61 63 leanup {namespac
3570: 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d 72 65 e delete ns} -re
3580: 73 75 6c 74 20 34 2c 35 0a 2b 74 65 73 74 20 6e sult 4,5.+test n
3590: 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 31 2e 61 amespace-43.11.a
35a0: 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 73 {ensembles: lis
35b0: 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 6e t-and-map-driven
35c0: 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 50 20 } -setup $SETUP
35d0: 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 6e 73 61 -body {.+ nsa
35e0: 20 63 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 73 c foo bar boo s
35f0: 70 6f 6e 67 20 77 69 62 62 6c 65 0a 2b 7d 20 2d pong wibble.+} -
3600: 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 61 cleanup {namespa
3610: 63 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d 72 ce delete ns} -r
3620: 65 73 75 6c 74 20 34 2c 35 0a 20 74 65 73 74 20 esult 4,5. test
3630: 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 32 20 namespace-43.12
3640: 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 73 74 {ensembles: list
3650: 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 6e 7d -and-map-driven}
3660: 20 2d 73 65 74 75 70 20 24 53 45 54 55 50 20 2d -setup $SETUP -
3670: 62 6f 64 79 20 7b 0a 20 20 20 20 20 6e 73 20 64 body {. ns d
3680: 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 73 70 6f foo bar boo spo
3690: 6e 67 20 77 69 62 62 6c 65 0a 20 7d 20 2d 63 6c ng wibble. } -cl
36a0: 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 61 63 65 eanup {namespace
36b0: 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d 72 65 74 delete ns} -ret
36c0: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d urnCodes error -
36d0: 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 result {unknown
36e0: 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62 or ambiguous sub
36f0: 63 6f 6d 6d 61 6e 64 20 22 64 22 3a 20 6d 75 73 command "d": mus
3700: 74 20 62 65 20 62 2c 20 6f 72 20 63 7d 0a 40 40 t be b, or c}.@@
3710: 20 2d 31 36 35 31 2c 37 20 2b 31 36 37 31 2c 37 -1651,7 +1671,7
3720: 20 40 40 0a 20 20 20 20 20 66 6f 6f 62 61 72 20 @@. foobar
3730: 66 6f 6f 62 61 72 63 6f 6e 0a 20 7d 20 2d 63 6c foobarcon. } -cl
3740: 65 61 6e 75 70 20 7b 0a 20 20 20 20 20 72 65 6e eanup {. ren
3750: 61 6d 65 20 66 6f 6f 62 61 72 20 7b 7d 0a 2d 7d ame foobar {}.-}
3760: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72 -returnCodes er
3770: 72 6f 72 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 ror -result {inv
3780: 61 6c 69 64 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d alid command nam
3790: 65 20 22 3a 3a 66 6f 6f 62 61 72 63 6f 6e 66 69 e "::foobarconfi
37a0: 67 75 72 65 22 7d 0a 2b 7d 20 2d 72 65 74 75 72 gure"}.+} -retur
37b0: 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 72 65 nCodes error -re
37c0: 73 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 63 6f sult {invalid co
37d0: 6d 6d 61 6e 64 20 6e 61 6d 65 20 22 66 6f 6f 62 mmand name "foob
37e0: 61 72 63 6f 6e 66 69 67 75 72 65 22 7d 0a 20 0a arconfigure"}. .
37f0: 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d test namespace-
3800: 34 35 2e 31 20 7b 65 6e 73 65 6d 62 6c 65 3a 20 45.1 {ensemble:
3810: 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 7d 20 7b introspection} {
3820: 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 . namespace
3830: 65 76 61 6c 20 6e 73 20 7b 0a 40 40 20 2d 31 36 eval ns {.@@ -16
3840: 37 32 2c 37 20 2b 31 36 39 32 2c 37 20 40 40 0a 72,7 +1692,7 @@.
3850: 20 20 20 20 20 7d 0a 20 20 20 20 20 6e 61 6d 65 }. name
3860: 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 0a space delete ns.
3870: 20 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a set result.
3880: 2d 7d 20 7b 41 20 3a 3a 6e 73 3a 3a 78 7d 0a 2b -} {A ::ns::x}.+
3890: 7d 20 7b 41 20 78 7d 0a 20 0a 20 74 65 73 74 20 } {A x}. . test
38a0: 6e 61 6d 65 73 70 61 63 65 2d 34 36 2e 31 20 7b namespace-46.1 {
38b0: 65 6e 73 65 6d 62 6c 65 3a 20 6d 6f 64 69 66 69 ensemble: modifi
38c0: 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 20 6e cation} {. n
38d0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 amespace eval ns
38e0: 20 7b 0a 40 40 20 2d 31 36 39 34 2c 36 20 2b 31 {.@@ -1694,6 +1
38f0: 37 31 34 2c 32 36 20 40 40 0a 20 20 20 20 20 6e 714,26 @@. n
3900: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
3910: 6e 73 0a 20 20 20 20 20 73 65 74 20 72 65 73 75 ns. set resu
3920: 6c 74 0a 20 7d 20 7b 7b 41 20 3a 3a 6e 73 3a 3a lt. } {{A ::ns::
3930: 78 7d 20 31 32 33 20 7b 42 20 3a 3a 6e 73 3a 3a x} 123 {B ::ns::
3940: 78 7d 20 31 32 33 20 7b 7d 20 31 32 33 7d 0a 2b x} 123 {} 123}.+
3950: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 test namespace-4
3960: 36 2e 31 2e 61 20 7b 65 6e 73 65 6d 62 6c 65 3a 6.1.a {ensemble:
3970: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 7d 20 7b modification} {
3980: 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 .+ namespace
3990: 65 76 61 6c 20 6e 73 20 7b 0a 2b 09 6e 61 6d 65 eval ns {.+.name
39a0: 73 70 61 63 65 20 65 78 70 6f 72 74 20 78 0a 2b space export x.+
39b0: 09 70 72 6f 63 20 78 20 7b 7d 20 7b 66 6f 72 6d .proc x {} {form
39c0: 61 74 20 31 32 33 7d 0a 2b 0a 2b 09 23 20 45 6e at 123}.+.+.# En
39d0: 73 65 6d 62 6c 65 20 6d 61 70 73 20 41 2d 3e 78 semble maps A->x
39e0: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 .+.namespace ens
39f0: 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 63 6f emble create -co
3a00: 6d 6d 61 6e 64 20 6e 73 20 2d 6d 61 70 20 7b 41 mmand ns -map {A
3a10: 20 78 7d 0a 2b 09 73 65 74 20 3a 3a 72 65 73 75 x}.+.set ::resu
3a20: 6c 74 20 5b 6c 69 73 74 20 5b 6e 61 6d 65 73 70 lt [list [namesp
3a30: 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e ace ensemble con
3a40: 66 69 67 75 72 65 20 6e 73 20 2d 6d 61 70 5d 20 figure ns -map]
3a50: 5b 6e 73 20 41 5d 5d 0a 2b 0a 2b 09 23 20 45 6e [ns A]].+.+.# En
3a60: 73 65 6d 62 6c 65 20 6d 61 70 73 20 42 2d 3e 78 semble maps B->x
3a70: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 .+.namespace ens
3a80: 65 6d 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 emble configure
3a90: 6e 73 20 2d 6d 61 70 20 7b 42 20 78 7d 0a 2b 09 ns -map {B x}.+.
3aa0: 6c 61 70 70 65 6e 64 20 3a 3a 72 65 73 75 6c 74 lappend ::result
3ab0: 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 [namespace ense
3ac0: 6d 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e mble configure n
3ad0: 73 20 2d 6d 61 70 5d 20 5b 6e 73 20 42 5d 0a 2b s -map] [ns B].+
3ae0: 0a 2b 09 23 20 45 6e 73 65 6d 62 6c 65 20 6d 61 .+.# Ensemble ma
3af0: 70 73 20 78 2d 3e 78 0a 2b 09 6e 61 6d 65 73 70 ps x->x.+.namesp
3b00: 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e ace ensemble con
3b10: 66 69 67 75 72 65 20 6e 73 20 2d 6d 61 70 20 7b figure ns -map {
3b20: 7d 0a 2b 09 6c 61 70 70 65 6e 64 20 3a 3a 72 65 }.+.lappend ::re
3b30: 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 sult [namespace
3b40: 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 75 ensemble configu
3b50: 72 65 20 6e 73 20 2d 6d 61 70 5d 20 5b 6e 73 20 re ns -map] [ns
3b60: 78 5d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e x].+ }.+ n
3b70: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
3b80: 6e 73 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 ns.+ set resu
3b90: 6c 74 0a 2b 7d 20 7b 7b 41 20 78 7d 20 31 32 33 lt.+} {{A x} 123
3ba0: 20 7b 42 20 78 7d 20 31 32 33 20 7b 7d 20 31 32 {B x} 123 {} 12
3bb0: 33 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 3}. test namespa
3bc0: 63 65 2d 34 36 2e 32 20 7b 65 6e 73 65 6d 62 6c ce-46.2 {ensembl
3bd0: 65 3a 20 65 6e 73 65 6d 62 6c 65 73 20 72 65 61 e: ensembles rea
3be0: 6c 6c 79 20 75 73 65 20 63 75 72 72 65 6e 74 20 lly use current
3bf0: 65 78 70 6f 72 74 20 6c 69 73 74 7d 20 7b 0a 20 export list} {.
3c00: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 namespace ev
3c10: 61 6c 20 6e 73 20 7b 0a 20 09 6e 61 6d 65 73 70 al ns {. .namesp
3c20: 61 63 65 20 65 78 70 6f 72 74 20 78 31 0a 40 40 ace export x1.@@
3c30: 20 2d 31 38 31 35 2c 37 20 2b 31 38 35 35 2c 33 -1815,7 +1855,3
3c40: 36 20 40 40 0a 20 20 20 20 20 6c 61 70 70 65 6e 6 @@. lappen
3c50: 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 d result [catch
3c60: 7b 6e 73 20 63 20 64 20 65 7d 20 6d 73 67 5d 20 {ns c d e} msg]
3c70: 24 6d 73 67 0a 20 20 20 20 20 6c 61 70 70 65 6e $msg. lappen
3c80: 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 d result [catch
3c90: 7b 6e 73 20 4d 61 67 69 63 20 66 6f 6f 20 62 61 {ns Magic foo ba
3ca0: 72 20 73 70 6f 6e 67 20 77 69 62 62 6c 65 7d 20 r spong wibble}
3cb0: 6d 73 67 5d 20 24 6d 73 67 0a 20 20 20 20 20 6c msg] $msg. l
3cc0: 69 73 74 20 24 72 65 73 75 6c 74 20 5b 6c 73 6f ist $result [lso
3cd0: 72 74 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 rt [info command
3ce0: 73 20 3a 3a 6e 73 3a 3a 2a 5d 5d 20 24 6c 6f 67 s ::ns::*]] $log
3cf0: 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 [namespace dele
3d00: 74 65 20 6e 73 5d 0a 2d 7d 20 7b 7b 30 20 32 20 te ns].-} {{0 2
3d10: 30 20 32 20 30 20 32 20 30 20 32 20 31 20 7b 75 0 2 0 2 0 2 1 {u
3d20: 6e 6b 6e 6f 77 6e 20 6f 72 20 70 72 6f 74 65 63 nknown or protec
3d30: 74 65 64 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 ted subcommand "
3d40: 4d 61 67 69 63 22 7d 7d 20 7b 3a 3a 6e 73 3a 3a Magic"}} {::ns::
3d50: 4d 61 67 69 63 20 3a 3a 6e 73 3a 3a 61 20 3a 3a Magic ::ns::a ::
3d60: 6e 73 3a 3a 62 20 3a 3a 6e 73 3a 3a 63 7d 20 7b ns::b ::ns::c} {
3d70: 7b 6d 61 6b 69 6e 67 20 61 7d 20 7b 72 75 6e 6e {making a} {runn
3d80: 69 6e 67 20 3a 3a 6e 73 3a 3a 61 20 62 20 63 7d ing ::ns::a b c}
3d90: 20 7b 72 75 6e 6e 69 6e 67 20 3a 3a 6e 73 3a 3a {running ::ns::
3da0: 61 20 62 20 63 7d 20 7b 6d 61 6b 69 6e 67 20 62 a b c} {making b
3db0: 7d 20 7b 72 75 6e 6e 69 6e 67 20 3a 3a 6e 73 3a } {running ::ns:
3dc0: 3a 62 20 63 20 64 7d 20 7b 6d 61 6b 69 6e 67 20 :b c d} {making
3dd0: 63 7d 20 7b 72 75 6e 6e 69 6e 67 20 3a 3a 6e 73 c} {running ::ns
3de0: 3a 3a 63 20 64 20 65 7d 20 7b 75 6e 6b 6e 6f 77 ::c d e} {unknow
3df0: 6e 20 4d 61 67 69 63 20 2d 20 61 72 67 73 20 3d n Magic - args =
3e00: 20 66 6f 6f 20 62 61 72 20 73 70 6f 6e 67 20 77 foo bar spong w
3e10: 69 62 62 6c 65 7d 7d 20 7b 7d 7d 0a 2b 7d 20 7b ibble}} {}}.+} {
3e20: 7b 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 {0 2 0 2 0 2 0 2
3e30: 20 31 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 70 1 {unknown or p
3e40: 72 6f 74 65 63 74 65 64 20 73 75 62 63 6f 6d 6d rotected subcomm
3e50: 61 6e 64 20 22 4d 61 67 69 63 22 7d 7d 20 7b 3a and "Magic"}} {:
3e60: 3a 6e 73 3a 3a 4d 61 67 69 63 20 3a 3a 6e 73 3a :ns::Magic ::ns:
3e70: 3a 61 20 3a 3a 6e 73 3a 3a 62 20 3a 3a 6e 73 3a :a ::ns::b ::ns:
3e80: 3a 63 7d 20 7b 7b 6d 61 6b 69 6e 67 20 61 7d 20 :c} {{making a}
3e90: 7b 72 75 6e 6e 69 6e 67 20 61 20 62 20 63 7d 20 {running a b c}
3ea0: 7b 72 75 6e 6e 69 6e 67 20 61 20 62 20 63 7d 20 {running a b c}
3eb0: 7b 6d 61 6b 69 6e 67 20 62 7d 20 7b 72 75 6e 6e {making b} {runn
3ec0: 69 6e 67 20 62 20 63 20 64 7d 20 7b 6d 61 6b 69 ing b c d} {maki
3ed0: 6e 67 20 63 7d 20 7b 72 75 6e 6e 69 6e 67 20 63 ng c} {running c
3ee0: 20 64 20 65 7d 20 7b 75 6e 6b 6e 6f 77 6e 20 4d d e} {unknown M
3ef0: 61 67 69 63 20 2d 20 61 72 67 73 20 3d 20 66 6f agic - args = fo
3f00: 6f 20 62 61 72 20 73 70 6f 6e 67 20 77 69 62 62 o bar spong wibb
3f10: 6c 65 7d 7d 20 7b 7d 7d 0a 2b 74 65 73 74 20 6e le}} {}}.+test n
3f20: 61 6d 65 73 70 61 63 65 2d 34 37 2e 31 2e 61 20 amespace-47.1.a
3f30: 7b 65 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f {ensemble: unkno
3f40: 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 2b 20 wn handler} {.+
3f50: 20 20 20 73 65 74 20 6c 6f 67 20 7b 7d 0a 2b 20 set log {}.+
3f60: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
3f70: 6c 20 6e 73 20 7b 0a 2b 20 09 6e 61 6d 65 73 70 l ns {.+ .namesp
3f80: 61 63 65 20 65 78 70 6f 72 74 20 7b 5b 61 2d 7a ace export {[a-z
3f90: 5d 2a 7d 0a 2b 20 09 70 72 6f 63 20 4d 61 67 69 ]*}.+ .proc Magi
3fa0: 63 20 7b 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 c {ensemble subc
3fb0: 6d 64 20 61 72 67 73 7d 20 7b 0a 2b 20 09 20 20 md args} {.+ .
3fc0: 20 20 67 6c 6f 62 61 6c 20 6c 6f 67 0a 2b 20 09 global log.+ .
3fd0: 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 if {[string
3fe0: 6d 61 74 63 68 20 7b 5b 61 2d 7a 5d 2a 7d 20 24 match {[a-z]*} $
3ff0: 73 75 62 63 6d 64 5d 7d 20 7b 0a 2b 20 09 09 6c subcmd]} {.+ ..l
4000: 61 70 70 65 6e 64 20 6c 6f 67 20 22 6d 61 6b 69 append log "maki
4010: 6e 67 20 24 73 75 62 63 6d 64 22 0a 2b 20 09 09 ng $subcmd".+ ..
4020: 70 72 6f 63 20 24 73 75 62 63 6d 64 20 61 72 67 proc $subcmd arg
4030: 73 20 7b 0a 2b 20 09 09 20 20 20 20 67 6c 6f 62 s {.+ .. glob
4040: 61 6c 20 6c 6f 67 0a 2b 20 09 09 20 20 20 20 6c al log.+ .. l
4050: 61 70 70 65 6e 64 20 6c 6f 67 20 22 72 75 6e 6e append log "runn
4060: 69 6e 67 20 5b 69 6e 66 6f 20 6c 65 76 65 6c 20 ing [info level
4070: 30 5d 22 0a 2b 20 09 09 20 20 20 20 6c 6c 65 6e 0]".+ .. llen
4080: 67 74 68 20 24 61 72 67 73 0a 2b 20 09 09 7d 0a gth $args.+ ..}.
4090: 2b 20 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a + . } else {.
40a0: 2b 20 09 09 6c 61 70 70 65 6e 64 20 6c 6f 67 20 + ..lappend log
40b0: 22 75 6e 6b 6e 6f 77 6e 20 24 73 75 62 63 6d 64 "unknown $subcmd
40c0: 20 2d 20 61 72 67 73 20 3d 20 24 61 72 67 73 22 - args = $args"
40d0: 0a 2b 20 09 09 72 65 74 75 72 6e 20 2d 63 6f 64 .+ ..return -cod
40e0: 65 20 65 72 72 6f 72 20 5c 0a 2b 09 09 20 20 20 e error \.+..
40f0: 20 22 75 6e 6b 6e 6f 77 6e 20 6f 72 20 70 72 6f "unknown or pro
4100: 74 65 63 74 65 64 20 73 75 62 63 6f 6d 6d 61 6e tected subcomman
4110: 64 20 5c 22 24 73 75 62 63 6d 64 5c 22 22 0a 2b d \"$subcmd\"".+
4120: 20 09 20 20 20 20 7d 0a 2b 20 09 7d 0a 2b 20 09 . }.+ .}.+ .
4130: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
4140: 6c 65 20 63 72 65 61 74 65 20 2d 75 6e 6b 6e 6f le create -unkno
4150: 77 6e 20 4d 61 67 69 63 0a 2b 20 20 20 20 7d 0a wn Magic.+ }.
4160: 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 + set result
4170: 7b 7d 0a 2b 20 20 20 20 6c 61 70 70 65 6e 64 20 {}.+ lappend
4180: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e result [catch {n
4190: 73 20 61 20 62 20 63 7d 20 6d 73 67 5d 20 24 6d s a b c} msg] $m
41a0: 73 67 0a 2b 20 20 20 20 6c 61 70 70 65 6e 64 20 sg.+ lappend
41b0: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e result [catch {n
41c0: 73 20 61 20 62 20 63 7d 20 6d 73 67 5d 20 24 6d s a b c} msg] $m
41d0: 73 67 0a 2b 20 20 20 20 6c 61 70 70 65 6e 64 20 sg.+ lappend
41e0: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e result [catch {n
41f0: 73 20 62 20 63 20 64 7d 20 6d 73 67 5d 20 24 6d s b c d} msg] $m
4200: 73 67 0a 2b 20 20 20 20 6c 61 70 70 65 6e 64 20 sg.+ lappend
4210: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e result [catch {n
4220: 73 20 63 20 64 20 65 7d 20 6d 73 67 5d 20 24 6d s c d e} msg] $m
4230: 73 67 0a 2b 20 20 20 20 6c 61 70 70 65 6e 64 20 sg.+ lappend
4240: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e result [catch {n
4250: 73 20 4d 61 67 69 63 20 66 6f 6f 20 62 61 72 20 s Magic foo bar
4260: 73 70 6f 6e 67 20 77 69 62 62 6c 65 7d 20 6d 73 spong wibble} ms
4270: 67 5d 20 24 6d 73 67 0a 2b 20 20 20 20 6c 69 73 g] $msg.+ lis
4280: 74 20 24 72 65 73 75 6c 74 20 5b 6c 73 6f 72 74 t $result [lsort
4290: 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 [info commands
42a0: 3a 3a 6e 73 3a 3a 2a 5d 5d 20 24 6c 6f 67 20 5b ::ns::*]] $log [
42b0: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
42c0: 20 6e 73 5d 0a 2b 7d 20 7b 7b 30 20 32 20 30 20 ns].+} {{0 2 0
42d0: 32 20 30 20 32 20 30 20 32 20 31 20 7b 75 6e 6b 2 0 2 0 2 1 {unk
42e0: 6e 6f 77 6e 20 6f 72 20 70 72 6f 74 65 63 74 65 nown or protecte
42f0: 64 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 4d 61 d subcommand "Ma
4300: 67 69 63 22 7d 7d 20 7b 3a 3a 6e 73 3a 3a 4d 61 gic"}} {::ns::Ma
4310: 67 69 63 20 3a 3a 6e 73 3a 3a 61 20 3a 3a 6e 73 gic ::ns::a ::ns
4320: 3a 3a 62 20 3a 3a 6e 73 3a 3a 63 7d 20 7b 7b 6d ::b ::ns::c} {{m
4330: 61 6b 69 6e 67 20 61 7d 20 7b 72 75 6e 6e 69 6e aking a} {runnin
4340: 67 20 61 20 62 20 63 7d 20 7b 72 75 6e 6e 69 6e g a b c} {runnin
4350: 67 20 61 20 62 20 63 7d 20 7b 6d 61 6b 69 6e 67 g a b c} {making
4360: 20 62 7d 20 7b 72 75 6e 6e 69 6e 67 20 62 20 63 b} {running b c
4370: 20 64 7d 20 7b 6d 61 6b 69 6e 67 20 63 7d 20 7b d} {making c} {
4380: 72 75 6e 6e 69 6e 67 20 63 20 64 20 65 7d 20 7b running c d e} {
4390: 75 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 20 2d 20 unknown Magic -
43a0: 61 72 67 73 20 3d 20 66 6f 6f 20 62 61 72 20 73 args = foo bar s
43b0: 70 6f 6e 67 20 77 69 62 62 6c 65 7d 7d 20 7b 7d pong wibble}} {}
43c0: 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }. test namespac
43d0: 65 2d 34 37 2e 32 20 7b 65 6e 73 65 6d 62 6c 65 e-47.2 {ensemble
43e0: 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 : unknown handle
43f0: 72 7d 20 7b 0a 20 20 20 20 20 6e 61 6d 65 73 70 r} {. namesp
4400: 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 20 09 ace eval ns {. .
4410: 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 namespace export
4420: 20 7b 5b 61 2d 7a 5d 2a 7d 0a 40 40 20 2d 31 38 {[a-z]*}.@@ -18
4430: 33 34 2c 36 20 2b 31 39 30 33 2c 32 34 20 40 40 34,6 +1903,24 @@
4440: 0a 20 20 20 20 20 28 65 6e 73 65 6d 62 6c 65 20 . (ensemble
4450: 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 unknown subcomma
4460: 6e 64 20 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 nd handler).
4470: 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 invoked from wi
4480: 74 68 69 6e 0a 20 22 6e 73 20 73 70 6f 6e 67 22 thin. "ns spong"
4490: 7d 20 7b 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 } {}}.+test name
44a0: 73 70 61 63 65 2d 34 37 2e 32 2e 61 20 7b 65 6e space-47.2.a {en
44b0: 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 semble: unknown
44c0: 68 61 6e 64 6c 65 72 7d 20 7b 0a 2b 20 20 20 20 handler} {.+
44d0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e namespace eval n
44e0: 73 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 s {.+.namespace
44f0: 65 78 70 6f 72 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a export {[a-z]*}.
4500: 2b 09 70 72 6f 63 20 4d 61 67 69 63 20 7b 65 6e +.proc Magic {en
4510: 73 65 6d 62 6c 65 20 73 75 62 63 6d 64 20 61 72 semble subcmd ar
4520: 67 73 7d 20 7b 0a 2b 09 20 20 20 20 65 72 72 6f gs} {.+. erro
4530: 72 20 66 6f 6f 62 61 72 0a 2b 09 7d 0a 2b 09 6e r foobar.+.}.+.n
4540: 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c amespace ensembl
4550: 65 20 63 72 65 61 74 65 20 2d 75 6e 6b 6e 6f 77 e create -unknow
4560: 6e 20 4d 61 67 69 63 0a 2b 20 20 20 20 7d 0a 2b n Magic.+ }.+
4570: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 list [catch
4580: 7b 6e 73 20 73 70 6f 6e 67 7d 20 6d 73 67 5d 20 {ns spong} msg]
4590: 24 6d 73 67 20 24 3a 3a 65 72 72 6f 72 49 6e 66 $msg $::errorInf
45a0: 6f 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 65 6c o [namespace del
45b0: 65 74 65 20 6e 73 5d 0a 2b 7d 20 7b 31 20 66 6f ete ns].+} {1 fo
45c0: 6f 62 61 72 20 7b 66 6f 6f 62 61 72 0a 2b 20 20 obar {foobar.+
45d0: 20 20 77 68 69 6c 65 20 65 78 65 63 75 74 69 6e while executin
45e0: 67 0a 2b 22 65 72 72 6f 72 20 66 6f 6f 62 61 72 g.+"error foobar
45f0: 22 0a 2b 20 20 20 20 28 70 72 6f 63 65 64 75 72 ".+ (procedur
4600: 65 20 22 4d 61 67 69 63 22 20 6c 69 6e 65 20 32 e "Magic" line 2
4610: 29 0a 2b 20 20 20 20 69 6e 76 6f 6b 65 64 20 66 ).+ invoked f
4620: 72 6f 6d 20 77 69 74 68 69 6e 0a 2b 22 4d 61 67 rom within.+"Mag
4630: 69 63 20 3a 3a 6e 73 20 73 70 6f 6e 67 22 0a 2b ic ::ns spong".+
4640: 20 20 20 20 28 65 6e 73 65 6d 62 6c 65 20 75 6e (ensemble un
4650: 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 known subcommand
4660: 20 68 61 6e 64 6c 65 72 29 0a 2b 20 20 20 20 69 handler).+ i
4670: 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 74 68 nvoked from with
4680: 69 6e 0a 2b 22 6e 73 20 73 70 6f 6e 67 22 7d 20 in.+"ns spong"}
4690: 7b 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 {}}. test namesp
46a0: 61 63 65 2d 34 37 2e 33 20 7b 65 6e 73 65 6d 62 ace-47.3 {ensemb
46b0: 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 le: unknown hand
46c0: 6c 65 72 7d 20 7b 0a 20 20 20 20 20 6e 61 6d 65 ler} {. name
46d0: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
46e0: 20 09 76 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 .variable count
46f0: 20 30 0a 40 40 20 2d 31 38 34 39 2c 36 20 2b 31 0.@@ -1849,6 +1
4700: 39 33 36 2c 32 31 20 40 40 0a 20 20 20 20 20 7d 936,21 @@. }
4710: 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 . list [catc
4720: 68 20 7b 6e 73 20 73 70 6f 6e 67 7d 20 6d 73 67 h {ns spong} msg
4730: 5d 20 24 6d 73 67 20 24 6e 73 3a 3a 63 6f 75 6e ] $msg $ns::coun
4740: 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 65 6c t [namespace del
4750: 65 74 65 20 6e 73 5d 0a 20 7d 20 7b 31 20 7b 75 ete ns]. } {1 {u
4760: 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 75 nknown or ambigu
4770: 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 ous subcommand "
4780: 73 70 6f 6e 67 22 3a 20 6d 75 73 74 20 62 65 20 spong": must be
4790: 61 2c 20 62 2c 20 6f 72 20 63 7d 20 31 20 7b 7d a, b, or c} 1 {}
47a0: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }.+test namespac
47b0: 65 2d 34 37 2e 33 20 7b 65 6e 73 65 6d 62 6c 65 e-47.3 {ensemble
47c0: 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 : unknown handle
47d0: 72 7d 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 r} {.+ namesp
47e0: 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 2b 09 ace eval ns {.+.
47f0: 76 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 20 30 variable count 0
4800: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 .+.namespace exp
4810: 6f 72 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a 2b 09 70 ort {[a-z]*}.+.p
4820: 72 6f 63 20 61 20 7b 7d 20 7b 7d 0a 2b 09 70 72 roc a {} {}.+.pr
4830: 6f 63 20 63 20 7b 7d 20 7b 7d 0a 2b 09 70 72 6f oc c {} {}.+.pro
4840: 63 20 4d 61 67 69 63 20 7b 65 6e 73 65 6d 62 6c c Magic {ensembl
4850: 65 20 73 75 62 63 6d 64 20 61 72 67 73 7d 20 7b e subcmd args} {
4860: 0a 2b 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 .+. variable
4870: 63 6f 75 6e 74 0a 2b 09 20 20 20 20 69 6e 63 72 count.+. incr
4880: 20 63 6f 75 6e 74 0a 2b 09 20 20 20 20 70 72 6f count.+. pro
4890: 63 20 62 20 7b 7d 20 7b 7d 0a 2b 09 7d 0a 2b 09 c b {} {}.+.}.+.
48a0: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
48b0: 6c 65 20 63 72 65 61 74 65 20 2d 75 6e 6b 6e 6f le create -unkno
48c0: 77 6e 20 4d 61 67 69 63 0a 2b 20 20 20 20 7d 0a wn Magic.+ }.
48d0: 2b 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 + list [catch
48e0: 20 7b 6e 73 20 73 70 6f 6e 67 7d 20 6d 73 67 5d {ns spong} msg]
48f0: 20 24 6d 73 67 20 24 6e 73 3a 3a 63 6f 75 6e 74 $msg $ns::count
4900: 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 [namespace dele
4910: 74 65 20 6e 73 5d 0a 2b 7d 20 7b 31 20 7b 75 6e te ns].+} {1 {un
4920: 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 75 6f known or ambiguo
4930: 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 73 us subcommand "s
4940: 70 6f 6e 67 22 3a 20 6d 75 73 74 20 62 65 20 61 pong": must be a
4950: 2c 20 62 2c 20 6f 72 20 63 7d 20 31 20 7b 7d 7d , b, or c} 1 {}}
4960: 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 . test namespace
4970: 2d 34 37 2e 34 20 7b 65 6e 73 65 6d 62 6c 65 3a -47.4 {ensemble:
4980: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 unknown handler
4990: 7d 20 7b 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 } {. namespa
49a0: 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 20 09 6e ce eval ns {. .n
49b0: 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 amespace export
49c0: 7b 5b 61 2d 7a 5d 2a 7d 0a 40 40 20 2d 31 38 36 {[a-z]*}.@@ -186
49d0: 32 2c 36 20 2b 31 39 36 34 2c 31 39 20 40 40 0a 2,6 +1964,19 @@.
49e0: 20 20 20 20 20 72 65 73 75 6c 74 20 6f 66 20 65 result of e
49f0: 6e 73 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 6e 20 nsemble unknown
4a00: 73 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c subcommand handl
4a10: 65 72 3a 20 3a 3a 6e 73 3a 3a 4d 61 67 69 63 20 er: ::ns::Magic
4a20: 3a 3a 6e 73 20 73 70 6f 6e 67 0a 20 20 20 20 20 ::ns spong.
4a30: 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 74 invoked from wit
4a40: 68 69 6e 0a 20 22 6e 73 20 73 70 6f 6e 67 22 7d hin. "ns spong"}
4a50: 20 7b 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 {}}.+test names
4a60: 70 61 63 65 2d 34 37 2e 34 2e 61 20 7b 65 6e 73 pace-47.4.a {ens
4a70: 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 emble: unknown h
4a80: 61 6e 64 6c 65 72 7d 20 7b 0a 2b 20 20 20 20 6e andler} {.+ n
4a90: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 amespace eval ns
4aa0: 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 {.+.namespace e
4ab0: 78 70 6f 72 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a 2b xport {[a-z]*}.+
4ac0: 09 70 72 6f 63 20 4d 61 67 69 63 20 7b 65 6e 73 .proc Magic {ens
4ad0: 65 6d 62 6c 65 20 73 75 62 63 6d 64 20 61 72 67 emble subcmd arg
4ae0: 73 7d 20 7b 0a 2b 09 20 20 20 20 72 65 74 75 72 s} {.+. retur
4af0: 6e 20 2d 63 6f 64 65 20 62 72 65 61 6b 0a 2b 09 n -code break.+.
4b00: 7d 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e }.+.namespace en
4b10: 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 75 semble create -u
4b20: 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 0a 2b 20 20 nknown Magic.+
4b30: 20 20 7d 0a 2b 20 20 20 20 6c 69 73 74 20 5b 63 }.+ list [c
4b40: 61 74 63 68 20 7b 6e 73 20 73 70 6f 6e 67 7d 20 atch {ns spong}
4b50: 6d 73 67 5d 20 24 6d 73 67 20 24 3a 3a 65 72 72 msg] $msg $::err
4b60: 6f 72 49 6e 66 6f 20 5b 6e 61 6d 65 73 70 61 63 orInfo [namespac
4b70: 65 20 64 65 6c 65 74 65 20 6e 73 5d 0a 2b 7d 20 e delete ns].+}
4b80: 7b 31 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 {1 {unknown subc
4b90: 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 20 72 ommand handler r
4ba0: 65 74 75 72 6e 65 64 20 62 61 64 20 63 6f 64 65 eturned bad code
4bb0: 3a 20 62 72 65 61 6b 7d 20 7b 75 6e 6b 6e 6f 77 : break} {unknow
4bc0: 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e n subcommand han
4bd0: 64 6c 65 72 20 72 65 74 75 72 6e 65 64 20 62 61 dler returned ba
4be0: 64 20 63 6f 64 65 3a 20 62 72 65 61 6b 0a 2b 20 d code: break.+
4bf0: 20 20 20 72 65 73 75 6c 74 20 6f 66 20 65 6e 73 result of ens
4c00: 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 6e 20 73 75 emble unknown su
4c10: 62 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 bcommand handler
4c20: 3a 20 4d 61 67 69 63 20 3a 3a 6e 73 20 73 70 6f : Magic ::ns spo
4c30: 6e 67 0a 2b 20 20 20 20 69 6e 76 6f 6b 65 64 20 ng.+ invoked
4c40: 66 72 6f 6d 20 77 69 74 68 69 6e 0a 2b 22 6e 73 from within.+"ns
4c50: 20 73 70 6f 6e 67 22 7d 20 7b 7d 7d 0a 20 74 65 spong"} {}}. te
4c60: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 37 2e st namespace-47.
4c70: 35 20 7b 65 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 5 {ensemble: unk
4c80: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a nown handler} {.
4c90: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 namespace e
4ca0: 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d nsemble create -
4cb0: 63 6f 6d 6d 61 6e 64 20 66 6f 6f 20 2d 75 6e 6b command foo -unk
4cc0: 6e 6f 77 6e 20 62 61 72 0a 20 20 20 20 20 70 72 nown bar. pr
4cd0: 6f 63 20 62 61 72 20 7b 61 72 67 73 7d 20 7b 0a oc bar {args} {.
4ce0: 40 40 20 2d 31 38 39 38 2c 36 20 2b 32 30 31 33 @@ -1898,6 +2013
4cf0: 2c 34 34 20 40 40 0a 20 20 20 20 20 72 65 6e 61 ,44 @@. rena
4d00: 6d 65 20 66 6f 6f 20 7b 7d 0a 20 20 20 20 20 73 me foo {}. s
4d10: 65 74 20 72 65 73 75 6c 74 0a 20 7d 20 7b 3a 3a et result. } {::
4d20: 66 6f 6f 7c 6f 6e 65 20 74 77 6f 20 74 68 72 65 foo|one two thre
4d30: 65 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 e}.+test namespa
4d40: 63 65 2d 34 37 2e 37 2e 61 20 7b 65 6e 73 65 6d ce-47.7.a {ensem
4d50: 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e ble: unknown han
4d60: 64 6c 65 72 20 69 6e 76 6f 6b 65 73 20 69 6e 20 dler invokes in
4d70: 65 6e 73 65 6d 62 6c 65 27 73 20 6e 73 7d 20 5c ensemble's ns} \
4d80: 0a 2b 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 6e .+-body {.+ n
4d90: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 amespace eval ns
4da0: 30 20 7b 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 0 {.+.proc Magic
4db0: 49 6d 70 6c 20 61 72 67 73 20 7b 0a 2b 09 20 20 Impl args {.+.
4dc0: 20 20 72 65 74 75 72 6e 20 7b 4d 61 67 69 63 20 return {Magic
4dd0: 63 61 6c 6c 65 64 7d 0a 2b 09 7d 0a 2b 20 20 20 called}.+.}.+
4de0: 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 }.+ namespac
4df0: 65 20 65 76 61 6c 20 6e 73 31 20 7b 0a 2b 09 6e e eval ns1 {.+.n
4e00: 61 6d 65 73 70 61 63 65 20 70 61 74 68 20 3a 3a amespace path ::
4e10: 6e 73 30 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 ns0.+.proc Magic
4e20: 20 7b 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 6d {ensemble subcm
4e30: 64 20 61 72 67 73 7d 20 7b 0a 2b 09 20 20 20 20 d args} {.+.
4e40: 72 65 74 75 72 6e 20 5b 6c 69 73 74 20 4d 61 67 return [list Mag
4e50: 69 63 49 6d 70 6c 5d 0a 2b 09 7d 0a 2b 09 6e 61 icImpl].+.}.+.na
4e60: 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 mespace ensemble
4e70: 20 63 72 65 61 74 65 20 2d 75 6e 6b 6e 6f 77 6e create -unknown
4e80: 20 4d 61 67 69 63 0a 2b 20 20 20 20 7d 0a 2b 20 Magic.+ }.+
4e90: 20 20 20 6e 73 31 20 66 6f 6f 0a 2b 7d 20 2d 63 ns1 foo.+} -c
4ea0: 6c 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 6e 61 leanup {.+ na
4eb0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e mespace delete n
4ec0: 73 30 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 s0.+ namespac
4ed0: 65 20 64 65 6c 65 74 65 20 6e 73 31 0a 2b 7d 20 e delete ns1.+}
4ee0: 2d 72 65 73 75 6c 74 20 7b 4d 61 67 69 63 20 63 -result {Magic c
4ef0: 61 6c 6c 65 64 7d 0a 2b 74 65 73 74 20 6e 61 6d alled}.+test nam
4f00: 65 73 70 61 63 65 2d 34 37 2e 38 2e 61 20 7b 65 espace-47.8.a {e
4f10: 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e nsemble: unknown
4f20: 20 68 61 6e 64 6c 65 72 20 69 6e 76 6f 6b 65 73 handler invokes
4f30: 20 69 6e 20 65 6e 73 65 6d 62 6c 65 27 73 20 6e in ensemble's n
4f40: 73 7d 20 5c 0a 2b 2d 62 6f 64 79 20 7b 0a 2b 20 s} \.+-body {.+
4f50: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
4f60: 6c 20 6e 73 30 20 7b 0a 2b 09 70 72 6f 63 20 4d l ns0 {.+.proc M
4f70: 61 67 69 63 49 6d 70 6c 20 61 72 67 73 20 7b 0a agicImpl args {.
4f80: 2b 09 20 20 20 20 72 65 74 75 72 6e 20 7b 4d 61 +. return {Ma
4f90: 67 69 63 20 63 61 6c 6c 65 64 7d 0a 2b 09 7d 0a gic called}.+.}.
4fa0: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 + }.+ name
4fb0: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 31 20 7b space eval ns1 {
4fc0: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b .+.namespace unk
4fd0: 6e 6f 77 6e 20 5b 6c 69 73 74 20 6e 61 6d 65 73 nown [list names
4fe0: 70 61 63 65 20 65 76 61 6c 20 3a 3a 6e 73 30 5d pace eval ::ns0]
4ff0: 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 20 7b 65 .+.proc Magic {e
5000: 6e 73 65 6d 62 6c 65 20 73 75 62 63 6d 64 20 61 nsemble subcmd a
5010: 72 67 73 7d 20 7b 0a 2b 09 20 20 20 20 72 65 74 rgs} {.+. ret
5020: 75 72 6e 20 5b 6c 69 73 74 20 4d 61 67 69 63 49 urn [list MagicI
5030: 6d 70 6c 5d 0a 2b 09 7d 0a 2b 09 6e 61 6d 65 73 mpl].+.}.+.names
5040: 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 pace ensemble cr
5050: 65 61 74 65 20 2d 75 6e 6b 6e 6f 77 6e 20 4d 61 eate -unknown Ma
5060: 67 69 63 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 gic.+ }.+
5070: 6e 73 31 20 66 6f 6f 0a 2b 7d 20 2d 63 6c 65 61 ns1 foo.+} -clea
5080: 6e 75 70 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 nup {.+ names
5090: 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 30 0a pace delete ns0.
50a0: 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 + namespace d
50b0: 65 6c 65 74 65 20 6e 73 31 0a 2b 7d 20 2d 72 65 elete ns1.+} -re
50c0: 73 75 6c 74 20 7b 4d 61 67 69 63 20 63 61 6c 6c sult {Magic call
50d0: 65 64 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 ed}. test namesp
50e0: 61 63 65 2d 34 37 2e 38 20 7b 65 6e 73 65 6d 62 ace-47.8 {ensemb
50f0: 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 le: unknown hand
5100: 6c 65 72 2c 20 63 6f 6d 6d 61 6e 64 73 20 77 69 ler, commands wi
5110: 74 68 20 73 70 61 63 65 73 7d 20 7b 0a 20 20 20 th spaces} {.
5120: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 namespace ense
5130: 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 63 6f 6d mble create -com
5140: 6d 61 6e 64 20 66 6f 6f 20 2d 75 6e 6b 6e 6f 77 mand foo -unknow
5150: 6e 20 7b 62 61 72 20 62 6f 6f 7d 0a 20 20 20 20 n {bar boo}.
5160: 20 70 72 6f 63 20 62 61 72 20 7b 61 72 67 73 7d proc bar {args}
5170: 20 7b 0a 40 40 20 2d 31 39 34 34 2c 36 20 2b 32 {.@@ -1944,6 +2
5180: 30 39 37 2c 34 32 20 40 40 0a 20 20 20 20 20 6e 097,42 @@. n
5190: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
51a0: 66 6f 6f 0a 20 20 20 20 20 73 65 74 20 72 65 73 foo. set res
51b0: 75 6c 74 0a 20 7d 20 7b 7b 2d 6d 61 70 20 7b 7d ult. } {{-map {}
51c0: 20 2d 6e 61 6d 65 73 70 61 63 65 20 3a 3a 66 6f -namespace ::fo
51d0: 6f 20 2d 70 72 65 66 69 78 65 73 20 31 20 2d 73 o -prefixes 1 -s
51e0: 75 62 63 6f 6d 6d 61 6e 64 73 20 78 20 2d 75 6e ubcommands x -un
51f0: 6b 6e 6f 77 6e 20 3a 3a 66 6f 6f 3a 3a 75 7d 20 known ::foo::u}
5200: 58 58 58 20 31 32 33 20 3a 3a 66 6f 6f 3a 3a 62 XXX 123 ::foo::b
5210: 61 72 20 7b 79 20 34 35 36 7d 20 59 59 59 20 34 ar {y 456} YYY 4
5220: 35 36 20 3a 3a 66 6f 6f 3a 3a 62 61 72 20 7b 7a 56 ::foo::bar {z
5230: 20 37 38 39 7d 20 5a 5a 5a 20 37 38 39 7d 0a 2b 789} ZZZ 789}.+
5240: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 test namespace-4
5250: 38 2e 31 2e 61 20 7b 65 6e 73 65 6d 62 6c 65 73 8.1.a {ensembles
5260: 20 61 6e 64 20 6e 61 6d 65 73 70 61 63 65 20 69 and namespace i
5270: 6d 70 6f 72 74 3a 20 75 6e 6b 6e 6f 77 6e 20 68 mport: unknown h
5280: 61 6e 64 6c 65 72 7d 20 7b 0a 2b 20 20 20 20 6e andler} {.+ n
5290: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f amespace eval fo
52a0: 6f 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 o {.+.namespace
52b0: 65 78 70 6f 72 74 20 62 61 72 0a 2b 09 6e 61 6d export bar.+.nam
52c0: 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 espace ensemble
52d0: 63 72 65 61 74 65 20 2d 63 6f 6d 6d 61 6e 64 20 create -command
52e0: 62 61 72 20 2d 75 6e 6b 6e 6f 77 6e 20 75 20 2d bar -unknown u -
52f0: 73 75 62 63 6f 6d 6d 20 78 0a 2b 09 70 72 6f 63 subcomm x.+.proc
5300: 20 75 20 7b 65 6e 73 20 61 72 67 73 7d 20 7b 0a u {ens args} {.
5310: 2b 09 20 20 20 20 67 6c 6f 62 61 6c 20 72 65 73 +. global res
5320: 75 6c 74 0a 2b 09 20 20 20 20 6c 61 70 70 65 6e ult.+. lappen
5330: 64 20 72 65 73 75 6c 74 20 24 65 6e 73 20 24 61 d result $ens $a
5340: 72 67 73 0a 2b 09 20 20 20 20 6e 61 6d 65 73 70 rgs.+. namesp
5350: 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e ace ensemble con
5360: 66 69 67 20 24 65 6e 73 20 2d 73 75 62 63 6f 6d fig $ens -subcom
5370: 6d 61 6e 64 20 7b 78 20 79 7d 0a 2b 09 7d 0a 2b mand {x y}.+.}.+
5380: 09 70 72 6f 63 20 75 32 20 7b 65 6e 73 20 61 72 .proc u2 {ens ar
5390: 67 73 7d 20 7b 0a 2b 09 20 20 20 20 67 6c 6f 62 gs} {.+. glob
53a0: 61 6c 20 72 65 73 75 6c 74 0a 2b 09 20 20 20 20 al result.+.
53b0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 24 lappend result $
53c0: 65 6e 73 20 24 61 72 67 73 0a 2b 09 20 20 20 20 ens $args.+.
53d0: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
53e0: 6c 65 20 63 6f 6e 66 69 67 20 3a 3a 62 61 72 20 le config ::bar
53f0: 2d 73 75 62 63 6f 6d 6d 61 6e 64 20 7b 78 20 79 -subcommand {x y
5400: 20 7a 7d 0a 2b 09 7d 0a 2b 09 70 72 6f 63 20 78 z}.+.}.+.proc x
5410: 20 61 72 67 73 20 7b 0a 2b 09 20 20 20 20 67 6c args {.+. gl
5420: 6f 62 61 6c 20 72 65 73 75 6c 74 0a 2b 09 20 20 obal result.+.
5430: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 lappend result
5440: 20 58 58 58 20 24 61 72 67 73 0a 2b 09 7d 0a 2b XXX $args.+.}.+
5450: 09 70 72 6f 63 20 79 20 61 72 67 73 20 7b 0a 2b .proc y args {.+
5460: 09 20 20 20 20 67 6c 6f 62 61 6c 20 72 65 73 75 . global resu
5470: 6c 74 0a 2b 09 20 20 20 20 6c 61 70 70 65 6e 64 lt.+. lappend
5480: 20 72 65 73 75 6c 74 20 59 59 59 20 24 61 72 67 result YYY $arg
5490: 73 0a 2b 09 7d 0a 2b 09 70 72 6f 63 20 7a 20 61 s.+.}.+.proc z a
54a0: 72 67 73 20 7b 0a 2b 09 20 20 20 20 67 6c 6f 62 rgs {.+. glob
54b0: 61 6c 20 72 65 73 75 6c 74 0a 2b 09 20 20 20 20 al result.+.
54c0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5a lappend result Z
54d0: 5a 5a 20 24 61 72 67 73 0a 2b 09 7d 0a 2b 20 20 ZZ $args.+.}.+
54e0: 20 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 }.+ namespa
54f0: 63 65 20 69 6d 70 6f 72 74 20 2d 66 6f 72 63 65 ce import -force
5500: 20 66 6f 6f 3a 3a 62 61 72 0a 2b 20 20 20 20 73 foo::bar.+ s
5510: 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 et result [list
5520: 5b 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d [namespace ensem
5530: 62 6c 65 20 63 6f 6e 66 69 67 20 62 61 72 5d 5d ble config bar]]
5540: 0a 2b 20 20 20 20 62 61 72 20 78 20 31 32 33 0a .+ bar x 123.
5550: 2b 20 20 20 20 62 61 72 20 79 20 34 35 36 0a 2b + bar y 456.+
5560: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 6e namespace en
5570: 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 20 62 61 semble config ba
5580: 72 20 2d 75 6e 6b 6e 6f 77 6e 20 3a 3a 66 6f 6f r -unknown ::foo
5590: 3a 3a 75 32 0a 2b 20 20 20 20 62 61 72 20 7a 20 ::u2.+ bar z
55a0: 37 38 39 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 789.+ namespa
55b0: 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b 20 ce delete foo.+
55c0: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d set result.+}
55d0: 20 7b 7b 2d 6d 61 70 20 7b 7d 20 2d 6e 61 6d 65 {{-map {} -name
55e0: 73 70 61 63 65 20 3a 3a 66 6f 6f 20 2d 70 72 65 space ::foo -pre
55f0: 66 69 78 65 73 20 31 20 2d 73 75 62 63 6f 6d 6d fixes 1 -subcomm
5600: 61 6e 64 73 20 78 20 2d 75 6e 6b 6e 6f 77 6e 20 ands x -unknown
5610: 75 7d 20 58 58 58 20 31 32 33 20 3a 3a 66 6f 6f u} XXX 123 ::foo
5620: 3a 3a 62 61 72 20 7b 79 20 34 35 36 7d 20 59 59 ::bar {y 456} YY
5630: 59 20 34 35 36 20 3a 3a 66 6f 6f 3a 3a 62 61 72 Y 456 ::foo::bar
5640: 20 7b 7a 20 37 38 39 7d 20 5a 5a 5a 20 37 38 39 {z 789} ZZZ 789
5650: 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }. test namespac
5660: 65 2d 34 38 2e 32 20 7b 65 6e 73 65 6d 62 6c 65 e-48.2 {ensemble
5670: 73 20 61 6e 64 20 6e 61 6d 65 73 70 61 63 65 20 s and namespace
5680: 69 6d 70 6f 72 74 3a 20 65 78 69 73 74 73 7d 20 import: exists}
5690: 7b 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 {. namespace
56a0: 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 20 09 6e 61 eval foo {. .na
56b0: 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 mespace ensemble
56c0: 20 63 72 65 61 74 65 20 2d 63 6f 6d 6d 61 6e 64 create -command
56d0: 20 3a 3a 66 6f 6f 3a 3a 62 61 72 0a 40 40 20 2d ::foo::bar.@@ -
56e0: 32 35 38 36 2c 37 20 2b 32 37 37 35 2c 32 34 20 2586,7 +2775,24
56f0: 40 40 0a 20 20 20 20 20 72 65 6e 61 6d 65 20 75 @@. rename u
5700: 6e 6b 6e 6f 77 6e 2e 73 61 76 65 20 3a 3a 75 6e nknown.save ::un
5710: 6b 6e 6f 77 6e 0a 20 20 20 20 20 6e 61 6d 65 73 known. names
5720: 70 61 63 65 20 65 76 61 6c 20 3a 3a 20 5b 6c 69 pace eval :: [li
5730: 73 74 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b st namespace unk
5740: 6e 6f 77 6e 20 24 68 61 6e 64 6c 65 72 5d 0a 20 nown $handler].
5750: 7d 20 2d 72 65 73 75 6c 74 20 53 55 43 43 45 53 } -result SUCCES
5760: 53 0a 2d 20 20 20 20 0a 2b 0a 2b 23 0a 2b 23 20 S.- .+.+#.+#
5770: 54 49 50 20 32 38 33 3a 20 54 65 73 74 73 20 66 TIP 283: Tests f
5780: 6f 72 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 6f or interaction o
5790: 66 20 65 6e 73 65 6d 62 6c 65 73 2c 20 70 61 74 f ensembles, pat
57a0: 68 73 20 61 6e 64 20 6e 61 6d 65 73 70 61 63 65 hs and namespace
57b0: 20 75 6e 6b 6e 6f 77 6e 0a 2b 23 0a 2b 23 20 4e unknown.+#.+# N
57c0: 6f 74 65 20 74 68 61 74 20 73 6f 6d 65 20 6f 74 ote that some ot
57d0: 68 65 72 20 74 65 73 74 73 20 6e 61 6d 65 64 20 her tests named
57e0: 22 2e 61 22 20 61 72 65 20 69 6e 63 6c 75 64 65 ".a" are include
57f0: 64 20 61 62 6f 76 65 20 69 6e 20 74 68 65 20 65 d above in the e
5800: 6e 73 65 6d 62 6c 65 0a 2b 23 20 73 65 63 74 69 nsemble.+# secti
5810: 6f 6e 0a 2b 0a 2b 23 20 2d 75 6e 6b 6e 6f 77 6e on.+.+# -unknown
5820: 20 66 6f 75 6e 64 20 69 6e 20 70 61 74 68 0a 2b found in path.+
5830: 23 20 2d 75 6e 6b 6e 6f 77 6e 20 66 6f 75 6e 64 # -unknown found
5840: 20 62 79 20 6e 73 2d 75 6e 6b 6e 6f 77 6e 0a 2b by ns-unknown.+
5850: 23 20 2d 75 6e 6b 6e 6f 77 6e 20 66 6f 6c 6c 6f # -unknown follo
5860: 77 73 20 70 61 74 68 0a 2b 23 20 2d 75 6e 6b 6e ws path.+# -unkn
5870: 6f 77 6e 20 66 6f 6c 6c 6f 77 73 20 6e 73 2d 75 own follows ns-u
5880: 6e 6b 6e 6f 77 6e 0a 2b 23 20 2d 6d 61 70 20 66 nknown.+# -map f
5890: 6f 6c 6c 6f 77 73 20 70 61 74 68 0a 2b 23 20 2d ollows path.+# -
58a0: 6d 61 70 20 66 6f 6c 6c 6f 77 73 20 6e 73 2d 75 map follows ns-u
58b0: 6e 6b 6e 6f 77 6e 0a 2b 23 20 2d 73 75 62 63 6f nknown.+# -subco
58c0: 6d 6d 61 6e 64 73 20 66 6f 6c 6c 6f 77 73 20 70 mmands follows p
58d0: 61 74 68 0a 2b 23 20 2d 73 75 62 63 6f 6d 6d 61 ath.+# -subcomma
58e0: 6e 64 73 20 66 6f 6c 6c 6f 77 73 20 6e 73 2d 75 nds follows ns-u
58f0: 6e 6b 6e 6f 77 6e 0a 2b 23 20 65 78 70 6f 72 74 nknown.+# export
5900: 73 20 66 6f 6c 6c 6f 77 20 70 61 74 68 20 28 3f s follow path (?
5910: 29 0a 2b 23 20 65 78 70 6f 72 74 73 20 66 6f 6c ).+# exports fol
5920: 6c 6f 77 20 6e 73 2d 75 6e 6b 6e 6f 77 6e 20 28 low ns-unknown (
5930: 3f 29 0a 2b 0a 20 23 20 63 6c 65 61 6e 75 70 0a ?).+. # cleanup.
5940: 20 63 61 74 63 68 20 7b 72 65 6e 61 6d 65 20 63 catch {rename c
5950: 6d 64 31 20 7b 7d 7d 0a 20 63 61 74 63 68 20 7b md1 {}}. catch {
5960: 75 6e 73 65 74 20 6c 7d 0a unset l}.