Attachment "tip181-4.patch" to
ticket [958222ffff]
added by
tallniel
2005-06-14 05:08:22.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 4e 61 6d 65 73 Index: doc/Names
0010: 70 61 63 65 2e 33 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d pace.3.=========
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 4e 61 6d 65 73 70 l/tcl/doc/Namesp
0080: 61 63 65 2e 33 2c 76 0a 72 65 74 72 69 65 76 69 ace.3,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 37 0a ng revision 1.7.
00a0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 37 20 4e 61 diff -u -r1.7 Na
00b0: 6d 65 73 70 61 63 65 2e 33 0a 2d 2d 2d 20 64 6f mespace.3.--- do
00c0: 63 2f 4e 61 6d 65 73 70 61 63 65 2e 33 09 37 20 c/Namespace.3.7
00d0: 4f 63 74 20 32 30 30 34 20 31 35 3a 31 35 3a 33 Oct 2004 15:15:3
00e0: 38 20 2d 30 30 30 30 09 31 2e 37 0a 2b 2b 2b 20 8 -0000.1.7.+++
00f0: 64 6f 63 2f 4e 61 6d 65 73 70 61 63 65 2e 33 09 doc/Namespace.3.
0100: 31 33 20 4a 75 6e 20 32 30 30 35 20 32 32 3a 30 13 Jun 2005 22:0
0110: 34 3a 34 35 20 2d 30 30 30 30 0a 40 40 20 2d 31 4:45 -0000.@@ -1
0120: 33 2c 37 20 2b 31 33 2c 37 20 40 40 0a 20 2e 54 3,7 +13,7 @@. .T
0130: 48 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 H Tcl_Namespace
0140: 33 20 38 2e 35 20 54 63 6c 20 22 54 63 6c 20 4c 3 8.5 Tcl "Tcl L
0150: 69 62 72 61 72 79 20 50 72 6f 63 65 64 75 72 65 ibrary Procedure
0160: 73 22 0a 20 2e 42 53 0a 20 2e 53 48 20 4e 41 4d s". .BS. .SH NAM
0170: 45 0a 2d 54 63 6c 5f 41 70 70 65 6e 64 45 78 70 E.-Tcl_AppendExp
0180: 6f 72 74 4c 69 73 74 2c 20 54 63 6c 5f 43 72 65 ortList, Tcl_Cre
0190: 61 74 65 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 ateNamespace, Tc
01a0: 6c 5f 44 65 6c 65 74 65 4e 61 6d 65 73 70 61 63 l_DeleteNamespac
01b0: 65 2c 20 54 63 6c 5f 45 78 70 6f 72 74 2c 20 54 e, Tcl_Export, T
01c0: 63 6c 5f 46 69 6e 64 43 6f 6d 6d 61 6e 64 2c 20 cl_FindCommand,
01d0: 54 63 6c 5f 46 69 6e 64 4e 61 6d 65 73 70 61 63 Tcl_FindNamespac
01e0: 65 2c 20 54 63 6c 5f 46 6f 72 67 65 74 49 6d 70 e, Tcl_ForgetImp
01f0: 6f 72 74 2c 20 54 63 6c 5f 47 65 74 43 75 72 72 ort, Tcl_GetCurr
0200: 65 6e 74 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 entNamespace, Tc
0210: 6c 5f 47 65 74 47 6c 6f 62 6c 61 4e 61 6d 65 73 l_GetGloblaNames
0220: 70 61 63 65 2c 20 54 63 6c 5f 49 6d 70 6f 72 74 pace, Tcl_Import
0230: 20 5c 2d 20 6d 61 6e 69 70 75 6c 61 74 65 20 6e \- manipulate n
0240: 61 6d 65 73 70 61 63 65 73 0a 2b 54 63 6c 5f 41 amespaces.+Tcl_A
0250: 70 70 65 6e 64 45 78 70 6f 72 74 4c 69 73 74 2c ppendExportList,
0260: 20 54 63 6c 5f 43 72 65 61 74 65 4e 61 6d 65 73 Tcl_CreateNames
0270: 70 61 63 65 2c 20 54 63 6c 5f 44 65 6c 65 74 65 pace, Tcl_Delete
0280: 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 45 Namespace, Tcl_E
0290: 78 70 6f 72 74 2c 20 54 63 6c 5f 46 69 6e 64 43 xport, Tcl_FindC
02a0: 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f 46 69 6e 64 ommand, Tcl_Find
02b0: 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 46 Namespace, Tcl_F
02c0: 6f 72 67 65 74 49 6d 70 6f 72 74 2c 20 54 63 6c orgetImport, Tcl
02d0: 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 6d 65 73 _GetCurrentNames
02e0: 70 61 63 65 2c 20 54 63 6c 5f 47 65 74 47 6c 6f pace, Tcl_GetGlo
02f0: 62 6c 61 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 blaNamespace, Tc
0300: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_GetNamespaceUn
0310: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 54 63 knownHandler, Tc
0320: 6c 5f 49 6d 70 6f 72 74 2c 20 54 63 6c 5f 53 65 l_Import, Tcl_Se
0330: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
0340: 6e 48 61 6e 64 6c 65 72 20 5c 2d 20 6d 61 6e 69 nHandler \- mani
0350: 70 75 6c 61 74 65 20 6e 61 6d 65 73 70 61 63 65 pulate namespace
0360: 73 0a 20 2e 53 48 20 53 59 4e 4f 50 53 49 53 0a s. .SH SYNOPSIS.
0370: 20 2e 6e 66 0a 20 5c 66 42 23 69 6e 63 6c 75 64 .nf. \fB#includ
0380: 65 20 3c 74 63 6c 2e 68 3e 5c 66 52 0a 40 40 20 e <tcl.h>\fR.@@
0390: 2d 34 36 2c 36 20 2b 34 36 2c 31 32 20 40 40 0a -46,6 +46,12 @@.
03a0: 20 2e 73 70 0a 20 54 63 6c 5f 43 6f 6d 6d 61 6e .sp. Tcl_Comman
03b0: 64 0a 20 5c 66 42 54 63 6c 5f 46 69 6e 64 43 6f d. \fBTcl_FindCo
03c0: 6d 6d 61 6e 64 5c 66 52 28 5c 66 49 69 6e 74 65 mmand\fR(\fIinte
03d0: 72 70 2c 20 6e 61 6d 65 2c 20 63 6f 6e 74 65 78 rp, name, contex
03e0: 74 4e 73 50 74 72 2c 20 66 6c 61 67 73 5c 66 52 tNsPtr, flags\fR
03f0: 29 0a 2b 2e 73 70 0a 2b 54 63 6c 5f 4f 62 6a 20 ).+.sp.+Tcl_Obj
0400: 2a 0a 2b 5c 66 42 54 63 6c 5f 47 65 74 4e 61 6d *.+\fBTcl_GetNam
0410: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
0420: 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 2c 20 dler(\fIinterp,
0430: 6e 73 50 74 72 5c 66 52 29 0a 2b 2e 73 70 0a 2b nsPtr\fR).+.sp.+
0440: 69 6e 74 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e int.+\fBTcl_SetN
0450: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
0460: 61 6e 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 andler(\fIinterp
0470: 2c 20 6e 73 50 74 72 2c 20 68 61 6e 64 6c 65 72 , nsPtr, handler
0480: 50 74 72 5c 66 52 29 0a 20 2e 53 48 20 41 52 47 Ptr\fR). .SH ARG
0490: 55 4d 45 4e 54 53 0a 20 2e 41 53 20 54 63 6c 5f UMENTS. .AS Tcl_
04a0: 4e 61 6d 65 73 70 61 63 65 44 65 6c 65 74 65 50 NamespaceDeleteP
04b0: 72 6f 63 20 61 6c 6c 6f 77 4f 76 65 72 77 72 69 roc allowOverwri
04c0: 74 65 20 69 6e 2f 6f 75 74 0a 20 2e 41 50 20 54 te in/out. .AP T
04d0: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
04e0: 70 20 69 6e 2f 6f 75 74 0a 40 40 20 2d 38 37 2c p in/out.@@ -87,
04f0: 36 20 2b 39 33 2c 39 20 40 40 0a 20 69 6e 64 69 6 +93,9 @@. indi
0500: 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 73 cates that the s
0510: 65 61 72 63 68 20 69 73 20 61 6c 77 61 79 73 20 earch is always
0520: 74 6f 20 62 65 20 63 6f 6e 64 75 63 74 65 64 20 to be conducted
0530: 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 0a relative to the.
0540: 20 63 6f 6e 74 65 78 74 20 6e 61 6d 65 73 70 61 context namespa
0550: 63 65 29 2c 20 61 6e 64 20 5c 66 42 54 43 4c 5f ce), and \fBTCL_
0560: 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 5c 66 52 LEAVE_ERR_MSG\fR
0570: 20 28 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 (indicates that
0580: 20 61 6e 20 65 72 72 6f 72 0a 20 6d 65 73 73 61 an error. messa
0590: 67 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 ge should be lef
05a0: 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70 72 t in the interpr
05b0: 65 74 65 72 20 69 66 20 74 68 65 20 73 65 61 72 eter if the sear
05c0: 63 68 20 66 61 69 6c 73 2e 29 0a 2b 2e 41 50 20 ch fails.).+.AP
05d0: 54 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 Tcl_Obj *handler
05e0: 50 74 72 20 69 6e 0a 2b 41 20 73 63 72 69 70 74 Ptr in.+A script
05f0: 20 66 72 61 67 6d 65 6e 74 20 74 6f 20 62 65 20 fragment to be
0600: 69 6e 73 74 61 6c 6c 65 64 20 61 73 20 74 68 65 installed as the
0610: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
0620: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 handler for the
0630: 0a 2b 6e 61 6d 65 73 70 61 63 65 2c 20 6f 72 20 .+namespace, or
0640: 4e 55 4c 4c 20 74 6f 20 72 65 73 65 74 20 74 68 NULL to reset th
0650: 65 20 68 61 6e 64 6c 65 72 20 74 6f 20 69 74 73 e handler to its
0660: 20 64 65 66 61 75 6c 74 2e 0a 20 2e 42 45 0a 20 default.. .BE.
0670: 0a 20 2e 53 48 20 44 45 53 43 52 49 50 54 49 4f . .SH DESCRIPTIO
0680: 4e 0a 40 40 20 2d 31 34 33 2c 36 20 2b 31 35 32 N.@@ -143,6 +152
0690: 2c 31 33 20 40 40 0a 20 5c 66 42 54 63 6c 5f 46 ,13 @@. \fBTcl_F
06a0: 69 6e 64 43 6f 6d 6d 61 6e 64 5c 66 52 20 73 65 indCommand\fR se
06b0: 61 72 63 68 65 73 20 66 6f 72 20 61 20 63 6f 6d arches for a com
06c0: 6d 61 6e 64 20 6e 61 6d 65 64 20 5c 66 49 6e 61 mand named \fIna
06d0: 6d 65 5c 66 52 20 77 69 74 68 69 6e 0a 20 74 68 me\fR within. th
06e0: 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 e context of the
06f0: 20 6e 61 6d 65 73 70 61 63 65 20 5c 66 49 63 6f namespace \fIco
0700: 6e 74 65 78 74 4e 73 50 74 72 5c 66 52 2e 20 20 ntextNsPtr\fR.
0710: 49 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 20 If the command.
0720: 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2c cannot be found,
0730: 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 NULL is returne
0740: 64 2e 0a 2b 2e 50 50 0a 2b 5c 66 42 54 63 6c 5f d..+.PP.+\fBTcl_
0750: 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e GetNamespaceUnkn
0760: 6f 77 6e 48 61 6e 64 6c 65 72 5c 66 52 20 72 65 ownHandler\fR re
0770: 74 75 72 6e 73 20 74 68 65 20 75 6e 6b 6e 6f 77 turns the unknow
0780: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
0790: 72 0a 2b 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 r.+for the names
07a0: 70 61 63 65 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 pace, or NULL if
07b0: 20 6e 6f 6e 65 20 69 73 20 73 65 74 2e 0a 2b 2e none is set..+.
07c0: 50 50 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e 61 PP.+\fBTcl_SetNa
07d0: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
07e0: 6e 64 6c 65 72 5c 66 52 20 73 65 74 73 20 74 68 ndler\fR sets th
07f0: 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e e unknown comman
0800: 64 20 68 61 6e 64 6c 65 72 20 66 6f 72 0a 2b 74 d handler for.+t
0810: 68 65 20 6e 61 6d 65 73 70 61 63 65 2e 20 49 66 he namespace. If
0820: 20 5c 66 49 68 61 6e 64 6c 65 72 50 74 72 5c 66 \fIhandlerPtr\f
0830: 52 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 R is NULL, then
0840: 74 68 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72 the handler is r
0850: 65 73 65 74 20 74 6f 0a 2b 69 74 73 20 64 65 66 eset to.+its def
0860: 61 75 6c 74 2e 0a 20 0a 20 2e 53 48 20 22 53 45 ault.. . .SH "SE
0870: 45 20 41 4c 53 4f 22 0a 20 54 63 6c 5f 43 72 65 E ALSO". Tcl_Cre
0880: 61 74 65 43 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f ateCommand, Tcl_
0890: 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 ListObjAppendEle
08a0: 6d 65 6e 74 73 2c 20 54 63 6c 5f 53 65 74 56 61 ments, Tcl_SetVa
08b0: 72 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d r.Index: doc/nam
08c0: 65 73 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d espace.n.=======
08d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
0910: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
0920: 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 tcl/tcl/doc/name
0930: 73 70 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 space.n,v.retrie
0940: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
0950: 31 38 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 18.diff -u -r1.1
0960: 38 20 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 8 namespace.n.--
0970: 2d 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e - doc/namespace.
0980: 6e 09 33 30 20 4d 61 79 20 32 30 30 35 20 30 30 n.30 May 2005 00
0990: 3a 30 34 3a 34 35 20 2d 30 30 30 30 09 31 2e 31 :04:45 -0000.1.1
09a0: 38 0a 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 8.+++ doc/namesp
09b0: 61 63 65 2e 6e 09 31 33 20 4a 75 6e 20 32 30 30 ace.n.13 Jun 200
09c0: 35 20 32 32 3a 30 34 3a 34 37 20 2d 30 30 30 30 5 22:04:47 -0000
09d0: 0a 40 40 20 2d 32 34 39 2c 36 20 2b 32 34 39 2c .@@ -249,6 +249,
09e0: 31 37 20 40 40 0a 20 49 74 20 64 6f 65 73 20 6e 17 @@. It does n
09f0: 6f 74 20 63 68 65 63 6b 20 77 68 65 74 68 65 72 ot check whether
0a00: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 6e the namespace n
0a10: 61 6d 65 73 20 61 72 65 2c 20 69 6e 20 66 61 63 ames are, in fac
0a20: 74 2c 0a 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 t,. the names of
0a30: 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e currently defin
0a40: 65 64 20 6e 61 6d 65 73 70 61 63 65 73 2e 0a 20 ed namespaces..
0a50: 2e 54 50 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63 .TP.+\fBnamespac
0a60: 65 20 75 6e 6b 6e 6f 77 6e 5c 66 52 20 3f 5c 66 e unknown\fR ?\f
0a70: 49 73 63 72 69 70 74 5c 66 52 3f 0a 2b 53 65 74 Iscript\fR?.+Set
0a80: 73 20 6f 72 20 72 65 74 75 72 6e 73 20 74 68 65 s or returns the
0a90: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
0aa0: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 handler for the
0ab0: 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 current namespa
0ac0: 63 65 2e 0a 2b 54 68 65 20 68 61 6e 64 6c 65 72 ce..+The handler
0ad0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e is invoked when
0ae0: 20 61 20 63 6f 6d 6d 61 6e 64 20 63 61 6c 6c 65 a command calle
0af0: 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 20 74 68 d from within th
0b00: 65 20 6e 61 6d 65 73 70 61 63 65 0a 2b 63 61 6e e namespace.+can
0b10: 6e 6f 74 20 62 65 20 66 6f 75 6e 64 20 28 69 6e not be found (in
0b20: 20 65 69 74 68 65 72 20 74 68 65 20 63 75 72 72 either the curr
0b30: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 6f 72 ent namespace or
0b40: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 the global name
0b50: 73 70 61 63 65 29 2e 20 0a 2b 54 68 65 20 5c 66 space). .+The \f
0b60: 49 73 63 72 69 70 74 5c 66 52 20 61 72 67 75 6d Iscript\fR argum
0b70: 65 6e 74 2c 20 69 66 20 67 69 76 65 6e 2c 20 73 ent, if given, s
0b80: 68 6f 75 6c 64 20 62 65 20 61 20 77 65 6c 6c 0a hould be a well.
0b90: 2b 66 6f 72 6d 65 64 20 6c 69 73 74 20 72 65 70 +formed list rep
0ba0: 72 65 73 65 6e 74 69 6e 67 20 61 20 63 6f 6d 6d resenting a comm
0bb0: 61 6e 64 20 6e 61 6d 65 20 61 6e 64 20 6f 70 74 and name and opt
0bc0: 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e ional arguments.
0bd0: 20 57 68 65 6e 0a 2b 74 68 65 20 68 61 6e 64 6c When.+the handl
0be0: 65 72 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 er is invoked, t
0bf0: 68 65 20 66 75 6c 6c 20 69 6e 76 6f 63 61 74 69 he full invocati
0c00: 6f 6e 20 6c 69 6e 65 20 77 69 6c 6c 20 62 65 20 on line will be
0c10: 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 0a appended to the.
0c20: 2b 73 63 72 69 70 74 20 61 6e 64 20 74 68 65 20 +script and the
0c30: 72 65 73 75 6c 74 20 65 76 61 6c 75 61 74 65 64 result evaluated
0c40: 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 in the context
0c50: 6f 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 of the namespace
0c60: 2e 20 54 68 65 20 0a 2b 64 65 66 61 75 6c 74 20 . The .+default
0c70: 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 6c 6c 20 handler for all
0c80: 6e 61 6d 65 73 70 61 63 65 73 20 69 73 20 5c 66 namespaces is \f
0c90: 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e 20 49 B::unknown\fR. I
0ca0: 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 0a 2b 69 f no argument.+i
0cb0: 73 20 67 69 76 65 6e 2c 20 69 74 20 72 65 74 75 s given, it retu
0cc0: 72 6e 73 20 74 68 65 20 68 61 6e 64 6c 65 72 20 rns the handler
0cd0: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 for the current
0ce0: 6e 61 6d 65 73 70 61 63 65 2e 0a 2b 2e 54 50 0a namespace..+.TP.
0cf0: 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 77 68 \fBnamespace wh
0d00: 69 63 68 5c 66 52 20 3f 5c 2d 5c 66 42 63 6f 6d ich\fR ?\-\fBcom
0d10: 6d 61 6e 64 5c 66 52 3f 20 3f 5c 2d 5c 66 42 76 mand\fR? ?\-\fBv
0d20: 61 72 69 61 62 6c 65 5c 66 52 3f 20 5c 66 49 6e ariable\fR? \fIn
0d30: 61 6d 65 5c 66 52 0a 20 4c 6f 6f 6b 73 20 75 70 ame\fR. Looks up
0d40: 20 5c 66 49 6e 61 6d 65 5c 66 52 20 61 73 20 65 \fIname\fR as e
0d50: 69 74 68 65 72 20 61 20 63 6f 6d 6d 61 6e 64 20 ither a command
0d60: 6f 72 20 76 61 72 69 61 62 6c 65 0a 20 61 6e 64 or variable. and
0d70: 20 72 65 74 75 72 6e 73 20 69 74 73 20 66 75 6c returns its ful
0d80: 6c 79 2d 71 75 61 6c 69 66 69 65 64 20 6e 61 6d ly-qualified nam
0d90: 65 2e 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 75 6e e..Index: doc/un
0da0: 6b 6e 6f 77 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d known.n.========
0db0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0dc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
0df0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
0e00: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 75 6e 6b 6e 6f cl/tcl/doc/unkno
0e10: 77 6e 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e wn.n,v.retrievin
0e20: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 0a 64 g revision 1.5.d
0e30: 69 66 66 20 2d 75 20 2d 72 31 2e 35 20 75 6e 6b iff -u -r1.5 unk
0e40: 6e 6f 77 6e 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 75 nown.n.--- doc/u
0e50: 6e 6b 6e 6f 77 6e 2e 6e 09 33 30 20 4d 61 79 20 nknown.n.30 May
0e60: 32 30 30 34 20 31 34 3a 31 33 3a 35 32 20 2d 30 2004 14:13:52 -0
0e70: 30 30 30 09 31 2e 35 0a 2b 2b 2b 20 64 6f 63 2f 000.1.5.+++ doc/
0e80: 75 6e 6b 6e 6f 77 6e 2e 6e 09 31 33 20 4a 75 6e unknown.n.13 Jun
0e90: 20 32 30 30 35 20 32 32 3a 30 34 3a 34 38 20 2d 2005 22:04:48 -
0ea0: 30 30 30 30 0a 40 40 20 2d 32 33 2c 31 35 20 2b 0000.@@ -23,15 +
0eb0: 32 33 2c 31 38 20 40 40 0a 20 74 72 69 65 73 20 23,18 @@. tries
0ec0: 74 6f 20 69 6e 76 6f 6b 65 20 61 20 63 6f 6d 6d to invoke a comm
0ed0: 61 6e 64 20 74 68 61 74 20 64 6f 65 73 6e 27 74 and that doesn't
0ee0: 20 65 78 69 73 74 2e 20 20 54 68 65 20 64 65 66 exist. The def
0ef0: 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 ault implementat
0f00: 69 6f 6e 0a 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f ion. of \fBunkno
0f10: 77 6e 5c 66 52 20 69 73 20 61 20 6c 69 62 72 61 wn\fR is a libra
0f20: 72 79 20 70 72 6f 63 65 64 75 72 65 20 64 65 66 ry procedure def
0f30: 69 6e 65 64 20 77 68 65 6e 20 54 63 6c 20 69 6e ined when Tcl in
0f40: 69 74 69 61 6c 69 7a 65 73 20 61 6e 0a 20 69 6e itializes an. in
0f50: 74 65 72 70 72 65 74 65 72 2e 20 20 59 6f 75 20 terpreter. You
0f60: 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 can override the
0f70: 20 64 65 66 61 75 6c 74 20 5c 66 42 75 6e 6b 6e default \fBunkn
0f80: 6f 77 6e 5c 66 52 20 74 6f 20 63 68 61 6e 67 65 own\fR to change
0f90: 20 69 74 73 0a 2d 66 75 6e 63 74 69 6f 6e 61 6c its.-functional
0fa0: 69 74 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 ity. Note that
0fb0: 74 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 there is no defa
0fc0: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 ult implementati
0fd0: 6f 6e 20 6f 66 0a 2d 5c 66 42 75 6e 6b 6e 6f 77 on of.-\fBunknow
0fe0: 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 69 n\fR in a safe i
0ff0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 2b 66 75 6e nterpreter..+fun
1000: 63 74 69 6f 6e 61 6c 69 74 79 2c 20 6f 72 20 79 ctionality, or y
1010: 6f 75 20 63 61 6e 20 72 65 67 69 73 74 65 72 20 ou can register
1020: 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 66 6f a new handler fo
1030: 72 20 69 6e 64 69 76 69 64 75 61 6c 20 6e 61 6d r individual nam
1040: 65 73 70 61 63 65 73 0a 2b 75 73 69 6e 67 20 74 espaces.+using t
1050: 68 65 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 he \fBnamespace
1060: 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d 61 unknown\fR comma
1070: 6e 64 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 nd. Note that t
1080: 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 75 here is no defau
1090: 6c 74 20 0a 2b 69 6d 70 6c 65 6d 65 6e 74 61 74 lt .+implementat
10a0: 69 6f 6e 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f 77 ion of \fBunknow
10b0: 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 69 n\fR in a safe i
10c0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 20 2e 50 50 nterpreter.. .PP
10d0: 0a 20 49 66 20 74 68 65 20 54 63 6c 20 69 6e 74 . If the Tcl int
10e0: 65 72 70 72 65 74 65 72 20 65 6e 63 6f 75 6e 74 erpreter encount
10f0: 65 72 73 20 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 ers a command na
1100: 6d 65 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 me for which the
1110: 72 65 0a 2d 69 73 20 6e 6f 74 20 61 20 64 65 66 re.-is not a def
1120: 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 ined command, th
1130: 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 6f en Tcl checks fo
1140: 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 r the existence
1150: 6f 66 0a 2d 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 of.-a command na
1160: 6d 65 64 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 med \fBunknown\f
1170: 52 2e 0a 2d 49 66 20 74 68 65 72 65 20 69 73 20 R..-If there is
1180: 6e 6f 20 73 75 63 68 20 63 6f 6d 6d 61 6e 64 2c no such command,
1190: 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 then the interp
11a0: 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e reter returns an
11b0: 0a 2d 65 72 72 6f 72 2e 0a 2d 49 66 20 74 68 65 .-error..-If the
11c0: 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 \fBunknown\fR c
11d0: 6f 6d 6d 61 6e 64 20 65 78 69 73 74 73 2c 20 74 ommand exists, t
11e0: 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 hen it is invoke
11f0: 64 20 77 69 74 68 0a 2b 69 73 20 6e 6f 74 20 61 d with.+is not a
1200: 20 64 65 66 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 defined command
1210: 20 28 69 6e 20 65 69 74 68 65 72 20 74 68 65 20 (in either the
1220: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
1230: 65 2c 20 6f 72 20 74 68 65 20 0a 2b 67 6c 6f 62 e, or the .+glob
1240: 61 6c 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 74 al namespace), t
1250: 68 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 hen Tcl checks f
1260: 6f 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 or the existence
1270: 20 6f 66 0a 2b 61 6e 20 75 6e 6b 6e 6f 77 6e 20 of.+an unknown
1280: 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 handler for the
1290: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
12a0: 65 2e 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 e. By default, t
12b0: 68 69 73 0a 2b 68 61 6e 64 6c 65 72 20 69 73 20 his.+handler is
12c0: 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 64 20 a command named
12d0: 5c 66 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e \fB::unknown\fR.
12e0: 20 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f If there is no
12f0: 20 73 75 63 68 20 0a 2b 63 6f 6d 6d 61 6e 64 2c such .+command,
1300: 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 then the interp
1310: 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e reter returns an
1320: 20 65 72 72 6f 72 2e 0a 2b 49 66 20 74 68 65 20 error..+If the
1330: 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f \fBunknown\fR co
1340: 6d 6d 61 6e 64 20 65 78 69 73 74 73 20 28 6f 72 mmand exists (or
1350: 20 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 68 a new handler h
1360: 61 73 20 62 65 65 6e 0a 2b 72 65 67 69 73 74 65 as been.+registe
1370: 72 65 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 red for the curr
1380: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 ent namespace),
1390: 74 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b then it is invok
13a0: 65 64 20 77 69 74 68 0a 20 61 72 67 75 6d 65 6e ed with. argumen
13b0: 74 73 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 ts consisting of
13c0: 20 74 68 65 20 66 75 6c 6c 79 2d 73 75 62 73 74 the fully-subst
13d0: 69 74 75 74 65 64 20 6e 61 6d 65 20 61 6e 64 20 ituted name and
13e0: 61 72 67 75 6d 65 6e 74 73 0a 20 66 6f 72 20 74 arguments. for t
13f0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 6f 6e 2d he original non-
1400: 65 78 69 73 74 65 6e 74 20 63 6f 6d 6d 61 6e 64 existent command
1410: 2e 0a 20 54 68 65 20 5c 66 42 75 6e 6b 6e 6f 77 .. The \fBunknow
1420: 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64 20 74 79 70 n\fR command typ
1430: 69 63 61 6c 6c 79 20 64 6f 65 73 20 74 68 69 6e ically does thin
1440: 67 73 20 6c 69 6b 65 20 73 65 61 72 63 68 69 6e gs like searchin
1450: 67 0a 40 40 20 2d 38 37 2c 37 20 2b 39 30 2c 37 g.@@ -87,7 +90,7
1460: 20 40 40 0a 20 2e 43 45 0a 20 0a 20 2e 53 48 20 @@. .CE. . .SH
1470: 22 53 45 45 20 41 4c 53 4f 22 0a 2d 69 6e 66 6f "SEE ALSO".-info
1480: 28 6e 29 2c 20 70 72 6f 63 28 6e 29 2c 20 69 6e (n), proc(n), in
1490: 74 65 72 70 28 6e 29 2c 20 6c 69 62 72 61 72 79 terp(n), library
14a0: 28 6e 29 0a 2b 69 6e 66 6f 28 6e 29 2c 20 70 72 (n).+info(n), pr
14b0: 6f 63 28 6e 29 2c 20 69 6e 74 65 72 70 28 6e 29 oc(n), interp(n)
14c0: 2c 20 6c 69 62 72 61 72 79 28 6e 29 2c 20 6e 61 , library(n), na
14d0: 6d 65 73 70 61 63 65 28 6e 29 0a 20 0a 20 2e 53 mespace(n). . .S
14e0: 48 20 4b 45 59 57 4f 52 44 53 0a 20 65 72 72 6f H KEYWORDS. erro
14f0: 72 2c 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20 r, non-existent
1500: 63 6f 6d 6d 61 6e 64 0a 49 6e 64 65 78 3a 20 67 command.Index: g
1510: 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 eneric/tcl.decls
1520: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
1530: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1540: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1550: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1560: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
1570: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
1580: 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c generic/tcl.decl
1590: 73 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 s,v.retrieving r
15a0: 65 76 69 73 69 6f 6e 20 31 2e 31 31 32 0a 64 69 evision 1.112.di
15b0: 66 66 20 2d 75 20 2d 72 31 2e 31 31 32 20 74 63 ff -u -r1.112 tc
15c0: 6c 2e 64 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 l.decls.--- gene
15d0: 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 36 20 ric/tcl.decls.6
15e0: 4a 75 6e 20 32 30 30 35 20 32 33 3a 34 35 3a 34 Jun 2005 23:45:4
15f0: 32 20 2d 30 30 30 30 09 31 2e 31 31 32 0a 2b 2b 2 -0000.1.112.++
1600: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 + generic/tcl.de
1610: 63 6c 73 09 31 33 20 4a 75 6e 20 32 30 30 35 20 cls.13 Jun 2005
1620: 32 32 3a 30 34 3a 35 30 20 2d 30 30 30 30 0a 40 22:04:50 -0000.@
1630: 40 20 2d 32 30 31 33 2c 36 20 2b 32 30 31 33 2c @ -2013,6 +2013,
1640: 31 38 20 40 40 0a 20 09 20 20 20 20 54 63 6c 5f 18 @@. . Tcl_
1650: 43 68 61 6e 6e 65 6c 54 79 70 65 20 2a 63 68 61 ChannelType *cha
1660: 6e 54 79 70 65 50 74 72 29 0a 20 7d 0a 20 0a 2b nTypePtr). }. .+
1670: 23 20 54 49 50 20 23 31 38 31 3a 0a 2b 64 65 63 # TIP #181:.+dec
1680: 6c 61 72 65 20 35 36 31 20 67 65 6e 65 72 69 63 lare 561 generic
1690: 20 7b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 {.+ Tcl_Obj
16a0: 2a 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 *Tcl_GetNamespac
16b0: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 eUnknownHandler(
16c0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
16d0: 72 70 2c 0a 2b 09 20 20 20 20 54 63 6c 5f 4e 61 rp,.+. Tcl_Na
16e0: 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 29 0a mespace *nsPtr).
16f0: 2b 7d 0a 2b 64 65 63 6c 61 72 65 20 35 36 32 20 +}.+declare 562
1700: 67 65 6e 65 72 69 63 20 7b 0a 2b 20 20 20 20 69 generic {.+ i
1710: 6e 74 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 nt Tcl_SetNamesp
1720: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
1730: 72 28 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e 74 r(.+. Tcl_Int
1740: 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c erp *interp, Tcl
1750: 5f 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 _Namespace *nsPt
1760: 72 2c 0a 2b 09 20 20 20 20 54 63 6c 5f 4f 62 6a r,.+. Tcl_Obj
1770: 20 2a 68 61 6e 64 6c 65 72 50 74 72 29 0a 2b 7d *handlerPtr).+}
1780: 0a 2b 0a 2b 0a 20 23 23 23 23 23 23 23 23 23 23 .+.+. ##########
1790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17d0: 23 23 23 23 0a 20 0a 20 23 20 44 65 66 69 6e 65 ####. . # Define
17e0: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 73 70 the platform sp
17f0: 65 63 69 66 69 63 20 70 75 62 6c 69 63 20 54 63 ecific public Tc
1800: 6c 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68 l interface. Th
1810: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 ese functions ar
1820: 65 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 e.Index: generic
1830: 2f 74 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d /tclBasic.c.====
1840: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1850: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1860: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1870: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============.
1880: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f RCS file: /cvsro
1890: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 ot/tcl/tcl/gener
18a0: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a ic/tclBasic.c,v.
18b0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 retrieving revis
18c0: 69 6f 6e 20 31 2e 31 36 30 0a 64 69 66 66 20 2d ion 1.160.diff -
18d0: 75 20 2d 72 31 2e 31 36 30 20 74 63 6c 42 61 73 u -r1.160 tclBas
18e0: 69 63 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 ic.c.--- generic
18f0: 2f 74 63 6c 42 61 73 69 63 2e 63 09 36 20 4a 75 /tclBasic.c.6 Ju
1900: 6e 20 32 30 30 35 20 32 33 3a 34 35 3a 34 33 20 n 2005 23:45:43
1910: 2d 30 30 30 30 09 31 2e 31 36 30 0a 2b 2b 2b 20 -0000.1.160.+++
1920: 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 generic/tclBasic
1930: 2e 63 09 31 33 20 4a 75 6e 20 32 30 30 35 20 32 .c.13 Jun 2005 2
1940: 32 3a 30 34 3a 35 38 20 2d 30 30 30 30 0a 40 40 2:04:58 -0000.@@
1950: 20 2d 33 32 32 32 2c 36 20 2b 33 32 32 32 2c 31 -3222,6 +3222,1
1960: 30 20 40 40 0a 20 20 20 20 20 69 6e 74 20 69 3b 0 @@. int i;
1970: 0a 20 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 . CallFrame
1980: 2a 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 *savedVarFramePt
1990: 72 3b 09 2f 2a 20 53 61 76 65 73 20 6f 6c 64 20 r;./* Saves old
19a0: 63 6f 70 79 20 6f 66 20 69 50 74 72 2d 3e 76 61 copy of iPtr->va
19b0: 72 46 72 61 6d 65 50 74 72 0a 20 09 09 09 09 09 rFramePtr. .....
19c0: 20 2a 20 69 6e 20 63 61 73 65 20 54 43 4c 5f 45 * in case TCL_E
19d0: 56 41 4c 5f 47 4c 4f 42 41 4c 20 77 61 73 20 73 VAL_GLOBAL was s
19e0: 65 74 2e 20 2a 2f 0a 2b 20 20 20 20 4e 61 6d 65 et. */.+ Name
19f0: 73 70 61 63 65 20 2a 63 75 72 72 4e 73 50 74 72 space *currNsPtr
1a00: 20 3d 20 4e 55 4c 4c 3b 09 2f 2a 20 55 73 65 64 = NULL;./* Used
1a10: 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 2c 20 61 to check for, a
1a20: 6e 64 20 69 6e 76 6f 6b 65 20 61 6e 79 0a 2b 09 nd invoke any.+.
1a30: 09 09 09 09 20 2a 20 72 65 67 69 73 74 65 72 65 .... * registere
1a40: 64 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 6d 61 d unknown commma
1a50: 6e 64 0a 2b 09 09 09 09 09 20 2a 20 68 61 6e 64 nd.+..... * hand
1a60: 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 ler for the curr
1a70: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 0a 2b 09 ent namespace.+.
1a80: 09 09 09 09 20 2a 20 28 73 65 65 20 54 49 50 20 .... * (see TIP
1a90: 31 38 31 29 2e 20 2a 2f 0a 20 20 20 20 20 69 6e 181). */. in
1aa0: 74 20 63 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b t code = TCL_OK;
1ab0: 0a 20 20 20 20 20 69 6e 74 20 74 72 61 63 65 43 . int traceC
1ac0: 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 ode = TCL_OK;.
1ad0: 20 20 20 69 6e 74 20 63 68 65 63 6b 54 72 61 63 int checkTrac
1ae0: 65 73 20 3d 20 31 3b 0a 40 40 20 2d 33 32 33 36 es = 1;.@@ -3236
1af0: 2c 31 30 20 2b 33 32 34 30 2c 31 30 20 40 40 0a ,10 +3240,10 @@.
1b00: 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 . /*.
1b10: 2a 20 46 69 6e 64 20 74 68 65 20 70 72 6f 63 65 * Find the proce
1b20: 64 75 72 65 20 74 6f 20 65 78 65 63 75 74 65 20 dure to execute
1b30: 74 68 69 73 20 63 6f 6d 6d 61 6e 64 2e 20 49 66 this command. If
1b40: 20 74 68 65 72 65 20 69 73 6e 27 74 20 6f 6e 65 there isn't one
1b50: 2c 0a 2d 20 20 20 20 20 2a 20 74 68 65 6e 20 73 ,.- * then s
1b60: 65 65 20 69 66 20 74 68 65 72 65 20 69 73 20 61 ee if there is a
1b70: 20 63 6f 6d 6d 61 6e 64 20 22 75 6e 6b 6e 6f 77 command "unknow
1b80: 6e 22 2e 20 20 49 66 20 73 6f 2c 20 63 72 65 61 n". If so, crea
1b90: 74 65 20 61 20 6e 65 77 0a 2d 20 20 20 20 20 2a te a new.- *
1ba0: 20 77 6f 72 64 20 61 72 72 61 79 20 77 69 74 68 word array with
1bb0: 20 22 75 6e 6b 6e 6f 77 6e 22 20 61 73 20 74 68 "unknown" as th
1bc0: 65 20 66 69 72 73 74 20 77 6f 72 64 20 61 6e 64 e first word and
1bd0: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 0a 2d 20 the original.-
1be0: 20 20 20 20 2a 20 63 6f 6d 6d 61 6e 64 20 77 6f * command wo
1bf0: 72 64 73 20 61 73 20 61 72 67 75 6d 65 6e 74 73 rds as arguments
1c00: 2e 20 20 54 68 65 6e 20 63 61 6c 6c 20 6f 75 72 . Then call our
1c10: 73 65 6c 76 65 73 20 72 65 63 75 72 73 69 76 65 selves recursive
1c20: 6c 79 20 74 6f 0a 2d 20 20 20 20 20 2a 20 65 78 ly to.- * ex
1c30: 65 63 75 74 65 20 69 74 2e 0a 2b 20 20 20 20 20 ecute it..+
1c40: 2a 20 74 68 65 6e 20 73 65 65 20 69 66 20 74 68 * then see if th
1c50: 65 72 65 20 69 73 20 61 6e 20 75 6e 6b 6e 6f 77 ere is an unknow
1c60: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
1c70: 72 20 72 65 67 69 73 74 65 72 65 64 20 66 6f 72 r registered for
1c80: 20 74 68 69 73 0a 2b 20 20 20 20 20 2a 20 6e 61 this.+ * na
1c90: 6d 65 73 70 61 63 65 2e 20 49 66 20 73 6f 2c 20 mespace. If so,
1ca0: 63 72 65 61 74 65 20 61 20 6e 65 77 20 77 6f 72 create a new wor
1cb0: 64 20 61 72 72 61 79 20 77 69 74 68 20 74 68 65 d array with the
1cc0: 20 68 61 6e 64 6c 65 72 20 61 73 20 74 68 65 0a handler as the.
1cd0: 2b 20 20 20 20 20 2a 20 66 69 72 73 74 20 77 6f + * first wo
1ce0: 72 64 73 20 61 6e 64 20 74 68 65 20 6f 72 69 67 rds and the orig
1cf0: 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 6f 72 inal command wor
1d00: 64 73 20 61 73 20 61 72 67 75 6d 65 6e 74 73 2e ds as arguments.
1d10: 20 54 68 65 6e 20 63 61 6c 6c 0a 2b 20 20 20 20 Then call.+
1d20: 20 2a 20 6f 75 72 73 65 6c 76 65 73 20 72 65 63 * ourselves rec
1d30: 75 72 73 69 76 65 6c 79 20 74 6f 20 65 78 65 63 ursively to exec
1d40: 75 74 65 20 69 74 2e 0a 20 20 20 20 20 20 2a 0a ute it.. *.
1d50: 20 20 20 20 20 20 2a 20 49 66 20 63 61 6c 6c 65 * If calle
1d60: 72 20 72 65 71 75 65 73 74 73 2c 20 6f 72 20 69 r requests, or i
1d70: 66 20 77 65 27 72 65 20 72 65 73 6f 6c 76 69 6e f we're resolvin
1d80: 67 20 74 68 65 20 74 61 72 67 65 74 20 65 6e 64 g the target end
1d90: 20 6f 66 20 61 6e 0a 20 20 20 20 20 20 2a 20 69 of an. * i
1da0: 6e 74 65 72 70 65 74 65 72 20 61 6c 69 61 73 20 nterpeter alias
1db0: 28 54 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f 4b 45 (TCL_EVAL_INVOKE
1dc0: 29 2c 20 62 65 20 73 75 72 65 20 74 6f 20 64 6f ), be sure to do
1dd0: 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 0a 40 40 command name.@@
1de0: 20 2d 33 32 35 35 2c 31 35 20 2b 33 32 35 39 2c -3255,15 +3259,
1df0: 35 32 20 40 40 0a 20 09 69 50 74 72 2d 3e 76 61 52 @@. .iPtr->va
1e00: 72 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c rFramePtr = NULL
1e10: 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 63 6d ;. }. cm
1e20: 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e 64 20 dPtr = (Command
1e30: 2a 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e *) Tcl_GetComman
1e40: 64 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c dFromObj(interp,
1e50: 20 6f 62 6a 76 5b 30 5d 29 3b 0a 2b 20 20 20 20 objv[0]);.+
1e60: 2f 2a 0a 2b 20 20 20 20 20 2a 20 47 72 61 62 20 /*.+ * Grab
1e70: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
1e80: 65 20 62 65 66 6f 72 65 20 72 65 73 74 6f 72 69 e before restori
1e90: 6e 67 20 76 61 72 20 66 72 61 6d 65 2c 20 66 6f ng var frame, fo
1ea0: 72 20 75 6e 6b 6e 6f 77 6e 0a 2b 20 20 20 20 20 r unknown.+
1eb0: 2a 20 68 61 6e 64 6c 65 72 20 63 68 65 63 6b 20 * handler check
1ec0: 62 65 6c 6f 77 2e 0a 2b 20 20 20 20 20 2a 2f 0a below..+ */.
1ed0: 2b 20 20 20 20 69 66 20 28 69 50 74 72 2d 3e 76 + if (iPtr->v
1ee0: 61 72 46 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 arFramePtr != NU
1ef0: 4c 4c 20 26 26 20 69 50 74 72 2d 3e 76 61 72 46 LL && iPtr->varF
1f00: 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 21 ramePtr->nsPtr !
1f10: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 63 75 72 72 = NULL) {.+.curr
1f20: 4e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 NsPtr = iPtr->va
1f30: 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 rFramePtr->nsPtr
1f40: 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ;.+ } else {.
1f50: 2b 09 2f 2a 20 4e 6f 74 65 3a 20 41 73 73 75 6d +./* Note: Assum
1f60: 65 73 20 67 6c 6f 62 61 6c 4e 73 50 74 72 20 63 es globalNsPtr c
1f70: 61 6e 20 6e 65 76 65 72 20 62 65 20 4e 55 4c 4c an never be NULL
1f80: 2e 20 2a 2f 0a 2b 09 63 75 72 72 4e 73 50 74 72 . */.+.currNsPtr
1f90: 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e = iPtr->globalN
1fa0: 73 50 74 72 3b 0a 2b 20 20 20 20 7d 0a 20 20 20 sPtr;.+ }.
1fb0: 20 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 iPtr->varFrame
1fc0: 50 74 72 20 3d 20 73 61 76 65 64 56 61 72 46 72 Ptr = savedVarFr
1fd0: 61 6d 65 50 74 72 3b 0a 20 0a 20 20 20 20 20 69 amePtr;. . i
1fe0: 66 20 28 63 6d 64 50 74 72 20 3d 3d 20 4e 55 4c f (cmdPtr == NUL
1ff0: 4c 29 20 7b 0a 2b 09 69 6e 74 20 6e 65 77 4f 62 L) {.+.int newOb
2000: 6a 63 2c 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b jc, handlerObjc;
2010: 0a 2b 09 54 63 6c 5f 4f 62 6a 20 2a 2a 68 61 6e .+.Tcl_Obj **han
2020: 64 6c 65 72 4f 62 6a 76 3b 0a 2b 09 2f 2a 0a 2b dlerObjv;.+./*.+
2030: 09 20 2a 20 43 68 65 63 6b 20 69 66 20 74 68 65 . * Check if the
2040: 72 65 20 69 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e re is an unknown
2050: 20 68 61 6e 64 6c 65 72 20 72 65 67 69 73 74 65 handler registe
2060: 72 65 64 20 66 6f 72 20 74 68 69 73 0a 2b 09 20 red for this.+.
2070: 2a 20 6e 61 6d 65 73 70 61 63 65 2e 20 4f 74 68 * namespace. Oth
2080: 65 72 77 69 73 65 2c 20 75 73 65 20 74 68 65 20 erwise, use the
2090: 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 global namespace
20a0: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 unknown handler
20b0: 2e 0a 2b 09 20 2a 2f 0a 2b 09 69 66 20 28 63 75 ..+. */.+.if (cu
20c0: 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e rrNsPtr->unknown
20d0: 48 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 HandlerPtr == NU
20e0: 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 63 75 72 72 LL) {.+. curr
20f0: 4e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 67 6c NsPtr = iPtr->gl
2100: 6f 62 61 6c 4e 73 50 74 72 3b 0a 2b 09 7d 0a 2b obalNsPtr;.+.}.+
2110: 09 69 66 20 28 63 75 72 72 4e 73 50 74 72 20 3d .if (currNsPtr =
2120: 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 = iPtr->globalNs
2130: 50 74 72 20 26 26 0a 2b 09 20 20 20 20 63 75 72 Ptr &&.+. cur
2140: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 rNsPtr->unknownH
2150: 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c andlerPtr == NUL
2160: 4c 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 47 6c L) {.+. /* Gl
2170: 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 68 obal namespace h
2180: 61 73 20 6c 6f 73 74 20 75 6e 6b 6e 6f 77 6e 20 as lost unknown
2190: 68 61 6e 64 6c 65 72 2c 20 72 65 73 65 74 2e 20 handler, reset.
21a0: 2a 2f 0a 2b 09 20 20 20 20 63 75 72 72 4e 73 50 */.+. currNsP
21b0: 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c tr->unknownHandl
21c0: 65 72 50 74 72 20 3d 0a 2b 09 09 54 63 6c 5f 4e erPtr =.+..Tcl_N
21d0: 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 ewStringObj("::u
21e0: 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 29 3b 0a 2b 09 nknown", -1);.+.
21f0: 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 Tcl_IncrRefC
2200: 6f 75 6e 74 28 63 75 72 72 4e 73 50 74 72 2d 3e ount(currNsPtr->
2210: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
2220: 72 29 3b 0a 2b 09 7d 0a 2b 0a 2b 09 69 66 20 28 r);.+.}.+.+.if (
2230: 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c Tcl_ListObjGetEl
2240: 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 0a 2b ements(interp,.+
2250: 09 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e . currNsPtr->
2260: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
2270: 72 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a 63 2c r, &handlerObjc,
2280: 20 26 68 61 6e 64 6c 65 72 4f 62 6a 76 29 0a 2b &handlerObjv).+
2290: 09 20 20 20 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 . != TCL_OK)
22a0: 7b 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 {.+. return T
22b0: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 7d 0a 2b 09 CL_ERROR;.+.}.+.
22c0: 6e 65 77 4f 62 6a 63 20 3d 20 6f 62 6a 63 20 2b newObjc = objc +
22d0: 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b 0a 20 09 handlerObjc;. .
22e0: 6e 65 77 4f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f newObjv = (Tcl_O
22f0: 62 6a 20 2a 2a 29 20 63 6b 61 6c 6c 6f 63 28 28 bj **) ckalloc((
2300: 75 6e 73 69 67 6e 65 64 29 0a 2d 09 09 28 28 6f unsigned).-..((o
2310: 62 6a 63 20 2b 20 31 29 20 2a 20 73 69 7a 65 6f bjc + 1) * sizeo
2320: 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a f(Tcl_Obj *)));.
2330: 2d 09 66 6f 72 20 28 69 20 3d 20 6f 62 6a 63 2d -.for (i = objc-
2340: 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d 29 20 1; i >= 0; i--)
2350: 7b 0a 2d 09 20 20 20 20 6e 65 77 4f 62 6a 76 5b {.-. newObjv[
2360: 69 2b 31 5d 20 3d 20 6f 62 6a 76 5b 69 5d 3b 0a i+1] = objv[i];.
2370: 2b 09 09 28 6e 65 77 4f 62 6a 63 20 2a 20 73 69 +..(newObjc * si
2380: 7a 65 6f 66 20 28 54 63 6c 5f 4f 62 6a 20 2a 29 zeof (Tcl_Obj *)
2390: 29 29 3b 0a 2b 09 2f 2a 20 43 6f 70 79 20 63 6f ));.+./* Copy co
23a0: 6d 6d 61 6e 64 20 70 72 65 66 69 78 20 66 72 6f mmand prefix fro
23b0: 6d 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 m unknown handle
23c0: 72 2e 20 2a 2f 0a 2b 09 66 6f 72 20 28 69 20 3d r. */.+.for (i =
23d0: 20 30 3b 20 69 20 3c 20 68 61 6e 64 6c 65 72 4f 0; i < handlerO
23e0: 62 6a 63 3b 20 2b 2b 69 29 20 7b 0a 2b 09 20 20 bjc; ++i) {.+.
23f0: 20 20 6e 65 77 4f 62 6a 76 5b 69 5d 20 3d 20 68 newObjv[i] = h
2400: 61 6e 64 6c 65 72 4f 62 6a 76 5b 69 5d 3b 0a 2b andlerObjv[i];.+
2410: 09 7d 0a 2b 09 2f 2a 20 41 64 64 20 69 6e 20 63 .}.+./* Add in c
2420: 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 61 6e 64 20 ommand name and
2430: 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 2b 09 arguments. */.+.
2440: 66 6f 72 20 28 69 20 3d 20 6f 62 6a 63 2d 31 3b for (i = objc-1;
2450: 20 69 20 3e 3d 20 30 3b 20 2d 2d 69 29 20 7b 0a i >= 0; --i) {.
2460: 2b 09 20 20 20 20 6e 65 77 4f 62 6a 76 5b 69 2b +. newObjv[i+
2470: 68 61 6e 64 6c 65 72 4f 62 6a 63 5d 20 3d 20 6f handlerObjc] = o
2480: 62 6a 76 5b 69 5d 3b 0a 20 09 7d 0a 2d 09 6e 65 bjv[i];. .}.-.ne
2490: 77 4f 62 6a 76 5b 30 5d 20 3d 20 54 63 6c 5f 4e wObjv[0] = Tcl_N
24a0: 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 ewStringObj("::u
24b0: 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 29 3b 0a 20 09 nknown", -1);. .
24c0: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 Tcl_IncrRefCount
24d0: 28 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 20 09 (newObjv[0]);. .
24e0: 63 6d 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e cmdPtr = (Comman
24f0: 64 20 2a 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d d *) Tcl_GetComm
2500: 61 6e 64 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 andFromObj(inter
2510: 70 2c 20 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a p, newObjv[0]);.
2520: 20 09 69 66 20 28 63 6d 64 50 74 72 20 3d 3d 20 .if (cmdPtr ==
2530: 4e 55 4c 4c 29 20 7b 0a 40 40 20 2d 33 32 37 32 NULL) {.@@ -3272
2540: 2c 38 20 2b 33 33 31 33 2c 38 20 40 40 0a 20 09 ,8 +3313,8 @@. .
2550: 20 20 20 20 63 6f 64 65 20 3d 20 54 43 4c 5f 45 code = TCL_E
2560: 52 52 4f 52 3b 0a 20 09 7d 20 65 6c 73 65 20 7b RROR;. .} else {
2570: 0a 20 09 20 20 20 20 69 50 74 72 2d 3e 6e 75 6d . . iPtr->num
2580: 4c 65 76 65 6c 73 2b 2b 3b 0a 2d 09 20 20 20 20 Levels++;.-.
2590: 63 6f 64 65 20 3d 20 54 63 6c 45 76 61 6c 4f 62 code = TclEvalOb
25a0: 6a 76 49 6e 74 65 72 6e 61 6c 28 69 6e 74 65 72 jvInternal(inter
25b0: 70 2c 20 6f 62 6a 63 2b 31 2c 20 6e 65 77 4f 62 p, objc+1, newOb
25c0: 6a 76 2c 0a 2d 09 09 20 20 20 20 63 6f 6d 6d 61 jv,.-.. comma
25d0: 6e 64 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a nd, length, 0);.
25e0: 2b 09 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c +. code = Tcl
25f0: 45 76 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c EvalObjvInternal
2600: 28 69 6e 74 65 72 70 2c 20 6e 65 77 4f 62 6a 63 (interp, newObjc
2610: 2c 20 6e 65 77 4f 62 6a 76 2c 20 63 6f 6d 6d 61 , newObjv, comma
2620: 6e 64 2c 0a 2b 09 09 09 20 20 20 20 6c 65 6e 67 nd,.+... leng
2630: 74 68 2c 20 30 29 3b 0a 20 09 20 20 20 20 69 50 th, 0);. . iP
2640: 74 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 2d 2d 3b tr->numLevels--;
2650: 0a 20 09 7d 0a 20 09 54 63 6c 5f 44 65 63 72 52 . .}. .Tcl_DecrR
2660: 65 66 43 6f 75 6e 74 28 6e 65 77 4f 62 6a 76 5b efCount(newObjv[
2670: 30 5d 29 3b 0a 49 6e 64 65 78 3a 20 67 65 6e 65 0]);.Index: gene
2680: 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 0a 3d ric/tclDecls.h.=
2690: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
26a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
26b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
26c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
26d0: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 ==.RCS file: /cv
26e0: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 sroot/tcl/tcl/ge
26f0: 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 neric/tclDecls.h
2700: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
2710: 76 69 73 69 6f 6e 20 31 2e 31 31 34 0a 64 69 66 vision 1.114.dif
2720: 66 20 2d 75 20 2d 72 31 2e 31 31 34 20 74 63 6c f -u -r1.114 tcl
2730: 44 65 63 6c 73 2e 68 0a 2d 2d 2d 20 67 65 6e 65 Decls.h.--- gene
2740: 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 09 37 ric/tclDecls.h.7
2750: 20 4a 75 6e 20 32 30 30 35 20 30 32 3a 30 37 3a Jun 2005 02:07:
2760: 32 34 20 2d 30 30 30 30 09 31 2e 31 31 34 0a 2b 24 -0000.1.114.+
2770: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 ++ generic/tclDe
2780: 63 6c 73 2e 68 09 31 33 20 4a 75 6e 20 32 30 30 cls.h.13 Jun 200
2790: 35 20 32 32 3a 30 35 3a 30 37 20 2d 30 30 30 30 5 22:05:07 -0000
27a0: 0a 40 40 20 2d 33 34 39 36 2c 36 20 2b 33 34 39 .@@ -3496,6 +349
27b0: 36 2c 31 39 20 40 40 0a 20 45 58 54 45 52 4e 20 6,19 @@. EXTERN
27c0: 54 63 6c 5f 44 72 69 76 65 72 54 72 75 6e 63 61 Tcl_DriverTrunca
27d0: 74 65 50 72 6f 63 20 2a 20 54 63 6c 5f 43 68 61 teProc * Tcl_Cha
27e0: 6e 6e 65 6c 54 72 75 6e 63 61 74 65 50 72 6f 63 nnelTruncateProc
27f0: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 20 _ANSI_ARGS_((.
2800: 09 09 09 09 54 63 6c 5f 43 68 61 6e 6e 65 6c 54 ....Tcl_ChannelT
2810: 79 70 65 20 2a 20 63 68 61 6e 54 79 70 65 50 74 ype * chanTypePt
2820: 72 29 29 3b 0a 20 23 65 6e 64 69 66 0a 2b 23 69 r));. #endif.+#i
2830: 66 6e 64 65 66 20 54 63 6c 5f 47 65 74 4e 61 6d fndef Tcl_GetNam
2840: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
2850: 64 6c 65 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 dler_TCL_DECLARE
2860: 44 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 47 D.+#define Tcl_G
2870: 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f etNamespaceUnkno
2880: 77 6e 48 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 wnHandler_TCL_DE
2890: 43 4c 41 52 45 44 0a 2b 2f 2a 20 35 36 31 20 2a CLARED.+/* 561 *
28a0: 2f 0a 2b 45 58 54 45 52 4e 20 54 63 6c 5f 4f 62 /.+EXTERN Tcl_Ob
28b0: 6a 20 2a 09 54 63 6c 5f 47 65 74 4e 61 6d 65 73 j *.Tcl_GetNames
28c0: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c paceUnknownHandl
28d0: 65 72 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 er _ANSI_ARGS_((
28e0: 0a 2b 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70 .+....Tcl_Interp
28f0: 20 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e * interp, Tcl_N
2900: 61 6d 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 amespace * nsPtr
2910: 29 29 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 ));.+#endif.+#if
2920: 6e 64 65 66 20 54 63 6c 5f 53 65 74 4e 61 6d 65 ndef Tcl_SetName
2930: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 spaceUnknownHand
2940: 6c 65 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 ler_TCL_DECLARED
2950: 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 53 65 .+#define Tcl_Se
2960: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
2970: 6e 48 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 nHandler_TCL_DEC
2980: 4c 41 52 45 44 0a 2b 2f 2a 20 35 36 32 20 2a 2f LARED.+/* 562 */
2990: 0a 2b 45 58 54 45 52 4e 20 69 6e 74 09 09 54 63 .+EXTERN int..Tc
29a0: 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_SetNamespaceUn
29b0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 5f 41 4e knownHandler _AN
29c0: 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09 SI_ARGS_((.+....
29d0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 Tcl_Interp * int
29e0: 65 72 70 2c 20 54 63 6c 5f 4e 61 6d 65 73 70 61 erp, Tcl_Namespa
29f0: 63 65 20 2a 20 6e 73 50 74 72 2c 20 0a 2b 09 09 ce * nsPtr, .+..
2a00: 09 09 54 63 6c 5f 4f 62 6a 20 2a 20 68 61 6e 64 ..Tcl_Obj * hand
2a10: 6c 65 72 50 74 72 29 29 3b 0a 2b 23 65 6e 64 69 lerPtr));.+#endi
2a20: 66 0a 20 0a 20 74 79 70 65 64 65 66 20 73 74 72 f. . typedef str
2a30: 75 63 74 20 54 63 6c 53 74 75 62 48 6f 6f 6b 73 uct TclStubHooks
2a40: 20 7b 0a 20 20 20 20 20 73 74 72 75 63 74 20 54 {. struct T
2a50: 63 6c 50 6c 61 74 53 74 75 62 73 20 2a 74 63 6c clPlatStubs *tcl
2a60: 50 6c 61 74 53 74 75 62 73 3b 0a 40 40 20 2d 34 PlatStubs;.@@ -4
2a70: 30 39 38 2c 36 20 2b 34 31 31 31 2c 38 20 40 40 098,6 +4111,8 @@
2a80: 0a 20 20 20 20 20 69 6e 74 20 28 2a 74 63 6c 5f . int (*tcl_
2a90: 47 65 74 42 69 67 6e 75 6d 46 72 6f 6d 4f 62 6a GetBignumFromObj
2aa0: 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 ) _ANSI_ARGS_((T
2ab0: 63 6c 5f 49 6e 74 65 72 70 2a 20 69 6e 74 65 72 cl_Interp* inter
2ac0: 70 2c 20 54 63 6c 5f 4f 62 6a 2a 20 6f 62 6a 2c p, Tcl_Obj* obj,
2ad0: 20 6d 70 5f 69 6e 74 2a 20 76 61 6c 75 65 29 29 mp_int* value))
2ae0: 3b 20 2f 2a 20 35 35 38 20 2a 2f 0a 20 20 20 20 ; /* 558 */.
2af0: 20 69 6e 74 20 28 2a 74 63 6c 5f 54 72 75 6e 63 int (*tcl_Trunc
2b00: 61 74 65 43 68 61 6e 6e 65 6c 29 20 5f 41 4e 53 ateChannel) _ANS
2b10: 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 43 68 61 I_ARGS_((Tcl_Cha
2b20: 6e 6e 65 6c 20 63 68 61 6e 2c 20 54 63 6c 5f 57 nnel chan, Tcl_W
2b30: 69 64 65 49 6e 74 20 6c 65 6e 67 74 68 29 29 3b ideInt length));
2b40: 20 2f 2a 20 35 35 39 20 2a 2f 0a 20 20 20 20 20 /* 559 */.
2b50: 54 63 6c 5f 44 72 69 76 65 72 54 72 75 6e 63 61 Tcl_DriverTrunca
2b60: 74 65 50 72 6f 63 20 2a 20 28 2a 74 63 6c 5f 43 teProc * (*tcl_C
2b70: 68 61 6e 6e 65 6c 54 72 75 6e 63 61 74 65 50 72 hannelTruncatePr
2b80: 6f 63 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 oc) _ANSI_ARGS_(
2b90: 28 54 63 6c 5f 43 68 61 6e 6e 65 6c 54 79 70 65 (Tcl_ChannelType
2ba0: 20 2a 20 63 68 61 6e 54 79 70 65 50 74 72 29 29 * chanTypePtr))
2bb0: 3b 20 2f 2a 20 35 36 30 20 2a 2f 0a 2b 20 20 20 ; /* 560 */.+
2bc0: 20 54 63 6c 5f 4f 62 6a 20 2a 20 28 2a 74 63 6c Tcl_Obj * (*tcl
2bd0: 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _GetNamespaceUnk
2be0: 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 5f 41 4e nownHandler) _AN
2bf0: 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e SI_ARGS_((Tcl_In
2c00: 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54 terp * interp, T
2c10: 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 6e cl_Namespace * n
2c20: 73 50 74 72 29 29 3b 20 2f 2a 20 35 36 31 20 2a sPtr)); /* 561 *
2c30: 2f 0a 2b 20 20 20 20 69 6e 74 20 28 2a 74 63 6c /.+ int (*tcl
2c40: 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _SetNamespaceUnk
2c50: 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 5f 41 4e nownHandler) _AN
2c60: 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e SI_ARGS_((Tcl_In
2c70: 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54 terp * interp, T
2c80: 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 6e cl_Namespace * n
2c90: 73 50 74 72 2c 20 54 63 6c 5f 4f 62 6a 20 2a 20 sPtr, Tcl_Obj *
2ca0: 68 61 6e 64 6c 65 72 50 74 72 29 29 3b 20 2f 2a handlerPtr)); /*
2cb0: 20 35 36 32 20 2a 2f 0a 20 7d 20 54 63 6c 53 74 562 */. } TclSt
2cc0: 75 62 73 3b 0a 20 0a 20 23 69 66 64 65 66 20 5f ubs;. . #ifdef _
2cd0: 5f 63 70 6c 75 73 70 6c 75 73 0a 40 40 20 2d 36 _cplusplus.@@ -6
2ce0: 33 38 32 2c 36 20 2b 36 33 39 37 2c 31 34 20 40 382,6 +6397,14 @
2cf0: 40 0a 20 23 64 65 66 69 6e 65 20 54 63 6c 5f 43 @. #define Tcl_C
2d00: 68 61 6e 6e 65 6c 54 72 75 6e 63 61 74 65 50 72 hannelTruncatePr
2d10: 6f 63 20 5c 0a 20 09 28 74 63 6c 53 74 75 62 73 oc \. .(tclStubs
2d20: 50 74 72 2d 3e 74 63 6c 5f 43 68 61 6e 6e 65 6c Ptr->tcl_Channel
2d30: 54 72 75 6e 63 61 74 65 50 72 6f 63 29 20 2f 2a TruncateProc) /*
2d40: 20 35 36 30 20 2a 2f 0a 20 23 65 6e 64 69 66 0a 560 */. #endif.
2d50: 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 47 65 74 +#ifndef Tcl_Get
2d60: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
2d70: 48 61 6e 64 6c 65 72 0a 2b 23 64 65 66 69 6e 65 Handler.+#define
2d80: 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 Tcl_GetNamespac
2d90: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 eUnknownHandler
2da0: 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73 50 74 72 \.+.(tclStubsPtr
2db0: 2d 3e 74 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 ->tcl_GetNamespa
2dc0: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
2dd0: 29 20 2f 2a 20 35 36 31 20 2a 2f 0a 2b 23 65 6e ) /* 561 */.+#en
2de0: 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c dif.+#ifndef Tcl
2df0: 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _SetNamespaceUnk
2e00: 6e 6f 77 6e 48 61 6e 64 6c 65 72 0a 2b 23 64 65 nownHandler.+#de
2e10: 66 69 6e 65 20 54 63 6c 5f 53 65 74 4e 61 6d 65 fine Tcl_SetName
2e20: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 spaceUnknownHand
2e30: 6c 65 72 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 ler \.+.(tclStub
2e40: 73 50 74 72 2d 3e 74 63 6c 5f 53 65 74 4e 61 6d sPtr->tcl_SetNam
2e50: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
2e60: 64 6c 65 72 29 20 2f 2a 20 35 36 32 20 2a 2f 0a dler) /* 562 */.
2e70: 2b 23 65 6e 64 69 66 0a 20 0a 20 23 65 6e 64 69 +#endif. . #endi
2e80: 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 55 53 45 f /* defined(USE
2e90: 5f 54 43 4c 5f 53 54 55 42 53 29 20 26 26 20 21 _TCL_STUBS) && !
2ea0: 64 65 66 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f defined(USE_TCL_
2eb0: 53 54 55 42 5f 50 52 4f 43 53 29 20 2a 2f 0a 20 STUB_PROCS) */.
2ec0: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f .Index: generic/
2ed0: 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d tclInt.h.=======
2ee0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2ef0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2f00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2f10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
2f20: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
2f30: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f tcl/tcl/generic/
2f40: 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 tclInt.h,v.retri
2f50: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
2f60: 2e 32 33 35 0a 64 69 66 66 20 2d 75 20 2d 72 31 .235.diff -u -r1
2f70: 2e 32 33 35 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d .235 tclInt.h.--
2f80: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 - generic/tclInt
2f90: 2e 68 09 37 20 4a 75 6e 20 32 30 30 35 20 32 31 .h.7 Jun 2005 21
2fa0: 3a 34 36 3a 30 38 20 2d 30 30 30 30 09 31 2e 32 :46:08 -0000.1.2
2fb0: 33 35 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 35.+++ generic/t
2fc0: 63 6c 49 6e 74 2e 68 09 31 33 20 4a 75 6e 20 32 clInt.h.13 Jun 2
2fd0: 30 30 35 20 32 32 3a 30 35 3a 31 32 20 2d 30 30 005 22:05:12 -00
2fe0: 30 30 0a 40 40 20 2d 32 33 34 2c 36 20 2b 32 33 00.@@ -234,6 +23
2ff0: 34 2c 39 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 4,9 @@. Tcl_
3000: 45 6e 73 65 6d 62 6c 65 20 2a 65 6e 73 65 6d 62 Ensemble *ensemb
3010: 6c 65 73 3b 09 2f 2a 20 4c 69 73 74 20 6f 66 20 les;./* List of
3020: 73 74 72 75 63 74 75 72 65 73 20 74 68 61 74 20 structures that
3030: 63 6f 6e 74 61 69 6e 20 74 68 65 20 64 65 74 61 contain the deta
3040: 69 6c 73 0a 20 09 09 09 09 20 2a 20 6f 66 20 74 ils. .... * of t
3050: 68 65 20 65 6e 73 65 6d 62 6c 65 73 20 74 68 61 he ensembles tha
3060: 74 20 61 72 65 20 69 6d 70 6c 65 6d 65 6e 74 65 t are implemente
3070: 64 20 6f 6e 0a 20 09 09 09 09 20 2a 20 74 6f 70 d on. .... * top
3080: 20 6f 66 20 74 68 69 73 20 6e 61 6d 65 73 70 61 of this namespa
3090: 63 65 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f ce. */.+ Tcl_
30a0: 4f 62 6a 20 2a 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Obj *unknownHand
30b0: 6c 65 72 50 74 72 3b 09 2f 2a 20 41 20 73 63 72 lerPtr;./* A scr
30c0: 69 70 74 20 66 72 61 67 6d 65 6e 74 20 74 6f 20 ipt fragment to
30d0: 62 65 20 75 73 65 64 20 77 68 65 6e 20 63 6f 6d be used when com
30e0: 6d 61 6e 64 0a 2b 09 09 09 09 20 2a 20 72 65 73 mand.+.... * res
30f0: 6f 6c 75 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 olution in this
3100: 6e 61 6d 65 73 70 61 63 65 20 66 61 69 6c 73 2e namespace fails.
3110: 20 54 49 50 0a 2b 09 09 09 09 20 2a 20 31 38 31 TIP.+.... * 181
3120: 2e 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 63 6f . */. int co
3130: 6d 6d 61 6e 64 50 61 74 68 4c 65 6e 67 74 68 3b mmandPathLength;
3140: 09 2f 2a 20 54 68 65 20 6c 65 6e 67 74 68 20 6f ./* The length o
3150: 66 20 74 68 65 20 65 78 70 6c 69 63 69 74 20 70 f the explicit p
3160: 61 74 68 2e 20 2a 2f 0a 20 20 20 20 20 4e 61 6d ath. */. Nam
3170: 65 73 70 61 63 65 50 61 74 68 45 6e 74 72 79 20 espacePathEntry
3180: 2a 63 6f 6d 6d 61 6e 64 50 61 74 68 41 72 72 61 *commandPathArra
3190: 79 3b 0a 20 09 09 09 09 2f 2a 20 54 68 65 20 65 y;. ..../* The e
31a0: 78 70 6c 69 63 69 74 20 70 61 74 68 20 6f 66 20 xplicit path of
31b0: 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 61 73 the namespace as
31c0: 20 61 6e 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 an.Index: gener
31d0: 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d ic/tclNamesp.c.=
31e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
31f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3220: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 ==.RCS file: /cv
3230: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 sroot/tcl/tcl/ge
3240: 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e neric/tclNamesp.
3250: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 c,v.retrieving r
3260: 65 76 69 73 69 6f 6e 20 31 2e 37 37 0a 64 69 66 evision 1.77.dif
3270: 66 20 2d 75 20 2d 72 31 2e 37 37 20 74 63 6c 4e f -u -r1.77 tclN
3280: 61 6d 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 amesp.c.--- gene
3290: 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 ric/tclNamesp.c.
32a0: 37 20 4a 75 6e 20 32 30 30 35 20 32 31 3a 34 36 7 Jun 2005 21:46
32b0: 3a 31 38 20 2d 30 30 30 30 09 31 2e 37 37 0a 2b :18 -0000.1.77.+
32c0: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 ++ generic/tclNa
32d0: 6d 65 73 70 2e 63 09 31 33 20 4a 75 6e 20 32 30 mesp.c.13 Jun 20
32e0: 30 35 20 32 32 3a 30 35 3a 32 35 20 2d 30 30 30 05 22:05:25 -000
32f0: 30 0a 40 40 20 2d 31 32 2c 36 20 2b 31 32 2c 37 0.@@ -12,6 +12,7
3300: 20 40 40 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 @@. * Copyrigh
3310: 74 20 28 63 29 20 31 39 39 37 20 53 75 6e 20 4d t (c) 1997 Sun M
3320: 69 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 icrosystems, Inc
3330: 2e 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 20 .. * Copyright
3340: 28 63 29 20 31 39 39 38 2d 31 39 39 39 20 62 79 (c) 1998-1999 by
3350: 20 53 63 72 69 70 74 69 63 73 20 43 6f 72 70 6f Scriptics Corpo
3360: 72 61 74 69 6f 6e 2e 0a 20 20 2a 20 43 6f 70 79 ration.. * Copy
3370: 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2d 32 right (c) 2002-2
3380: 30 30 35 20 44 6f 6e 61 6c 20 4b 2e 20 46 65 6c 005 Donal K. Fel
3390: 6c 6f 77 73 2e 0a 2b 20 2a 20 43 6f 70 79 72 69 lows..+ * Copyri
33a0: 67 68 74 20 28 63 29 20 32 30 30 35 20 4e 65 69 ght (c) 2005 Nei
33b0: 6c 20 4d 61 64 64 65 6e 2e 0a 20 20 2a 0a 20 20 l Madden.. *.
33c0: 2a 20 4f 72 69 67 69 6e 61 6c 6c 79 20 69 6d 70 * Originally imp
33d0: 6c 65 6d 65 6e 74 65 64 20 62 79 0a 20 20 2a 20 lemented by. *
33e0: 20 20 4d 69 63 68 61 65 6c 20 4a 2e 20 4d 63 4c Michael J. McL
33f0: 65 6e 6e 61 6e 0a 40 40 20 2d 32 35 31 2c 36 20 ennan.@@ -251,6
3400: 2b 32 35 32 2c 39 20 40 40 0a 20 73 74 61 74 69 +252,9 @@. stati
3410: 63 20 69 6e 74 09 09 4e 61 6d 65 73 70 61 63 65 c int..Namespace
3420: 54 61 69 6c 43 6d 64 20 5f 41 4e 53 49 5f 41 52 TailCmd _ANSI_AR
3430: 47 53 5f 28 28 0a 20 09 09 09 20 20 20 20 43 6c GS_((. ... Cl
3440: 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 ientData dummy,
3450: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
3460: 72 70 2c 0a 20 09 09 09 20 20 20 20 69 6e 74 20 rp,. ... int
3470: 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 objc, Tcl_Obj *C
3480: 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 29 3b 0a 2b ONST objv[]));.+
3490: 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 6d 65 static int..Name
34a0: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 20 spaceUnknownCmd
34b0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 _ANSI_ARGS_((.+.
34c0: 09 09 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 .. ClientData
34d0: 20 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 dummy, Tcl_Inte
34e0: 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b 09 09 09 rp *interp,.+...
34f0: 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 int objc, Tc
3500: 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a l_Obj *CONST obj
3510: 76 5b 5d 29 29 3b 0a 20 73 74 61 74 69 63 20 69 v[]));. static i
3520: 6e 74 09 09 4e 61 6d 65 73 70 61 63 65 57 68 69 nt..NamespaceWhi
3530: 63 68 43 6d 64 20 5f 41 4e 53 49 5f 41 52 47 53 chCmd _ANSI_ARGS
3540: 5f 28 28 0a 20 09 09 09 20 20 20 20 43 6c 69 65 _((. ... Clie
3550: 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 ntData dummy, Tc
3560: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 l_Interp *interp
3570: 2c 0a 20 09 09 09 20 20 20 20 69 6e 74 20 6f 62 ,. ... int ob
3580: 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e jc, Tcl_Obj *CON
3590: 53 54 20 6f 62 6a 76 5b 5d 29 29 3b 0a 40 40 20 ST objv[]));.@@
35a0: 2d 38 35 30 2c 36 20 2b 38 35 34 2c 37 20 40 40 -850,6 +854,7 @@
35b0: 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f 6d . nsPtr->com
35c0: 70 69 6c 65 64 56 61 72 52 65 73 50 72 6f 63 20 piledVarResProc
35d0: 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 6e 73 50 = NULL;. nsP
35e0: 74 72 2d 3e 65 78 70 6f 72 74 4c 6f 6f 6b 75 70 tr->exportLookup
35f0: 45 70 6f 63 68 20 3d 20 30 3b 0a 20 20 20 20 20 Epoch = 0;.
3600: 6e 73 50 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 73 nsPtr->ensembles
3610: 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 6e 73 = NULL;.+ ns
3620: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Ptr->unknownHand
3630: 6c 65 72 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 lerPtr = NULL;.
3640: 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f 6d 6d 61 nsPtr->comma
3650: 6e 64 50 61 74 68 4c 65 6e 67 74 68 20 3d 20 30 ndPathLength = 0
3660: 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f ;. nsPtr->co
3670: 6d 6d 61 6e 64 50 61 74 68 41 72 72 61 79 20 3d mmandPathArray =
3680: 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 6e 73 50 74 NULL;. nsPt
3690: 72 2d 3e 63 6f 6d 6d 61 6e 64 50 61 74 68 53 6f r->commandPathSo
36a0: 75 72 63 65 4c 69 73 74 20 3d 20 4e 55 4c 4c 3b urceList = NULL;
36b0: 0a 40 40 20 2d 39 35 30 2c 36 20 2b 39 35 35 2c .@@ -950,6 +955,
36c0: 31 34 20 40 40 0a 20 20 20 20 20 7d 0a 20 0a 20 14 @@. }. .
36d0: 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 49 /*.+ * I
36e0: 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 f the namespace
36f0: 68 61 73 20 61 20 72 65 67 69 73 74 65 72 65 64 has a registered
3700: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 unknown handler
3710: 20 28 54 49 50 20 31 38 31 29 2c 20 74 68 65 6e (TIP 181), then
3720: 20 66 72 65 65 0a 2b 20 20 20 20 20 2a 20 69 74 free.+ * it
3730: 20 68 65 72 65 2e 0a 2b 20 20 20 20 20 2a 2f 0a here..+ */.
3740: 2b 20 20 20 20 69 66 20 28 6e 73 50 74 72 2d 3e + if (nsPtr->
3750: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
3760: 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54 r != NULL) {.+.T
3770: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 cl_DecrRefCount(
3780: 6e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 nsPtr->unknownHa
3790: 6e 64 6c 65 72 50 74 72 29 3b 0a 2b 20 20 20 20 ndlerPtr);.+
37a0: 7d 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 20 20 20 20 }.+.+ /*.
37b0: 20 20 2a 20 49 66 20 74 68 65 20 6e 61 6d 65 73 * If the names
37c0: 70 61 63 65 20 69 73 20 6f 6e 20 74 68 65 20 63 pace is on the c
37d0: 61 6c 6c 20 66 72 61 6d 65 20 73 74 61 63 6b 2c all frame stack,
37e0: 20 69 74 20 69 73 20 6d 61 72 6b 65 64 20 61 73 it is marked as
37f0: 20 22 64 79 69 6e 67 22 0a 20 20 20 20 20 20 2a "dying". *
3800: 20 28 4e 53 5f 44 59 49 4e 47 20 69 73 20 4f 52 (NS_DYING is OR
3810: 27 64 20 69 6e 74 6f 20 69 74 73 20 66 6c 61 67 'd into its flag
3820: 73 29 3a 20 74 68 65 20 6e 61 6d 65 73 70 61 63 s): the namespac
3830: 65 20 63 61 6e 27 74 20 62 65 20 6c 6f 6f 6b 65 e can't be looke
3840: 64 20 75 70 0a 20 20 20 20 20 20 2a 20 62 79 20 d up. * by
3850: 6e 61 6d 65 20 62 75 74 20 69 74 73 20 63 6f 6d name but its com
3860: 6d 61 6e 64 73 20 61 6e 64 20 76 61 72 69 61 62 mands and variab
3870: 6c 65 73 20 61 72 65 20 73 74 69 6c 6c 20 75 73 les are still us
3880: 61 62 6c 65 20 62 79 20 74 68 6f 73 65 0a 40 40 able by those.@@
3890: 20 2d 32 39 31 32 2c 31 33 20 2b 32 39 32 35 2c -2912,13 +2925,
38a0: 31 33 20 40 40 0a 20 09 22 63 68 69 6c 64 72 65 13 @@. ."childre
38b0: 6e 22 2c 20 22 63 6f 64 65 22 2c 20 22 63 75 72 n", "code", "cur
38c0: 72 65 6e 74 22 2c 20 22 64 65 6c 65 74 65 22 2c rent", "delete",
38d0: 20 22 65 6e 73 65 6d 62 6c 65 22 2c 0a 20 09 22 "ensemble",. ."
38e0: 65 76 61 6c 22 2c 20 22 65 78 69 73 74 73 22 2c eval", "exists",
38f0: 20 22 65 78 70 6f 72 74 22 2c 20 22 66 6f 72 67 "export", "forg
3900: 65 74 22 2c 20 22 69 6d 70 6f 72 74 22 2c 0a 20 et", "import",.
3910: 09 22 69 6e 73 63 6f 70 65 22 2c 20 22 6f 72 69 ."inscope", "ori
3920: 67 69 6e 22 2c 20 22 70 61 72 65 6e 74 22 2c 20 gin", "parent",
3930: 22 70 61 74 68 22 2c 20 22 71 75 61 6c 69 66 69 "path", "qualifi
3940: 65 72 73 22 2c 0a 2d 09 22 74 61 69 6c 22 2c 20 ers",.-."tail",
3950: 22 77 68 69 63 68 22 2c 20 28 63 68 61 72 20 2a "which", (char *
3960: 29 20 4e 55 4c 4c 0a 2b 09 22 74 61 69 6c 22 2c ) NULL.+."tail",
3970: 20 22 75 6e 6b 6e 6f 77 6e 22 2c 20 22 77 68 69 "unknown", "whi
3980: 63 68 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 ch", (char *) NU
3990: 4c 4c 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 LL. };.
39a0: 65 6e 75 6d 20 4e 53 53 75 62 43 6d 64 49 64 78 enum NSSubCmdIdx
39b0: 20 7b 0a 20 09 4e 53 43 68 69 6c 64 72 65 6e 49 {. .NSChildrenI
39c0: 64 78 2c 20 4e 53 43 6f 64 65 49 64 78 2c 20 4e dx, NSCodeIdx, N
39d0: 53 43 75 72 72 65 6e 74 49 64 78 2c 20 4e 53 44 SCurrentIdx, NSD
39e0: 65 6c 65 74 65 49 64 78 2c 20 4e 53 45 6e 73 65 eleteIdx, NSEnse
39f0: 6d 62 6c 65 49 64 78 2c 0a 20 09 4e 53 45 76 61 mbleIdx,. .NSEva
3a00: 6c 49 64 78 2c 20 4e 53 45 78 69 73 74 73 49 64 lIdx, NSExistsId
3a10: 78 2c 20 4e 53 45 78 70 6f 72 74 49 64 78 2c 20 x, NSExportIdx,
3a20: 4e 53 46 6f 72 67 65 74 49 64 78 2c 20 4e 53 49 NSForgetIdx, NSI
3a30: 6d 70 6f 72 74 49 64 78 2c 0a 20 09 4e 53 49 6e mportIdx,. .NSIn
3a40: 73 63 6f 70 65 49 64 78 2c 20 4e 53 4f 72 69 67 scopeIdx, NSOrig
3a50: 69 6e 49 64 78 2c 20 4e 53 50 61 72 65 6e 74 49 inIdx, NSParentI
3a60: 64 78 2c 20 4e 53 50 61 74 68 49 64 78 2c 20 4e dx, NSPathIdx, N
3a70: 53 51 75 61 6c 69 66 69 65 72 73 49 64 78 2c 0a SQualifiersIdx,.
3a80: 2d 09 4e 53 54 61 69 6c 49 64 78 2c 20 4e 53 57 -.NSTailIdx, NSW
3a90: 68 69 63 68 49 64 78 0a 2b 09 4e 53 54 61 69 6c hichIdx.+.NSTail
3aa0: 49 64 78 2c 20 4e 53 55 6e 6b 6e 6f 77 6e 49 64 Idx, NSUnknownId
3ab0: 78 2c 20 4e 53 57 68 69 63 68 49 64 78 0a 20 20 x, NSWhichIdx.
3ac0: 20 20 20 7d 3b 0a 20 20 20 20 20 69 6e 74 20 69 };. int i
3ad0: 6e 64 65 78 2c 20 72 65 73 75 6c 74 3b 0a 20 0a ndex, result;. .
3ae0: 40 40 20 2d 32 39 38 36 2c 36 20 2b 32 39 39 39 @@ -2986,6 +2999
3af0: 2c 39 20 40 40 0a 20 20 20 20 20 63 61 73 65 20 ,9 @@. case
3b00: 4e 53 54 61 69 6c 49 64 78 3a 0a 20 09 72 65 73 NSTailIdx:. .res
3b10: 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 65 54 ult = NamespaceT
3b20: 61 69 6c 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 ailCmd(clientDat
3b30: 61 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c a, interp, objc,
3b40: 20 6f 62 6a 76 29 3b 0a 20 09 62 72 65 61 6b 3b objv);. .break;
3b50: 0a 2b 20 20 20 20 63 61 73 65 20 4e 53 55 6e 6b .+ case NSUnk
3b60: 6e 6f 77 6e 49 64 78 3a 0a 2b 09 72 65 73 75 6c nownIdx:.+.resul
3b70: 74 20 3d 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b t = NamespaceUnk
3b80: 6e 6f 77 6e 43 6d 64 28 63 6c 69 65 6e 74 44 61 nownCmd(clientDa
3b90: 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 ta, interp, objc
3ba0: 2c 20 6f 62 6a 76 29 3b 0a 2b 09 62 72 65 61 6b , objv);.+.break
3bb0: 3b 0a 20 20 20 20 20 63 61 73 65 20 4e 53 57 68 ;. case NSWh
3bc0: 69 63 68 49 64 78 3a 0a 20 09 72 65 73 75 6c 74 ichIdx:. .result
3bd0: 20 3d 20 4e 61 6d 65 73 70 61 63 65 57 68 69 63 = NamespaceWhic
3be0: 68 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c hCmd(clientData,
3bf0: 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f interp, objc, o
3c00: 62 6a 76 29 3b 0a 20 09 62 72 65 61 6b 3b 0a 40 bjv);. .break;.@
3c10: 40 20 2d 34 32 39 35 2c 36 20 2b 34 33 31 31 2c @ -4295,6 +4311,
3c20: 31 36 37 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 167 @@. /*. *--
3c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3c70: 2d 2d 2d 2d 0a 20 20 2a 0a 2b 20 2a 20 4e 61 6d ----. *.+ * Nam
3c80: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 espaceUnknownCmd
3c90: 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 49 6e 76 6f --.+ *.+ *.Invo
3ca0: 6b 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 ked to implement
3cb0: 20 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 20 the "namespace
3cc0: 75 6e 6b 6e 6f 77 6e 22 20 63 6f 6d 6d 61 6e 64 unknown" command
3cd0: 20 28 54 49 50 20 31 38 31 29 20 74 68 61 74 0a (TIP 181) that.
3ce0: 2b 20 2a 09 73 65 74 73 20 6f 72 20 71 75 65 72 + *.sets or quer
3cf0: 69 65 73 20 61 20 70 65 72 2d 6e 61 6d 65 73 70 ies a per-namesp
3d00: 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d ace unknown comm
3d10: 61 6e 64 20 68 61 6e 64 6c 65 72 2e 20 54 68 69 and handler. Thi
3d20: 73 20 68 61 6e 64 6c 65 72 0a 2b 20 2a 09 69 73 s handler.+ *.is
3d30: 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 63 6f 6d called when com
3d40: 6d 61 6e 64 20 6c 6f 6f 6b 75 70 20 66 61 69 6c mand lookup fail
3d50: 73 20 28 63 75 72 72 65 6e 74 20 61 6e 64 20 67 s (current and g
3d60: 6c 6f 62 61 6c 20 6e 73 29 2e 20 54 68 65 0a 2b lobal ns). The.+
3d70: 20 2a 09 64 65 66 61 75 6c 74 20 68 61 6e 64 6c *.default handl
3d80: 65 72 20 66 6f 72 20 74 68 65 20 67 6c 6f 62 61 er for the globa
3d90: 6c 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 3a l namespace is :
3da0: 3a 75 6e 6b 6e 6f 77 6e 2e 20 54 68 65 20 64 65 :unknown. The de
3db0: 66 61 75 6c 74 0a 2b 20 2a 09 68 61 6e 64 6c 65 fault.+ *.handle
3dc0: 72 20 66 6f 72 20 6f 74 68 65 72 20 6e 61 6d 65 r for other name
3dd0: 73 70 61 63 65 73 20 69 73 20 74 6f 20 63 61 6c spaces is to cal
3de0: 6c 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d l the global nam
3df0: 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 0a 2b espace unknown.+
3e00: 20 2a 09 68 61 6e 64 6c 65 72 2e 20 50 61 73 73 *.handler. Pass
3e10: 69 6e 67 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 ing an empty lis
3e20: 74 20 72 65 73 75 6c 74 73 20 69 6e 20 72 65 73 t results in res
3e30: 65 74 74 69 6e 67 20 74 68 65 20 68 61 6e 64 6c etting the handl
3e40: 65 72 20 74 6f 0a 2b 20 2a 09 69 74 73 20 64 65 er to.+ *.its de
3e50: 66 61 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 09 20 fault..+ *.+ *.
3e60: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b namespace unk
3e70: 6e 6f 77 6e 20 3f 68 61 6e 64 6c 65 72 3f 0a 2b nown ?handler?.+
3e80: 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a *.+ * Results:.
3e90: 2b 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f + *.Returns TCL_
3ea0: 4f 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c OK if successful
3eb0: 2c 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 , and TCL_ERROR
3ec0: 69 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 if anything goes
3ed0: 20 77 72 6f 6e 67 2e 0a 2b 20 2a 0a 2b 20 2a 20 wrong..+ *.+ *
3ee0: 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 Side effects:.+
3ef0: 2a 09 49 66 20 6e 6f 20 68 61 6e 64 6c 65 72 20 *.If no handler
3f00: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 72 65 is specified, re
3f10: 74 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 69 turns a result i
3f20: 6e 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 n the interprete
3f30: 72 27 73 0a 2b 20 2a 09 72 65 73 75 6c 74 20 6f r's.+ *.result o
3f40: 62 6a 65 63 74 2c 20 6f 74 68 65 72 77 69 73 65 bject, otherwise
3f50: 20 69 74 20 73 65 74 73 20 74 68 65 20 75 6e 6b it sets the unk
3f60: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 20 70 6f 69 nown handler poi
3f70: 6e 74 65 72 20 69 6e 20 74 68 65 0a 2b 20 2a 09 nter in the.+ *.
3f80: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
3f90: 65 20 74 6f 20 74 68 65 20 73 63 72 69 70 74 20 e to the script
3fa0: 66 72 61 67 6d 65 6e 74 20 70 72 6f 76 69 64 65 fragment provide
3fb0: 64 2e 20 49 66 20 61 6e 79 74 68 69 6e 67 20 67 d. If anything g
3fc0: 6f 65 73 0a 2b 20 2a 09 77 72 6f 6e 67 2c 20 74 oes.+ *.wrong, t
3fd0: 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 6e 20 he result is an
3fe0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a 2b error message..+
3ff0: 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *.+ *----------
4000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a ------------.+ *
4040: 2f 0a 2b 73 74 61 74 69 63 20 69 6e 74 0a 2b 4e /.+static int.+N
4050: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 amespaceUnknownC
4060: 6d 64 28 64 75 6d 6d 79 2c 20 69 6e 74 65 72 70 md(dummy, interp
4070: 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 0a 2b 20 , objc, objv).+
4080: 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64 75 ClientData du
4090: 6d 6d 79 3b 09 09 2f 2a 20 4e 6f 74 20 75 73 65 mmy;../* Not use
40a0: 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 d. */.+ Tcl_I
40b0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 nterp *interp;..
40c0: 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 /* Current inter
40d0: 70 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 preter. */.+
40e0: 69 6e 74 20 6f 62 6a 63 3b 09 09 09 2f 2a 20 4e int objc;.../* N
40f0: 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e umber of argumen
4100: 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f ts. */.+ Tcl_
4110: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b Obj *CONST objv[
4120: 5d 3b 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f ];./* Argument o
4130: 62 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 bjects. */.+{.+
4140: 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 Tcl_Namespace
4150: 20 2a 63 75 72 72 4e 73 50 74 72 3b 0a 2b 20 20 *currNsPtr;.+
4160: 20 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 73 75 6c Tcl_Obj *resul
4170: 74 50 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 72 tPtr;.+ int r
4180: 63 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 c;.+.+ if (ob
4190: 6a 63 20 3e 20 33 29 20 7b 0a 2b 09 54 63 6c 5f jc > 3) {.+.Tcl_
41a0: 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 WrongNumArgs(int
41b0: 65 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 3f erp, 2, objv, "?
41c0: 73 63 72 69 70 74 3f 22 29 3b 0a 2b 20 20 20 20 script?");.+
41d0: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 return TCL_E
41e0: 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b RROR;.+ }.+.+
41f0: 20 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 currNsPtr =
4200: 54 63 6c 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 Tcl_GetCurrentNa
4210: 6d 65 73 70 61 63 65 28 69 6e 74 65 72 70 29 3b mespace(interp);
4220: 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a 63 .+.+ if (objc
4230: 20 3d 3d 20 32 29 20 7b 0a 2b 09 2f 2a 0a 2b 09 == 2) {.+./*.+.
4240: 20 2a 20 49 6e 74 72 6f 73 70 65 63 74 69 6f 6e * Introspection
4250: 20 2d 20 72 65 74 75 72 6e 20 74 68 65 20 63 75 - return the cu
4260: 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 rrent namespace
4270: 68 61 6e 64 6c 65 72 2e 0a 2b 09 20 2a 2f 0a 2b handler..+. */.+
4280: 09 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c .resultPtr = Tcl
4290: 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _GetNamespaceUnk
42a0: 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 69 6e 74 65 nownHandler(inte
42b0: 72 70 2c 20 63 75 72 72 4e 73 50 74 72 29 3b 0a rp, currNsPtr);.
42c0: 2b 09 69 66 20 28 72 65 73 75 6c 74 50 74 72 20 +.if (resultPtr
42d0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 == NULL) {.+.
42e0: 20 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c resultPtr = Tcl
42f0: 5f 4e 65 77 4f 62 6a 28 29 3b 0a 2b 09 7d 0a 2b _NewObj();.+.}.+
4300: 09 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c .Tcl_SetObjResul
4310: 74 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74 t(interp, result
4320: 50 74 72 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 Ptr);.+ } els
4330: 65 20 7b 0a 2b 09 72 63 20 3d 20 54 63 6c 5f 53 e {.+.rc = Tcl_S
4340: 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f etNamespaceUnkno
4350: 77 6e 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 wnHandler(interp
4360: 2c 20 63 75 72 72 4e 73 50 74 72 2c 20 6f 62 6a , currNsPtr, obj
4370: 76 5b 32 5d 29 3b 0a 2b 09 69 66 20 28 72 63 20 v[2]);.+.if (rc
4380: 3d 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 == TCL_OK) {.+.
4390: 20 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 Tcl_SetObjRes
43a0: 75 6c 74 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 ult(interp, objv
43b0: 5b 32 5d 29 3b 0a 2b 09 7d 0a 2b 09 72 65 74 75 [2]);.+.}.+.retu
43c0: 72 6e 20 72 63 3b 0a 2b 20 20 20 20 7d 0a 2b 20 rn rc;.+ }.+
43d0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b return TCL_OK
43e0: 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d ;.+}.+..+/*.+ *-
43f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4430: 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 -----.+ *.+ * Tc
4440: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_GetNamespaceUn
4450: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 2d 2d 0a knownHandler --.
4460: 2b 20 2a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 + *.+ *.Returns
4470: 74 68 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d the unknown comm
4480: 61 6e 64 20 68 61 6e 64 6c 65 72 20 72 65 67 69 and handler regi
4490: 73 74 65 72 65 64 20 66 6f 72 20 74 68 65 20 67 stered for the g
44a0: 69 76 65 6e 0a 2b 20 2a 09 6e 61 6d 65 73 70 61 iven.+ *.namespa
44b0: 63 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 ce..+ *.+ * Resu
44c0: 6c 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 lts:.+ *.Returns
44d0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e 6b the current unk
44e0: 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e nown command han
44f0: 64 6c 65 72 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 dler, or NULL if
4500: 20 6e 6f 6e 65 0a 2b 20 2a 09 65 78 69 73 74 73 none.+ *.exists
4510: 20 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 70 61 for the namespa
4520: 63 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 ce..+ *.+ * Side
4530: 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 4e 6f effects:.+ *.No
4540: 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d ne..+ *.+ *-----
4550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4590: 2d 0a 2b 20 2a 2f 0a 2b 54 63 6c 5f 4f 62 6a 20 -.+ */.+Tcl_Obj
45a0: 2a 0a 2b 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 *.+Tcl_GetNamesp
45b0: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
45c0: 72 28 69 6e 74 65 72 70 2c 20 6e 73 50 74 72 29 r(interp, nsPtr)
45d0: 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 .+ Tcl_Interp
45e0: 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 54 68 *interp;../* Th
45f0: 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 6e e interpreter in
4600: 20 77 68 69 63 68 20 74 68 65 20 6e 61 6d 65 73 which the names
4610: 70 61 63 65 0a 2b 09 09 09 09 20 2a 20 65 78 69 pace.+.... * exi
4620: 73 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c sts. */.+ Tcl
4630: 5f 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 _Namespace *nsPt
4640: 72 3b 09 2f 2a 20 54 68 65 20 6e 61 6d 65 73 70 r;./* The namesp
4650: 61 63 65 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 ace. */.+{.+
4660: 4e 61 6d 65 73 70 61 63 65 20 2a 63 75 72 72 4e Namespace *currN
4670: 73 50 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 sPtr = (Namespac
4680: 65 20 2a 29 6e 73 50 74 72 3b 0a 2b 0a 2b 20 20 e *)nsPtr;.+.+
4690: 20 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d if (currNsPtr-
46a0: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
46b0: 74 72 20 3d 3d 20 4e 55 4c 4c 20 26 26 0a 2b 09 tr == NULL &&.+.
46c0: 63 75 72 72 4e 73 50 74 72 20 3d 3d 20 28 28 49 currNsPtr == ((I
46d0: 6e 74 65 72 70 20 2a 29 69 6e 74 65 72 70 29 2d nterp *)interp)-
46e0: 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 29 20 7b 0a >globalNsPtr) {.
46f0: 2b 09 2f 2a 20 44 65 66 61 75 6c 74 20 68 61 6e +./* Default han
4700: 64 6c 65 72 20 66 6f 72 20 67 6c 6f 62 61 6c 20 dler for global
4710: 6e 61 6d 65 73 70 61 63 65 20 69 73 20 22 3a 3a namespace is "::
4720: 75 6e 6b 6e 6f 77 6e 22 2e 20 46 6f 72 20 61 6c unknown". For al
4730: 6c 0a 2b 09 20 2a 20 6f 74 68 65 72 20 6e 61 6d l.+. * other nam
4740: 65 73 70 61 63 65 73 2c 20 69 74 20 69 73 20 4e espaces, it is N
4750: 55 4c 4c 20 28 77 68 69 63 68 20 66 61 6c 6c 73 ULL (which falls
4760: 20 62 61 63 6b 20 6f 6e 20 74 68 65 20 67 6c 6f back on the glo
4770: 62 61 6c 0a 2b 09 20 2a 20 75 6e 6b 6e 6f 77 6e bal.+. * unknown
4780: 20 68 61 6e 64 6c 65 72 29 2e 0a 2b 09 20 2a 2f handler)..+. */
4790: 0a 2b 09 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e .+.currNsPtr->un
47a0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 knownHandlerPtr
47b0: 3d 0a 2b 09 20 20 20 20 54 63 6c 5f 4e 65 77 53 =.+. Tcl_NewS
47c0: 74 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e tringObj("::unkn
47d0: 6f 77 6e 22 2c 20 2d 31 29 3b 0a 2b 09 54 63 6c own", -1);.+.Tcl
47e0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 63 75 _IncrRefCount(cu
47f0: 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e rrNsPtr->unknown
4800: 48 61 6e 64 6c 65 72 50 74 72 29 3b 0a 2b 20 20 HandlerPtr);.+
4810: 20 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 }.+ return
4820: 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f currNsPtr->unkno
4830: 77 6e 48 61 6e 64 6c 65 72 50 74 72 3b 0a 2b 7d wnHandlerPtr;.+}
4840: 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d .+..+/*.+ *-----
4850: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4870: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4890: 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 5f 53 65 -.+ *.+ * Tcl_Se
48a0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
48b0: 6e 48 61 6e 64 6c 65 72 20 2d 2d 0a 2b 20 2a 0a nHandler --.+ *.
48c0: 2b 20 2a 09 53 65 74 73 20 74 68 65 20 75 6e 6b + *.Sets the unk
48d0: 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e nown command han
48e0: 64 6c 65 72 20 66 6f 72 20 74 68 65 20 67 69 76 dler for the giv
48f0: 65 6e 20 6e 61 6d 65 73 70 61 63 65 20 74 6f 20 en namespace to
4900: 74 68 65 0a 2b 20 2a 09 63 6f 6d 6d 61 6e 64 20 the.+ *.command
4910: 70 72 65 66 69 78 20 70 61 73 73 65 64 2e 0a 2b prefix passed..+
4920: 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a *.+ * Results:.
4930: 2b 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f + *.Returns TCL_
4940: 4f 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c OK if successful
4950: 2c 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 , and TCL_ERROR
4960: 69 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 if anything goes
4970: 20 0a 2b 20 2a 09 77 72 6f 6e 67 2e 0a 2b 20 2a .+ *.wrong..+ *
4980: 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 .+ * Side effect
4990: 73 3a 0a 2b 20 2a 09 53 65 74 73 20 74 68 65 20 s:.+ *.Sets the
49a0: 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 namespace unknow
49b0: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
49c0: 72 2e 20 49 66 20 74 68 65 20 70 61 73 73 65 64 r. If the passed
49d0: 20 69 6e 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 20 in.+ *.handler
49e0: 69 73 20 4e 55 4c 4c 20 6f 72 20 61 6e 20 65 6d is NULL or an em
49f0: 70 74 79 20 6c 69 73 74 2c 20 74 68 65 6e 20 74 pty list, then t
4a00: 68 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72 65 he handler is re
4a10: 73 65 74 20 74 6f 0a 2b 20 2a 09 69 74 73 20 64 set to.+ *.its d
4a20: 65 66 61 75 6c 74 2e 20 49 66 20 61 6e 20 65 72 efault. If an er
4a30: 72 6f 72 20 6f 63 63 75 72 73 2c 20 74 68 65 6e ror occurs, then
4a40: 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 an error messag
4a50: 65 20 69 73 20 6c 65 66 74 0a 2b 20 2a 09 69 6e e is left.+ *.in
4a60: 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 the interpreter
4a70: 20 72 65 73 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a result..+ *.+ *
4a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4a90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4aa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ab0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ac0: 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 69 6e 74 ------.+ */.+int
4ad0: 0a 2b 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 .+Tcl_SetNamespa
4ae0: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
4af0: 28 69 6e 74 65 72 70 2c 20 6e 73 50 74 72 2c 20 (interp, nsPtr,
4b00: 68 61 6e 64 6c 65 72 50 74 72 29 0a 2b 20 20 20 handlerPtr).+
4b10: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
4b20: 65 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70 72 erp;../* Interpr
4b30: 65 74 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 eter in which th
4b40: 65 20 6e 61 6d 65 73 70 61 63 65 20 0a 2b 09 09 e namespace .+..
4b50: 09 09 20 2a 20 65 78 69 73 74 73 2e 20 2a 2f 0a .. * exists. */.
4b60: 2b 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 + Tcl_Namespa
4b70: 63 65 20 2a 6e 73 50 74 72 3b 09 2f 2a 20 4e 61 ce *nsPtr;./* Na
4b80: 6d 65 73 70 61 63 65 20 77 68 69 63 68 20 69 73 mespace which is
4b90: 20 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 being updated.
4ba0: 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 */.+ Tcl_Obj
4bb0: 2a 68 61 6e 64 6c 65 72 50 74 72 3b 09 2f 2a 20 *handlerPtr;./*
4bc0: 54 68 65 20 6e 65 77 20 68 61 6e 64 6c 65 72 2c The new handler,
4bd0: 20 6f 72 20 4e 55 4c 4c 20 74 6f 20 72 65 73 65 or NULL to rese
4be0: 74 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 6e t. */.+{.+ in
4bf0: 74 20 6c 73 74 6c 65 6e 3b 0a 2b 20 20 20 20 4e t lstlen;.+ N
4c00: 61 6d 65 73 70 61 63 65 20 2a 63 75 72 72 4e 73 amespace *currNs
4c10: 50 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 65 Ptr = (Namespace
4c20: 20 2a 29 6e 73 50 74 72 3b 0a 2b 0a 2b 20 20 20 *)nsPtr;.+.+
4c30: 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d 3e if (currNsPtr->
4c40: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
4c50: 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 2f r != NULL) {.+./
4c60: 2a 20 52 65 6d 6f 76 65 20 6f 6c 64 20 68 61 6e * Remove old han
4c70: 64 6c 65 72 20 66 69 72 73 74 2e 20 2a 2f 0a 2b dler first. */.+
4c80: 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e .Tcl_DecrRefCoun
4c90: 74 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b t(currNsPtr->unk
4ca0: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 29 3b nownHandlerPtr);
4cb0: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 2f 2a 0a .+ }.+ /*.
4cc0: 2b 20 20 20 20 20 2a 20 49 66 20 4e 55 4c 4c 20 + * If NULL
4cd0: 6f 72 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 or an empty list
4ce0: 20 69 73 20 70 61 73 73 65 64 2c 20 74 68 65 6e is passed, then
4cf0: 20 72 65 73 65 74 20 74 6f 20 74 68 65 20 64 65 reset to the de
4d00: 66 61 75 6c 74 0a 2b 20 20 20 20 20 2a 20 68 61 fault.+ * ha
4d10: 6e 64 6c 65 72 2e 0a 2b 20 20 20 20 20 2a 2f 0a ndler..+ */.
4d20: 2b 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 72 + if (handler
4d30: 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b Ptr == NULL) {.+
4d40: 09 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e .currNsPtr->unkn
4d50: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 ownHandlerPtr =
4d60: 4e 55 4c 4c 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 NULL;.+ } els
4d70: 65 20 7b 0a 2b 09 69 66 20 28 54 63 6c 5f 4c 69 e {.+.if (Tcl_Li
4d80: 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 stObjLength(inte
4d90: 72 70 2c 20 68 61 6e 64 6c 65 72 50 74 72 2c 20 rp, handlerPtr,
4da0: 26 6c 73 74 6c 65 6e 29 20 21 3d 20 54 43 4c 5f &lstlen) != TCL_
4db0: 4f 4b 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 4e OK) {.+. /* N
4dc0: 6f 74 20 61 20 6c 69 73 74 20 2a 2f 0a 2b 09 20 ot a list */.+.
4dd0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 return TCL_ER
4de0: 52 4f 52 3b 0a 2b 09 7d 20 65 6c 73 65 20 69 66 ROR;.+.} else if
4df0: 20 28 6c 73 74 6c 65 6e 20 3d 3d 20 30 29 20 7b (lstlen == 0) {
4e00: 0a 2b 09 20 20 20 20 2f 2a 20 45 6d 70 74 79 20 .+. /* Empty
4e10: 6c 69 73 74 20 2d 20 72 65 73 65 74 20 74 6f 20 list - reset to
4e20: 64 65 66 61 75 6c 74 2e 20 2a 2f 0a 2b 09 20 20 default. */.+.
4e30: 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b currNsPtr->unk
4e40: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d nownHandlerPtr =
4e50: 20 4e 55 4c 4c 3b 0a 2b 09 7d 20 65 6c 73 65 20 NULL;.+.} else
4e60: 7b 0a 2b 09 20 20 20 20 2f 2a 20 0a 2b 09 20 20 {.+. /* .+.
4e70: 20 20 20 2a 20 49 6e 63 72 65 6d 65 6e 74 20 72 * Increment r
4e80: 65 66 20 63 6f 75 6e 74 20 61 6e 64 20 73 74 6f ef count and sto
4e90: 72 65 2e 20 54 68 65 20 72 65 66 65 72 65 6e 63 re. The referenc
4ea0: 65 20 63 6f 75 6e 74 20 69 73 20 0a 2b 09 20 20 e count is .+.
4eb0: 20 20 20 2a 20 64 65 63 72 65 6d 65 6e 74 65 64 * decremented
4ec0: 20 65 69 74 68 65 72 20 69 6e 20 74 68 65 20 63 either in the c
4ed0: 6f 64 65 20 61 62 6f 76 65 2c 20 6f 72 20 77 68 ode above, or wh
4ee0: 65 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 en the namespace
4ef0: 20 0a 2b 09 20 20 20 20 20 2a 20 69 73 20 64 65 .+. * is de
4f00: 6c 65 74 65 64 2e 0a 2b 09 20 20 20 20 20 2a 2f leted..+. */
4f10: 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 .+. Tcl_IncrR
4f20: 65 66 43 6f 75 6e 74 28 68 61 6e 64 6c 65 72 50 efCount(handlerP
4f30: 74 72 29 3b 0a 2b 09 20 20 20 20 63 75 72 72 4e tr);.+. currN
4f40: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
4f50: 64 6c 65 72 50 74 72 20 3d 20 68 61 6e 64 6c 65 dlerPtr = handle
4f60: 72 50 74 72 3b 0a 2b 09 7d 0a 2b 20 20 20 20 7d rPtr;.+.}.+ }
4f70: 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c .+ return TCL
4f80: 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b _OK;.+}.+..+/*.+
4f90: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
4fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4fd0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 20 2a --------.+ *. *
4fe0: 20 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43 6d NamespaceTailCm
4ff0: 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 49 6e 76 d --. *. *.Inv
5000: 6f 6b 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e oked to implemen
5010: 74 20 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 t the "namespace
5020: 20 74 61 69 6c 22 20 63 6f 6d 6d 61 6e 64 20 74 tail" command t
5030: 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 0a hat returns the.
5040: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
5050: 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d 3d 3d clStubInit.c.===
5060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
50a0: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
50b0: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 oot/tcl/tcl/gene
50c0: 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e ric/tclStubInit.
50d0: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 c,v.retrieving r
50e0: 65 76 69 73 69 6f 6e 20 31 2e 31 31 38 0a 64 69 evision 1.118.di
50f0: 66 66 20 2d 75 20 2d 72 31 2e 31 31 38 20 74 63 ff -u -r1.118 tc
5100: 6c 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 lStubInit.c.---
5110: 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 generic/tclStubI
5120: 6e 69 74 2e 63 09 37 20 4a 75 6e 20 32 30 30 35 nit.c.7 Jun 2005
5130: 20 30 32 3a 30 37 3a 32 37 20 2d 30 30 30 30 09 02:07:27 -0000.
5140: 31 2e 31 31 38 0a 2b 2b 2b 20 67 65 6e 65 72 69 1.118.+++ generi
5150: 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 09 c/tclStubInit.c.
5160: 31 33 20 4a 75 6e 20 32 30 30 35 20 32 32 3a 30 13 Jun 2005 22:0
5170: 35 3a 32 37 20 2d 30 30 30 30 0a 40 40 20 2d 39 5:27 -0000.@@ -9
5180: 38 33 2c 36 20 2b 39 38 33 2c 38 20 40 40 0a 20 83,6 +983,8 @@.
5190: 20 20 20 20 54 63 6c 5f 47 65 74 42 69 67 6e 75 Tcl_GetBignu
51a0: 6d 46 72 6f 6d 4f 62 6a 2c 20 2f 2a 20 35 35 38 mFromObj, /* 558
51b0: 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 54 72 75 */. Tcl_Tru
51c0: 6e 63 61 74 65 43 68 61 6e 6e 65 6c 2c 20 2f 2a ncateChannel, /*
51d0: 20 35 35 39 20 2a 2f 0a 20 20 20 20 20 54 63 6c 559 */. Tcl
51e0: 5f 43 68 61 6e 6e 65 6c 54 72 75 6e 63 61 74 65 _ChannelTruncate
51f0: 50 72 6f 63 2c 20 2f 2a 20 35 36 30 20 2a 2f 0a Proc, /* 560 */.
5200: 2b 20 20 20 20 54 63 6c 5f 47 65 74 4e 61 6d 65 + Tcl_GetName
5210: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 spaceUnknownHand
5220: 6c 65 72 2c 20 2f 2a 20 35 36 31 20 2a 2f 0a 2b ler, /* 561 */.+
5230: 20 20 20 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 Tcl_SetNames
5240: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c paceUnknownHandl
5250: 65 72 2c 20 2f 2a 20 35 36 32 20 2a 2f 0a 20 7d er, /* 562 */. }
5260: 3b 0a 20 0a 20 2f 2a 20 21 45 4e 44 21 3a 20 44 ;. . /* !END!: D
5270: 6f 20 6e 6f 74 20 65 64 69 74 20 61 62 6f 76 65 o not edit above
5280: 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a 2f 0a 49 this line. */.I
5290: 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e 61 6d 65 ndex: tests/name
52a0: 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d space.test.=====
52b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
52c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
52d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
52e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ==============.R
52f0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f CS file: /cvsroo
5300: 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f t/tcl/tcl/tests/
5310: 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 2c 76 namespace.test,v
5320: 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 .retrieving revi
5330: 73 69 6f 6e 20 31 2e 34 34 0a 64 69 66 66 20 2d sion 1.44.diff -
5340: 75 20 2d 72 31 2e 34 34 20 6e 61 6d 65 73 70 61 u -r1.44 namespa
5350: 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 ce.test.--- test
5360: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 s/namespace.test
5370: 09 33 30 20 4d 61 79 20 32 30 30 35 20 30 30 3a .30 May 2005 00:
5380: 30 34 3a 34 39 20 2d 30 30 30 30 09 31 2e 34 34 04:49 -0000.1.44
5390: 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 61 6d 65 73 .+++ tests/names
53a0: 70 61 63 65 2e 74 65 73 74 09 31 33 20 4a 75 6e pace.test.13 Jun
53b0: 20 32 30 30 35 20 32 32 3a 30 35 3a 33 33 20 2d 2005 22:05:33 -
53c0: 30 30 30 30 0a 40 40 20 2d 38 33 38 2c 37 20 2b 0000.@@ -838,7 +
53d0: 38 33 38 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 838,7 @@. } {1 {
53e0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 wrong # args: sh
53f0: 6f 75 6c 64 20 62 65 20 22 6e 61 6d 65 73 70 61 ould be "namespa
5400: 63 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 ce subcommand ?a
5410: 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 rg ...?"}}. test
5420: 20 6e 61 6d 65 73 70 61 63 65 2d 32 30 2e 32 20 namespace-20.2
5430: 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 4f 62 {Tcl_NamespaceOb
5440: 6a 43 6d 64 2c 20 62 61 64 20 73 75 62 63 6f 6d jCmd, bad subcom
5450: 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69 73 mand} {. lis
5460: 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 73 70 t [catch {namesp
5470: 61 63 65 20 77 6f 6d 62 61 74 20 7b 7d 7d 20 6d ace wombat {}} m
5480: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b sg] $msg.-} {1 {
5490: 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f 6d 62 bad option "womb
54a0: 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 68 69 at": must be chi
54b0: 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 75 72 ldren, code, cur
54c0: 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 65 6e rent, delete, en
54d0: 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 65 78 semble, eval, ex
54e0: 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 66 6f ists, export, fo
54f0: 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 69 6e rget, import, in
5500: 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c 20 70 scope, origin, p
5510: 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71 75 61 arent, path, qua
5520: 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c 20 6f lifiers, tail, o
5530: 72 20 77 68 69 63 68 7d 7d 0a 2b 7d 20 7b 31 20 r which}}.+} {1
5540: 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f 6d {bad option "wom
5550: 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 68 bat": must be ch
5560: 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 75 ildren, code, cu
5570: 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 65 rrent, delete, e
5580: 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 65 nsemble, eval, e
5590: 78 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 66 xists, export, f
55a0: 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 69 orget, import, i
55b0: 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c 20 nscope, origin,
55c0: 70 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71 75 parent, path, qu
55d0: 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c 20 alifiers, tail,
55e0: 75 6e 6b 6e 6f 77 6e 2c 20 6f 72 20 77 68 69 63 unknown, or whic
55f0: 68 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 h}}. test namesp
5600: 61 63 65 2d 32 30 2e 33 20 7b 54 63 6c 5f 4e 61 ace-20.3 {Tcl_Na
5610: 6d 65 73 70 61 63 65 4f 62 6a 43 6d 64 2c 20 61 mespaceObjCmd, a
5620: 62 62 72 65 76 69 61 74 69 6f 6e 73 20 61 72 65 bbreviations are
5630: 20 6f 6b 61 79 7d 20 7b 0a 20 20 20 20 20 6e 61 okay} {. na
5640: 6d 65 73 70 61 63 65 20 63 68 20 3a 3a 20 74 65 mespace ch :: te
5650: 73 74 5f 6e 73 5f 2a 0a 20 7d 20 7b 7d 0a 40 40 st_ns_*. } {}.@@
5660: 20 2d 39 34 35 2c 37 20 2b 39 34 35 2c 37 20 40 -945,7 +945,7 @
5670: 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 @. } {1 {wrong #
5680: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
5690: 20 22 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c "namespace eval
56a0: 20 6e 61 6d 65 20 61 72 67 20 3f 61 72 67 2e 2e name arg ?arg..
56b0: 2e 3f 22 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 .?"}}. test name
56c0: 73 70 61 63 65 2d 32 35 2e 32 20 7b 4e 61 6d 65 space-25.2 {Name
56d0: 73 70 61 63 65 45 76 61 6c 43 6d 64 2c 20 62 61 spaceEvalCmd, ba
56e0: 64 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 6c d args} {. l
56f0: 69 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 ist [catch {name
5700: 73 70 61 63 65 20 74 65 73 74 5f 6e 73 5f 31 7d space test_ns_1}
5710: 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 msg] $msg.-} {1
5720: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 74 65 {bad option "te
5730: 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 73 74 20 62 st_ns_1": must b
5740: 65 20 63 68 69 6c 64 72 65 6e 2c 20 63 6f 64 65 e children, code
5750: 2c 20 63 75 72 72 65 6e 74 2c 20 64 65 6c 65 74 , current, delet
5760: 65 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 65 76 61 e, ensemble, eva
5770: 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f 72 l, exists, expor
5780: 74 2c 20 66 6f 72 67 65 74 2c 20 69 6d 70 6f 72 t, forget, impor
5790: 74 2c 20 69 6e 73 63 6f 70 65 2c 20 6f 72 69 67 t, inscope, orig
57a0: 69 6e 2c 20 70 61 72 65 6e 74 2c 20 70 61 74 68 in, parent, path
57b0: 2c 20 71 75 61 6c 69 66 69 65 72 73 2c 20 74 61 , qualifiers, ta
57c0: 69 6c 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a 2b il, or which}}.+
57d0: 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e } {1 {bad option
57e0: 20 22 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 "test_ns_1": mu
57f0: 73 74 20 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 st be children,
5800: 63 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 code, current, d
5810: 65 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c elete, ensemble,
5820: 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 eval, exists, e
5830: 78 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 xport, forget, i
5840: 6d 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 mport, inscope,
5850: 6f 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 origin, parent,
5860: 70 61 74 68 2c 20 71 75 61 6c 69 66 69 65 72 73 path, qualifiers
5870: 2c 20 74 61 69 6c 2c 20 75 6e 6b 6e 6f 77 6e 2c , tail, unknown,
5880: 20 6f 72 20 77 68 69 63 68 7d 7d 0a 20 63 61 74 or which}}. cat
5890: 63 68 20 7b 75 6e 73 65 74 20 76 7d 0a 20 74 65 ch {unset v}. te
58a0: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 35 2e st namespace-25.
58b0: 33 20 7b 4e 61 6d 65 73 70 61 63 65 45 76 61 6c 3 {NamespaceEval
58c0: 43 6d 64 2c 20 6e 65 77 20 6e 61 6d 65 73 70 61 Cmd, new namespa
58d0: 63 65 7d 20 7b 0a 20 20 20 20 20 73 65 74 20 76 ce} {. set v
58e0: 20 31 32 33 0a 40 40 20 2d 31 38 34 32 2c 36 20 123.@@ -1842,6
58f0: 2b 31 38 34 32 2c 38 37 20 40 40 0a 20 20 20 20 +1842,87 @@.
5900: 20 77 68 69 6c 65 20 70 61 72 73 69 6e 67 20 72 while parsing r
5910: 65 73 75 6c 74 20 6f 66 20 65 6e 73 65 6d 62 6c esult of ensembl
5920: 65 20 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d e unknown subcom
5930: 6d 61 6e 64 20 68 61 6e 64 6c 65 72 0a 20 20 20 mand handler.
5940: 20 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 invoked from w
5950: 69 74 68 69 6e 0a 20 22 66 6f 6f 20 62 61 72 22 ithin. "foo bar"
5960: 7d 7d 0a 2b 23 20 54 49 50 20 31 38 31 20 2d 20 }}.+# TIP 181 -
5970: 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 namespace unknow
5980: 6e 20 74 65 73 74 73 0a 2b 74 65 73 74 20 6e 61 n tests.+test na
5990: 6d 65 73 70 61 63 65 2d 34 38 2e 31 20 7b 75 6e mespace-48.1 {un
59a0: 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 68 known: default h
59b0: 61 6e 64 6c 65 72 20 3a 3a 75 6e 6b 6e 6f 77 6e andler ::unknown
59c0: 7d 20 7b 0a 2b 20 20 20 20 73 65 74 20 72 65 73 } {.+ set res
59d0: 75 6c 74 20 5b 6c 69 73 74 20 5b 6e 61 6d 65 73 ult [list [names
59e0: 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 62 61 72 pace eval foobar
59f0: 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b { namespace unk
5a00: 6e 6f 77 6e 20 7d 5d 5d 0a 2b 20 20 20 20 6c 61 nown }]].+ la
5a10: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 6e 61 ppend result [na
5a20: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 20 mespace eval ::
5a30: 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e { namespace unkn
5a40: 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 6e 61 6d 65 own }].+ name
5a50: 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f 6f space delete foo
5a60: 62 61 72 0a 2b 20 20 20 20 73 65 74 20 72 65 73 bar.+ set res
5a70: 75 6c 74 0a 2b 7d 20 7b 7b 7d 20 3a 3a 75 6e 6b ult.+} {{} ::unk
5a80: 6e 6f 77 6e 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 nown}.+test name
5a90: 73 70 61 63 65 2d 34 38 2e 32 20 7b 75 6e 6b 6e space-48.2 {unkn
5aa0: 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 72 65 73 own: default res
5ab0: 6f 6c 75 74 69 6f 6e 20 67 6c 6f 62 61 6c 7d 20 olution global}
5ac0: 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 66 6f {.+ proc ::fo
5ad0: 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 47 o {} { return "G
5ae0: 4c 4f 42 41 4c 22 20 7d 0a 2b 20 20 20 20 6e 61 LOBAL" }.+ na
5af0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 62 mespace eval ::b
5b00: 61 72 20 7b 20 70 72 6f 63 20 66 6f 6f 20 7b 7d ar { proc foo {}
5b10: 20 7b 20 72 65 74 75 72 6e 20 22 4e 41 4d 45 53 { return "NAMES
5b20: 50 41 43 45 22 20 7d 20 7d 0a 2b 20 20 20 20 6e PACE" } }.+ n
5b30: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
5b40: 62 61 72 3a 3a 6a 69 6d 20 7b 20 70 72 6f 63 20 bar::jim { proc
5b50: 74 65 73 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d 20 test {} { foo }
5b60: 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c }.+ set resul
5b70: 74 20 5b 3a 3a 62 61 72 3a 3a 6a 69 6d 3a 3a 74 t [::bar::jim::t
5b80: 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 est].+ namesp
5b90: 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 62 61 72 ace delete ::bar
5ba0: 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 66 .+ rename ::f
5bb0: 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 65 74 20 72 oo {}.+ set r
5bc0: 65 73 75 6c 74 0a 2b 7d 20 7b 47 4c 4f 42 41 4c esult.+} {GLOBAL
5bd0: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }.+test namespac
5be0: 65 2d 34 38 2e 33 20 7b 75 6e 6b 6e 6f 77 6e 3a e-48.3 {unknown:
5bf0: 20 64 65 66 61 75 6c 74 20 72 65 73 6f 6c 75 74 default resolut
5c00: 69 6f 6e 20 6c 6f 63 61 6c 7d 20 7b 0a 2b 20 20 ion local} {.+
5c10: 20 20 70 72 6f 63 20 3a 3a 66 6f 6f 20 7b 7d 20 proc ::foo {}
5c20: 7b 20 72 65 74 75 72 6e 20 22 47 4c 4f 42 41 4c { return "GLOBAL
5c30: 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 " }.+ namespa
5c40: 63 65 20 65 76 61 6c 20 3a 3a 62 61 72 20 7b 0a ce eval ::bar {.
5c50: 2b 09 70 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b 20 +.proc foo {} {
5c60: 72 65 74 75 72 6e 20 22 4e 41 4d 45 53 50 41 43 return "NAMESPAC
5c70: 45 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 E" }.+.proc test
5c80: 20 7b 7d 20 7b 20 66 6f 6f 20 7d 0a 2b 20 20 20 {} { foo }.+
5c90: 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 }.+ set resu
5ca0: 6c 74 20 5b 3a 3a 62 61 72 3a 3a 74 65 73 74 5d lt [::bar::test]
5cb0: 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 .+ namespace
5cc0: 64 65 6c 65 74 65 20 3a 3a 62 61 72 0a 2b 20 20 delete ::bar.+
5cd0: 20 20 72 65 6e 61 6d 65 20 3a 3a 66 6f 6f 20 7b rename ::foo {
5ce0: 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c }.+ set resul
5cf0: 74 0a 2b 7d 20 7b 4e 41 4d 45 53 50 41 43 45 7d t.+} {NAMESPACE}
5d00: 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 .+test namespace
5d10: 2d 34 38 2e 34 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 -48.4 {unknown:
5d20: 73 65 74 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 2b set handler} {.+
5d30: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 namespace ev
5d40: 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61 6d 65 73 al foo {.+.names
5d50: 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 5b 6c 69 pace unknown [li
5d60: 73 74 20 64 69 73 70 61 74 63 68 5d 0a 2b 09 70 st dispatch].+.p
5d70: 72 6f 63 20 64 69 73 70 61 74 63 68 20 7b 61 72 roc dispatch {ar
5d80: 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 24 61 72 gs} { return $ar
5d90: 67 73 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 gs }.+.proc test
5da0: 20 7b 7d 20 7b 0a 2b 09 20 20 20 20 55 6e 6b 6e {} {.+. Unkn
5db0: 6f 77 6e 43 6d 64 20 61 20 62 20 63 0a 2b 09 7d ownCmd a b c.+.}
5dc0: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 .+ }.+ set
5dd0: 20 72 65 73 75 6c 74 20 5b 66 6f 6f 3a 3a 74 65 result [foo::te
5de0: 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 st].+ namespa
5df0: 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b 20 ce delete foo.+
5e00: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d set result.+}
5e10: 20 7b 55 6e 6b 6e 6f 77 6e 43 6d 64 20 61 20 62 {UnknownCmd a b
5e20: 20 63 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 c}.+test namesp
5e30: 61 63 65 2d 34 38 2e 35 20 7b 75 6e 6b 6e 6f 77 ace-48.5 {unknow
5e40: 6e 3a 20 73 65 61 72 63 68 20 70 61 74 68 20 62 n: search path b
5e50: 65 66 6f 72 65 20 75 6e 6b 6e 6f 77 6e 20 69 73 efore unknown is
5e60: 20 75 6e 61 6c 74 65 72 65 64 7d 20 7b 0a 2b 20 unaltered} {.+
5e70: 20 20 20 70 72 6f 63 20 3a 3a 74 65 73 74 32 20 proc ::test2
5e80: 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 {args} { return
5e90: 22 54 45 53 54 32 3a 20 24 61 72 67 73 22 20 7d "TEST2: $args" }
5ea0: 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 .+ namespace
5eb0: 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61 6d eval foo {.+.nam
5ec0: 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 5b espace unknown [
5ed0: 6c 69 73 74 20 64 69 73 70 61 74 63 68 5d 0a 2b list dispatch].+
5ee0: 09 70 72 6f 63 20 64 69 73 70 61 74 63 68 20 7b .proc dispatch {
5ef0: 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 22 args} { return "
5f00: 55 4e 4b 4e 4f 57 4e 3a 20 24 61 72 67 73 22 20 UNKNOWN: $args"
5f10: 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 31 20 7b }.+.proc test1 {
5f20: 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 22 args} { return "
5f30: 54 45 53 54 31 3a 20 24 61 72 67 73 22 20 7d 0a TEST1: $args" }.
5f40: 2b 09 70 72 6f 63 20 74 65 73 74 20 7b 7d 20 7b +.proc test {} {
5f50: 0a 2b 09 20 20 20 20 73 65 74 20 72 65 73 75 6c .+. set resul
5f60: 74 20 5b 6c 69 73 74 20 5b 74 65 73 74 31 20 61 t [list [test1 a
5f70: 20 62 20 63 5d 5d 0a 2b 09 20 20 20 20 6c 61 70 b c]].+. lap
5f80: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 74 65 73 pend result [tes
5f90: 74 32 20 61 20 62 20 63 5d 0a 2b 09 20 20 20 20 t2 a b c].+.
5fa0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b lappend result [
5fb0: 74 65 73 74 33 20 61 20 62 20 63 5d 0a 2b 09 20 test3 a b c].+.
5fc0: 20 20 20 72 65 74 75 72 6e 20 24 72 65 73 75 6c return $resul
5fd0: 74 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 t.+.}.+ }.+
5fe0: 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 66 6f set result [fo
5ff0: 6f 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 o::test].+ na
6000: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 mespace delete f
6010: 6f 6f 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a oo.+ rename :
6020: 3a 74 65 73 74 32 20 7b 7d 0a 2b 20 20 20 20 73 :test2 {}.+ s
6030: 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 7b 54 et result.+} {{T
6040: 45 53 54 31 3a 20 61 20 62 20 63 7d 20 7b 54 45 EST1: a b c} {TE
6050: 53 54 32 3a 20 61 20 62 20 63 7d 20 7b 55 4e 4b ST2: a b c} {UNK
6060: 4e 4f 57 4e 3a 20 74 65 73 74 33 20 61 20 62 20 NOWN: test3 a b
6070: 63 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 c}}.+test namesp
6080: 61 63 65 2d 34 38 2e 36 20 7b 75 6e 6b 6e 6f 77 ace-48.6 {unknow
6090: 6e 3a 20 64 65 6c 65 74 69 6e 67 20 68 61 6e 64 n: deleting hand
60a0: 6c 65 72 20 72 65 73 74 6f 72 65 73 20 64 65 66 ler restores def
60b0: 61 75 6c 74 7d 20 7b 0a 2b 20 20 20 20 72 65 6e ault} {.+ ren
60c0: 61 6d 65 20 3a 3a 75 6e 6b 6e 6f 77 6e 20 3a 3a ame ::unknown ::
60d0: 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 67 0a 2b 20 _unknown_orig.+
60e0: 20 20 20 70 72 6f 63 20 3a 3a 75 6e 6b 6e 6f 77 proc ::unknow
60f0: 6e 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 n {args} { retur
6100: 6e 20 22 44 45 46 41 55 4c 54 3a 20 24 61 72 67 n "DEFAULT: $arg
6110: 73 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 s" }.+ namesp
6120: 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b ace eval foo {.+
6130: 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f .namespace unkno
6140: 77 6e 20 64 75 6d 6d 79 0a 2b 09 6e 61 6d 65 73 wn dummy.+.names
6150: 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a pace unknown {}.
6160: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 + }.+ set
6170: 72 65 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 63 result [namespac
6180: 65 20 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75 6d e eval foo { dum
6190: 6d 79 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20 20 my a b c }].+
61a0: 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f 77 rename ::unknow
61b0: 6e 20 7b 7d 0a 2b 20 20 20 20 72 65 6e 61 6d 65 n {}.+ rename
61c0: 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 67 ::_unknown_orig
61d0: 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b 20 20 20 20 ::unknown.+
61e0: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
61f0: 20 66 6f 6f 0a 2b 20 20 20 20 73 65 74 20 72 65 foo.+ set re
6200: 73 75 6c 74 0a 2b 7d 20 7b 44 45 46 41 55 4c 54 sult.+} {DEFAULT
6210: 3a 20 64 75 6d 6d 79 20 61 20 62 20 63 7d 0a 2b : dummy a b c}.+
6220: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 test namespace-4
6230: 38 2e 37 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 73 65 8.7 {unknown: se
6240: 74 74 69 6e 67 20 67 6c 6f 62 61 6c 20 75 6e 6b tting global unk
6250: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a nown handler} {.
6260: 2b 20 20 20 20 70 72 6f 63 20 3a 3a 6d 79 75 6e + proc ::myun
6270: 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d 20 7b 20 72 known {args} { r
6280: 65 74 75 72 6e 20 22 4d 59 55 4e 4b 4e 4f 57 4e eturn "MYUNKNOWN
6290: 3a 20 24 61 72 67 73 22 20 7d 0a 2b 20 20 20 20 : $args" }.+
62a0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
62b0: 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e : { namespace un
62c0: 6b 6e 6f 77 6e 20 3a 3a 6d 79 75 6e 6b 6e 6f 77 known ::myunknow
62d0: 6e 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 n }.+ set res
62e0: 75 6c 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 ult [namespace e
62f0: 76 61 6c 20 66 6f 6f 20 7b 20 64 75 6d 6d 79 20 val foo { dummy
6300: 61 20 62 20 63 20 7d 5d 0a 2b 20 20 20 20 6e 61 a b c }].+ na
6310: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 20 mespace eval ::
6320: 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e { namespace unkn
6330: 6f 77 6e 20 7b 7d 20 7d 0a 2b 20 20 20 20 72 65 own {} }.+ re
6340: 6e 61 6d 65 20 3a 3a 6d 79 75 6e 6b 6e 6f 77 6e name ::myunknown
6350: 20 7b 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 {}.+ namespa
6360: 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b 20 ce delete foo.+
6370: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d set result.+}
6380: 20 7b 4d 59 55 4e 4b 4e 4f 57 4e 3a 20 64 75 6d {MYUNKNOWN: dum
6390: 6d 79 20 61 20 62 20 63 7d 0a 2b 20 20 20 20 0a my a b c}.+ .
63a0: 2b 0a 20 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 +. . test namesp
63b0: 61 63 65 2d 34 38 2e 31 20 7b 65 6e 73 65 6d 62 ace-48.1 {ensemb
63c0: 6c 65 73 20 61 6e 64 20 6e 61 6d 65 73 70 61 63 les and namespac
63d0: 65 20 69 6d 70 6f 72 74 3a 20 75 6e 6b 6e 6f 77 e import: unknow
63e0: 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a 20 20 20 n handler} {.
63f0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
6400: 20 66 6f 6f 20 7b 0a foo {.