Attachment "tip283.patch" to
ticket [1577282fff]
added by
msofer
2006-10-26 08:13:12.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d 65 73 Index: doc/names
0010: 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d pace.n.=========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 73 70 l/tcl/doc/namesp
0080: 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 ace.n,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 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 32 36 20 4f 63 74 20 32 30 30 36 20 e.n.26 Oct 2006
0110: 30 31 3a 31 30 3a 32 38 20 2d 30 30 30 30 0a 40 01:10:28 -0000.@
0120: 40 20 2d 36 37 39 2c 37 20 2b 36 37 39 2c 38 20 @ -679,7 +679,8
0130: 40 40 0a 20 74 68 65 20 72 65 73 75 6c 74 20 6f @@. the result o
0140: 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 f the command.
0150: 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73 20 Note that it is
0160: 6c 65 67 61 6c 20 74 6f 20 6d 61 6b 65 20 74 68 legal to make th
0170: 65 20 74 61 72 67 65 74 0a 20 6f 66 20 61 6e 20 e target. of an
0180: 65 6e 73 65 6d 62 6c 65 20 72 65 77 72 69 74 65 ensemble rewrite
0190: 20 62 65 20 61 6e 6f 74 68 65 72 20 28 6f 72 20 be another (or
01a0: 65 76 65 6e 20 74 68 65 20 73 61 6d 65 29 20 65 even the same) e
01b0: 6e 73 65 6d 62 6c 65 0a 20 63 6f 6d 6d 61 6e 64 nsemble. command
01c0: 2e 20 20 54 68 65 20 65 6e 73 65 6d 62 6c 65 20 . The ensemble
01d0: 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 6e 6f 74 command will not
01e0: 20 62 65 20 76 69 73 69 62 6c 65 20 74 68 72 6f be visible thro
01f0: 75 67 68 20 74 68 65 20 75 73 65 20 6f 66 0a 2d ugh the use of.-
0200: 74 68 65 20 5c 66 42 75 70 6c 65 76 65 6c 5c 66 the \fBuplevel\f
0210: 52 20 6f 72 20 5c 66 42 69 6e 66 6f 20 6c 65 76 R or \fBinfo lev
0220: 65 6c 5c 66 52 20 63 6f 6d 6d 61 6e 64 73 2e 0a el\fR commands..
0230: 2b 74 68 65 20 5c 66 42 75 70 6c 65 76 65 6c 5c +the \fBuplevel\
0240: 66 52 20 6f 72 20 5c 66 42 69 6e 66 6f 20 6c 65 fR or \fBinfo le
0250: 76 65 6c 5c 66 52 20 63 6f 6d 6d 61 6e 64 73 2c vel\fR commands,
0260: 20 77 69 74 68 20 74 68 65 20 65 78 63 65 70 74 with the except
0270: 69 6f 6e 20 6f 66 0a 2b 5c 66 42 69 6e 66 6f 20 ion of.+\fBinfo
0280: 6c 65 76 65 6c 20 30 5c 66 52 2e 0a 20 2e 53 53 level 0\fR.. .SS
0290: 20 22 45 4e 53 45 4d 42 4c 45 20 4f 50 54 49 4f "ENSEMBLE OPTIO
02a0: 4e 53 22 0a 20 2e 50 50 0a 20 54 68 65 20 66 6f NS". .PP. The fo
02b0: 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 2c llowing options,
02c0: 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 supported by th
02d0: 65 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 65 e \fBnamespace e
02e0: 6e 73 65 6d 62 6c 65 0a 40 40 20 2d 36 38 37 2c nsemble.@@ -687,
02f0: 31 33 20 2b 36 38 38 2c 31 36 20 40 40 0a 20 61 13 +688,16 @@. a
0300: 6e 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d 61 n ensemble comma
0310: 6e 64 20 62 65 68 61 76 65 73 3a 0a 20 2e 54 50 nd behaves:. .TP
0320: 0a 20 5c 66 42 5c 2d 6d 61 70 5c 66 52 0a 2d 57 . \fB\-map\fR.-W
0330: 68 65 6e 20 6e 6f 6e 2d 65 6d 70 74 79 2c 20 74 hen non-empty, t
0340: 68 69 73 20 6f 70 74 69 6f 6e 20 73 75 70 70 6c his option suppl
0350: 69 65 73 20 61 20 64 69 63 74 69 6f 6e 61 72 79 ies a dictionary
0360: 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 61 that provides a
0370: 0a 2d 6d 61 70 70 69 6e 67 20 66 72 6f 6d 20 73 .-mapping from s
0380: 75 62 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 73 20 ubcommand names
0390: 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 70 72 65 to a list of pre
03a0: 66 69 78 20 77 6f 72 64 73 20 74 6f 20 73 75 62 fix words to sub
03b0: 73 74 69 74 75 74 65 0a 2d 69 6e 20 70 6c 61 63 stitute.-in plac
03c0: 65 20 6f 66 20 74 68 65 20 65 6e 73 65 6d 62 6c e of the ensembl
03d0: 65 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 73 75 e command and su
03e0: 62 63 6f 6d 6d 61 6e 64 20 77 6f 72 64 73 20 28 bcommand words (
03f0: 69 6e 20 61 20 6d 61 6e 6e 65 72 0a 2d 73 69 6d in a manner.-sim
0400: 69 6c 61 72 20 74 6f 20 61 6e 20 61 6c 69 61 73 ilar to an alias
0410: 20 63 72 65 61 74 65 64 20 77 69 74 68 20 5c 66 created with \f
0420: 42 69 6e 74 65 72 70 20 61 6c 69 61 73 5c 66 52 Binterp alias\fR
0430: 3b 20 74 68 65 20 77 6f 72 64 73 20 61 72 65 20 ; the words are
0440: 6e 6f 74 0a 2d 72 65 70 61 72 73 65 64 20 61 66 not.-reparsed af
0450: 74 65 72 20 73 75 62 73 74 69 74 75 74 69 6f 6e ter substitution
0460: 29 2e 20 20 57 68 65 6e 20 74 68 69 73 20 6f 70 ). When this op
0470: 74 69 6f 6e 20 69 73 20 65 6d 70 74 79 2c 20 74 tion is empty, t
0480: 68 65 20 6d 61 70 70 69 6e 67 0a 2d 77 69 6c 6c he mapping.-will
0490: 20 62 65 20 66 72 6f 6d 20 74 68 65 20 6c 6f 63 be from the loc
04a0: 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 al name of the s
04b0: 75 62 63 6f 6d 6d 61 6e 64 20 74 6f 20 69 74 73 ubcommand to its
04c0: 20 66 75 6c 6c 79 2d 71 75 61 6c 69 66 69 65 64 fully-qualified
04d0: 0a 2d 6e 61 6d 65 2e 20 20 4e 6f 74 65 20 74 68 .-name. Note th
04e0: 61 74 20 77 68 65 6e 20 74 68 69 73 20 6f 70 74 at when this opt
04f0: 69 6f 6e 20 69 73 20 6e 6f 6e 2d 65 6d 70 74 79 ion is non-empty
0500: 20 61 6e 64 20 74 68 65 0a 2b 57 68 65 6e 20 6e and the.+When n
0510: 6f 6e 2d 65 6d 70 74 79 2c 20 74 68 69 73 20 6f on-empty, this o
0520: 70 74 69 6f 6e 20 73 75 70 70 6c 69 65 73 20 61 ption supplies a
0530: 20 64 69 63 74 69 6f 6e 61 72 79 20 74 68 61 74 dictionary that
0540: 20 70 72 6f 76 69 64 65 73 20 61 20 6d 61 70 70 provides a mapp
0550: 69 6e 67 0a 2b 66 72 6f 6d 20 73 75 62 63 6f 6d ing.+from subcom
0560: 6d 61 6e 64 20 6e 61 6d 65 73 20 74 6f 20 61 20 mand names to a
0570: 6c 69 73 74 20 6f 66 20 70 72 65 66 69 78 20 77 list of prefix w
0580: 6f 72 64 73 20 74 6f 20 73 75 62 73 74 69 74 75 ords to substitu
0590: 74 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 2b te in place of.+
05a0: 74 68 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d the ensemble com
05b0: 6d 61 6e 64 20 61 6e 64 20 73 75 62 63 6f 6d 6d mand and subcomm
05c0: 61 6e 64 20 77 6f 72 64 73 20 28 69 6e 20 61 20 and words (in a
05d0: 6d 61 6e 6e 65 72 20 73 69 6d 69 6c 61 72 20 74 manner similar t
05e0: 6f 20 61 6e 20 61 6c 69 61 73 0a 2b 63 72 65 61 o an alias.+crea
05f0: 74 65 64 20 77 69 74 68 20 69 6e 74 65 72 70 20 ted with interp
0600: 61 6c 69 61 73 3b 20 74 68 65 20 77 6f 72 64 73 alias; the words
0610: 20 61 72 65 20 6e 6f 74 20 72 65 70 61 72 73 65 are not reparse
0620: 64 20 61 66 74 65 72 0a 2b 73 75 62 73 74 69 74 d after.+substit
0630: 75 74 69 6f 6e 29 2e 20 54 68 65 20 72 65 73 75 ution). The resu
0640: 6c 74 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 69 73 lting command is
0650: 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 invoked with th
0660: 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 67 75 6d e original argum
0670: 65 6e 74 73 0a 2b 69 6e 20 74 68 65 20 6e 61 6d ents.+in the nam
0680: 65 73 70 61 63 65 20 6f 66 20 74 68 65 20 65 6e espace of the en
0690: 73 65 6d 62 6c 65 2e 20 0a 2b 57 68 65 6e 20 74 semble. .+When t
06a0: 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 65 6d his option is em
06b0: 70 74 79 2c 20 74 68 65 20 6d 61 70 70 69 6e 67 pty, the mapping
06c0: 0a 2b 77 69 6c 6c 20 62 65 20 66 72 6f 6d 20 74 .+will be from t
06d0: 68 65 20 6c 6f 63 61 6c 20 6e 61 6d 65 20 6f 66 he local name of
06e0: 20 74 68 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 the subcommand
06f0: 74 6f 20 69 74 73 20 61 6c 69 61 73 2c 20 72 65 to its alias, re
0700: 73 6f 6c 76 65 64 20 66 72 6f 6d 0a 2b 74 68 65 solved from.+the
0710: 20 65 6e 73 65 6d 62 6c 65 27 73 20 6e 61 6d 65 ensemble's name
0720: 73 70 61 63 65 2e 0a 2b 4e 6f 74 65 20 74 68 61 space..+Note tha
0730: 74 20 77 68 65 6e 20 74 68 69 73 20 6f 70 74 69 t when this opti
0740: 6f 6e 20 69 73 20 6e 6f 6e 2d 65 6d 70 74 79 20 on is non-empty
0750: 61 6e 64 20 74 68 65 0a 20 5c 66 42 5c 2d 73 75 and the. \fB\-su
0760: 62 63 6f 6d 6d 61 6e 64 73 5c 66 52 20 6f 70 74 bcommands\fR opt
0770: 69 6f 6e 20 69 73 20 65 6d 70 74 79 2c 20 74 68 ion is empty, th
0780: 65 20 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 6f e ensemble subco
0790: 6d 6d 61 6e 64 20 6e 61 6d 65 73 0a 20 77 69 6c mmand names. wil
07a0: 6c 20 62 65 20 65 78 61 63 74 6c 79 20 74 68 6f l be exactly tho
07b0: 73 65 20 77 6f 72 64 73 20 74 68 61 74 20 68 61 se words that ha
07c0: 76 65 20 6d 61 70 70 69 6e 67 73 20 69 6e 20 74 ve mappings in t
07d0: 68 65 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 20 he dictionary..
07e0: 2e 54 50 0a 40 40 20 2d 37 37 31 2c 39 20 2b 37 .TP.@@ -771,9 +7
07f0: 37 35 2c 39 20 40 40 0a 20 2e 50 50 0a 20 57 68 75,9 @@. .PP. Wh
0800: 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 en the result is
0810: 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 73 a non-empty lis
0820: 74 2c 20 74 68 65 20 77 6f 72 64 73 20 6f 66 20 t, the words of
0830: 74 68 61 74 20 6c 69 73 74 20 61 72 65 20 75 73 that list are us
0840: 65 64 0a 20 74 6f 20 72 65 70 6c 61 63 65 20 74 ed. to replace t
0850: 68 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d he ensemble comm
0860: 61 6e 64 20 61 6e 64 20 73 75 62 63 6f 6d 6d 61 and and subcomma
0870: 6e 64 2c 20 6a 75 73 74 20 61 73 20 69 66 20 74 nd, just as if t
0880: 68 65 79 20 68 61 64 0a 2d 62 65 65 6e 20 6c 6f hey had.-been lo
0890: 6f 6b 65 64 20 75 70 20 69 6e 20 74 68 65 20 5c oked up in the \
08a0: 66 42 5c 2d 6d 61 70 5c 66 52 2e 20 49 74 20 69 fB\-map\fR. It i
08b0: 73 20 75 70 20 74 6f 20 74 68 65 20 75 6e 6b 6e s up to the unkn
08c0: 6f 77 6e 20 68 61 6e 64 6c 65 72 20 74 6f 0a 2d own handler to.-
08d0: 73 75 70 70 6c 79 20 61 6c 6c 20 6e 61 6d 65 73 supply all names
08e0: 70 61 63 65 20 71 75 61 6c 69 66 69 65 72 73 20 pace qualifiers
08f0: 69 66 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 if the implement
0900: 69 6e 67 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 ing subcommand i
0910: 73 20 6e 6f 74 0a 2d 69 6e 20 74 68 65 20 6e 61 s not.-in the na
0920: 6d 65 73 70 61 63 65 20 6f 66 20 74 68 65 20 63 mespace of the c
0930: 61 6c 6c 65 72 20 6f 66 20 74 68 65 20 65 6e 73 aller of the ens
0940: 65 6d 62 6c 65 20 63 6f 6d 6d 61 6e 64 2e 20 41 emble command. A
0950: 6c 73 6f 20 6e 6f 74 65 20 74 68 61 74 0a 2b 62 lso note that.+b
0960: 65 65 6e 20 6c 6f 6f 6b 65 64 20 75 70 20 69 6e een looked up in
0970: 20 74 68 65 20 5c 66 42 5c 2d 6d 61 70 5c 66 52 the \fB\-map\fR
0980: 2e 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 69 . The implementi
0990: 6e 67 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 73 ng subcommand is
09a0: 20 6c 6f 6f 6b 65 64 20 75 70 0a 2b 69 6e 20 74 looked up.+in t
09b0: 68 65 20 65 6e 73 65 6d 62 6c 65 27 73 20 6e 61 he ensemble's na
09c0: 6d 65 73 70 61 63 65 20 75 73 69 6e 67 20 6e 6f mespace using no
09d0: 72 6d 61 6c 20 63 6f 6d 6d 61 6e 64 20 6c 6f 63 rmal command loc
09e0: 61 74 69 6f 6e 20 72 75 6c 65 73 2e 0a 2b 41 6c ation rules..+Al
09f0: 73 6f 20 6e 6f 74 65 20 74 68 61 74 0a 20 77 68 so note that. wh
0a00: 65 6e 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d 6d en ensemble comm
0a10: 61 6e 64 73 20 61 72 65 20 63 68 61 69 6e 65 64 ands are chained
0a20: 20 28 65 2e 67 2e 20 69 66 20 79 6f 75 20 6d 61 (e.g. if you ma
0a30: 6b 65 20 6f 6e 65 20 6f 66 20 74 68 65 0a 20 63 ke one of the. c
0a40: 6f 6d 6d 61 6e 64 73 20 74 68 61 74 20 69 6d 70 ommands that imp
0a50: 6c 65 6d 65 6e 74 20 61 6e 20 65 6e 73 65 6d 62 lement an ensemb
0a60: 6c 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 6e le subcommand in
0a70: 74 6f 20 61 6e 20 65 6e 73 65 6d 62 6c 65 2c 20 to an ensemble,
0a80: 69 6e 20 61 0a 20 6d 61 6e 6e 65 72 20 73 69 6d in a. manner sim
0a90: 69 6c 61 72 20 74 6f 20 74 68 65 20 74 65 78 74 ilar to the text
0aa0: 20 77 69 64 67 65 74 27 73 20 74 61 67 20 61 6e widget's tag an
0ab0: 64 20 6d 61 72 6b 20 73 75 62 63 6f 6d 6d 61 6e d mark subcomman
0ac0: 64 73 29 20 74 68 65 6e 20 74 68 65 0a 49 6e 64 ds) then the.Ind
0ad0: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 ex: generic/tclB
0ae0: 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d asic.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 3d 0a 52 43 53 20 66 ==========.RCS f
0b30: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0b40: 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 l/tcl/generic/tc
0b50: 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 74 72 69 lBasic.c,v.retri
0b60: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
0b70: 2e 32 30 33 0a 64 69 66 66 20 2d 75 20 2d 72 31 .203.diff -u -r1
0b80: 2e 32 30 33 20 74 63 6c 42 61 73 69 63 2e 63 0a .203 tclBasic.c.
0b90: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 --- generic/tclB
0ba0: 61 73 69 63 2e 63 09 32 33 20 4f 63 74 20 32 30 asic.c.23 Oct 20
0bb0: 30 36 20 32 33 3a 30 34 3a 31 32 20 2d 30 30 30 06 23:04:12 -000
0bc0: 30 09 31 2e 32 30 33 0a 2b 2b 2b 20 67 65 6e 65 0.1.203.+++ gene
0bd0: 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09 32 ric/tclBasic.c.2
0be0: 36 20 4f 63 74 20 32 30 30 36 20 30 31 3a 31 30 6 Oct 2006 01:10
0bf0: 3a 33 31 20 2d 30 30 30 30 0a 40 40 20 2d 33 32 :31 -0000.@@ -32
0c00: 39 34 2c 31 33 20 2b 33 32 39 34 2c 31 32 20 40 94,13 +3294,12 @
0c10: 40 0a 20 09 76 61 72 46 72 61 6d 65 50 74 72 20 @. .varFramePtr
0c20: 3d 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 6d = iPtr->rootFram
0c30: 65 50 74 72 3b 0a 20 09 73 61 76 65 64 56 61 72 ePtr;. .savedVar
0c40: 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d FramePtr = iPtr-
0c50: 3e 76 61 72 46 72 61 6d 65 50 74 72 3b 0a 20 09 >varFramePtr;. .
0c60: 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 iPtr->varFramePt
0c70: 72 20 3d 20 76 61 72 46 72 61 6d 65 50 74 72 3b r = varFramePtr;
0c80: 20 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 .+ } else if
0c90: 20 28 69 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 (iPtr->lookupNs
0ca0: 50 74 72 29 20 7b 0a 2b 09 73 61 76 65 64 4e 73 Ptr) {.+.savedNs
0cb0: 50 74 72 20 3d 20 76 61 72 46 72 61 6d 65 50 74 Ptr = varFramePt
0cc0: 72 2d 3e 6e 73 50 74 72 3b 0a 2b 09 76 61 72 46 r->nsPtr;.+.varF
0cd0: 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d ramePtr->nsPtr =
0ce0: 20 69 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 iPtr->lookupNsP
0cf0: 74 72 3b 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 tr;. } else
0d00: 69 66 20 28 66 6c 61 67 73 20 26 20 54 43 4c 5f if (flags & TCL_
0d10: 45 56 41 4c 5f 49 4e 56 4f 4b 45 29 20 7b 0a 20 EVAL_INVOKE) {.
0d20: 09 73 61 76 65 64 4e 73 50 74 72 20 3d 20 76 61 .savedNsPtr = va
0d30: 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 rFramePtr->nsPtr
0d40: 3b 0a 2d 09 69 66 20 28 69 50 74 72 2d 3e 6c 6f ;.-.if (iPtr->lo
0d50: 6f 6b 75 70 4e 73 50 74 72 29 20 7b 0a 2d 09 20 okupNsPtr) {.-.
0d60: 20 20 20 76 61 72 46 72 61 6d 65 50 74 72 2d 3e varFramePtr->
0d70: 6e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 6c 6f nsPtr = iPtr->lo
0d80: 6f 6b 75 70 4e 73 50 74 72 3b 0a 2d 09 7d 20 65 okupNsPtr;.-.} e
0d90: 6c 73 65 20 7b 0a 2d 09 20 20 20 20 76 61 72 46 lse {.-. varF
0da0: 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d ramePtr->nsPtr =
0db0: 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 iPtr->globalNsP
0dc0: 74 72 3b 0a 2d 09 7d 0a 2b 09 76 61 72 46 72 61 tr;.-.}.+.varFra
0dd0: 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 69 mePtr->nsPtr = i
0de0: 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 Ptr->globalNsPtr
0df0: 3b 0a 20 20 20 20 20 7d 0a 20 0a 20 0a 49 6e 64 ;. }. . .Ind
0e00: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e ex: generic/tclN
0e10: 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d amesp.c.========
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 0a 52 43 53 20 ===========.RCS
0e60: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
0e70: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
0e80: 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65 74 clNamesp.c,v.ret
0e90: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
0ea0: 20 31 2e 31 30 35 0a 64 69 66 66 20 2d 75 20 2d 1.105.diff -u -
0eb0: 72 31 2e 31 30 35 20 74 63 6c 4e 61 6d 65 73 70 r1.105 tclNamesp
0ec0: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
0ed0: 63 6c 4e 61 6d 65 73 70 2e 63 09 32 33 20 4f 63 clNamesp.c.23 Oc
0ee0: 74 20 32 30 30 36 20 32 32 3a 34 39 3a 32 35 20 t 2006 22:49:25
0ef0: 2d 30 30 30 30 09 31 2e 31 30 35 0a 2b 2b 2b 20 -0000.1.105.+++
0f00: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 generic/tclNames
0f10: 70 2e 63 09 32 36 20 4f 63 74 20 32 30 30 36 20 p.c.26 Oct 2006
0f20: 30 31 3a 31 30 3a 33 34 20 2d 30 30 30 30 0a 40 01:10:34 -0000.@
0f30: 40 20 2d 35 30 31 35 2c 37 20 2b 35 30 31 35 2c @ -5015,7 +5015,
0f40: 37 20 40 40 0a 20 09 63 68 61 72 20 2a 6e 61 6d 7 @@. .char *nam
0f50: 65 3b 0a 20 09 54 63 6c 5f 44 69 63 74 53 65 61 e;. .Tcl_DictSea
0f60: 72 63 68 20 73 65 61 72 63 68 3b 0a 20 09 54 63 rch search;. .Tc
0f70: 6c 5f 4f 62 6a 20 2a 6c 69 73 74 4f 62 6a 3b 0a l_Obj *listObj;.
0f80: 2d 09 69 6e 74 20 64 6f 6e 65 2c 20 6c 65 6e 2c -.int done, len,
0f90: 20 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c 61 allocatedMapFla
0fa0: 67 20 3d 20 30 3b 0a 2b 09 69 6e 74 20 64 6f 6e g = 0;.+.int don
0fb0: 65 2c 20 6c 65 6e 3b 0a 20 09 2f 2a 0a 20 09 20 e, len;. ./*. .
0fc0: 2a 20 44 65 66 61 75 6c 74 73 0a 20 09 20 2a 2f * Defaults. . */
0fd0: 0a 40 40 20 2d 35 30 34 35 2c 39 20 2b 35 30 34 .@@ -5045,9 +504
0fe0: 35 2c 36 20 40 40 0a 20 09 66 6f 72 20 28 3b 20 5,6 @@. .for (;
0ff0: 6f 62 6a 63 3e 31 20 3b 20 6f 62 6a 63 2d 3d 32 objc>1 ; objc-=2
1000: 2c 6f 62 6a 76 2b 3d 32 20 29 20 7b 0a 20 09 20 ,objv+=2 ) {. .
1010: 20 20 20 69 66 20 28 54 63 6c 5f 47 65 74 49 6e if (Tcl_GetIn
1020: 64 65 78 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 dexFromObj(inter
1030: 70 2c 20 6f 62 6a 76 5b 30 5d 2c 20 63 72 65 61 p, objv[0], crea
1040: 74 65 4f 70 74 69 6f 6e 73 2c 20 22 6f 70 74 69 teOptions, "opti
1050: 6f 6e 22 2c 0a 20 09 09 20 20 20 20 30 2c 20 26 on",. .. 0, &
1060: 69 6e 64 65 78 29 20 21 3d 20 54 43 4c 5f 4f 4b index) != TCL_OK
1070: 29 20 7b 0a 2d 09 09 69 66 20 28 61 6c 6c 6f 63 ) {.-..if (alloc
1080: 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d atedMapFlag) {.-
1090: 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 .. Tcl_DecrRe
10a0: 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a fCount(mapObj);.
10b0: 2d 09 09 7d 0a 20 09 09 72 65 74 75 72 6e 20 54 -..}. ..return T
10c0: 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 20 20 20 20 CL_ERROR;. .
10d0: 7d 0a 20 09 20 20 20 20 73 77 69 74 63 68 20 28 }. . switch (
10e0: 28 65 6e 75 6d 20 45 6e 73 43 72 65 61 74 65 4f (enum EnsCreateO
10f0: 70 74 73 29 20 69 6e 64 65 78 29 20 7b 0a 40 40 pts) index) {.@@
1100: 20 2d 35 30 35 36 2c 32 35 20 2b 35 30 35 33 2c -5056,25 +5053,
1110: 31 39 20 40 40 0a 20 09 09 63 6f 6e 74 69 6e 75 19 @@. ..continu
1120: 65 3b 0a 20 09 20 20 20 20 63 61 73 65 20 43 52 e;. . case CR
1130: 54 5f 53 55 42 43 4d 44 53 3a 0a 20 09 09 69 66 T_SUBCMDS:. ..if
1140: 20 28 54 63 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e (Tcl_ListObjLen
1150: 67 74 68 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 gth(interp, objv
1160: 5b 31 5d 2c 20 26 6c 65 6e 29 20 21 3d 20 54 43 [1], &len) != TC
1170: 4c 5f 4f 4b 29 20 7b 0a 2d 09 09 20 20 20 20 69 L_OK) {.-.. i
1180: 66 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 f (allocatedMapF
1190: 6c 61 67 29 20 7b 0a 2d 09 09 09 54 63 6c 5f 44 lag) {.-...Tcl_D
11a0: 65 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f ecrRefCount(mapO
11b0: 62 6a 29 3b 0a 2d 09 09 20 20 20 20 7d 0a 20 09 bj);.-.. }. .
11c0: 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f . return TCL_
11d0: 45 52 52 4f 52 3b 0a 20 09 09 7d 0a 20 09 09 73 ERROR;. ..}. ..s
11e0: 75 62 63 6d 64 4f 62 6a 20 3d 20 28 6c 65 6e 20 ubcmdObj = (len
11f0: 3e 20 30 20 3f 20 6f 62 6a 76 5b 31 5d 20 3a 20 > 0 ? objv[1] :
1200: 4e 55 4c 4c 29 3b 0a 20 09 09 63 6f 6e 74 69 6e NULL);. ..contin
1210: 75 65 3b 0a 20 09 20 20 20 20 63 61 73 65 20 43 ue;. . case C
1220: 52 54 5f 4d 41 50 3a 20 7b 0a 2d 09 09 54 63 6c RT_MAP: {.-..Tcl
1230: 5f 4f 62 6a 20 2a 70 61 74 63 68 65 64 44 69 63 _Obj *patchedDic
1240: 74 20 3d 20 4e 55 4c 4c 2c 20 2a 73 75 62 63 6d t = NULL, *subcm
1250: 64 4f 62 6a 3b 0a 2d 0a 2d 09 09 2f 2a 0a 2b 09 dObj;.-.-../*.+.
1260: 09 54 63 6c 5f 4f 62 6a 20 2a 73 75 62 63 6d 64 .Tcl_Obj *subcmd
1270: 4f 62 6a 3b 0a 2b 09 09 0a 2b 20 20 20 20 20 20 Obj;.+...+
1280: 20 20 20 20 20 20 20 20 20 20 2f 2a 0a 20 09 09 /*. ..
1290: 20 2a 20 56 65 72 69 66 79 20 74 68 61 74 20 74 * Verify that t
12a0: 68 65 20 6d 61 70 20 69 73 20 73 65 6e 73 69 62 he map is sensib
12b0: 6c 65 2e 0a 20 09 09 20 2a 2f 0a 20 0a 20 09 09 le.. .. */. . ..
12c0: 69 66 20 28 54 63 6c 5f 44 69 63 74 4f 62 6a 46 if (Tcl_DictObjF
12d0: 69 72 73 74 28 69 6e 74 65 72 70 2c 20 6f 62 6a irst(interp, obj
12e0: 76 5b 31 5d 2c 20 26 73 65 61 72 63 68 2c 0a 20 v[1], &search,.
12f0: 09 09 09 26 73 75 62 63 6d 64 4f 62 6a 2c 20 26 ...&subcmdObj, &
1300: 6c 69 73 74 4f 62 6a 2c 20 26 64 6f 6e 65 29 20 listObj, &done)
1310: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 09 != TCL_OK) {.-..
1320: 20 20 20 20 69 66 20 28 61 6c 6c 6f 63 61 74 65 if (allocate
1330: 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d 09 09 09 dMapFlag) {.-...
1340: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
1350: 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 20 20 20 (mapObj);.-..
1360: 20 7d 0a 20 09 09 20 20 20 20 72 65 74 75 72 6e }. .. return
1370: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 7d TCL_ERROR;. ..}
1380: 0a 20 09 09 69 66 20 28 64 6f 6e 65 29 20 7b 0a . ..if (done) {.
1390: 40 40 20 2d 35 30 38 33 2c 31 37 20 2b 35 30 37 @@ -5083,17 +507
13a0: 34 2c 31 30 20 40 40 0a 20 09 09 7d 0a 20 09 09 4,10 @@. ..}. ..
13b0: 64 6f 20 7b 0a 20 09 09 20 20 20 20 54 63 6c 5f do {. .. Tcl_
13c0: 4f 62 6a 20 2a 2a 6c 69 73 74 76 3b 0a 2d 09 09 Obj **listv;.-..
13d0: 20 20 20 20 63 68 61 72 20 2a 63 6d 64 3b 0a 20 char *cmd;.
13e0: 0a 20 09 09 20 20 20 20 69 66 20 28 54 63 6c 5f . .. if (Tcl_
13f0: 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 6e ListObjGetElemen
1400: 74 73 28 69 6e 74 65 72 70 2c 20 6c 69 73 74 4f ts(interp, listO
1410: 62 6a 2c 20 26 6c 65 6e 2c 0a 20 09 09 09 20 20 bj, &len,. ...
1420: 20 20 26 6c 69 73 74 76 29 20 21 3d 20 54 43 4c &listv) != TCL
1430: 5f 4f 4b 29 20 7b 0a 20 09 09 09 54 63 6c 5f 44 _OK) {. ...Tcl_D
1440: 69 63 74 4f 62 6a 44 6f 6e 65 28 26 73 65 61 72 ictObjDone(&sear
1450: 63 68 29 3b 0a 2d 09 09 09 69 66 20 28 70 61 74 ch);.-...if (pat
1460: 63 68 65 64 44 69 63 74 29 20 7b 0a 2d 09 09 09 chedDict) {.-...
1470: 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 Tcl_DecrRefC
1480: 6f 75 6e 74 28 70 61 74 63 68 65 64 44 69 63 74 ount(patchedDict
1490: 29 3b 0a 2d 09 09 09 7d 0a 2d 09 09 09 69 66 20 );.-...}.-...if
14a0: 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c 61 (allocatedMapFla
14b0: 67 29 20 7b 0a 2d 09 09 09 20 20 20 20 54 63 6c g) {.-... Tcl
14c0: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 _DecrRefCount(ma
14d0: 70 4f 62 6a 29 3b 0a 2d 09 09 09 7d 0a 20 09 09 pObj);.-...}. ..
14e0: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f .return TCL_ERRO
14f0: 52 3b 0a 20 09 09 20 20 20 20 7d 0a 20 09 09 20 R;. .. }. ..
1500: 20 20 20 69 66 20 28 6c 65 6e 20 3c 20 31 29 20 if (len < 1)
1510: 7b 0a 40 40 20 2d 35 31 30 31 2c 35 35 20 2b 35 {.@@ -5101,55 +5
1520: 30 38 35 2c 32 32 20 40 40 0a 20 09 09 09 09 22 085,22 @@. ...."
1530: 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 6f 6d 6d ensemble subcomm
1540: 61 6e 64 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 and implementati
1550: 6f 6e 73 20 22 0a 20 09 09 09 09 22 6d 75 73 74 ons ". ...."must
1560: 20 62 65 20 6e 6f 6e 2d 65 6d 70 74 79 20 6c 69 be non-empty li
1570: 73 74 73 22 2c 20 54 43 4c 5f 53 54 41 54 49 43 sts", TCL_STATIC
1580: 29 3b 0a 20 09 09 09 54 63 6c 5f 44 69 63 74 4f );. ...Tcl_DictO
1590: 62 6a 44 6f 6e 65 28 26 73 65 61 72 63 68 29 3b bjDone(&search);
15a0: 0a 2d 09 09 09 69 66 20 28 70 61 74 63 68 65 64 .-...if (patched
15b0: 44 69 63 74 29 20 7b 0a 2d 09 09 09 20 20 20 20 Dict) {.-...
15c0: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
15d0: 28 70 61 74 63 68 65 64 44 69 63 74 29 3b 0a 2d (patchedDict);.-
15e0: 09 09 09 7d 0a 2d 09 09 09 69 66 20 28 61 6c 6c ...}.-...if (all
15f0: 6f 63 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b ocatedMapFlag) {
1600: 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f 44 65 63 .-... Tcl_Dec
1610: 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a rRefCount(mapObj
1620: 29 3b 0a 2d 09 09 09 7d 0a 20 09 09 09 72 65 74 );.-...}. ...ret
1630: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 urn TCL_ERROR;.
1640: 09 09 20 20 20 20 7d 0a 2d 09 09 20 20 20 20 63 .. }.-.. c
1650: 6d 64 20 3d 20 54 63 6c 47 65 74 53 74 72 69 6e md = TclGetStrin
1660: 67 28 6c 69 73 74 76 5b 30 5d 29 3b 0a 2d 09 09 g(listv[0]);.-..
1670: 20 20 20 20 69 66 20 28 21 28 63 6d 64 5b 30 5d if (!(cmd[0]
1680: 20 3d 3d 20 27 3a 27 20 26 26 20 63 6d 64 5b 31 == ':' && cmd[1
1690: 5d 20 3d 3d 20 27 3a 27 29 29 20 7b 0a 2d 09 09 ] == ':')) {.-..
16a0: 09 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 4c 69 73 .Tcl_Obj *newLis
16b0: 74 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f t = Tcl_NewListO
16c0: 62 6a 28 6c 65 6e 2c 20 6c 69 73 74 76 29 3b 0a bj(len, listv);.
16d0: 2d 09 09 09 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 -...Tcl_Obj *new
16e0: 43 6d 64 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 Cmd = Tcl_NewStr
16f0: 69 6e 67 4f 62 6a 28 6e 73 50 74 72 2d 3e 66 75 ingObj(nsPtr->fu
1700: 6c 6c 4e 61 6d 65 2c 2d 31 29 3b 0a 2d 0a 2d 09 llName,-1);.-.-.
1710: 09 09 69 66 20 28 6e 73 50 74 72 2d 3e 70 61 72 ..if (nsPtr->par
1720: 65 6e 74 50 74 72 29 20 7b 0a 2d 09 09 09 20 20 entPtr) {.-...
1730: 20 20 54 63 6c 5f 41 70 70 65 6e 64 53 74 72 69 Tcl_AppendStri
1740: 6e 67 73 54 6f 4f 62 6a 28 6e 65 77 43 6d 64 2c ngsToObj(newCmd,
1750: 20 22 3a 3a 22 2c 20 4e 55 4c 4c 29 3b 0a 2d 09 "::", NULL);.-.
1760: 09 09 7d 0a 2d 09 09 09 54 63 6c 5f 41 70 70 65 ..}.-...Tcl_Appe
1770: 6e 64 4f 62 6a 54 6f 4f 62 6a 28 6e 65 77 43 6d ndObjToObj(newCm
1780: 64 2c 20 6c 69 73 74 76 5b 30 5d 29 3b 0a 2d 09 d, listv[0]);.-.
1790: 09 09 54 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 ..Tcl_ListObjRep
17a0: 6c 61 63 65 28 4e 55 4c 4c 2c 20 6e 65 77 4c 69 lace(NULL, newLi
17b0: 73 74 2c 20 30 2c 20 31 2c 20 31 2c 20 26 6e 65 st, 0, 1, 1, &ne
17c0: 77 43 6d 64 29 3b 0a 2d 09 09 09 69 66 20 28 70 wCmd);.-...if (p
17d0: 61 74 63 68 65 64 44 69 63 74 20 3d 3d 20 4e 55 atchedDict == NU
17e0: 4c 4c 29 20 7b 0a 2d 09 09 09 20 20 20 20 70 61 LL) {.-... pa
17f0: 74 63 68 65 64 44 69 63 74 20 3d 20 54 63 6c 5f tchedDict = Tcl_
1800: 44 75 70 6c 69 63 61 74 65 4f 62 6a 28 6f 62 6a DuplicateObj(obj
1810: 76 5b 31 5d 29 3b 0a 2d 09 09 09 7d 0a 2d 09 09 v[1]);.-...}.-..
1820: 09 54 63 6c 5f 44 69 63 74 4f 62 6a 50 75 74 28 .Tcl_DictObjPut(
1830: 4e 55 4c 4c 2c 20 70 61 74 63 68 65 64 44 69 63 NULL, patchedDic
1840: 74 2c 20 73 75 62 63 6d 64 4f 62 6a 2c 20 6e 65 t, subcmdObj, ne
1850: 77 4c 69 73 74 29 3b 0a 2d 09 09 20 20 20 20 7d wList);.-.. }
1860: 0a 20 09 09 20 20 20 20 54 63 6c 5f 44 69 63 74 . .. Tcl_Dict
1870: 4f 62 6a 4e 65 78 74 28 26 73 65 61 72 63 68 2c ObjNext(&search,
1880: 20 26 73 75 62 63 6d 64 4f 62 6a 2c 20 26 6c 69 &subcmdObj, &li
1890: 73 74 4f 62 6a 2c 20 26 64 6f 6e 65 29 3b 0a 20 stObj, &done);.
18a0: 09 09 7d 20 77 68 69 6c 65 20 28 21 64 6f 6e 65 ..} while (!done
18b0: 29 3b 0a 20 0a 2d 09 09 69 66 20 28 61 6c 6c 6f );. .-..if (allo
18c0: 63 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a catedMapFlag) {.
18d0: 2d 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 -.. Tcl_DecrR
18e0: 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b efCount(mapObj);
18f0: 0a 2d 09 09 7d 0a 2d 09 09 6d 61 70 4f 62 6a 20 .-..}.-..mapObj
1900: 3d 20 28 70 61 74 63 68 65 64 44 69 63 74 20 3f = (patchedDict ?
1910: 20 70 61 74 63 68 65 64 44 69 63 74 20 3a 20 6f patchedDict : o
1920: 62 6a 76 5b 31 5d 29 3b 0a 2d 09 09 69 66 20 28 bjv[1]);.-..if (
1930: 70 61 74 63 68 65 64 44 69 63 74 29 20 7b 0a 2d patchedDict) {.-
1940: 09 09 20 20 20 20 61 6c 6c 6f 63 61 74 65 64 4d .. allocatedM
1950: 61 70 46 6c 61 67 20 3d 20 31 3b 0a 2d 09 09 7d apFlag = 1;.-..}
1960: 0a 2b 09 09 6d 61 70 4f 62 6a 20 3d 20 6f 62 6a .+..mapObj = obj
1970: 76 5b 31 5d 3b 0a 20 09 09 63 6f 6e 74 69 6e 75 v[1];. ..continu
1980: 65 3b 0a 20 09 20 20 20 20 7d 0a 20 09 20 20 20 e;. . }. .
1990: 20 63 61 73 65 20 43 52 54 5f 50 52 45 46 49 58 case CRT_PREFIX
19a0: 3a 0a 20 09 09 69 66 20 28 54 63 6c 5f 47 65 74 :. ..if (Tcl_Get
19b0: 42 6f 6f 6c 65 61 6e 46 72 6f 6d 4f 62 6a 28 69 BooleanFromObj(i
19c0: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d 2c 0a nterp, objv[1],.
19d0: 20 09 09 09 26 70 65 72 6d 69 74 50 72 65 66 69 ...&permitPrefi
19e0: 78 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a x) != TCL_OK) {.
19f0: 2d 09 09 20 20 20 20 69 66 20 28 61 6c 6c 6f 63 -.. if (alloc
1a00: 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d atedMapFlag) {.-
1a10: 09 09 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f ...Tcl_DecrRefCo
1a20: 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 unt(mapObj);.-..
1a30: 20 20 20 20 7d 0a 20 09 09 20 20 20 20 72 65 74 }. .. ret
1a40: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 urn TCL_ERROR;.
1a50: 09 09 7d 0a 20 09 09 63 6f 6e 74 69 6e 75 65 3b ..}. ..continue;
1a60: 0a 20 09 20 20 20 20 63 61 73 65 20 43 52 54 5f . . case CRT_
1a70: 55 4e 4b 4e 4f 57 4e 3a 0a 20 09 09 69 66 20 28 UNKNOWN:. ..if (
1a80: 54 63 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 Tcl_ListObjLengt
1a90: 68 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 h(interp, objv[1
1aa0: 5d 2c 20 26 6c 65 6e 29 20 21 3d 20 54 43 4c 5f ], &len) != TCL_
1ab0: 4f 4b 29 20 7b 0a 2d 09 09 20 20 20 20 69 66 20 OK) {.-.. if
1ac0: 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c 61 (allocatedMapFla
1ad0: 67 29 20 7b 0a 2d 09 09 09 54 63 6c 5f 44 65 63 g) {.-...Tcl_Dec
1ae0: 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a rRefCount(mapObj
1af0: 29 3b 0a 2d 09 09 20 20 20 20 7d 0a 20 09 09 20 );.-.. }. ..
1b00: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 return TCL_ER
1b10: 52 4f 52 3b 0a 20 09 09 7d 0a 20 09 09 75 6e 6b ROR;. ..}. ..unk
1b20: 6e 6f 77 6e 4f 62 6a 20 3d 20 28 6c 65 6e 20 3e nownObj = (len >
1b30: 20 30 20 3f 20 6f 62 6a 76 5b 31 5d 20 3a 20 4e 0 ? objv[1] : N
1b40: 55 4c 4c 29 3b 0a 40 40 20 2d 35 33 33 37 2c 37 ULL);.@@ -5337,7
1b50: 20 2b 35 32 38 38 2c 37 20 40 40 0a 20 09 09 20 +5288,7 @@. ..
1b60: 20 20 20 73 75 62 63 6d 64 4f 62 6a 20 3d 20 28 subcmdObj = (
1b70: 6c 65 6e 20 3e 20 30 20 3f 20 6f 62 6a 76 5b 31 len > 0 ? objv[1
1b80: 5d 20 3a 20 4e 55 4c 4c 29 3b 0a 20 09 09 20 20 ] : NULL);. ..
1b90: 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 09 09 63 continue;. ..c
1ba0: 61 73 65 20 43 4f 4e 46 5f 4d 41 50 3a 20 7b 0a ase CONF_MAP: {.
1bb0: 2d 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a -.. Tcl_Obj *
1bc0: 70 61 74 63 68 65 64 44 69 63 74 20 3d 20 4e 55 patchedDict = NU
1bd0: 4c 4c 2c 20 2a 73 75 62 63 6d 64 4f 62 6a 3b 0a LL, *subcmdObj;.
1be0: 2b 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a +.. Tcl_Obj *
1bf0: 73 75 62 63 6d 64 4f 62 6a 3b 0a 20 0a 20 09 09 subcmdObj;. . ..
1c00: 20 20 20 20 2f 2a 0a 20 09 09 20 20 20 20 20 2a /*. .. *
1c10: 20 56 65 72 69 66 79 20 74 68 61 74 20 74 68 65 Verify that the
1c20: 20 6d 61 70 20 69 73 20 73 65 6e 73 69 62 6c 65 map is sensible
1c30: 2e 0a 40 40 20 2d 35 33 34 35 2c 39 20 2b 35 32 ..@@ -5345,9 +52
1c40: 39 36 2c 36 20 40 40 0a 20 0a 20 09 09 20 20 20 96,6 @@. . ..
1c50: 20 69 66 20 28 54 63 6c 5f 44 69 63 74 4f 62 6a if (Tcl_DictObj
1c60: 46 69 72 73 74 28 69 6e 74 65 72 70 2c 20 6f 62 First(interp, ob
1c70: 6a 76 5b 31 5d 2c 20 26 73 65 61 72 63 68 2c 0a jv[1], &search,.
1c80: 20 09 09 09 20 20 20 20 26 73 75 62 63 6d 64 4f ... &subcmdO
1c90: 62 6a 2c 20 26 6c 69 73 74 4f 62 6a 2c 20 26 64 bj, &listObj, &d
1ca0: 6f 6e 65 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 one) != TCL_OK)
1cb0: 7b 0a 2d 09 09 09 69 66 20 28 61 6c 6c 6f 63 61 {.-...if (alloca
1cc0: 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d 09 tedMapFlag) {.-.
1cd0: 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 .. Tcl_DecrRe
1ce0: 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a fCount(mapObj);.
1cf0: 2d 09 09 09 7d 0a 20 09 09 09 72 65 74 75 72 6e -...}. ...return
1d00: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 20 TCL_ERROR;. ..
1d10: 20 20 20 7d 0a 20 09 09 20 20 20 20 69 66 20 28 }. .. if (
1d20: 64 6f 6e 65 29 20 7b 0a 40 40 20 2d 35 33 35 36 done) {.@@ -5356
1d30: 2c 31 37 20 2b 35 33 30 34 2c 31 30 20 40 40 0a ,17 +5304,10 @@.
1d40: 20 09 09 20 20 20 20 7d 0a 20 09 09 20 20 20 20 .. }. ..
1d50: 64 6f 20 7b 0a 20 09 09 09 54 63 6c 5f 4f 62 6a do {. ...Tcl_Obj
1d60: 20 2a 2a 6c 69 73 74 76 3b 0a 2d 09 09 09 63 68 **listv;.-...ch
1d70: 61 72 20 2a 63 6d 64 3b 0a 20 0a 20 09 09 09 69 ar *cmd;. . ...i
1d80: 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 f (Tcl_ListObjGe
1d90: 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 tElements(interp
1da0: 2c 20 6c 69 73 74 4f 62 6a 2c 20 26 6c 65 6e 2c , listObj, &len,
1db0: 0a 20 09 09 09 09 26 6c 69 73 74 76 29 20 21 3d . ....&listv) !=
1dc0: 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 09 09 20 TCL_OK) {. ...
1dd0: 20 20 20 54 63 6c 5f 44 69 63 74 4f 62 6a 44 6f Tcl_DictObjDo
1de0: 6e 65 28 26 73 65 61 72 63 68 29 3b 0a 2d 09 09 ne(&search);.-..
1df0: 09 20 20 20 20 69 66 20 28 70 61 74 63 68 65 64 . if (patched
1e00: 44 69 63 74 29 20 7b 0a 2d 09 09 09 09 54 63 6c Dict) {.-....Tcl
1e10: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 70 61 _DecrRefCount(pa
1e20: 74 63 68 65 64 44 69 63 74 29 3b 0a 2d 09 09 09 tchedDict);.-...
1e30: 20 20 20 20 7d 0a 2d 09 09 09 20 20 20 20 69 66 }.-... if
1e40: 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c (allocatedMapFl
1e50: 61 67 29 20 7b 0a 2d 09 09 09 09 54 63 6c 5f 44 ag) {.-....Tcl_D
1e60: 65 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f ecrRefCount(mapO
1e70: 62 6a 29 3b 0a 2d 09 09 09 20 20 20 20 7d 0a 20 bj);.-... }.
1e80: 09 09 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 ... return TC
1e90: 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 09 7d 0a 20 L_ERROR;. ...}.
1ea0: 09 09 09 69 66 20 28 6c 65 6e 20 3c 20 31 29 20 ...if (len < 1)
1eb0: 7b 0a 40 40 20 2d 35 33 37 34 2c 33 39 20 2b 35 {.@@ -5374,39 +5
1ec0: 33 31 35 2c 31 31 20 40 40 0a 20 09 09 09 09 20 315,11 @@. ....
1ed0: 20 20 20 22 65 6e 73 65 6d 62 6c 65 20 73 75 62 "ensemble sub
1ee0: 63 6f 6d 6d 61 6e 64 20 69 6d 70 6c 65 6d 65 6e command implemen
1ef0: 74 61 74 69 6f 6e 73 20 22 0a 20 09 09 09 09 20 tations ". ....
1f00: 20 20 20 22 6d 75 73 74 20 62 65 20 6e 6f 6e 2d "must be non-
1f10: 65 6d 70 74 79 20 6c 69 73 74 73 22 2c 20 54 43 empty lists", TC
1f20: 4c 5f 53 54 41 54 49 43 29 3b 0a 20 09 09 09 20 L_STATIC);. ...
1f30: 20 20 20 54 63 6c 5f 44 69 63 74 4f 62 6a 44 6f Tcl_DictObjDo
1f40: 6e 65 28 26 73 65 61 72 63 68 29 3b 0a 2d 09 09 ne(&search);.-..
1f50: 09 20 20 20 20 69 66 20 28 70 61 74 63 68 65 64 . if (patched
1f60: 44 69 63 74 29 20 7b 0a 2d 09 09 09 09 54 63 6c Dict) {.-....Tcl
1f70: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 70 61 _DecrRefCount(pa
1f80: 74 63 68 65 64 44 69 63 74 29 3b 0a 2d 09 09 09 tchedDict);.-...
1f90: 20 20 20 20 7d 0a 2d 09 09 09 20 20 20 20 69 66 }.-... if
1fa0: 20 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c (allocatedMapFl
1fb0: 61 67 29 20 7b 0a 2d 09 09 09 09 54 63 6c 5f 44 ag) {.-....Tcl_D
1fc0: 65 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f ecrRefCount(mapO
1fd0: 62 6a 29 3b 0a 2d 09 09 09 20 20 20 20 7d 0a 20 bj);.-... }.
1fe0: 09 09 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 ... return TC
1ff0: 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 09 7d 0a 2d L_ERROR;. ...}.-
2000: 09 09 09 63 6d 64 20 3d 20 54 63 6c 47 65 74 53 ...cmd = TclGetS
2010: 74 72 69 6e 67 28 6c 69 73 74 76 5b 30 5d 29 3b tring(listv[0]);
2020: 0a 2d 09 09 09 69 66 20 28 21 28 63 6d 64 5b 30 .-...if (!(cmd[0
2030: 5d 20 3d 3d 20 27 3a 27 20 26 26 20 63 6d 64 5b ] == ':' && cmd[
2040: 31 5d 20 3d 3d 20 27 3a 27 29 29 20 7b 0a 2d 09 1] == ':')) {.-.
2050: 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e .. Tcl_Obj *n
2060: 65 77 4c 69 73 74 20 3d 20 54 63 6c 5f 4e 65 77 ewList = Tcl_New
2070: 4c 69 73 74 4f 62 6a 28 6c 65 6e 2c 20 6c 69 73 ListObj(len, lis
2080: 74 76 29 3b 0a 2d 09 09 09 20 20 20 20 54 63 6c tv);.-... Tcl
2090: 5f 4f 62 6a 20 2a 6e 65 77 43 6d 64 20 3d 0a 2d _Obj *newCmd =.-
20a0: 09 09 09 09 20 20 20 20 54 63 6c 5f 4e 65 77 53 .... Tcl_NewS
20b0: 74 72 69 6e 67 4f 62 6a 28 6e 73 50 74 72 2d 3e tringObj(nsPtr->
20c0: 66 75 6c 6c 4e 61 6d 65 2c 20 2d 31 29 3b 0a 2d fullName, -1);.-
20d0: 09 09 09 20 20 20 20 69 66 20 28 6e 73 50 74 72 ... if (nsPtr
20e0: 2d 3e 70 61 72 65 6e 74 50 74 72 29 20 7b 0a 2d ->parentPtr) {.-
20f0: 09 09 09 09 54 63 6c 5f 41 70 70 65 6e 64 53 74 ....Tcl_AppendSt
2100: 72 69 6e 67 73 54 6f 4f 62 6a 28 6e 65 77 43 6d ringsToObj(newCm
2110: 64 2c 20 22 3a 3a 22 2c 20 4e 55 4c 4c 29 3b 0a d, "::", NULL);.
2120: 2d 09 09 09 20 20 20 20 7d 0a 2d 09 09 09 20 20 -... }.-...
2130: 20 20 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 54 Tcl_AppendObjT
2140: 6f 4f 62 6a 28 6e 65 77 43 6d 64 2c 20 6c 69 73 oObj(newCmd, lis
2150: 74 76 5b 30 5d 29 3b 0a 2d 09 09 09 20 20 20 20 tv[0]);.-...
2160: 54 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 6c 61 Tcl_ListObjRepla
2170: 63 65 28 4e 55 4c 4c 2c 20 6e 65 77 4c 69 73 74 ce(NULL, newList
2180: 2c 20 30 2c 31 2c 20 31 2c 26 6e 65 77 43 6d 64 , 0,1, 1,&newCmd
2190: 29 3b 0a 2d 09 09 09 20 20 20 20 69 66 20 28 70 );.-... if (p
21a0: 61 74 63 68 65 64 44 69 63 74 20 3d 3d 20 4e 55 atchedDict == NU
21b0: 4c 4c 29 20 7b 0a 2d 09 09 09 09 70 61 74 63 68 LL) {.-....patch
21c0: 65 64 44 69 63 74 20 3d 20 54 63 6c 5f 44 75 70 edDict = Tcl_Dup
21d0: 6c 69 63 61 74 65 4f 62 6a 28 6f 62 6a 76 5b 31 licateObj(objv[1
21e0: 5d 29 3b 0a 2d 09 09 09 20 20 20 20 7d 0a 2d 09 ]);.-... }.-.
21f0: 09 09 20 20 20 20 54 63 6c 5f 44 69 63 74 4f 62 .. Tcl_DictOb
2200: 6a 50 75 74 28 4e 55 4c 4c 2c 20 70 61 74 63 68 jPut(NULL, patch
2210: 65 64 44 69 63 74 2c 20 73 75 62 63 6d 64 4f 62 edDict, subcmdOb
2220: 6a 2c 0a 2d 09 09 09 09 20 20 20 20 6e 65 77 4c j,.-.... newL
2230: 69 73 74 29 3b 0a 2d 09 09 09 7d 0a 20 09 09 09 ist);.-...}. ...
2240: 54 63 6c 5f 44 69 63 74 4f 62 6a 4e 65 78 74 28 Tcl_DictObjNext(
2250: 26 73 65 61 72 63 68 2c 20 26 73 75 62 63 6d 64 &search, &subcmd
2260: 4f 62 6a 2c 20 26 6c 69 73 74 4f 62 6a 2c 20 26 Obj, &listObj, &
2270: 64 6f 6e 65 29 3b 0a 20 09 09 20 20 20 20 7d 20 done);. .. }
2280: 77 68 69 6c 65 20 28 21 64 6f 6e 65 29 3b 0a 2d while (!done);.-
2290: 09 09 20 20 20 20 69 66 20 28 61 6c 6c 6f 63 61 .. if (alloca
22a0: 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a 2d 09 tedMapFlag) {.-.
22b0: 09 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 ..Tcl_DecrRefCou
22c0: 6e 74 28 6d 61 70 4f 62 6a 29 3b 0a 2d 09 09 20 nt(mapObj);.-..
22d0: 20 20 20 7d 0a 2d 09 09 20 20 20 20 6d 61 70 4f }.-.. mapO
22e0: 62 6a 20 3d 20 28 70 61 74 63 68 65 64 44 69 63 bj = (patchedDic
22f0: 74 20 3f 20 70 61 74 63 68 65 64 44 69 63 74 20 t ? patchedDict
2300: 3a 20 6f 62 6a 76 5b 31 5d 29 3b 0a 2d 09 09 20 : objv[1]);.-..
2310: 20 20 20 69 66 20 28 70 61 74 63 68 65 64 44 69 if (patchedDi
2320: 63 74 29 20 7b 0a 2d 09 09 09 61 6c 6c 6f 63 61 ct) {.-...alloca
2330: 74 65 64 4d 61 70 46 6c 61 67 20 3d 20 31 3b 0a tedMapFlag = 1;.
2340: 2d 09 09 20 20 20 20 7d 0a 2b 09 09 20 20 20 20 -.. }.+..
2350: 6d 61 70 4f 62 6a 20 3d 20 6f 62 6a 76 5b 31 5d mapObj = objv[1]
2360: 3b 0a 20 09 09 20 20 20 20 63 6f 6e 74 69 6e 75 ;. .. continu
2370: 65 3b 0a 20 09 09 7d 0a 20 09 09 63 61 73 65 20 e;. ..}. ..case
2380: 43 4f 4e 46 5f 4e 41 4d 45 53 50 41 43 45 3a 0a CONF_NAMESPACE:.
2390: 40 40 20 2d 36 32 37 35 2c 36 20 2b 36 31 38 38 @@ -6275,6 +6188
23a0: 2c 37 20 40 40 0a 20 09 74 65 6d 70 4f 62 6a 76 ,7 @@. .tempObjv
23b0: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 = (Tcl_Obj **)
23c0: 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 54 ckalloc(sizeof(T
23d0: 63 6c 5f 4f 62 6a 20 2a 29 2a 28 6f 62 6a 63 2d cl_Obj *)*(objc-
23e0: 32 2b 70 72 65 66 69 78 4f 62 6a 63 29 29 3b 0a 2+prefixObjc));.
23f0: 20 09 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 6a .memcpy(tempObj
2400: 76 2c 20 70 72 65 66 69 78 4f 62 6a 76 2c 20 73 v, prefixObjv, s
2410: 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 izeof(Tcl_Obj *)
2420: 20 2a 20 70 72 65 66 69 78 4f 62 6a 63 29 3b 0a * prefixObjc);.
2430: 20 09 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 6a .memcpy(tempObj
2440: 76 2b 70 72 65 66 69 78 4f 62 6a 63 2c 20 6f 62 v+prefixObjc, ob
2450: 6a 76 2b 32 2c 20 73 69 7a 65 6f 66 28 54 63 6c jv+2, sizeof(Tcl
2460: 5f 4f 62 6a 20 2a 29 20 2a 20 28 6f 62 6a 63 2d _Obj *) * (objc-
2470: 32 29 29 3b 0a 2b 09 69 50 74 72 2d 3e 6c 6f 6f 2));.+.iPtr->loo
2480: 6b 75 70 4e 73 50 74 72 20 3d 20 65 6e 73 65 6d kupNsPtr = ensem
2490: 62 6c 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 20 blePtr->nsPtr;.
24a0: 09 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f 45 76 .result = Tcl_Ev
24b0: 61 6c 4f 62 6a 76 28 69 6e 74 65 72 70 2c 20 6f alObjv(interp, o
24c0: 62 6a 63 2d 32 2b 70 72 65 66 69 78 4f 62 6a 63 bjc-2+prefixObjc
24d0: 2c 20 74 65 6d 70 4f 62 6a 76 2c 0a 20 09 09 54 , tempObjv,. ..T
24e0: 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f 4b 45 7c 54 CL_EVAL_INVOKE|T
24f0: 43 4c 5f 45 56 41 4c 5f 4e 4f 52 45 57 52 49 54 CL_EVAL_NOREWRIT
2500: 45 29 3b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 E);. .Tcl_DecrRe
2510: 66 43 6f 75 6e 74 28 70 72 65 66 69 78 4f 62 6a fCount(prefixObj
2520: 29 3b 0a 40 40 20 2d 36 33 31 30 2c 36 20 2b 36 );.@@ -6310,6 +6
2530: 32 32 34 2c 37 20 40 40 0a 20 09 54 63 6c 5f 4c 224,7 @@. .Tcl_L
2540: 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 6e 74 istObjGetElement
2550: 73 28 4e 55 4c 4c 2c 20 75 6e 6b 6e 6f 77 6e 43 s(NULL, unknownC
2560: 6d 64 2c 20 26 70 61 72 61 6d 63 2c 20 26 70 61 md, ¶mc, &pa
2570: 72 61 6d 76 29 3b 0a 20 09 54 63 6c 5f 50 72 65 ramv);. .Tcl_Pre
2580: 73 65 72 76 65 28 65 6e 73 65 6d 62 6c 65 50 74 serve(ensemblePt
2590: 72 29 3b 0a 20 09 54 63 6c 5f 49 6e 63 72 52 65 r);. .Tcl_IncrRe
25a0: 66 43 6f 75 6e 74 28 75 6e 6b 6e 6f 77 6e 43 6d fCount(unknownCm
25b0: 64 29 3b 0a 2b 09 69 50 74 72 2d 3e 6c 6f 6f 6b d);.+.iPtr->look
25c0: 75 70 4e 73 50 74 72 20 3d 20 65 6e 73 65 6d 62 upNsPtr = ensemb
25d0: 6c 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 20 09 lePtr->nsPtr;. .
25e0: 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f 45 76 61 result = Tcl_Eva
25f0: 6c 4f 62 6a 76 28 69 6e 74 65 72 70 2c 20 70 61 lObjv(interp, pa
2600: 72 61 6d 63 2c 20 70 61 72 61 6d 76 2c 20 30 29 ramc, paramv, 0)
2610: 3b 0a 20 09 69 66 20 28 72 65 73 75 6c 74 20 3d ;. .if (result =
2620: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 20 20 = TCL_OK) {. .
2630: 20 20 70 72 65 66 69 78 4f 62 6a 20 3d 20 54 63 prefixObj = Tc
2640: 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 l_GetObjResult(i
2650: 6e 74 65 72 70 29 3b 0a 40 40 20 2d 36 33 33 37 nterp);.@@ -6337
2660: 2c 39 20 2b 36 32 35 32 2c 36 20 40 40 0a 20 09 ,9 +6252,6 @@. .
2670: 09 09 22 5c 6e 20 20 20 20 77 68 69 6c 65 20 70 .."\n while p
2680: 61 72 73 69 6e 67 20 72 65 73 75 6c 74 20 6f 66 arsing result of
2690: 20 65 6e 73 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 ensemble unknow
26a0: 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e n subcommand han
26b0: 64 6c 65 72 22 29 3b 0a 20 09 09 72 65 74 75 72 dler");. ..retur
26c0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 20 n TCL_ERROR;. .
26d0: 20 20 20 7d 0a 2d 09 20 20 20 20 69 66 20 28 70 }.-. if (p
26e0: 72 65 66 69 78 4f 62 6a 63 20 3e 20 30 29 20 7b refixObjc > 0) {
26f0: 0a 2d 09 09 67 6f 74 6f 20 72 75 6e 52 65 73 75 .-..goto runResu
2700: 6c 74 69 6e 67 53 75 62 63 6f 6d 6d 61 6e 64 3b ltingSubcommand;
2710: 0a 2d 09 20 20 20 20 7d 0a 20 0a 20 09 20 20 20 .-. }. . .
2720: 20 2f 2a 0a 20 09 20 20 20 20 20 2a 20 52 65 73 /*. . * Res
2730: 74 6f 72 65 20 74 68 65 20 69 6e 74 65 72 70 27 tore the interp'
2740: 73 20 63 61 6c 6c 20 64 61 74 61 2c 20 77 68 69 s call data, whi
2750: 63 68 20 6d 61 79 20 68 61 76 65 20 62 65 65 6e ch may have been
2760: 20 77 69 70 65 64 20 6f 75 74 0a 40 40 20 2d 36 wiped out.@@ -6
2770: 33 34 38 2c 37 20 2b 36 32 36 30 2c 31 31 20 40 348,7 +6260,11 @
2780: 40 0a 20 0a 20 09 20 20 20 20 69 50 74 72 2d 3e @. . . iPtr->
2790: 63 61 6c 6c 4f 62 6a 63 20 3d 20 6f 62 6a 63 3b callObjc = objc;
27a0: 0a 20 09 20 20 20 20 69 50 74 72 2d 3e 63 61 6c . . iPtr->cal
27b0: 6c 4f 62 6a 76 20 3d 20 6f 62 6a 76 3b 0a 2d 09 lObjv = objv;.-.
27c0: 20 20 20 20 0a 2b 09 20 20 20 20 09 20 20 20 20 .+. .
27d0: 0a 2b 09 20 20 20 20 69 66 20 28 70 72 65 66 69 .+. if (prefi
27e0: 78 4f 62 6a 63 20 3e 20 30 29 20 7b 0a 2b 09 09 xObjc > 0) {.+..
27f0: 67 6f 74 6f 20 72 75 6e 52 65 73 75 6c 74 69 6e goto runResultin
2800: 67 53 75 62 63 6f 6d 6d 61 6e 64 3b 0a 2b 09 20 gSubcommand;.+.
2810: 20 20 20 7d 0a 2b 0a 20 09 20 20 20 20 2f 2a 0a }.+. . /*.
2820: 20 09 20 20 20 20 20 2a 20 4e 61 6d 65 73 70 61 . * Namespa
2830: 63 65 20 61 6c 69 76 65 20 26 20 65 6d 70 74 79 ce alive & empty
2840: 20 72 65 73 75 6c 74 20 3d 3e 20 72 65 70 61 72 result => repar
2850: 73 65 2e 0a 20 09 20 20 20 20 20 2a 2f 0a 40 40 se.. . */.@@
2860: 20 2d 36 36 37 34 2c 31 32 20 2b 36 35 39 30 2c -6674,12 +6590,
2870: 37 20 40 40 0a 20 09 20 20 20 20 20 2a 20 74 68 7 @@. . * th
2880: 65 20 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 72 e programmer's r
2890: 65 73 70 6f 6e 73 69 62 69 6c 69 74 79 20 28 6f esponsibility (o
28a0: 72 20 5b 3a 3a 75 6e 6b 6e 6f 77 6e 5d 20 6f 66 r [::unknown] of
28b0: 20 63 6f 75 72 73 65 29 2e 0a 20 09 20 20 20 20 course).. .
28c0: 20 2a 2f 0a 20 0a 2d 09 20 20 20 20 63 6d 64 4f */. .-. cmdO
28d0: 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 bj = Tcl_NewStri
28e0: 6e 67 4f 62 6a 28 65 6e 73 65 6d 62 6c 65 50 74 ngObj(ensemblePt
28f0: 72 2d 3e 6e 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 r->nsPtr->fullNa
2900: 6d 65 2c 20 2d 31 29 3b 0a 2d 09 20 20 20 20 69 me, -1);.-. i
2910: 66 20 28 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e f (ensemblePtr->
2920: 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 72 nsPtr->parentPtr
2930: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 09 54 != NULL) {.-..T
2940: 63 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67 73 cl_AppendStrings
2950: 54 6f 4f 62 6a 28 63 6d 64 4f 62 6a 2c 20 22 3a ToObj(cmdObj, ":
2960: 3a 22 2c 20 6e 61 6d 65 2c 20 4e 55 4c 4c 29 3b :", name, NULL);
2970: 0a 2d 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a .-. } else {.
2980: 2d 09 09 54 63 6c 5f 41 70 70 65 6e 64 53 74 72 -..Tcl_AppendStr
2990: 69 6e 67 73 54 6f 4f 62 6a 28 63 6d 64 4f 62 6a ingsToObj(cmdObj
29a0: 2c 20 6e 61 6d 65 2c 20 4e 55 4c 4c 29 3b 0a 2d , name, NULL);.-
29b0: 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 63 6d 64 . }.+. cmd
29c0: 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 Obj = Tcl_NewStr
29d0: 69 6e 67 4f 62 6a 28 6e 61 6d 65 2c 20 2d 31 29 ingObj(name, -1)
29e0: 3b 0a 20 09 20 20 20 20 63 6d 64 50 72 65 66 69 ;. . cmdPrefi
29f0: 78 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 xObj = Tcl_NewLi
2a00: 73 74 4f 62 6a 28 31 2c 20 26 63 6d 64 4f 62 6a stObj(1, &cmdObj
2a10: 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f 53 65 74 );. . Tcl_Set
2a20: 48 61 73 68 56 61 6c 75 65 28 68 50 74 72 2c 20 HashValue(hPtr,
2a30: 28 43 6c 69 65 6e 74 44 61 74 61 29 20 63 6d 64 (ClientData) cmd
2a40: 50 72 65 66 69 78 4f 62 6a 29 3b 0a 20 09 20 20 PrefixObj);. .
2a50: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 Tcl_IncrRefCou
2a60: 6e 74 28 63 6d 64 50 72 65 66 69 78 4f 62 6a 29 nt(cmdPrefixObj)
2a70: 3b 0a 40 40 20 2d 36 37 34 30 2c 31 31 20 2b 36 ;.@@ -6740,11 +6
2a80: 36 35 31 2c 37 20 40 40 0a 20 09 09 20 20 20 20 651,7 @@. ..
2a90: 69 66 20 28 69 73 4e 65 77 29 20 7b 0a 20 09 09 if (isNew) {. ..
2aa0: 09 54 63 6c 5f 4f 62 6a 20 2a 63 6d 64 4f 62 6a .Tcl_Obj *cmdObj
2ab0: 2c 20 2a 63 6d 64 50 72 65 66 69 78 4f 62 6a 3b , *cmdPrefixObj;
2ac0: 0a 20 0a 2d 09 09 09 54 63 6c 4e 65 77 4f 62 6a . .-...TclNewObj
2ad0: 28 63 6d 64 4f 62 6a 29 3b 0a 2d 09 09 09 54 63 (cmdObj);.-...Tc
2ae0: 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67 73 54 l_AppendStringsT
2af0: 6f 4f 62 6a 28 63 6d 64 4f 62 6a 2c 0a 2d 09 09 oObj(cmdObj,.-..
2b00: 09 09 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e ..ensemblePtr->n
2b10: 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 6d 65 2c 0a sPtr->fullName,.
2b20: 2d 09 09 09 09 28 65 6e 73 65 6d 62 6c 65 50 74 -....(ensemblePt
2b30: 72 2d 3e 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 r->nsPtr->parent
2b40: 50 74 72 20 3f 20 22 3a 3a 22 20 3a 20 22 22 29 Ptr ? "::" : "")
2b50: 2c 0a 2d 09 09 09 09 6e 73 43 6d 64 4e 61 6d 65 ,.-....nsCmdName
2b60: 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 09 09 63 6d 64 , NULL);.+...cmd
2b70: 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 Obj = Tcl_NewStr
2b80: 69 6e 67 4f 62 6a 28 6e 73 43 6d 64 4e 61 6d 65 ingObj(nsCmdName
2b90: 2c 20 2d 31 29 3b 0a 20 09 09 09 63 6d 64 50 72 , -1);. ...cmdPr
2ba0: 65 66 69 78 4f 62 6a 20 3d 20 54 63 6c 5f 4e 65 efixObj = Tcl_Ne
2bb0: 77 4c 69 73 74 4f 62 6a 28 31 2c 20 26 63 6d 64 wListObj(1, &cmd
2bc0: 4f 62 6a 29 3b 0a 20 09 09 09 54 63 6c 5f 53 65 Obj);. ...Tcl_Se
2bd0: 74 48 61 73 68 56 61 6c 75 65 28 68 50 74 72 2c tHashValue(hPtr,
2be0: 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 63 6d (ClientData) cm
2bf0: 64 50 72 65 66 69 78 4f 62 6a 29 3b 0a 20 09 09 dPrefixObj);. ..
2c00: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e .Tcl_IncrRefCoun
2c10: 74 28 63 6d 64 50 72 65 66 69 78 4f 62 6a 29 3b t(cmdPrefixObj);
2c20: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e 61 .Index: tests/na
2c30: 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d 3d mespace.test.===
2c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2c70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2c80: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
2c90: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 oot/tcl/tcl/test
2ca0: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 s/namespace.test
2cb0: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
2cc0: 76 69 73 69 6f 6e 20 31 2e 35 39 0a 64 69 66 66 vision 1.59.diff
2cd0: 20 2d 75 20 2d 72 31 2e 35 39 20 6e 61 6d 65 73 -u -r1.59 names
2ce0: 70 61 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 pace.test.--- te
2cf0: 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 sts/namespace.te
2d00: 73 74 09 32 33 20 4f 63 74 20 32 30 30 36 20 32 st.23 Oct 2006 2
2d10: 32 3a 34 39 3a 32 36 20 2d 30 30 30 30 09 31 2e 2:49:26 -0000.1.
2d20: 35 39 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 61 6d 59.+++ tests/nam
2d30: 65 73 70 61 63 65 2e 74 65 73 74 09 32 36 20 4f espace.test.26 O
2d40: 63 74 20 32 30 30 36 20 30 31 3a 31 30 3a 33 36 ct 2006 01:10:36
2d50: 20 2d 30 30 30 30 0a 40 40 20 2d 31 35 35 35 2c -0000.@@ -1555,
2d60: 36 20 2b 31 35 35 35 2c 31 39 20 40 40 0a 20 20 6 +1555,19 @@.
2d70: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c namespace del
2d80: 65 74 65 20 6e 73 0a 20 20 20 20 20 73 65 74 20 ete ns. set
2d90: 72 65 73 75 6c 74 0a 20 7d 20 7b 7b 31 20 7b 7d result. } {{1 {}
2da0: 7d 20 7b 32 20 30 7d 20 7b 31 20 2e 7d 20 7b 31 } {2 0} {1 .} {1
2db0: 20 7b 2e 20 66 6f 6f 7d 7d 20 7b 32 20 31 7d 20 {. foo}} {2 1}
2dc0: 7b 32 20 32 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d {2 2}}.+test nam
2dd0: 65 73 70 61 63 65 2d 34 33 2e 32 2e 61 20 7b 65 espace-43.2.a {e
2de0: 6e 73 65 6d 62 6c 65 73 3a 20 64 69 63 74 2d 64 nsembles: dict-d
2df0: 72 69 76 65 6e 7d 20 7b 0a 2b 20 20 20 20 6e 61 riven} {.+ na
2e00: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 mespace eval ns
2e10: 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 78 {.+.namespace ex
2e20: 70 6f 72 74 20 78 2a 0a 2b 09 70 72 6f 63 20 78 port x*.+.proc x
2e30: 31 20 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 31 1 {args} {list 1
2e40: 20 24 61 72 67 73 7d 0a 2b 09 70 72 6f 63 20 78 $args}.+.proc x
2e50: 32 20 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 32 2 {args} {list 2
2e60: 20 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d [llength $args]
2e70: 7d 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e }.+.namespace en
2e80: 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 6d semble create -m
2e90: 61 70 20 7b 0a 2b 09 20 20 20 20 61 20 78 31 20 ap {.+. a x1
2ea0: 62 20 78 32 20 63 20 7b 78 31 20 2e 7d 20 64 20 b x2 c {x1 .} d
2eb0: 7b 78 32 20 2e 7d 0a 2b 09 7d 0a 2b 20 20 20 20 {x2 .}.+.}.+
2ec0: 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c }.+ set resul
2ed0: 74 20 5b 6c 69 73 74 20 5b 6e 73 20 61 5d 20 5b t [list [ns a] [
2ee0: 6e 73 20 62 5d 20 5b 6e 73 20 63 5d 20 5b 6e 73 ns b] [ns c] [ns
2ef0: 20 63 20 66 6f 6f 5d 20 5b 6e 73 20 64 5d 20 5b c foo] [ns d] [
2f00: 6e 73 20 64 20 66 6f 6f 5d 5d 0a 2b 20 20 20 20 ns d foo]].+
2f10: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
2f20: 20 6e 73 0a 2b 20 20 20 20 73 65 74 20 72 65 73 ns.+ set res
2f30: 75 6c 74 0a 2b 7d 20 7b 7b 31 20 7b 7d 7d 20 7b ult.+} {{1 {}} {
2f40: 32 20 30 7d 20 7b 31 20 2e 7d 20 7b 31 20 7b 2e 2 0} {1 .} {1 {.
2f50: 20 66 6f 6f 7d 7d 20 7b 32 20 31 7d 20 7b 32 20 foo}} {2 1} {2
2f60: 32 7d 7d 0a 20 73 65 74 20 53 45 54 55 50 20 7b 2}}. set SETUP {
2f70: 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 . namespace
2f80: 65 76 61 6c 20 6e 73 20 7b 0a 20 09 6e 61 6d 65 eval ns {. .name
2f90: 73 70 61 63 65 20 65 78 70 6f 72 74 20 61 20 62 space export a b
2fa0: 0a 40 40 20 2d 31 35 38 38 2c 36 20 2b 31 36 30 .@@ -1588,6 +160
2fb0: 31 2c 37 20 40 40 0a 20 09 70 72 6f 63 20 63 20 1,7 @@. .proc c
2fc0: 61 72 67 73 20 7b 66 6f 72 6d 61 74 20 33 2c 5b args {format 3,[
2fd0: 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 7d 0a llength $args]}.
2fe0: 20 09 70 72 6f 63 20 64 20 61 72 67 73 20 7b 66 .proc d args {f
2ff0: 6f 72 6d 61 74 20 34 2c 5b 6c 6c 65 6e 67 74 68 ormat 4,[llength
3000: 20 24 61 72 67 73 5d 7d 0a 20 09 6e 61 6d 65 73 $args]}. .names
3010: 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 pace ensemble cr
3020: 65 61 74 65 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 eate -subcommand
3030: 73 20 7b 62 20 63 7d 20 2d 6d 61 70 20 7b 63 20 s {b c} -map {c
3040: 3a 3a 6e 73 3a 3a 64 7d 0a 2b 09 6e 61 6d 65 73 ::ns::d}.+.names
3050: 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 pace ensemble cr
3060: 65 61 74 65 20 2d 63 6f 6d 6d 61 6e 64 20 3a 3a eate -command ::
3070: 6e 73 61 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 73 nsa -subcommands
3080: 20 7b 62 20 63 7d 20 2d 6d 61 70 20 7b 63 20 64 {b c} -map {c d
3090: 7d 0a 20 20 20 20 20 7d 0a 20 7d 0a 20 74 65 73 }. }. }. tes
30a0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 38 t namespace-43.8
30b0: 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 73 {ensembles: lis
30c0: 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 6e t-and-map-driven
30d0: 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 50 20 } -setup $SETUP
30e0: 2d 62 6f 64 79 20 7b 0a 40 40 20 2d 31 35 39 39 -body {.@@ -1599
30f0: 2c 39 20 2b 31 36 31 33 2c 31 35 20 40 40 0a 20 ,9 +1613,15 @@.
3100: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 test namespace-4
3110: 33 2e 31 30 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 3.10 {ensembles:
3120: 20 6c 69 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 list-and-map-dr
3130: 69 76 65 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 iven} -setup $SE
3140: 54 55 50 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 TUP -body {.
3150: 20 6e 73 20 62 20 66 6f 6f 20 62 61 72 20 62 6f ns b foo bar bo
3160: 6f 20 73 70 6f 6e 67 20 77 69 62 62 6c 65 0a 20 o spong wibble.
3170: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 } -cleanup {name
3180: 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 7d space delete ns}
3190: 20 2d 72 65 73 75 6c 74 20 32 2c 35 0a 2b 74 65 -result 2,5.+te
31a0: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e st namespace-43.
31b0: 31 30 61 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 10a {ensembles:
31c0: 6c 69 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 list-and-map-dri
31d0: 76 65 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 54 ven} -setup $SET
31e0: 55 50 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 UP -body {.+
31f0: 6e 73 61 20 62 20 66 6f 6f 20 62 61 72 20 62 6f nsa b foo bar bo
3200: 6f 20 73 70 6f 6e 67 20 77 69 62 62 6c 65 0a 2b o spong wibble.+
3210: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 } -cleanup {name
3220: 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 7d space delete ns}
3230: 20 2d 72 65 73 75 6c 74 20 32 2c 35 0a 20 74 65 -result 2,5. te
3240: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e st namespace-43.
3250: 31 31 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 11 {ensembles: l
3260: 69 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 ist-and-map-driv
3270: 65 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 en} -setup $SETU
3280: 50 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 6e P -body {. n
3290: 73 20 63 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 s c foo bar boo
32a0: 73 70 6f 6e 67 20 77 69 62 62 6c 65 0a 20 7d 20 spong wibble. }
32b0: 2d 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 -cleanup {namesp
32c0: 61 63 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d ace delete ns} -
32d0: 72 65 73 75 6c 74 20 34 2c 35 0a 2b 74 65 73 74 result 4,5.+test
32e0: 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 31 namespace-43.11
32f0: 2e 61 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c .a {ensembles: l
3300: 69 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 ist-and-map-driv
3310: 65 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 en} -setup $SETU
3320: 50 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 6e P -body {.+ n
3330: 73 61 20 63 20 66 6f 6f 20 62 61 72 20 62 6f 6f sa c foo bar boo
3340: 20 73 70 6f 6e 67 20 77 69 62 62 6c 65 0a 2b 7d spong wibble.+}
3350: 20 2d 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 -cleanup {names
3360: 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 pace delete ns}
3370: 2d 72 65 73 75 6c 74 20 34 2c 35 0a 20 74 65 73 -result 4,5. tes
3380: 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 33 2e 31 t namespace-43.1
3390: 32 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 6c 69 2 {ensembles: li
33a0: 73 74 2d 61 6e 64 2d 6d 61 70 2d 64 72 69 76 65 st-and-map-drive
33b0: 6e 7d 20 2d 73 65 74 75 70 20 24 53 45 54 55 50 n} -setup $SETUP
33c0: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 6e 73 -body {. ns
33d0: 20 64 20 66 6f 6f 20 62 61 72 20 62 6f 6f 20 73 d foo bar boo s
33e0: 70 6f 6e 67 20 77 69 62 62 6c 65 0a 20 7d 20 2d pong wibble. } -
33f0: 63 6c 65 61 6e 75 70 20 7b 6e 61 6d 65 73 70 61 cleanup {namespa
3400: 63 65 20 64 65 6c 65 74 65 20 6e 73 7d 20 2d 72 ce delete ns} -r
3410: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 eturnCodes error
3420: 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 -result {unknow
3430: 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73 n or ambiguous s
3440: 75 62 63 6f 6d 6d 61 6e 64 20 22 64 22 3a 20 6d ubcommand "d": m
3450: 75 73 74 20 62 65 20 62 2c 20 6f 72 20 63 7d 0a ust be b, or c}.
3460: 40 40 20 2d 31 36 35 31 2c 37 20 2b 31 36 37 31 @@ -1651,7 +1671
3470: 2c 37 20 40 40 0a 20 20 20 20 20 66 6f 6f 62 61 ,7 @@. fooba
3480: 72 20 66 6f 6f 62 61 72 63 6f 6e 0a 20 7d 20 2d r foobarcon. } -
3490: 63 6c 65 61 6e 75 70 20 7b 0a 20 20 20 20 20 72 cleanup {. r
34a0: 65 6e 61 6d 65 20 66 6f 6f 62 61 72 20 7b 7d 0a ename foobar {}.
34b0: 2d 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 -} -returnCodes
34c0: 65 72 72 6f 72 20 2d 72 65 73 75 6c 74 20 7b 69 error -result {i
34d0: 6e 76 61 6c 69 64 20 63 6f 6d 6d 61 6e 64 20 6e nvalid command n
34e0: 61 6d 65 20 22 3a 3a 66 6f 6f 62 61 72 63 6f 6e ame "::foobarcon
34f0: 66 69 67 75 72 65 22 7d 0a 2b 7d 20 2d 72 65 74 figure"}.+} -ret
3500: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d urnCodes error -
3510: 72 65 73 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 result {invalid
3520: 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 22 66 6f command name "fo
3530: 6f 62 61 72 63 6f 6e 66 69 67 75 72 65 22 7d 0a obarconfigure"}.
3540: 20 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 . test namespac
3550: 65 2d 34 35 2e 31 20 7b 65 6e 73 65 6d 62 6c 65 e-45.1 {ensemble
3560: 3a 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 7d : introspection}
3570: 20 7b 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 63 {. namespac
3580: 65 20 65 76 61 6c 20 6e 73 20 7b 0a 40 40 20 2d e eval ns {.@@ -
3590: 31 36 37 32 2c 37 20 2b 31 36 39 32 2c 37 20 40 1672,7 +1692,7 @
35a0: 40 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 6e 61 @. }. na
35b0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e mespace delete n
35c0: 73 0a 20 20 20 20 20 73 65 74 20 72 65 73 75 6c s. set resul
35d0: 74 0a 2d 7d 20 7b 41 20 3a 3a 6e 73 3a 3a 78 7d t.-} {A ::ns::x}
35e0: 0a 2b 7d 20 7b 41 20 78 7d 0a 20 0a 20 74 65 73 .+} {A x}. . tes
35f0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 36 2e 31 t namespace-46.1
3600: 20 7b 65 6e 73 65 6d 62 6c 65 3a 20 6d 6f 64 69 {ensemble: modi
3610: 66 69 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 fication} {.
3620: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 namespace eval
3630: 6e 73 20 7b 0a 40 40 20 2d 31 36 39 34 2c 36 20 ns {.@@ -1694,6
3640: 2b 31 37 31 34 2c 32 36 20 40 40 0a 20 20 20 20 +1714,26 @@.
3650: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
3660: 65 20 6e 73 0a 20 20 20 20 20 73 65 74 20 72 65 e ns. set re
3670: 73 75 6c 74 0a 20 7d 20 7b 7b 41 20 3a 3a 6e 73 sult. } {{A ::ns
3680: 3a 3a 78 7d 20 31 32 33 20 7b 42 20 3a 3a 6e 73 ::x} 123 {B ::ns
3690: 3a 3a 78 7d 20 31 32 33 20 7b 7d 20 31 32 33 7d ::x} 123 {} 123}
36a0: 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 .+test namespace
36b0: 2d 34 36 2e 31 2e 61 20 7b 65 6e 73 65 6d 62 6c -46.1.a {ensembl
36c0: 65 3a 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 7d e: modification}
36d0: 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 {.+ namespac
36e0: 65 20 65 76 61 6c 20 6e 73 20 7b 0a 2b 09 6e 61 e eval ns {.+.na
36f0: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 78 mespace export x
3700: 0a 2b 09 70 72 6f 63 20 78 20 7b 7d 20 7b 66 6f .+.proc x {} {fo
3710: 72 6d 61 74 20 31 32 33 7d 0a 2b 0a 2b 09 23 20 rmat 123}.+.+.#
3720: 45 6e 73 65 6d 62 6c 65 20 6d 61 70 73 20 41 2d Ensemble maps A-
3730: 3e 78 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 >x.+.namespace e
3740: 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d nsemble create -
3750: 63 6f 6d 6d 61 6e 64 20 6e 73 20 2d 6d 61 70 20 command ns -map
3760: 7b 41 20 78 7d 0a 2b 09 73 65 74 20 3a 3a 72 65 {A x}.+.set ::re
3770: 73 75 6c 74 20 5b 6c 69 73 74 20 5b 6e 61 6d 65 sult [list [name
3780: 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 space ensemble c
3790: 6f 6e 66 69 67 75 72 65 20 6e 73 20 2d 6d 61 70 onfigure ns -map
37a0: 5d 20 5b 6e 73 20 41 5d 5d 0a 2b 0a 2b 09 23 20 ] [ns A]].+.+.#
37b0: 45 6e 73 65 6d 62 6c 65 20 6d 61 70 73 20 42 2d Ensemble maps B-
37c0: 3e 78 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 >x.+.namespace e
37d0: 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 75 72 nsemble configur
37e0: 65 20 6e 73 20 2d 6d 61 70 20 7b 42 20 78 7d 0a e ns -map {B x}.
37f0: 2b 09 6c 61 70 70 65 6e 64 20 3a 3a 72 65 73 75 +.lappend ::resu
3800: 6c 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 6e lt [namespace en
3810: 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 semble configure
3820: 20 6e 73 20 2d 6d 61 70 5d 20 5b 6e 73 20 42 5d ns -map] [ns B]
3830: 0a 2b 0a 2b 09 23 20 45 6e 73 65 6d 62 6c 65 20 .+.+.# Ensemble
3840: 6d 61 70 73 20 78 2d 3e 78 0a 2b 09 6e 61 6d 65 maps x->x.+.name
3850: 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 space ensemble c
3860: 6f 6e 66 69 67 75 72 65 20 6e 73 20 2d 6d 61 70 onfigure ns -map
3870: 20 7b 7d 0a 2b 09 6c 61 70 70 65 6e 64 20 3a 3a {}.+.lappend ::
3880: 72 65 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 63 result [namespac
3890: 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 e ensemble confi
38a0: 67 75 72 65 20 6e 73 20 2d 6d 61 70 5d 20 5b 6e gure ns -map] [n
38b0: 73 20 78 5d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 s x].+ }.+
38c0: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
38d0: 65 20 6e 73 0a 2b 20 20 20 20 73 65 74 20 72 65 e ns.+ set re
38e0: 73 75 6c 74 0a 2b 7d 20 7b 7b 41 20 78 7d 20 31 sult.+} {{A x} 1
38f0: 32 33 20 7b 42 20 78 7d 20 31 32 33 20 7b 7d 20 23 {B x} 123 {}
3900: 31 32 33 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 123}. test names
3910: 70 61 63 65 2d 34 36 2e 32 20 7b 65 6e 73 65 6d pace-46.2 {ensem
3920: 62 6c 65 3a 20 65 6e 73 65 6d 62 6c 65 73 20 72 ble: ensembles r
3930: 65 61 6c 6c 79 20 75 73 65 20 63 75 72 72 65 6e eally use curren
3940: 74 20 65 78 70 6f 72 74 20 6c 69 73 74 7d 20 7b t export list} {
3950: 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 . namespace
3960: 65 76 61 6c 20 6e 73 20 7b 0a 20 09 6e 61 6d 65 eval ns {. .name
3970: 73 70 61 63 65 20 65 78 70 6f 72 74 20 78 31 0a space export x1.
3980: 40 40 20 2d 31 38 31 36 2c 36 20 2b 31 38 35 36 @@ -1816,6 +1856
3990: 2c 33 35 20 40 40 0a 20 20 20 20 20 6c 61 70 70 ,35 @@. lapp
39a0: 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 end result [catc
39b0: 68 20 7b 6e 73 20 4d 61 67 69 63 20 66 6f 6f 20 h {ns Magic foo
39c0: 62 61 72 20 73 70 6f 6e 67 20 77 69 62 62 6c 65 bar spong wibble
39d0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 20 20 20 } msg] $msg.
39e0: 20 6c 69 73 74 20 24 72 65 73 75 6c 74 20 5b 6c list $result [l
39f0: 73 6f 72 74 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 sort [info comma
3a00: 6e 64 73 20 3a 3a 6e 73 3a 3a 2a 5d 5d 20 24 6c nds ::ns::*]] $l
3a10: 6f 67 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 65 og [namespace de
3a20: 6c 65 74 65 20 6e 73 5d 0a 20 7d 20 7b 7b 30 20 lete ns]. } {{0
3a30: 32 20 30 20 32 20 30 20 32 20 30 20 32 20 31 20 2 0 2 0 2 0 2 1
3a40: 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 70 72 6f 74 {unknown or prot
3a50: 65 63 74 65 64 20 73 75 62 63 6f 6d 6d 61 6e 64 ected subcommand
3a60: 20 22 4d 61 67 69 63 22 7d 7d 20 7b 3a 3a 6e 73 "Magic"}} {::ns
3a70: 3a 3a 4d 61 67 69 63 20 3a 3a 6e 73 3a 3a 61 20 ::Magic ::ns::a
3a80: 3a 3a 6e 73 3a 3a 62 20 3a 3a 6e 73 3a 3a 63 7d ::ns::b ::ns::c}
3a90: 20 7b 7b 6d 61 6b 69 6e 67 20 61 7d 20 7b 72 75 {{making a} {ru
3aa0: 6e 6e 69 6e 67 20 6e 73 20 61 20 62 20 63 7d 20 nning ns a b c}
3ab0: 7b 72 75 6e 6e 69 6e 67 20 6e 73 20 61 20 62 20 {running ns a b
3ac0: 63 7d 20 7b 6d 61 6b 69 6e 67 20 62 7d 20 7b 72 c} {making b} {r
3ad0: 75 6e 6e 69 6e 67 20 6e 73 20 62 20 63 20 64 7d unning ns b c d}
3ae0: 20 7b 6d 61 6b 69 6e 67 20 63 7d 20 7b 72 75 6e {making c} {run
3af0: 6e 69 6e 67 20 6e 73 20 63 20 64 20 65 7d 20 7b ning ns c d e} {
3b00: 75 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 20 2d 20 unknown Magic -
3b10: 61 72 67 73 20 3d 20 66 6f 6f 20 62 61 72 20 73 args = foo bar s
3b20: 70 6f 6e 67 20 77 69 62 62 6c 65 7d 7d 20 7b 7d pong wibble}} {}
3b30: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }.+test namespac
3b40: 65 2d 34 37 2e 31 2e 61 20 7b 65 6e 73 65 6d 62 e-47.1.a {ensemb
3b50: 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 le: unknown hand
3b60: 6c 65 72 7d 20 7b 0a 2b 20 20 20 20 73 65 74 20 ler} {.+ set
3b70: 6c 6f 67 20 7b 7d 0a 2b 20 20 20 20 6e 61 6d 65 log {}.+ name
3b80: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
3b90: 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f +.namespace expo
3ba0: 72 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a 2b 09 70 72 rt {[a-z]*}.+.pr
3bb0: 6f 63 20 4d 61 67 69 63 20 7b 65 6e 73 65 6d 62 oc Magic {ensemb
3bc0: 6c 65 20 73 75 62 63 6d 64 20 61 72 67 73 7d 20 le subcmd args}
3bd0: 7b 0a 2b 09 20 20 20 20 67 6c 6f 62 61 6c 20 6c {.+. global l
3be0: 6f 67 0a 2b 09 20 20 20 20 69 66 20 7b 5b 73 74 og.+. if {[st
3bf0: 72 69 6e 67 20 6d 61 74 63 68 20 7b 5b 61 2d 7a ring match {[a-z
3c00: 5d 2a 7d 20 24 73 75 62 63 6d 64 5d 7d 20 7b 0a ]*} $subcmd]} {.
3c10: 2b 09 09 6c 61 70 70 65 6e 64 20 6c 6f 67 20 22 +..lappend log "
3c20: 6d 61 6b 69 6e 67 20 24 73 75 62 63 6d 64 22 0a making $subcmd".
3c30: 2b 09 09 70 72 6f 63 20 24 73 75 62 63 6d 64 20 +..proc $subcmd
3c40: 61 72 67 73 20 7b 0a 2b 09 09 20 20 20 20 67 6c args {.+.. gl
3c50: 6f 62 61 6c 20 6c 6f 67 0a 2b 09 09 20 20 20 20 obal log.+..
3c60: 6c 61 70 70 65 6e 64 20 6c 6f 67 20 22 72 75 6e lappend log "run
3c70: 6e 69 6e 67 20 5b 69 6e 66 6f 20 6c 65 76 65 6c ning [info level
3c80: 20 30 5d 22 0a 2b 09 09 20 20 20 20 6c 6c 65 6e 0]".+.. llen
3c90: 67 74 68 20 24 61 72 67 73 0a 2b 09 09 7d 0a 2b gth $args.+..}.+
3ca0: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 09 . } else {.+.
3cb0: 09 6c 61 70 70 65 6e 64 20 6c 6f 67 20 22 75 6e .lappend log "un
3cc0: 6b 6e 6f 77 6e 20 24 73 75 62 63 6d 64 20 2d 20 known $subcmd -
3cd0: 61 72 67 73 20 3d 20 24 61 72 67 73 22 0a 2b 09 args = $args".+.
3ce0: 09 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 .return -code er
3cf0: 72 6f 72 20 5c 0a 2b 09 09 09 22 75 6e 6b 6e 6f ror \.+..."unkno
3d00: 77 6e 20 6f 72 20 70 72 6f 74 65 63 74 65 64 20 wn or protected
3d10: 73 75 62 63 6f 6d 6d 61 6e 64 20 5c 22 24 73 75 subcommand \"$su
3d20: 62 63 6d 64 5c 22 22 0a 2b 09 20 20 20 20 7d 0a bcmd\"".+. }.
3d30: 2b 09 7d 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 +.}.+.namespace
3d40: 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 ensemble create
3d50: 2d 75 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 0a 2b -unknown Magic.+
3d60: 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 }.+ set r
3d70: 65 73 75 6c 74 20 7b 7d 0a 2b 20 20 20 20 6c 61 esult {}.+ la
3d80: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
3d90: 74 63 68 20 7b 6e 73 20 61 20 62 20 63 7d 20 6d tch {ns a b c} m
3da0: 73 67 5d 20 24 6d 73 67 0a 2b 20 20 20 20 6c 61 sg] $msg.+ la
3db0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
3dc0: 74 63 68 20 7b 6e 73 20 61 20 62 20 63 7d 20 6d tch {ns a b c} m
3dd0: 73 67 5d 20 24 6d 73 67 0a 2b 20 20 20 20 6c 61 sg] $msg.+ la
3de0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
3df0: 74 63 68 20 7b 6e 73 20 62 20 63 20 64 7d 20 6d tch {ns b c d} m
3e00: 73 67 5d 20 24 6d 73 67 0a 2b 20 20 20 20 6c 61 sg] $msg.+ la
3e10: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
3e20: 74 63 68 20 7b 6e 73 20 63 20 64 20 65 7d 20 6d tch {ns c d e} m
3e30: 73 67 5d 20 24 6d 73 67 0a 2b 20 20 20 20 6c 61 sg] $msg.+ la
3e40: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
3e50: 74 63 68 20 7b 6e 73 20 4d 61 67 69 63 20 66 6f tch {ns Magic fo
3e60: 6f 20 62 61 72 20 73 70 6f 6e 67 20 77 69 62 62 o bar spong wibb
3e70: 6c 65 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2b 20 le} msg] $msg.+
3e80: 20 20 20 6c 69 73 74 20 24 72 65 73 75 6c 74 20 list $result
3e90: 5b 6c 73 6f 72 74 20 5b 69 6e 66 6f 20 63 6f 6d [lsort [info com
3ea0: 6d 61 6e 64 73 20 3a 3a 6e 73 3a 3a 2a 5d 5d 20 mands ::ns::*]]
3eb0: 24 6c 6f 67 20 5b 6e 61 6d 65 73 70 61 63 65 20 $log [namespace
3ec0: 64 65 6c 65 74 65 20 6e 73 5d 0a 2b 7d 20 7b 7b delete ns].+} {{
3ed0: 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 0 2 0 2 0 2 0 2
3ee0: 31 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 70 72 1 {unknown or pr
3ef0: 6f 74 65 63 74 65 64 20 73 75 62 63 6f 6d 6d 61 otected subcomma
3f00: 6e 64 20 22 4d 61 67 69 63 22 7d 7d 20 7b 3a 3a nd "Magic"}} {::
3f10: 6e 73 3a 3a 4d 61 67 69 63 20 3a 3a 6e 73 3a 3a ns::Magic ::ns::
3f20: 61 20 3a 3a 6e 73 3a 3a 62 20 3a 3a 6e 73 3a 3a a ::ns::b ::ns::
3f30: 63 7d 20 7b 7b 6d 61 6b 69 6e 67 20 61 7d 20 7b c} {{making a} {
3f40: 72 75 6e 6e 69 6e 67 20 6e 73 20 61 20 62 20 63 running ns a b c
3f50: 7d 20 7b 72 75 6e 6e 69 6e 67 20 6e 73 20 61 20 } {running ns a
3f60: 62 20 63 7d 20 7b 6d 61 6b 69 6e 67 20 62 7d 20 b c} {making b}
3f70: 7b 72 75 6e 6e 69 6e 67 20 6e 73 20 62 20 63 20 {running ns b c
3f80: 64 7d 20 7b 6d 61 6b 69 6e 67 20 63 7d 20 7b 72 d} {making c} {r
3f90: 75 6e 6e 69 6e 67 20 6e 73 20 63 20 64 20 65 7d unning ns c d e}
3fa0: 20 7b 75 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 20 {unknown Magic
3fb0: 2d 20 61 72 67 73 20 3d 20 66 6f 6f 20 62 61 72 - args = foo bar
3fc0: 20 73 70 6f 6e 67 20 77 69 62 62 6c 65 7d 7d 20 spong wibble}}
3fd0: 7b 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 {}}. test namesp
3fe0: 61 63 65 2d 34 37 2e 32 20 7b 65 6e 73 65 6d 62 ace-47.2 {ensemb
3ff0: 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 le: unknown hand
4000: 6c 65 72 7d 20 7b 0a 20 20 20 20 20 6e 61 6d 65 ler} {. name
4010: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
4020: 20 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f .namespace expo
4030: 72 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a 40 40 20 2d rt {[a-z]*}.@@ -
4040: 31 38 33 34 2c 36 20 2b 31 39 30 33 2c 32 34 20 1834,6 +1903,24
4050: 40 40 0a 20 20 20 20 20 28 65 6e 73 65 6d 62 6c @@. (ensembl
4060: 65 20 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d e unknown subcom
4070: 6d 61 6e 64 20 68 61 6e 64 6c 65 72 29 0a 20 20 mand handler).
4080: 20 20 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 invoked from
4090: 77 69 74 68 69 6e 0a 20 22 6e 73 20 73 70 6f 6e within. "ns spon
40a0: 67 22 7d 20 7b 7d 7d 0a 2b 74 65 73 74 20 6e 61 g"} {}}.+test na
40b0: 6d 65 73 70 61 63 65 2d 34 37 2e 32 2e 61 20 7b mespace-47.2.a {
40c0: 65 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 ensemble: unknow
40d0: 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 2b 20 20 n handler} {.+
40e0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
40f0: 20 6e 73 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 ns {.+.namespac
4100: 65 20 65 78 70 6f 72 74 20 7b 5b 61 2d 7a 5d 2a e export {[a-z]*
4110: 7d 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 20 7b }.+.proc Magic {
4120: 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 6d 64 20 ensemble subcmd
4130: 61 72 67 73 7d 20 7b 0a 2b 09 20 20 20 20 65 72 args} {.+. er
4140: 72 6f 72 20 66 6f 6f 62 61 72 0a 2b 09 7d 0a 2b ror foobar.+.}.+
4150: 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d .namespace ensem
4160: 62 6c 65 20 63 72 65 61 74 65 20 2d 75 6e 6b 6e ble create -unkn
4170: 6f 77 6e 20 4d 61 67 69 63 0a 2b 20 20 20 20 7d own Magic.+ }
4180: 0a 2b 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 .+ list [catc
4190: 68 20 7b 6e 73 20 73 70 6f 6e 67 7d 20 6d 73 67 h {ns spong} msg
41a0: 5d 20 24 6d 73 67 20 24 3a 3a 65 72 72 6f 72 49 ] $msg $::errorI
41b0: 6e 66 6f 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 nfo [namespace d
41c0: 65 6c 65 74 65 20 6e 73 5d 0a 2b 7d 20 7b 31 20 elete ns].+} {1
41d0: 66 6f 6f 62 61 72 20 7b 66 6f 6f 62 61 72 0a 2b foobar {foobar.+
41e0: 20 20 20 20 77 68 69 6c 65 20 65 78 65 63 75 74 while execut
41f0: 69 6e 67 0a 2b 22 65 72 72 6f 72 20 66 6f 6f 62 ing.+"error foob
4200: 61 72 22 0a 2b 20 20 20 20 28 70 72 6f 63 65 64 ar".+ (proced
4210: 75 72 65 20 22 4d 61 67 69 63 22 20 6c 69 6e 65 ure "Magic" line
4220: 20 32 29 0a 2b 20 20 20 20 69 6e 76 6f 6b 65 64 2).+ invoked
4230: 20 66 72 6f 6d 20 77 69 74 68 69 6e 0a 2b 22 4d from within.+"M
4240: 61 67 69 63 20 3a 3a 6e 73 20 73 70 6f 6e 67 22 agic ::ns spong"
4250: 0a 2b 20 20 20 20 28 65 6e 73 65 6d 62 6c 65 20 .+ (ensemble
4260: 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 unknown subcomma
4270: 6e 64 20 68 61 6e 64 6c 65 72 29 0a 2b 20 20 20 nd handler).+
4280: 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 invoked from wi
4290: 74 68 69 6e 0a 2b 22 6e 73 20 73 70 6f 6e 67 22 thin.+"ns spong"
42a0: 7d 20 7b 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 } {}}. test name
42b0: 73 70 61 63 65 2d 34 37 2e 33 20 7b 65 6e 73 65 space-47.3 {ense
42c0: 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 mble: unknown ha
42d0: 6e 64 6c 65 72 7d 20 7b 0a 20 20 20 20 20 6e 61 ndler} {. na
42e0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 mespace eval ns
42f0: 7b 0a 20 09 76 61 72 69 61 62 6c 65 20 63 6f 75 {. .variable cou
4300: 6e 74 20 30 0a 40 40 20 2d 31 38 34 39 2c 36 20 nt 0.@@ -1849,6
4310: 2b 31 39 33 36 2c 32 31 20 40 40 0a 20 20 20 20 +1936,21 @@.
4320: 20 7d 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 }. list [ca
4330: 74 63 68 20 7b 6e 73 20 73 70 6f 6e 67 7d 20 6d tch {ns spong} m
4340: 73 67 5d 20 24 6d 73 67 20 24 6e 73 3a 3a 63 6f sg] $msg $ns::co
4350: 75 6e 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 unt [namespace d
4360: 65 6c 65 74 65 20 6e 73 5d 0a 20 7d 20 7b 31 20 elete ns]. } {1
4370: 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 {unknown or ambi
4380: 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 guous subcommand
4390: 20 22 73 70 6f 6e 67 22 3a 20 6d 75 73 74 20 62 "spong": must b
43a0: 65 20 61 2c 20 62 2c 20 6f 72 20 63 7d 20 31 20 e a, b, or c} 1
43b0: 7b 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 {}}.+test namesp
43c0: 61 63 65 2d 34 37 2e 33 20 7b 65 6e 73 65 6d 62 ace-47.3 {ensemb
43d0: 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 le: unknown hand
43e0: 6c 65 72 7d 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 ler} {.+ name
43f0: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
4400: 2b 09 76 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 +.variable count
4410: 20 30 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 0.+.namespace e
4420: 78 70 6f 72 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a 2b xport {[a-z]*}.+
4430: 09 70 72 6f 63 20 61 20 7b 7d 20 7b 7d 0a 2b 09 .proc a {} {}.+.
4440: 70 72 6f 63 20 63 20 7b 7d 20 7b 7d 0a 2b 09 70 proc c {} {}.+.p
4450: 72 6f 63 20 4d 61 67 69 63 20 7b 65 6e 73 65 6d roc Magic {ensem
4460: 62 6c 65 20 73 75 62 63 6d 64 20 61 72 67 73 7d ble subcmd args}
4470: 20 7b 0a 2b 09 20 20 20 20 76 61 72 69 61 62 6c {.+. variabl
4480: 65 20 63 6f 75 6e 74 0a 2b 09 20 20 20 20 69 6e e count.+. in
4490: 63 72 20 63 6f 75 6e 74 0a 2b 09 20 20 20 20 70 cr count.+. p
44a0: 72 6f 63 20 62 20 7b 7d 20 7b 7d 0a 2b 09 7d 0a roc b {} {}.+.}.
44b0: 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 +.namespace ense
44c0: 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 75 6e 6b mble create -unk
44d0: 6e 6f 77 6e 20 4d 61 67 69 63 0a 2b 20 20 20 20 nown Magic.+
44e0: 7d 0a 2b 20 20 20 20 6c 69 73 74 20 5b 63 61 74 }.+ list [cat
44f0: 63 68 20 7b 6e 73 20 73 70 6f 6e 67 7d 20 6d 73 ch {ns spong} ms
4500: 67 5d 20 24 6d 73 67 20 24 6e 73 3a 3a 63 6f 75 g] $msg $ns::cou
4510: 6e 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 64 65 nt [namespace de
4520: 6c 65 74 65 20 6e 73 5d 0a 2b 7d 20 7b 31 20 7b lete ns].+} {1 {
4530: 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 unknown or ambig
4540: 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 uous subcommand
4550: 22 73 70 6f 6e 67 22 3a 20 6d 75 73 74 20 62 65 "spong": must be
4560: 20 61 2c 20 62 2c 20 6f 72 20 63 7d 20 31 20 7b a, b, or c} 1 {
4570: 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 }}. test namespa
4580: 63 65 2d 34 37 2e 34 20 7b 65 6e 73 65 6d 62 6c ce-47.4 {ensembl
4590: 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c e: unknown handl
45a0: 65 72 7d 20 7b 0a 20 20 20 20 20 6e 61 6d 65 73 er} {. names
45b0: 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 20 pace eval ns {.
45c0: 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 .namespace expor
45d0: 74 20 7b 5b 61 2d 7a 5d 2a 7d 0a 40 40 20 2d 31 t {[a-z]*}.@@ -1
45e0: 38 36 32 2c 36 20 2b 31 39 36 34 2c 31 39 20 40 862,6 +1964,19 @
45f0: 40 0a 20 20 20 20 20 72 65 73 75 6c 74 20 6f 66 @. result of
4600: 20 65 6e 73 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 ensemble unknow
4610: 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e n subcommand han
4620: 64 6c 65 72 3a 20 3a 3a 6e 73 3a 3a 4d 61 67 69 dler: ::ns::Magi
4630: 63 20 3a 3a 6e 73 20 73 70 6f 6e 67 0a 20 20 20 c ::ns spong.
4640: 20 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 invoked from w
4650: 69 74 68 69 6e 0a 20 22 6e 73 20 73 70 6f 6e 67 ithin. "ns spong
4660: 22 7d 20 7b 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d "} {}}.+test nam
4670: 65 73 70 61 63 65 2d 34 37 2e 34 2e 61 20 7b 65 espace-47.4.a {e
4680: 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e nsemble: unknown
4690: 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 2b 20 20 20 handler} {.+
46a0: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 namespace eval
46b0: 6e 73 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 ns {.+.namespace
46c0: 20 65 78 70 6f 72 74 20 7b 5b 61 2d 7a 5d 2a 7d export {[a-z]*}
46d0: 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 20 7b 65 .+.proc Magic {e
46e0: 6e 73 65 6d 62 6c 65 20 73 75 62 63 6d 64 20 61 nsemble subcmd a
46f0: 72 67 73 7d 20 7b 0a 2b 09 20 20 20 20 72 65 74 rgs} {.+. ret
4700: 75 72 6e 20 2d 63 6f 64 65 20 62 72 65 61 6b 0a urn -code break.
4710: 2b 09 7d 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 +.}.+.namespace
4720: 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 ensemble create
4730: 2d 75 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 0a 2b -unknown Magic.+
4740: 20 20 20 20 7d 0a 2b 20 20 20 20 6c 69 73 74 20 }.+ list
4750: 5b 63 61 74 63 68 20 7b 6e 73 20 73 70 6f 6e 67 [catch {ns spong
4760: 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24 3a 3a 65 } msg] $msg $::e
4770: 72 72 6f 72 49 6e 66 6f 20 5b 6e 61 6d 65 73 70 rrorInfo [namesp
4780: 61 63 65 20 64 65 6c 65 74 65 20 6e 73 5d 0a 2b ace delete ns].+
4790: 7d 20 7b 31 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 } {1 {unknown su
47a0: 62 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 bcommand handler
47b0: 20 72 65 74 75 72 6e 65 64 20 62 61 64 20 63 6f returned bad co
47c0: 64 65 3a 20 62 72 65 61 6b 7d 20 7b 75 6e 6b 6e de: break} {unkn
47d0: 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 68 own subcommand h
47e0: 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 65 64 20 andler returned
47f0: 62 61 64 20 63 6f 64 65 3a 20 62 72 65 61 6b 0a bad code: break.
4800: 2b 20 20 20 20 72 65 73 75 6c 74 20 6f 66 20 65 + result of e
4810: 6e 73 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 6e 20 nsemble unknown
4820: 73 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c subcommand handl
4830: 65 72 3a 20 4d 61 67 69 63 20 3a 3a 6e 73 20 73 er: Magic ::ns s
4840: 70 6f 6e 67 0a 2b 20 20 20 20 69 6e 76 6f 6b 65 pong.+ invoke
4850: 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 0a 2b 22 d from within.+"
4860: 6e 73 20 73 70 6f 6e 67 22 7d 20 7b 7d 7d 0a 20 ns spong"} {}}.
4870: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 test namespace-4
4880: 37 2e 35 20 7b 65 6e 73 65 6d 62 6c 65 3a 20 75 7.5 {ensemble: u
4890: 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 nknown handler}
48a0: 7b 0a 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 {. namespace
48b0: 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 ensemble create
48c0: 20 2d 63 6f 6d 6d 61 6e 64 20 66 6f 6f 20 2d 75 -command foo -u
48d0: 6e 6b 6e 6f 77 6e 20 62 61 72 0a 20 20 20 20 20 nknown bar.
48e0: 70 72 6f 63 20 62 61 72 20 7b 61 72 67 73 7d 20 proc bar {args}
48f0: 7b 0a 40 40 20 2d 31 38 38 39 2c 36 20 2b 32 30 {.@@ -1889,6 +20
4900: 30 34 2c 34 35 20 40 40 0a 20 20 20 20 20 77 68 04,45 @@. wh
4910: 69 6c 65 20 70 61 72 73 69 6e 67 20 72 65 73 75 ile parsing resu
4920: 6c 74 20 6f 66 20 65 6e 73 65 6d 62 6c 65 20 75 lt of ensemble u
4930: 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e nknown subcomman
4940: 64 20 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 69 d handler. i
4950: 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 74 68 nvoked from with
4960: 69 6e 0a 20 22 66 6f 6f 20 62 61 72 22 7d 7d 0a in. "foo bar"}}.
4970: 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d +test namespace-
4980: 34 37 2e 37 2e 61 20 7b 65 6e 73 65 6d 62 6c 65 47.7.a {ensemble
4990: 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 : unknown handle
49a0: 72 20 69 6e 76 6f 6b 65 73 20 69 6e 20 65 6e 73 r invokes in ens
49b0: 65 6d 62 6c 65 27 73 20 6e 73 7d 20 5c 0a 2b 2d emble's ns} \.+-
49c0: 62 6f 64 79 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 body {.+ name
49d0: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 30 20 7b space eval ns0 {
49e0: 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 49 6d 70 .+.proc MagicImp
49f0: 6c 20 61 72 67 73 20 7b 0a 2b 09 20 20 20 20 72 l args {.+. r
4a00: 65 74 75 72 6e 20 7b 4d 61 67 69 63 20 63 61 6c eturn {Magic cal
4a10: 6c 65 64 7d 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a led}.+.}.+ }.
4a20: 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 + namespace e
4a30: 76 61 6c 20 6e 73 31 20 7b 0a 2b 09 6e 61 6d 65 val ns1 {.+.name
4a40: 73 70 61 63 65 20 70 61 74 68 20 3a 3a 6e 73 30 space path ::ns0
4a50: 0a 2b 09 70 72 6f 63 20 4d 61 67 69 63 20 7b 65 .+.proc Magic {e
4a60: 6e 73 65 6d 62 6c 65 20 73 75 62 63 6d 64 20 61 nsemble subcmd a
4a70: 72 67 73 7d 20 7b 0a 2b 09 20 20 20 20 72 65 74 rgs} {.+. ret
4a80: 75 72 6e 20 5b 6c 69 73 74 20 4d 61 67 69 63 49 urn [list MagicI
4a90: 6d 70 6c 5d 0a 2b 09 7d 0a 2b 09 6e 61 6d 65 73 mpl].+.}.+.names
4aa0: 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 pace ensemble cr
4ab0: 65 61 74 65 20 2d 75 6e 6b 6e 6f 77 6e 20 4d 61 eate -unknown Ma
4ac0: 67 69 63 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 gic.+ }.+
4ad0: 6e 73 31 20 66 6f 6f 0a 2b 7d 20 2d 63 6c 65 61 ns1 foo.+} -clea
4ae0: 6e 75 70 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 nup {.+ names
4af0: 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 30 0a pace delete ns0.
4b00: 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 + namespace d
4b10: 65 6c 65 74 65 20 6e 73 31 0a 2b 7d 20 2d 72 65 elete ns1.+} -re
4b20: 73 75 6c 74 20 7b 4d 61 67 69 63 20 63 61 6c 6c sult {Magic call
4b30: 65 64 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 ed}.+test namesp
4b40: 61 63 65 2d 34 37 2e 38 2e 61 20 7b 65 6e 73 65 ace-47.8.a {ense
4b50: 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 61 mble: unknown ha
4b60: 6e 64 6c 65 72 20 69 6e 76 6f 6b 65 73 20 69 6e ndler invokes in
4b70: 20 65 6e 73 65 6d 62 6c 65 27 73 20 6e 73 7d 20 ensemble's ns}
4b80: 5c 0a 2b 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 \.+-body {.+
4b90: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e namespace eval n
4ba0: 73 30 20 7b 0a 2b 09 70 72 6f 63 20 4d 61 67 69 s0 {.+.proc Magi
4bb0: 63 49 6d 70 6c 20 61 72 67 73 20 7b 0a 2b 09 20 cImpl args {.+.
4bc0: 20 20 20 72 65 74 75 72 6e 20 7b 4d 61 67 69 63 return {Magic
4bd0: 20 63 61 6c 6c 65 64 7d 0a 2b 09 7d 0a 2b 20 20 called}.+.}.+
4be0: 20 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 }.+ namespa
4bf0: 63 65 20 65 76 61 6c 20 6e 73 31 20 7b 0a 2b 09 ce eval ns1 {.+.
4c00: 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 namespace unknow
4c10: 6e 20 5b 6c 69 73 74 20 6e 61 6d 65 73 70 61 63 n [list namespac
4c20: 65 20 65 76 61 6c 20 3a 3a 6e 73 30 5d 0a 2b 09 e eval ::ns0].+.
4c30: 70 72 6f 63 20 4d 61 67 69 63 20 7b 65 6e 73 65 proc Magic {ense
4c40: 6d 62 6c 65 20 73 75 62 63 6d 64 20 61 72 67 73 mble subcmd args
4c50: 7d 20 7b 0a 2b 09 20 20 20 20 72 65 74 75 72 6e } {.+. return
4c60: 20 5b 6c 69 73 74 20 4d 61 67 69 63 49 6d 70 6c [list MagicImpl
4c70: 5d 0a 2b 09 7d 0a 2b 09 6e 61 6d 65 73 70 61 63 ].+.}.+.namespac
4c80: 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 e ensemble creat
4c90: 65 20 2d 75 6e 6b 6e 6f 77 6e 20 4d 61 67 69 63 e -unknown Magic
4ca0: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e 73 31 .+ }.+ ns1
4cb0: 20 66 6f 6f 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 foo.+} -cleanup
4cc0: 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 {.+ namespac
4cd0: 65 20 64 65 6c 65 74 65 20 6e 73 30 0a 2b 20 20 e delete ns0.+
4ce0: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 namespace dele
4cf0: 74 65 20 6e 73 31 0a 2b 7d 20 2d 72 65 73 75 6c te ns1.+} -resul
4d00: 74 20 7b 4d 61 67 69 63 20 63 61 6c 6c 65 64 7d t {Magic called}
4d10: 0a 2b 0a 20 0a 20 74 65 73 74 20 6e 61 6d 65 73 .+. . test names
4d20: 70 61 63 65 2d 34 38 2e 31 20 7b 65 6e 73 65 6d pace-48.1 {ensem
4d30: 62 6c 65 73 20 61 6e 64 20 6e 61 6d 65 73 70 61 bles and namespa
4d40: 63 65 20 69 6d 70 6f 72 74 3a 20 75 6e 6b 6e 6f ce import: unkno
4d50: 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 20 20 wn handler} {.
4d60: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
4d70: 6c 20 66 6f 6f 20 7b 0a 40 40 20 2d 31 39 32 36 l foo {.@@ -1926
4d80: 2c 36 20 2b 32 30 38 30 2c 34 32 20 40 40 0a 20 ,6 +2080,42 @@.
4d90: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 namespace de
4da0: 6c 65 74 65 20 66 6f 6f 0a 20 20 20 20 20 73 65 lete foo. se
4db0: 74 20 72 65 73 75 6c 74 0a 20 7d 20 7b 7b 2d 6d t result. } {{-m
4dc0: 61 70 20 7b 7d 20 2d 6e 61 6d 65 73 70 61 63 65 ap {} -namespace
4dd0: 20 3a 3a 66 6f 6f 20 2d 70 72 65 66 69 78 65 73 ::foo -prefixes
4de0: 20 31 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 73 20 1 -subcommands
4df0: 78 20 2d 75 6e 6b 6e 6f 77 6e 20 3a 3a 66 6f 6f x -unknown ::foo
4e00: 3a 3a 75 7d 20 58 58 58 20 31 32 33 20 3a 3a 66 ::u} XXX 123 ::f
4e10: 6f 6f 3a 3a 62 61 72 20 7b 79 20 34 35 36 7d 20 oo::bar {y 456}
4e20: 59 59 59 20 34 35 36 20 3a 3a 66 6f 6f 3a 3a 62 YYY 456 ::foo::b
4e30: 61 72 20 7b 7a 20 37 38 39 7d 20 5a 5a 5a 20 37 ar {z 789} ZZZ 7
4e40: 38 39 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 89}.+test namesp
4e50: 61 63 65 2d 34 38 2e 31 2e 61 20 7b 65 6e 73 65 ace-48.1.a {ense
4e60: 6d 62 6c 65 73 20 61 6e 64 20 6e 61 6d 65 73 70 mbles and namesp
4e70: 61 63 65 20 69 6d 70 6f 72 74 3a 20 75 6e 6b 6e ace import: unkn
4e80: 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 2b own handler} {.+
4e90: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 namespace ev
4ea0: 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61 6d 65 73 al foo {.+.names
4eb0: 70 61 63 65 20 65 78 70 6f 72 74 20 62 61 72 0a pace export bar.
4ec0: 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 +.namespace ense
4ed0: 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 63 6f 6d mble create -com
4ee0: 6d 61 6e 64 20 62 61 72 20 2d 75 6e 6b 6e 6f 77 mand bar -unknow
4ef0: 6e 20 75 20 2d 73 75 62 63 6f 6d 6d 20 78 0a 2b n u -subcomm x.+
4f00: 09 70 72 6f 63 20 75 20 7b 65 6e 73 20 61 72 67 .proc u {ens arg
4f10: 73 7d 20 7b 0a 2b 09 20 20 20 20 67 6c 6f 62 61 s} {.+. globa
4f20: 6c 20 72 65 73 75 6c 74 0a 2b 09 20 20 20 20 6c l result.+. l
4f30: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 24 65 append result $e
4f40: 6e 73 20 24 61 72 67 73 0a 2b 09 20 20 20 20 6e ns $args.+. n
4f50: 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c amespace ensembl
4f60: 65 20 63 6f 6e 66 69 67 20 24 65 6e 73 20 2d 73 e config $ens -s
4f70: 75 62 63 6f 6d 6d 61 6e 64 20 7b 78 20 79 7d 0a ubcommand {x y}.
4f80: 2b 09 7d 0a 2b 09 70 72 6f 63 20 75 32 20 7b 65 +.}.+.proc u2 {e
4f90: 6e 73 20 61 72 67 73 7d 20 7b 0a 2b 09 20 20 20 ns args} {.+.
4fa0: 20 67 6c 6f 62 61 6c 20 72 65 73 75 6c 74 0a 2b global result.+
4fb0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
4fc0: 75 6c 74 20 24 65 6e 73 20 24 61 72 67 73 0a 2b ult $ens $args.+
4fd0: 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 . namespace e
4fe0: 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 20 3a nsemble config :
4ff0: 3a 62 61 72 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 :bar -subcommand
5000: 20 7b 78 20 79 20 7a 7d 0a 2b 09 7d 0a 2b 09 70 {x y z}.+.}.+.p
5010: 72 6f 63 20 78 20 61 72 67 73 20 7b 0a 2b 09 20 roc x args {.+.
5020: 20 20 20 67 6c 6f 62 61 6c 20 72 65 73 75 6c 74 global result
5030: 0a 2b 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 .+. lappend r
5040: 65 73 75 6c 74 20 58 58 58 20 24 61 72 67 73 0a esult XXX $args.
5050: 2b 09 7d 0a 2b 09 70 72 6f 63 20 79 20 61 72 67 +.}.+.proc y arg
5060: 73 20 7b 0a 2b 09 20 20 20 20 67 6c 6f 62 61 6c s {.+. global
5070: 20 72 65 73 75 6c 74 0a 2b 09 20 20 20 20 6c 61 result.+. la
5080: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 59 59 59 ppend result YYY
5090: 20 24 61 72 67 73 0a 2b 09 7d 0a 2b 09 70 72 6f $args.+.}.+.pro
50a0: 63 20 7a 20 61 72 67 73 20 7b 0a 2b 09 20 20 20 c z args {.+.
50b0: 20 67 6c 6f 62 61 6c 20 72 65 73 75 6c 74 0a 2b global result.+
50c0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
50d0: 75 6c 74 20 5a 5a 5a 20 24 61 72 67 73 0a 2b 09 ult ZZZ $args.+.
50e0: 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e 61 }.+ }.+ na
50f0: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 2d mespace import -
5100: 66 6f 72 63 65 20 66 6f 6f 3a 3a 62 61 72 0a 2b force foo::bar.+
5110: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b set result [
5120: 6c 69 73 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 list [namespace
5130: 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 20 ensemble config
5140: 62 61 72 5d 5d 0a 2b 20 20 20 20 62 61 72 20 78 bar]].+ bar x
5150: 20 31 32 33 0a 2b 20 20 20 20 62 61 72 20 79 20 123.+ bar y
5160: 34 35 36 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 456.+ namespa
5170: 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 ce ensemble conf
5180: 69 67 20 62 61 72 20 2d 75 6e 6b 6e 6f 77 6e 20 ig bar -unknown
5190: 3a 3a 66 6f 6f 3a 3a 75 32 0a 2b 20 20 20 20 62 ::foo::u2.+ b
51a0: 61 72 20 7a 20 37 38 39 0a 2b 20 20 20 20 6e 61 ar z 789.+ na
51b0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 mespace delete f
51c0: 6f 6f 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 oo.+ set resu
51d0: 6c 74 0a 2b 7d 20 7b 7b 2d 6d 61 70 20 7b 7d 20 lt.+} {{-map {}
51e0: 2d 6e 61 6d 65 73 70 61 63 65 20 3a 3a 66 6f 6f -namespace ::foo
51f0: 20 2d 70 72 65 66 69 78 65 73 20 31 20 2d 73 75 -prefixes 1 -su
5200: 62 63 6f 6d 6d 61 6e 64 73 20 78 20 2d 75 6e 6b bcommands x -unk
5210: 6e 6f 77 6e 20 75 7d 20 58 58 58 20 31 32 33 20 nown u} XXX 123
5220: 3a 3a 66 6f 6f 3a 3a 62 61 72 20 7b 79 20 34 35 ::foo::bar {y 45
5230: 36 7d 20 59 59 59 20 34 35 36 20 3a 3a 66 6f 6f 6} YYY 456 ::foo
5240: 3a 3a 62 61 72 20 7b 7a 20 37 38 39 7d 20 5a 5a ::bar {z 789} ZZ
5250: 5a 20 37 38 39 7d 0a 20 74 65 73 74 20 6e 61 6d Z 789}. test nam
5260: 65 73 70 61 63 65 2d 34 38 2e 32 20 7b 65 6e 73 espace-48.2 {ens
5270: 65 6d 62 6c 65 73 20 61 6e 64 20 6e 61 6d 65 73 embles and names
5280: 70 61 63 65 20 69 6d 70 6f 72 74 3a 20 65 78 69 pace import: exi
5290: 73 74 73 7d 20 7b 0a 20 20 20 20 20 6e 61 6d 65 sts} {. name
52a0: 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b space eval foo {
52b0: 0a 20 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 . .namespace ens
52c0: 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 63 6f emble create -co
52d0: 6d 6d 61 6e 64 20 3a 3a 66 6f 6f 3a 3a 62 61 72 mmand ::foo::bar
52e0: 0a 40 40 20 2d 32 35 36 38 2c 37 20 2b 32 37 35 .@@ -2568,7 +275
52f0: 38 2c 32 34 20 40 40 0a 20 20 20 20 20 72 65 6e 8,24 @@. ren
5300: 61 6d 65 20 75 6e 6b 6e 6f 77 6e 2e 73 61 76 65 ame unknown.save
5310: 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 20 20 20 20 20 ::unknown.
5320: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
5330: 3a 20 5b 6c 69 73 74 20 6e 61 6d 65 73 70 61 63 : [list namespac
5340: 65 20 75 6e 6b 6e 6f 77 6e 20 24 68 61 6e 64 6c e unknown $handl
5350: 65 72 5d 0a 20 7d 20 2d 72 65 73 75 6c 74 20 53 er]. } -result S
5360: 55 43 43 45 53 53 0a 2d 20 20 20 20 0a 2b 0a 2b UCCESS.- .+.+
5370: 23 0a 2b 23 20 54 49 50 20 32 38 33 3a 20 54 65 #.+# TIP 283: Te
5380: 73 74 73 20 66 6f 72 20 69 6e 74 65 72 61 63 74 sts for interact
5390: 69 6f 6e 20 6f 66 20 65 6e 73 65 6d 62 6c 65 73 ion of ensembles
53a0: 2c 20 70 61 74 68 73 20 61 6e 64 20 6e 61 6d 65 , paths and name
53b0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 0a 2b 23 space unknown.+#
53c0: 0a 2b 23 20 4e 6f 74 65 20 74 68 61 74 20 73 6f .+# Note that so
53d0: 6d 65 20 6f 74 68 65 72 20 74 65 73 74 73 20 6e me other tests n
53e0: 61 6d 65 64 20 22 2e 61 22 20 61 72 65 20 69 6e amed ".a" are in
53f0: 63 6c 75 64 65 64 20 61 62 6f 76 65 20 69 6e 20 cluded above in
5400: 74 68 65 20 65 6e 73 65 6d 62 6c 65 0a 2b 23 20 the ensemble.+#
5410: 73 65 63 74 69 6f 6e 0a 2b 0a 2b 23 20 2d 75 6e section.+.+# -un
5420: 6b 6e 6f 77 6e 20 66 6f 75 6e 64 20 69 6e 20 70 known found in p
5430: 61 74 68 0a 2b 23 20 2d 75 6e 6b 6e 6f 77 6e 20 ath.+# -unknown
5440: 66 6f 75 6e 64 20 62 79 20 6e 73 2d 75 6e 6b 6e found by ns-unkn
5450: 6f 77 6e 0a 2b 23 20 2d 75 6e 6b 6e 6f 77 6e 20 own.+# -unknown
5460: 66 6f 6c 6c 6f 77 73 20 70 61 74 68 0a 2b 23 20 follows path.+#
5470: 2d 75 6e 6b 6e 6f 77 6e 20 66 6f 6c 6c 6f 77 73 -unknown follows
5480: 20 6e 73 2d 75 6e 6b 6e 6f 77 6e 0a 2b 23 20 2d ns-unknown.+# -
5490: 6d 61 70 20 66 6f 6c 6c 6f 77 73 20 70 61 74 68 map follows path
54a0: 0a 2b 23 20 2d 6d 61 70 20 66 6f 6c 6c 6f 77 73 .+# -map follows
54b0: 20 6e 73 2d 75 6e 6b 6e 6f 77 6e 0a 2b 23 20 2d ns-unknown.+# -
54c0: 73 75 62 63 6f 6d 6d 61 6e 64 73 20 66 6f 6c 6c subcommands foll
54d0: 6f 77 73 20 70 61 74 68 0a 2b 23 20 2d 73 75 62 ows path.+# -sub
54e0: 63 6f 6d 6d 61 6e 64 73 20 66 6f 6c 6c 6f 77 73 commands follows
54f0: 20 6e 73 2d 75 6e 6b 6e 6f 77 6e 0a 2b 23 20 65 ns-unknown.+# e
5500: 78 70 6f 72 74 73 20 66 6f 6c 6c 6f 77 20 70 61 xports follow pa
5510: 74 68 20 28 3f 29 0a 2b 23 20 65 78 70 6f 72 74 th (?).+# export
5520: 73 20 66 6f 6c 6c 6f 77 20 6e 73 2d 75 6e 6b 6e s follow ns-unkn
5530: 6f 77 6e 20 28 3f 29 0a 2b 0a 20 23 20 63 6c 65 own (?).+. # cle
5540: 61 6e 75 70 0a 20 63 61 74 63 68 20 7b 72 65 6e anup. catch {ren
5550: 61 6d 65 20 63 6d 64 31 20 7b 7d 7d 0a 20 63 61 ame cmd1 {}}. ca
5560: 74 63 68 20 7b 75 6e 73 65 74 20 6c 7d 0a tch {unset l}.