Attachment "nsinvoke.patch" to
ticket [1577324fff]
added by
msofer
2006-10-15 02:07:26.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d 65 73 Index: doc/names
0010: 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d pace.n.=========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 73 70 l/tcl/doc/namesp
0080: 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 ace.n,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 31 ng revision 1.21
00a0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 31 20 .diff -u -r1.21
00b0: 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 2d 20 namespace.n.---
00c0: 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e 6e 09 doc/namespace.n.
00d0: 32 36 20 41 75 67 20 32 30 30 36 20 31 33 3a 30 26 Aug 2006 13:0
00e0: 30 3a 33 38 20 2d 30 30 30 30 09 31 2e 32 31 0a 0:38 -0000.1.21.
00f0: 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 +++ doc/namespac
0100: 65 2e 6e 09 31 34 20 4f 63 74 20 32 30 30 36 20 e.n.14 Oct 2006
0110: 31 39 3a 30 33 3a 35 32 20 2d 30 30 30 30 0a 40 19:03:52 -0000.@
0120: 40 20 2d 31 38 30 2c 36 20 2b 31 38 30 2c 31 31 @ -180,6 +180,11
0130: 20 40 40 0a 20 49 66 20 61 6e 6f 74 68 65 72 20 @@. If another
0140: 63 6f 6d 6d 61 6e 64 20 69 73 20 64 65 66 69 6e command is defin
0150: 65 64 20 61 6e 64 20 65 78 70 6f 72 74 65 64 20 ed and exported
0160: 69 6e 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 in this namespac
0170: 65 20 6c 61 74 65 72 20 6f 6e 2c 0a 20 69 74 20 e later on,. it
0180: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 69 6d 70 6f will not be impo
0190: 72 74 65 64 2e 0a 20 2e 54 50 0a 2b 5c 66 42 6e rted.. .TP.+\fBn
01a0: 61 6d 65 73 70 61 63 65 20 69 6e 76 6f 6b 65 5c amespace invoke\
01b0: 66 52 20 5c 66 49 6e 61 6d 65 73 70 61 63 65 20 fR \fInamespace
01c0: 63 6d 64 5c 66 52 20 3f 5c 66 49 61 72 67 20 2e cmd\fR ?\fIarg .
01d0: 2e 2e 5c 66 52 3f 0a 2b 49 6e 76 6f 6b 65 73 20 ..\fR?.+Invokes
01e0: 69 6e 20 63 61 6c 6c 65 72 27 73 20 73 63 6f 70 in caller's scop
01f0: 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 63 61 e the command ca
0200: 6c 6c 65 64 20 5c 66 49 63 6d 64 5c 66 52 2c 20 lled \fIcmd\fR,
0210: 61 73 20 72 65 73 6f 6c 76 65 64 20 66 72 6f 6d as resolved from
0220: 0a 2b 6e 61 6d 65 73 70 61 63 65 20 5c 66 49 6e .+namespace \fIn
0230: 61 6d 65 73 70 61 63 65 5c 66 52 2c 20 77 69 74 amespace\fR, wit
0240: 68 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 61 h the supplied a
0250: 72 67 75 6d 65 6e 74 73 2e 20 49 66 0a 2b 5c 66 rguments. If.+\f
0260: 49 6e 61 6d 65 73 70 61 63 65 5c 66 52 20 64 6f Inamespace\fR do
0270: 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 74 68 es not exist, th
0280: 65 20 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72 6e e command return
0290: 73 20 61 6e 20 61 72 72 6f 72 2e 0a 2b 2e 54 50 s an arror..+.TP
02a0: 0a 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 69 . \fBnamespace i
02b0: 6e 73 63 6f 70 65 5c 66 52 20 5c 66 49 6e 61 6d nscope\fR \fInam
02c0: 65 73 70 61 63 65 5c 66 52 20 5c 66 49 73 63 72 espace\fR \fIscr
02d0: 69 70 74 5c 66 52 20 3f 5c 66 49 61 72 67 20 2e ipt\fR ?\fIarg .
02e0: 2e 2e 5c 66 52 3f 0a 20 45 78 65 63 75 74 65 73 ..\fR?. Executes
02f0: 20 61 20 73 63 72 69 70 74 20 69 6e 20 74 68 65 a script in the
0300: 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 20 context of the
0310: 73 70 65 63 69 66 69 65 64 20 5c 66 49 6e 61 6d specified \fInam
0320: 65 73 70 61 63 65 5c 66 52 2e 0a 20 54 68 69 73 espace\fR.. This
0330: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 command is not
0340: 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 75 expected to be u
0350: 73 65 64 20 64 69 72 65 63 74 6c 79 20 62 79 20 sed directly by
0360: 70 72 6f 67 72 61 6d 6d 65 72 73 3b 0a 49 6e 64 programmers;.Ind
0370: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e ex: generic/tclN
0380: 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d amesp.c.========
0390: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
03d0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
03e0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
03f0: 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65 74 clNamesp.c,v.ret
0400: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
0410: 20 31 2e 31 30 31 0a 64 69 66 66 20 2d 75 20 2d 1.101.diff -u -
0420: 72 31 2e 31 30 31 20 74 63 6c 4e 61 6d 65 73 70 r1.101 tclNamesp
0430: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
0440: 63 6c 4e 61 6d 65 73 70 2e 63 09 31 30 20 4f 63 clNamesp.c.10 Oc
0450: 74 20 32 30 30 36 20 31 36 3a 34 35 3a 30 34 20 t 2006 16:45:04
0460: 2d 30 30 30 30 09 31 2e 31 30 31 0a 2b 2b 2b 20 -0000.1.101.+++
0470: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 generic/tclNames
0480: 70 2e 63 09 31 34 20 4f 63 74 20 32 30 30 36 20 p.c.14 Oct 2006
0490: 31 39 3a 30 34 3a 30 39 20 2d 30 30 30 30 0a 40 19:04:09 -0000.@
04a0: 40 20 2d 32 31 37 2c 36 20 2b 32 31 37 2c 38 20 @ -217,6 +217,8
04b0: 40 40 0a 20 73 74 61 74 69 63 20 76 6f 69 64 09 @@. static void.
04c0: 09 4e 61 6d 65 73 70 61 63 65 46 72 65 65 28 4e .NamespaceFree(N
04d0: 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 29 amespace *nsPtr)
04e0: 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09 4e ;. static int..N
04f0: 61 6d 65 73 70 61 63 65 49 6d 70 6f 72 74 43 6d amespaceImportCm
0500: 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d d(ClientData dum
0510: 6d 79 2c 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 my,Tcl_Interp *i
0520: 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20 20 69 nterp,. ... i
0530: 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a nt objc, Tcl_Obj
0540: 20 2a 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d 29 3b *const objv[]);
0550: 0a 2b 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 .+static int..Na
0560: 6d 65 73 70 61 63 65 49 6e 76 6f 6b 65 43 6d 64 mespaceInvokeCmd
0570: 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d (ClientData dumm
0580: 79 2c 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e y,Tcl_Interp *in
0590: 74 65 72 70 2c 0a 2b 09 09 09 20 20 20 20 69 6e terp,.+... in
05a0: 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 t objc, Tcl_Obj
05b0: 2a 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d 29 3b 0a *const objv[]);.
05c0: 20 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 6d static int..Nam
05d0: 65 73 70 61 63 65 49 6e 73 63 6f 70 65 43 6d 64 espaceInscopeCmd
05e0: 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d (ClientData dumm
05f0: 79 2c 0a 20 09 09 09 20 20 20 20 54 63 6c 5f 49 y,. ... Tcl_I
0600: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 69 6e nterp *interp,in
0610: 74 20 6f 62 6a 63 2c 54 63 6c 5f 4f 62 6a 20 2a t objc,Tcl_Obj *
0620: 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d 29 3b 0a 20 const objv[]);.
0630: 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 6d 65 static int..Name
0640: 73 70 61 63 65 4f 72 69 67 69 6e 43 6d 64 28 43 spaceOriginCmd(C
0650: 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c lientData dummy,
0660: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
0670: 72 70 2c 0a 40 40 20 2d 32 39 33 36 2c 31 34 20 rp,.@@ -2936,14
0680: 2b 32 39 33 35 2c 31 34 20 40 40 0a 20 20 20 20 +2935,14 @@.
0690: 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68 static const ch
06a0: 61 72 20 2a 73 75 62 43 6d 64 73 5b 5d 20 3d 20 ar *subCmds[] =
06b0: 7b 0a 20 09 22 63 68 69 6c 64 72 65 6e 22 2c 20 {. ."children",
06c0: 22 63 6f 64 65 22 2c 20 22 63 75 72 72 65 6e 74 "code", "current
06d0: 22 2c 20 22 64 65 6c 65 74 65 22 2c 20 22 65 6e ", "delete", "en
06e0: 73 65 6d 62 6c 65 22 2c 0a 20 09 22 65 76 61 6c semble",. ."eval
06f0: 22 2c 20 22 65 78 69 73 74 73 22 2c 20 22 65 78 ", "exists", "ex
0700: 70 6f 72 74 22 2c 20 22 66 6f 72 67 65 74 22 2c port", "forget",
0710: 20 22 69 6d 70 6f 72 74 22 2c 0a 2d 09 22 69 6e "import",.-."in
0720: 73 63 6f 70 65 22 2c 20 22 6f 72 69 67 69 6e 22 scope", "origin"
0730: 2c 20 22 70 61 72 65 6e 74 22 2c 20 22 70 61 74 , "parent", "pat
0740: 68 22 2c 20 22 71 75 61 6c 69 66 69 65 72 73 22 h", "qualifiers"
0750: 2c 0a 2d 09 22 74 61 69 6c 22 2c 20 22 75 6e 6b ,.-."tail", "unk
0760: 6e 6f 77 6e 22 2c 20 22 75 70 76 61 72 22 2c 20 nown", "upvar",
0770: 22 77 68 69 63 68 22 2c 20 4e 55 4c 4c 0a 2b 09 "which", NULL.+.
0780: 22 69 6e 76 6f 6b 65 22 2c 20 22 69 6e 73 63 6f "invoke", "insco
0790: 70 65 22 2c 20 22 6f 72 69 67 69 6e 22 2c 20 22 pe", "origin", "
07a0: 70 61 72 65 6e 74 22 2c 20 22 70 61 74 68 22 2c parent", "path",
07b0: 0a 2b 09 22 71 75 61 6c 69 66 69 65 72 73 22 2c .+."qualifiers",
07c0: 20 22 74 61 69 6c 22 2c 20 22 75 6e 6b 6e 6f 77 "tail", "unknow
07d0: 6e 22 2c 20 22 75 70 76 61 72 22 2c 20 22 77 68 n", "upvar", "wh
07e0: 69 63 68 22 2c 20 4e 55 4c 4c 0a 20 20 20 20 20 ich", NULL.
07f0: 7d 3b 0a 20 20 20 20 20 65 6e 75 6d 20 4e 53 53 };. enum NSS
0800: 75 62 43 6d 64 49 64 78 20 7b 0a 20 09 4e 53 43 ubCmdIdx {. .NSC
0810: 68 69 6c 64 72 65 6e 49 64 78 2c 20 4e 53 43 6f hildrenIdx, NSCo
0820: 64 65 49 64 78 2c 20 4e 53 43 75 72 72 65 6e 74 deIdx, NSCurrent
0830: 49 64 78 2c 20 4e 53 44 65 6c 65 74 65 49 64 78 Idx, NSDeleteIdx
0840: 2c 20 4e 53 45 6e 73 65 6d 62 6c 65 49 64 78 2c , NSEnsembleIdx,
0850: 0a 20 09 4e 53 45 76 61 6c 49 64 78 2c 20 4e 53 . .NSEvalIdx, NS
0860: 45 78 69 73 74 73 49 64 78 2c 20 4e 53 45 78 70 ExistsIdx, NSExp
0870: 6f 72 74 49 64 78 2c 20 4e 53 46 6f 72 67 65 74 ortIdx, NSForget
0880: 49 64 78 2c 20 4e 53 49 6d 70 6f 72 74 49 64 78 Idx, NSImportIdx
0890: 2c 0a 2d 09 4e 53 49 6e 73 63 6f 70 65 49 64 78 ,.-.NSInscopeIdx
08a0: 2c 20 4e 53 4f 72 69 67 69 6e 49 64 78 2c 20 4e , NSOriginIdx, N
08b0: 53 50 61 72 65 6e 74 49 64 78 2c 20 4e 53 50 61 SParentIdx, NSPa
08c0: 74 68 49 64 78 2c 20 4e 53 51 75 61 6c 69 66 69 thIdx, NSQualifi
08d0: 65 72 73 49 64 78 2c 0a 2d 09 4e 53 54 61 69 6c ersIdx,.-.NSTail
08e0: 49 64 78 2c 20 4e 53 55 6e 6b 6e 6f 77 6e 49 64 Idx, NSUnknownId
08f0: 78 2c 20 4e 53 55 70 76 61 72 49 64 78 2c 20 4e x, NSUpvarIdx, N
0900: 53 57 68 69 63 68 49 64 78 0a 2b 09 4e 53 49 6e SWhichIdx.+.NSIn
0910: 76 6f 6b 65 49 64 78 2c 20 4e 53 49 6e 73 63 6f vokeIdx, NSInsco
0920: 70 65 49 64 78 2c 20 4e 53 4f 72 69 67 69 6e 49 peIdx, NSOriginI
0930: 64 78 2c 20 4e 53 50 61 72 65 6e 74 49 64 78 2c dx, NSParentIdx,
0940: 20 4e 53 50 61 74 68 49 64 78 2c 0a 2b 09 4e 53 NSPathIdx,.+.NS
0950: 51 75 61 6c 69 66 69 65 72 73 49 64 78 2c 20 4e QualifiersIdx, N
0960: 53 54 61 69 6c 49 64 78 2c 20 4e 53 55 6e 6b 6e STailIdx, NSUnkn
0970: 6f 77 6e 49 64 78 2c 20 4e 53 55 70 76 61 72 49 ownIdx, NSUpvarI
0980: 64 78 2c 20 4e 53 57 68 69 63 68 49 64 78 0a 20 dx, NSWhichIdx.
0990: 20 20 20 20 7d 3b 0a 20 20 20 20 20 69 6e 74 20 };. int
09a0: 69 6e 64 65 78 2c 20 72 65 73 75 6c 74 3b 0a 20 index, result;.
09b0: 0a 40 40 20 2d 32 39 39 33 2c 36 20 2b 32 39 39 .@@ -2993,6 +299
09c0: 32 2c 39 20 40 40 0a 20 20 20 20 20 63 61 73 65 2,9 @@. case
09d0: 20 4e 53 49 6d 70 6f 72 74 49 64 78 3a 0a 20 09 NSImportIdx:. .
09e0: 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 result = Namespa
09f0: 63 65 49 6d 70 6f 72 74 43 6d 64 28 63 6c 69 65 ceImportCmd(clie
0a00: 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 ntData, interp,
0a10: 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 09 62 objc, objv);. .b
0a20: 72 65 61 6b 3b 0a 2b 20 20 20 20 63 61 73 65 20 reak;.+ case
0a30: 4e 53 49 6e 76 6f 6b 65 49 64 78 3a 0a 2b 09 72 NSInvokeIdx:.+.r
0a40: 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 esult = Namespac
0a50: 65 49 6e 76 6f 6b 65 43 6d 64 28 63 6c 69 65 6e eInvokeCmd(clien
0a60: 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f tData, interp, o
0a70: 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 2b 09 62 72 bjc, objv);.+.br
0a80: 65 61 6b 3b 0a 20 20 20 20 20 63 61 73 65 20 4e eak;. case N
0a90: 53 49 6e 73 63 6f 70 65 49 64 78 3a 0a 20 09 72 SInscopeIdx:. .r
0aa0: 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 esult = Namespac
0ab0: 65 49 6e 73 63 6f 70 65 43 6d 64 28 63 6c 69 65 eInscopeCmd(clie
0ac0: 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 ntData, interp,
0ad0: 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 09 62 objc, objv);. .b
0ae0: 72 65 61 6b 3b 0a 40 40 20 2d 33 37 36 33 2c 36 reak;.@@ -3763,6
0af0: 20 2b 33 37 36 35 2c 37 36 20 40 40 0a 20 2f 2a +3765,76 @@. /*
0b00: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *------------
0b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2b ----------. *.+
0b50: 20 2a 20 4e 61 6d 65 73 70 61 63 65 49 6e 76 6f * NamespaceInvo
0b60: 6b 65 43 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a keCmd --.+ *.+ *
0b70: 09 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 6c .Invoked to impl
0b80: 65 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 73 ement the "names
0b90: 70 61 63 65 20 69 6e 76 6f 6b 65 22 20 63 6f 6d pace invoke" com
0ba0: 6d 61 6e 64 20 74 68 61 74 20 69 6e 76 6f 6b 65 mand that invoke
0bb0: 73 20 61 0a 2b 20 2a 09 63 6f 6d 6d 61 6e 64 20 s a.+ *.command
0bc0: 69 6e 20 61 20 70 72 65 64 65 66 69 6e 65 64 20 in a predefined
0bd0: 6e 61 6d 65 73 70 61 63 65 2e 20 48 61 6e 64 6c namespace. Handl
0be0: 65 73 20 74 68 65 20 73 79 6e 74 61 78 0a 2b 20 es the syntax.+
0bf0: 2a 0a 2b 20 2a 09 20 20 20 20 6e 61 6d 65 73 70 *.+ *. namesp
0c00: 61 63 65 20 69 6e 76 6f 6b 65 20 6e 73 20 63 6d ace invoke ns cm
0c10: 64 20 3f 61 72 67 31 3f 20 3f 61 72 67 32 3f 20 d ?arg1? ?arg2?
0c20: 2e 2e 2e 0a 2b 20 2a 0a 2b 20 2a 20 20 20 20 20 ....+ *.+ *
0c30: 20 54 68 69 73 20 69 6e 76 6f 6b 65 73 20 74 68 This invokes th
0c40: 65 20 63 6f 6d 6d 61 6e 64 20 63 6d 64 2c 20 61 e command cmd, a
0c50: 73 20 72 65 73 6f 6c 76 65 64 20 66 72 6f 6d 20 s resolved from
0c60: 6e 61 6d 65 73 70 61 63 65 20 6e 73 2c 20 77 69 namespace ns, wi
0c70: 74 68 20 74 68 65 0a 2b 20 2a 20 20 20 20 20 20 th the.+ *
0c80: 73 75 70 70 6c 69 65 64 20 61 72 67 75 6d 65 6e supplied argumen
0c90: 74 73 2e 20 49 74 20 69 73 20 73 69 6d 69 6c 61 ts. It is simila
0ca0: 72 20 74 6f 0a 2b 20 2a 0a 2b 20 2a 20 20 20 20 r to.+ *.+ *
0cb0: 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 namespace
0cc0: 65 76 61 6c 20 6e 73 20 5b 6c 69 73 74 20 63 6d eval ns [list cm
0cd0: 64 20 3f 61 72 67 31 3f 20 3f 61 72 67 32 3f 20 d ?arg1? ?arg2?
0ce0: 2e 2e 2e 5d 0a 2b 20 2a 0a 2b 20 2a 20 20 20 20 ...].+ *.+ *
0cf0: 20 20 75 70 20 74 6f 20 74 68 65 20 66 61 63 74 up to the fact
0d00: 20 74 68 61 74 20 69 74 20 65 78 65 63 75 74 65 that it execute
0d10: 73 20 69 6e 20 74 68 65 20 63 61 6c 6c 65 72 27 s in the caller'
0d20: 73 20 63 6f 6e 74 65 78 74 3a 20 69 74 20 64 6f s context: it do
0d30: 65 73 20 2a 6e 6f 74 2a 0a 2b 20 2a 20 20 20 20 es *not*.+ *
0d40: 20 20 70 75 73 68 20 61 20 6e 65 77 20 43 61 6c push a new Cal
0d50: 6c 46 72 61 6d 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 lFrame..+ *.+ *
0d60: 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 52 65 74 Results:.+ *.Ret
0d70: 75 72 6e 73 20 54 43 4c 5f 4f 4b 20 69 66 20 74 urns TCL_OK if t
0d80: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 he namespace is
0d90: 66 6f 75 6e 64 20 61 6e 64 20 74 68 65 20 63 6f found and the co
0da0: 6d 6d 61 6e 64 20 69 73 20 65 78 65 63 75 74 65 mmand is execute
0db0: 64 0a 2b 20 2a 09 73 75 63 63 65 73 73 66 75 6c d.+ *.successful
0dc0: 6c 79 2e 20 52 65 74 75 72 6e 73 20 54 43 4c 5f ly. Returns TCL_
0dd0: 45 52 52 4f 52 20 69 66 20 61 6e 79 74 68 69 6e ERROR if anythin
0de0: 67 20 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2b 20 g goes wrong..+
0df0: 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 *.+ * Side effec
0e00: 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 ts:.+ *.Returns
0e10: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 the result of th
0e20: 65 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 74 68 65 e command in the
0e30: 20 69 6e 74 65 72 70 72 65 74 65 72 27 73 20 72 interpreter's r
0e40: 65 73 75 6c 74 20 6f 62 6a 65 63 74 2e 0a 2b 20 esult object..+
0e50: 2a 09 49 66 20 61 6e 79 74 68 69 6e 67 20 67 6f *.If anything go
0e60: 65 73 20 77 72 6f 6e 67 2c 20 74 68 69 73 20 66 es wrong, this f
0e70: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 unction returns
0e80: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 an error message
0e90: 20 61 73 20 74 68 65 0a 2b 20 2a 09 72 65 73 75 as the.+ *.resu
0ea0: 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d lt..+ *.+ *-----
0eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ef0: 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 73 74 61 74 69 63 -.+ */.+.+static
0f00: 20 69 6e 74 0a 2b 4e 61 6d 65 73 70 61 63 65 49 int.+NamespaceI
0f10: 6e 76 6f 6b 65 43 6d 64 28 0a 2b 20 20 20 20 43 nvokeCmd(.+ C
0f20: 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c lientData dummy,
0f30: 09 09 2f 2a 20 4e 6f 74 20 75 73 65 64 2e 20 2a ../* Not used. *
0f40: 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 /.+ Tcl_Inter
0f50: 70 20 2a 69 6e 74 65 72 70 2c 09 09 2f 2a 20 43 p *interp,../* C
0f60: 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 urrent interpret
0f70: 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 er. */.+ int
0f80: 6f 62 6a 63 2c 09 09 09 2f 2a 20 4e 75 6d 62 65 objc,.../* Numbe
0f90: 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 20 r of arguments.
0fa0: 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 */.+ Tcl_Obj
0fb0: 2a 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d 29 09 2f *const objv[])./
0fc0: 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62 6a 65 63 * Argument objec
0fd0: 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 49 ts. */.+{.+ I
0fe0: 6e 74 65 72 70 20 2a 69 50 74 72 20 3d 20 28 49 nterp *iPtr = (I
0ff0: 6e 74 65 72 70 20 2a 29 20 69 6e 74 65 72 70 3b nterp *) interp;
1000: 0a 2b 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 .+ Tcl_Namesp
1010: 61 63 65 20 2a 6e 61 6d 65 73 70 61 63 65 50 74 ace *namespacePt
1020: 72 3b 0a 2b 20 20 20 20 69 6e 74 20 72 65 73 75 r;.+ int resu
1030: 6c 74 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f lt;.+.+ if (o
1040: 62 6a 63 20 3c 20 34 29 20 7b 0a 2b 09 54 63 6c bjc < 4) {.+.Tcl
1050: 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e _WrongNumArgs(in
1060: 74 65 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 terp, 2, objv, "
1070: 6e 61 6d 65 20 63 6d 64 20 3f 61 72 67 2e 2e 2e name cmd ?arg...
1080: 3f 22 29 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43 ?");.+.return TC
1090: 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a L_ERROR;.+ }.
10a0: 2b 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 +.+ /*.+
10b0: 2a 20 54 72 79 20 74 6f 20 72 65 73 6f 6c 76 65 * Try to resolve
10c0: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 72 the namespace r
10d0: 65 66 65 72 65 6e 63 65 2c 20 63 61 63 68 69 6e eference, cachin
10e0: 67 20 74 68 65 20 72 65 73 75 6c 74 20 69 6e 20 g the result in
10f0: 74 68 65 0a 2b 20 20 20 20 20 2a 20 6e 61 6d 65 the.+ * name
1100: 73 70 61 63 65 20 6f 62 6a 65 63 74 20 61 6c 6f space object alo
1110: 6e 67 20 74 68 65 20 77 61 79 2e 20 49 66 20 74 ng the way. If t
1120: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 he namespace is
1130: 6e 6f 74 20 66 6f 75 6e 64 2c 20 72 65 74 75 72 not found, retur
1140: 6e 0a 2b 20 20 20 20 20 2a 20 61 6e 20 65 72 72 n.+ * an err
1150: 6f 72 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b or..+ */.+.+
1160: 20 20 20 20 72 65 73 75 6c 74 20 3d 20 54 63 6c result = Tcl
1170: 47 65 74 4e 61 6d 65 73 70 61 63 65 46 72 6f 6d GetNamespaceFrom
1180: 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 Obj(interp, objv
1190: 5b 32 5d 2c 20 26 6e 61 6d 65 73 70 61 63 65 50 [2], &namespaceP
11a0: 74 72 29 3b 0a 2b 20 20 20 20 69 66 20 28 72 65 tr);.+ if (re
11b0: 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 sult != TCL_OK)
11c0: 7b 0a 2b 09 72 65 74 75 72 6e 20 72 65 73 75 6c {.+.return resul
11d0: 74 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 69 t;.+ }.+ i
11e0: 66 20 28 6e 61 6d 65 73 70 61 63 65 50 74 72 20 f (namespacePtr
11f0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54 63 6c == NULL) {.+.Tcl
1200: 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e _AppendResult(in
1210: 74 65 72 70 2c 20 22 75 6e 6b 6e 6f 77 6e 20 6e terp, "unknown n
1220: 61 6d 65 73 70 61 63 65 20 5c 22 22 2c 0a 2b 09 amespace \"",.+.
1230: 09 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f .Tcl_GetString(o
1240: 62 6a 76 5b 32 5d 29 2c 20 22 5c 22 22 2c 20 4e bjv[2]), "\"", N
1250: 55 4c 4c 29 3b 0a 2b 09 72 65 74 75 72 6e 20 54 ULL);.+.return T
1260: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d CL_ERROR;.+ }
1270: 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 .+.+ /*.+
1280: 20 2a 20 49 6e 76 6f 6b 65 20 74 68 65 20 63 6f * Invoke the co
1290: 6d 6d 61 6e 64 20 69 6e 20 74 68 65 20 72 65 71 mmand in the req
12a0: 75 65 73 74 65 64 20 6e 61 6d 65 73 70 61 63 65 uested namespace
12b0: 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 .+ */.+.+
12c0: 20 69 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 iPtr->lookupNsP
12d0: 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 65 20 tr = (Namespace
12e0: 2a 29 20 6e 61 6d 65 73 70 61 63 65 50 74 72 3b *) namespacePtr;
12f0: 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c .+ return Tcl
1300: 5f 45 76 61 6c 4f 62 6a 76 28 69 6e 74 65 72 70 _EvalObjv(interp
1310: 2c 20 6f 62 6a 63 2d 33 2c 20 6f 62 6a 76 2b 33 , objc-3, objv+3
1320: 2c 20 54 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f 4b , TCL_EVAL_INVOK
1330: 45 29 3b 0a 2b 7d 20 20 20 0a 2b 0c 0a 2b 2f 2a E);.+} .+..+/*
1340: 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .+ *------------
1350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 ----------.+ *.
1390: 20 2a 20 4e 61 6d 65 73 70 61 63 65 49 6e 73 63 * NamespaceInsc
13a0: 6f 70 65 43 6d 64 20 2d 2d 0a 20 20 2a 0a 20 20 opeCmd --. *.
13b0: 2a 09 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 *.Invoked to imp
13c0: 6c 65 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 lement the "name
13d0: 73 70 61 63 65 20 69 6e 73 63 6f 70 65 22 20 63 space inscope" c
13e0: 6f 6d 6d 61 6e 64 20 74 68 61 74 20 65 78 65 63 ommand that exec
13f0: 75 74 65 73 20 61 0a utes a.