Attachment "ensemble-parameters.patch" to
ticket [1901783fff]
added by
lars_h
2008-02-26 07:34:19.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 2e 64 65 63 6c 73 0a 3d 3d 3d 3d 3d 3d 3d cl.decls.=======
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 3d 3d 0a 52 43 53 ============.RCS
0060: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
0070: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f tcl/tcl/generic/
0080: 74 63 6c 2e 64 65 63 6c 73 2c 76 0a 72 65 74 72 tcl.decls,v.retr
0090: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 ieving revision
00a0: 31 2e 31 32 39 0a 64 69 66 66 20 2d 63 20 2d 72 1.129.diff -c -r
00b0: 31 2e 31 32 39 20 74 63 6c 2e 64 65 63 6c 73 0a 1.129 tcl.decls.
00c0: 2a 2a 2a 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e *** generic/tcl.
00d0: 64 65 63 6c 73 09 31 33 20 44 65 63 20 32 30 30 decls.13 Dec 200
00e0: 37 20 31 35 3a 32 33 3a 31 34 20 2d 30 30 30 30 7 15:23:14 -0000
00f0: 09 31 2e 31 32 39 0a 2d 2d 2d 20 67 65 6e 65 72 .1.129.--- gener
0100: 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 35 20 ic/tcl.decls.25
0110: 46 65 62 20 32 30 30 38 20 32 33 3a 30 36 3a 34 Feb 2008 23:06:4
0120: 38 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 8 -0000.********
0130: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 30 39 39 *******.*** 2099
0140: 2c 32 31 30 34 20 2a 2a 2a 2a 0a 2d 2d 2d 20 32 ,2104 ****.--- 2
0150: 30 39 39 2c 32 31 31 35 20 2d 2d 2d 2d 0a 20 20 099,2115 ----.
0160: 20 20 20 20 76 6f 69 64 20 54 63 6c 5f 41 70 70 void Tcl_App
0170: 65 6e 64 50 72 69 6e 74 66 54 6f 4f 62 6a 28 54 endPrintfToObj(T
0180: 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 2c 20 cl_Obj *objPtr,
0190: 43 4f 4e 53 54 20 63 68 61 72 20 2a 66 6f 72 6d CONST char *form
01a0: 61 74 2c 20 2e 2e 2e 29 0a 20 20 7d 0a 20 20 0a at, ...). }. .
01b0: 2b 20 23 20 54 49 50 20 78 78 78 20 45 6e 73 65 + # TIP xxx Ense
01c0: 6d 62 6c 65 73 20 77 69 74 68 20 70 61 72 61 6d mbles with param
01d0: 65 74 65 72 73 0a 2b 20 64 65 63 6c 61 72 65 20 eters.+ declare
01e0: 35 38 30 20 67 65 6e 65 72 69 63 20 7b 0a 2b 20 580 generic {.+
01f0: 20 20 20 20 69 6e 74 20 54 63 6c 5f 53 65 74 45 int Tcl_SetE
0200: 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 nsembleParameter
0210: 4c 69 73 74 28 54 63 6c 5f 49 6e 74 65 72 70 20 List(Tcl_Interp
0220: 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 43 6f 6d *interp, Tcl_Com
0230: 6d 61 6e 64 20 74 6f 6b 65 6e 2c 0a 2b 20 09 20 mand token,.+ .
0240: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 72 61 Tcl_Obj *para
0250: 6d 4c 69 73 74 29 0a 2b 20 7d 0a 2b 20 64 65 63 mList).+ }.+ dec
0260: 6c 61 72 65 20 35 38 31 20 67 65 6e 65 72 69 63 lare 581 generic
0270: 20 7b 0a 2b 20 20 20 20 20 69 6e 74 20 54 63 6c {.+ int Tcl
0280: 5f 47 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 61 _GetEnsemblePara
0290: 6d 65 74 65 72 4c 69 73 74 28 54 63 6c 5f 49 6e meterList(Tcl_In
02a0: 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 54 63 terp *interp, Tc
02b0: 6c 5f 43 6f 6d 6d 61 6e 64 20 74 6f 6b 65 6e 2c l_Command token,
02c0: 0a 2b 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 .+ . Tcl_Obj
02d0: 2a 2a 70 61 72 61 6d 4c 69 73 74 50 74 72 29 0a **paramListPtr).
02e0: 2b 20 7d 0a 2b 20 0a 2b 20 0a 20 20 23 23 23 23 + }.+ .+ . ####
02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0320: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0330: 23 23 23 23 23 23 23 23 23 23 0a 20 20 0a 20 20 ##########. .
0340: 23 20 44 65 66 69 6e 65 20 74 68 65 20 70 6c 61 # Define the pla
0350: 74 66 6f 72 6d 20 73 70 65 63 69 66 69 63 20 70 tform specific p
0360: 75 62 6c 69 63 20 54 63 6c 20 69 6e 74 65 72 66 ublic Tcl interf
0370: 61 63 65 2e 20 20 54 68 65 73 65 20 66 75 6e 63 ace. These func
0380: 74 69 6f 6e 73 20 61 72 65 0a 49 6e 64 65 78 3a tions are.Index:
0390: 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c generic/tclDecl
03a0: 73 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d s.h.============
03b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03e0: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 =======.RCS file
03f0: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 : /cvsroot/tcl/t
0400: 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 cl/generic/tclDe
0410: 63 6c 73 2e 68 2c 76 0a 72 65 74 72 69 65 76 69 cls.h,v.retrievi
0420: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 33 ng revision 1.13
0430: 30 0a 64 69 66 66 20 2d 63 20 2d 72 31 2e 31 33 0.diff -c -r1.13
0440: 30 20 74 63 6c 44 65 63 6c 73 2e 68 0a 2a 2a 2a 0 tclDecls.h.***
0450: 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c generic/tclDecl
0460: 73 2e 68 09 31 33 20 44 65 63 20 32 30 30 37 20 s.h.13 Dec 2007
0470: 31 35 3a 32 33 3a 31 36 20 2d 30 30 30 30 09 31 15:23:16 -0000.1
0480: 2e 31 33 30 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 .130.--- generic
0490: 2f 74 63 6c 44 65 63 6c 73 2e 68 09 32 35 20 46 /tclDecls.h.25 F
04a0: 65 62 20 32 30 30 38 20 32 33 3a 30 36 3a 35 36 eb 2008 23:06:56
04b0: 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a -0000.*********
04c0: 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 33 35 30 31 2c ******.*** 3501,
04d0: 33 35 30 36 20 2a 2a 2a 2a 0a 2d 2d 2d 20 33 35 3506 ****.--- 35
04e0: 30 31 2c 33 35 31 38 20 2d 2d 2d 2d 0a 20 20 45 01,3518 ----. E
04f0: 58 54 45 52 4e 20 76 6f 69 64 09 09 54 63 6c 5f XTERN void..Tcl_
0500: 41 70 70 65 6e 64 50 72 69 6e 74 66 54 6f 4f 62 AppendPrintfToOb
0510: 6a 20 28 54 63 6c 5f 4f 62 6a 20 2a 20 6f 62 6a j (Tcl_Obj * obj
0520: 50 74 72 2c 20 0a 20 20 09 09 09 09 43 4f 4e 53 Ptr, . ....CONS
0530: 54 20 63 68 61 72 20 2a 20 66 6f 72 6d 61 74 2c T char * format,
0540: 20 2e 2e 2e 29 3b 0a 20 20 23 65 6e 64 69 66 0a ...);. #endif.
0550: 2b 20 23 69 66 6e 64 65 66 20 54 63 6c 5f 53 65 + #ifndef Tcl_Se
0560: 74 45 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 tEnsembleParamet
0570: 65 72 4c 69 73 74 5f 54 43 4c 5f 44 45 43 4c 41 erList_TCL_DECLA
0580: 52 45 44 0a 2b 20 23 64 65 66 69 6e 65 20 54 63 RED.+ #define Tc
0590: 6c 5f 53 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 l_SetEnsemblePar
05a0: 61 6d 65 74 65 72 4c 69 73 74 5f 54 43 4c 5f 44 ameterList_TCL_D
05b0: 45 43 4c 41 52 45 44 0a 2b 20 2f 2a 20 35 38 30 ECLARED.+ /* 580
05c0: 20 2a 2f 0a 2b 20 45 58 54 45 52 4e 20 69 6e 74 */.+ EXTERN int
05d0: 09 09 54 63 6c 5f 53 65 74 45 6e 73 65 6d 62 6c ..Tcl_SetEnsembl
05e0: 65 50 61 72 61 6d 65 74 65 72 4c 69 73 74 20 28 eParameterList (
05f0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 Tcl_Interp * int
0600: 65 72 70 2c 20 0a 2b 20 09 09 09 09 54 63 6c 5f erp, .+ ....Tcl_
0610: 43 6f 6d 6d 61 6e 64 20 74 6f 6b 65 6e 2c 20 54 Command token, T
0620: 63 6c 5f 4f 62 6a 20 2a 20 70 61 72 61 6d 4c 69 cl_Obj * paramLi
0630: 73 74 29 3b 0a 2b 20 23 65 6e 64 69 66 0a 2b 20 st);.+ #endif.+
0640: 23 69 66 6e 64 65 66 20 54 63 6c 5f 47 65 74 45 #ifndef Tcl_GetE
0650: 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 nsembleParameter
0660: 4c 69 73 74 5f 54 43 4c 5f 44 45 43 4c 41 52 45 List_TCL_DECLARE
0670: 44 0a 2b 20 23 64 65 66 69 6e 65 20 54 63 6c 5f D.+ #define Tcl_
0680: 47 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 61 6d GetEnsembleParam
0690: 65 74 65 72 4c 69 73 74 5f 54 43 4c 5f 44 45 43 eterList_TCL_DEC
06a0: 4c 41 52 45 44 0a 2b 20 2f 2a 20 35 38 31 20 2a LARED.+ /* 581 *
06b0: 2f 0a 2b 20 45 58 54 45 52 4e 20 69 6e 74 09 09 /.+ EXTERN int..
06c0: 54 63 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 50 Tcl_GetEnsembleP
06d0: 61 72 61 6d 65 74 65 72 4c 69 73 74 20 28 54 63 arameterList (Tc
06e0: 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 l_Interp * inter
06f0: 70 2c 20 0a 2b 20 09 09 09 09 54 63 6c 5f 43 6f p, .+ ....Tcl_Co
0700: 6d 6d 61 6e 64 20 74 6f 6b 65 6e 2c 20 54 63 6c mmand token, Tcl
0710: 5f 4f 62 6a 20 2a 2a 20 70 61 72 61 6d 4c 69 73 _Obj ** paramLis
0720: 74 50 74 72 29 3b 0a 2b 20 23 65 6e 64 69 66 0a tPtr);.+ #endif.
0730: 20 20 0a 20 20 74 79 70 65 64 65 66 20 73 74 72 . typedef str
0740: 75 63 74 20 54 63 6c 53 74 75 62 48 6f 6f 6b 73 uct TclStubHooks
0750: 20 7b 0a 20 20 20 20 20 20 73 74 72 75 63 74 20 {. struct
0760: 54 63 6c 50 6c 61 74 53 74 75 62 73 20 2a 74 63 TclPlatStubs *tc
0770: 6c 50 6c 61 74 53 74 75 62 73 3b 0a 2a 2a 2a 2a lPlatStubs;.****
0780: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
0790: 34 31 34 30 2c 34 31 34 35 20 2a 2a 2a 2a 0a 2d 4140,4145 ****.-
07a0: 2d 2d 20 34 31 35 32 2c 34 31 35 39 20 2d 2d 2d -- 4152,4159 ---
07b0: 2d 0a 20 20 20 20 20 20 69 6e 74 20 28 2a 74 63 -. int (*tc
07c0: 6c 5f 41 70 70 65 6e 64 46 6f 72 6d 61 74 54 6f l_AppendFormatTo
07d0: 4f 62 6a 29 20 28 54 63 6c 5f 49 6e 74 65 72 70 Obj) (Tcl_Interp
07e0: 20 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4f * interp, Tcl_O
07f0: 62 6a 20 2a 20 6f 62 6a 50 74 72 2c 20 43 4f 4e bj * objPtr, CON
0800: 53 54 20 63 68 61 72 20 2a 20 66 6f 72 6d 61 74 ST char * format
0810: 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f , int objc, Tcl_
0820: 4f 62 6a 20 2a 20 43 4f 4e 53 54 20 6f 62 6a 76 Obj * CONST objv
0830: 5b 5d 29 3b 20 2f 2a 20 35 37 37 20 2a 2f 0a 20 []); /* 577 */.
0840: 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 20 28 Tcl_Obj * (
0850: 2a 74 63 6c 5f 4f 62 6a 50 72 69 6e 74 66 29 20 *tcl_ObjPrintf)
0860: 28 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 66 6f (CONST char * fo
0870: 72 6d 61 74 2c 20 2e 2e 2e 29 3b 20 2f 2a 20 35 rmat, ...); /* 5
0880: 37 38 20 2a 2f 0a 20 20 20 20 20 20 76 6f 69 64 78 */. void
0890: 20 28 2a 74 63 6c 5f 41 70 70 65 6e 64 50 72 69 (*tcl_AppendPri
08a0: 6e 74 66 54 6f 4f 62 6a 29 20 28 54 63 6c 5f 4f ntfToObj) (Tcl_O
08b0: 62 6a 20 2a 20 6f 62 6a 50 74 72 2c 20 43 4f 4e bj * objPtr, CON
08c0: 53 54 20 63 68 61 72 20 2a 20 66 6f 72 6d 61 74 ST char * format
08d0: 2c 20 2e 2e 2e 29 3b 20 2f 2a 20 35 37 39 20 2a , ...); /* 579 *
08e0: 2f 0a 2b 20 20 20 20 20 69 6e 74 20 28 2a 74 63 /.+ int (*tc
08f0: 6c 5f 53 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 l_SetEnsemblePar
0900: 61 6d 65 74 65 72 4c 69 73 74 29 20 28 54 63 6c ameterList) (Tcl
0910: 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 _Interp * interp
0920: 2c 20 54 63 6c 5f 43 6f 6d 6d 61 6e 64 20 74 6f , Tcl_Command to
0930: 6b 65 6e 2c 20 54 63 6c 5f 4f 62 6a 20 2a 20 70 ken, Tcl_Obj * p
0940: 61 72 61 6d 4c 69 73 74 29 3b 20 2f 2a 20 35 38 aramList); /* 58
0950: 30 20 2a 2f 0a 2b 20 20 20 20 20 69 6e 74 20 28 0 */.+ int (
0960: 2a 74 63 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 *tcl_GetEnsemble
0970: 50 61 72 61 6d 65 74 65 72 4c 69 73 74 29 20 28 ParameterList) (
0980: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 Tcl_Interp * int
0990: 65 72 70 2c 20 54 63 6c 5f 43 6f 6d 6d 61 6e 64 erp, Tcl_Command
09a0: 20 74 6f 6b 65 6e 2c 20 54 63 6c 5f 4f 62 6a 20 token, Tcl_Obj
09b0: 2a 2a 20 70 61 72 61 6d 4c 69 73 74 50 74 72 29 ** paramListPtr)
09c0: 3b 20 2f 2a 20 35 38 31 20 2a 2f 0a 20 20 7d 20 ; /* 581 */. }
09d0: 54 63 6c 53 74 75 62 73 3b 0a 20 20 0a 20 20 23 TclStubs;. . #
09e0: 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 ifdef __cplusplu
09f0: 73 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a s.**************
0a00: 2a 0a 2a 2a 2a 20 36 35 33 36 2c 36 35 34 31 20 *.*** 6536,6541
0a10: 2a 2a 2a 2a 0a 2d 2d 2d 20 36 35 35 30 2c 36 35 ****.--- 6550,65
0a20: 36 33 20 2d 2d 2d 2d 0a 20 20 23 64 65 66 69 6e 63 ----. #defin
0a30: 65 20 54 63 6c 5f 41 70 70 65 6e 64 50 72 69 6e e Tcl_AppendPrin
0a40: 74 66 54 6f 4f 62 6a 20 5c 0a 20 20 09 28 74 63 tfToObj \. .(tc
0a50: 6c 53 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f 41 lStubsPtr->tcl_A
0a60: 70 70 65 6e 64 50 72 69 6e 74 66 54 6f 4f 62 6a ppendPrintfToObj
0a70: 29 20 2f 2a 20 35 37 39 20 2a 2f 0a 20 20 23 65 ) /* 579 */. #e
0a80: 6e 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 20 54 ndif.+ #ifndef T
0a90: 63 6c 5f 53 65 74 45 6e 73 65 6d 62 6c 65 50 61 cl_SetEnsemblePa
0aa0: 72 61 6d 65 74 65 72 4c 69 73 74 0a 2b 20 23 64 rameterList.+ #d
0ab0: 65 66 69 6e 65 20 54 63 6c 5f 53 65 74 45 6e 73 efine Tcl_SetEns
0ac0: 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 4c 69 embleParameterLi
0ad0: 73 74 20 5c 0a 2b 20 09 28 74 63 6c 53 74 75 62 st \.+ .(tclStub
0ae0: 73 50 74 72 2d 3e 74 63 6c 5f 53 65 74 45 6e 73 sPtr->tcl_SetEns
0af0: 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 4c 69 embleParameterLi
0b00: 73 74 29 20 2f 2a 20 35 38 30 20 2a 2f 0a 2b 20 st) /* 580 */.+
0b10: 23 65 6e 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 #endif.+ #ifndef
0b20: 20 54 63 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 Tcl_GetEnsemble
0b30: 50 61 72 61 6d 65 74 65 72 4c 69 73 74 0a 2b 20 ParameterList.+
0b40: 23 64 65 66 69 6e 65 20 54 63 6c 5f 47 65 74 45 #define Tcl_GetE
0b50: 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 nsembleParameter
0b60: 4c 69 73 74 20 5c 0a 2b 20 09 28 74 63 6c 53 74 List \.+ .(tclSt
0b70: 75 62 73 50 74 72 2d 3e 74 63 6c 5f 47 65 74 45 ubsPtr->tcl_GetE
0b80: 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 nsembleParameter
0b90: 4c 69 73 74 29 20 2f 2a 20 35 38 31 20 2a 2f 0a List) /* 581 */.
0ba0: 2b 20 23 65 6e 64 69 66 0a 20 20 0a 20 20 23 65 + #endif. . #e
0bb0: 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 ndif /* defined(
0bc0: 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 29 20 26 USE_TCL_STUBS) &
0bd0: 26 20 21 64 65 66 69 6e 65 64 28 55 53 45 5f 54 & !defined(USE_T
0be0: 43 4c 5f 53 54 55 42 5f 50 52 4f 43 53 29 20 2a CL_STUB_PROCS) *
0bf0: 2f 0a 20 20 0a 49 6e 64 65 78 3a 20 67 65 6e 65 /. .Index: gene
0c00: 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a ric/tclNamesp.c.
0c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c50: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
0c60: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 vsroot/tcl/tcl/g
0c70: 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 eneric/tclNamesp
0c80: 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 .c,v.retrieving
0c90: 72 65 76 69 73 69 6f 6e 20 31 2e 31 36 31 0a 64 revision 1.161.d
0ca0: 69 66 66 20 2d 63 20 2d 72 31 2e 31 36 31 20 74 iff -c -r1.161 t
0cb0: 63 6c 4e 61 6d 65 73 70 2e 63 0a 2a 2a 2a 20 67 clNamesp.c.*** g
0cc0: 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 eneric/tclNamesp
0cd0: 2e 63 09 31 33 20 44 65 63 20 32 30 30 37 20 31 .c.13 Dec 2007 1
0ce0: 35 3a 32 33 3a 31 39 20 2d 30 30 30 30 09 31 2e 5:23:19 -0000.1.
0cf0: 31 36 31 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 161.--- generic/
0d00: 74 63 6c 4e 61 6d 65 73 70 2e 63 09 32 35 20 46 tclNamesp.c.25 F
0d10: 65 62 20 32 30 30 38 20 32 33 3a 30 37 3a 30 35 eb 2008 23:07:05
0d20: 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a -0000.*********
0d30: 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 31 31 2c 31 ******.*** 111,1
0d40: 31 39 20 2a 2a 2a 2a 0a 2d 2d 2d 20 31 31 31 2c 19 ****.--- 111,
0d50: 31 32 31 20 2d 2d 2d 2d 0a 20 20 09 09 09 09 20 121 ----. ....
0d60: 2a 20 66 69 65 6c 64 2e 20 2a 2f 0a 20 20 20 20 * field. */.
0d70: 20 20 69 6e 74 20 66 6c 61 67 73 3b 09 09 09 2f int flags;.../
0d80: 2a 20 4f 52 65 64 20 63 6f 6d 62 6f 20 6f 66 20 * ORed combo of
0d90: 54 43 4c 5f 45 4e 53 45 4d 42 4c 45 5f 50 52 45 TCL_ENSEMBLE_PRE
0da0: 46 49 58 2c 20 45 4e 53 5f 44 45 41 44 0a 20 20 FIX, ENS_DEAD.
0db0: 09 09 09 09 20 2a 20 61 6e 64 20 45 4e 53 45 4d .... * and ENSEM
0dc0: 42 4c 45 5f 43 4f 4d 50 49 4c 45 2e 20 2a 2f 0a BLE_COMPILE. */.
0dd0: 2b 20 20 20 20 20 69 6e 74 20 6e 75 6d 50 61 72 + int numPar
0de0: 61 6d 65 74 65 72 73 3b 09 09 2f 2a 20 43 61 63 ameters;../* Cac
0df0: 68 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 hed number of pa
0e00: 72 61 6d 65 74 65 72 73 2e 20 2a 2f 20 0a 20 20 rameters. */ .
0e10: 0a 20 20 20 20 20 20 2f 2a 20 4f 42 4a 45 43 54 . /* OBJECT
0e20: 20 46 49 45 4c 44 53 20 46 4f 52 20 45 4e 53 45 FIELDS FOR ENSE
0e30: 4d 42 4c 45 20 43 4f 4e 46 49 47 55 52 41 54 49 MBLE CONFIGURATI
0e40: 4f 4e 20 2a 2f 0a 20 20 0a 2b 20 20 20 20 20 54 ON */. .+ T
0e50: 63 6c 5f 4f 62 6a 20 2a 70 61 72 61 6d 65 74 65 cl_Obj *paramete
0e60: 72 4c 69 73 74 3b 09 2f 2a 20 4c 69 73 74 20 6f rList;./* List o
0e70: 66 20 65 6e 73 65 6d 62 6c 65 20 70 61 72 61 6d f ensemble param
0e80: 65 74 65 72 20 6e 61 6d 65 73 2e 20 2a 2f 0a 20 eter names. */.
0e90: 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 73 75 Tcl_Obj *su
0ea0: 62 63 6f 6d 6d 61 6e 64 44 69 63 74 3b 09 2f 2a bcommandDict;./*
0eb0: 20 44 69 63 74 69 6f 6e 61 72 79 20 70 72 6f 76 Dictionary prov
0ec0: 69 64 69 6e 67 20 6d 61 70 70 69 6e 67 20 66 72 iding mapping fr
0ed0: 6f 6d 0a 20 20 09 09 09 09 20 2a 20 73 75 62 63 om. .... * subc
0ee0: 6f 6d 6d 61 6e 64 73 20 74 6f 20 74 68 65 69 72 ommands to their
0ef0: 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 63 6f implementing co
0f00: 6d 6d 61 6e 64 0a 20 20 09 09 09 09 20 2a 20 70 mmand. .... * p
0f10: 72 65 66 69 78 65 73 2c 20 6f 72 20 4e 55 4c 4c refixes, or NULL
0f20: 20 69 66 20 77 65 20 61 72 65 20 74 6f 20 62 75 if we are to bu
0f30: 69 6c 64 20 74 68 65 0a 2a 2a 2a 2a 2a 2a 2a 2a ild the.********
0f40: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 34 34 2c *******.*** 144,
0f50: 31 34 39 20 2a 2a 2a 2a 0a 2d 2d 2d 20 31 34 36 149 ****.--- 146
0f60: 2c 31 35 34 20 2d 2d 2d 2d 0a 20 20 23 64 65 66 ,154 ----. #def
0f70: 69 6e 65 20 45 4e 53 5f 44 45 41 44 09 30 78 31 ine ENS_DEAD.0x1
0f80: 09 2f 2a 20 46 6c 61 67 20 76 61 6c 75 65 20 74 ./* Flag value t
0f90: 6f 20 73 61 79 20 74 68 61 74 20 74 68 65 20 65 o say that the e
0fa0: 6e 73 65 6d 62 6c 65 20 69 73 20 64 65 61 64 0a nsemble is dead.
0fb0: 20 20 09 09 09 09 20 2a 20 61 6e 64 20 6f 6e 20 .... * and on
0fc0: 69 74 73 20 77 61 79 20 6f 75 74 2e 20 2a 2f 0a its way out. */.
0fd0: 20 20 0a 2b 20 0a 2b 20 0a 2b 20 0a 20 20 2f 2a .+ .+ .+ . /*
0fe0: 0a 20 20 20 2a 20 44 65 63 6c 61 72 61 74 69 6f . * Declaratio
0ff0: 6e 73 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e 73 ns for functions
1000: 20 6c 6f 63 61 6c 20 74 6f 20 74 68 69 73 20 66 local to this f
1010: 69 6c 65 3a 0a 20 20 20 2a 2f 0a 2a 2a 2a 2a 2a ile:. */.*****
1020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 34 **********.*** 4
1030: 37 34 35 2c 34 37 36 30 20 2a 2a 2a 2a 0a 20 20 745,4760 ****.
1040: 09 45 4e 53 5f 43 4f 4e 46 49 47 2c 20 45 4e 53 .ENS_CONFIG, ENS
1050: 5f 43 52 45 41 54 45 2c 20 45 4e 53 5f 45 58 49 _CREATE, ENS_EXI
1060: 53 54 53 0a 20 20 20 20 20 20 7d 3b 0a 20 20 20 STS. };.
1070: 20 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 static const
1080: 63 68 61 72 20 2a 63 72 65 61 74 65 4f 70 74 69 char *createOpti
1090: 6f 6e 73 5b 5d 20 3d 20 7b 0a 21 20 09 22 2d 63 ons[] = {.! ."-c
10a0: 6f 6d 6d 61 6e 64 22 2c 20 22 2d 6d 61 70 22 2c ommand", "-map",
10b0: 20 22 2d 70 72 65 66 69 78 65 73 22 2c 20 22 2d "-prefixes", "-
10c0: 73 75 62 63 6f 6d 6d 61 6e 64 73 22 2c 20 22 2d subcommands", "-
10d0: 75 6e 6b 6e 6f 77 6e 22 2c 20 4e 55 4c 4c 0a 20 unknown", NULL.
10e0: 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 65 6e };. en
10f0: 75 6d 20 45 6e 73 43 72 65 61 74 65 4f 70 74 73 um EnsCreateOpts
1100: 20 7b 0a 21 20 09 43 52 54 5f 43 4d 44 2c 20 43 {.! .CRT_CMD, C
1110: 52 54 5f 4d 41 50 2c 20 43 52 54 5f 50 52 45 46 RT_MAP, CRT_PREF
1120: 49 58 2c 20 43 52 54 5f 53 55 42 43 4d 44 53 2c IX, CRT_SUBCMDS,
1130: 20 43 52 54 5f 55 4e 4b 4e 4f 57 4e 0a 20 20 20 CRT_UNKNOWN.
1140: 20 20 20 7d 3b 0a 20 20 20 20 20 20 73 74 61 74 };. stat
1150: 69 63 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 ic const char *c
1160: 6f 6e 66 69 67 4f 70 74 69 6f 6e 73 5b 5d 20 3d onfigOptions[] =
1170: 20 7b 0a 21 20 09 22 2d 6d 61 70 22 2c 20 22 2d {.! ."-map", "-
1180: 6e 61 6d 65 73 70 61 63 65 22 2c 20 22 2d 70 72 namespace", "-pr
1190: 65 66 69 78 65 73 22 2c 20 22 2d 73 75 62 63 6f efixes", "-subco
11a0: 6d 6d 61 6e 64 73 22 2c 20 22 2d 75 6e 6b 6e 6f mmands", "-unkno
11b0: 77 6e 22 2c 20 4e 55 4c 4c 0a 20 20 20 20 20 20 wn", NULL.
11c0: 7d 3b 0a 20 20 20 20 20 20 65 6e 75 6d 20 45 6e };. enum En
11d0: 73 43 6f 6e 66 69 67 4f 70 74 73 20 7b 0a 21 20 sConfigOpts {.!
11e0: 09 43 4f 4e 46 5f 4d 41 50 2c 20 43 4f 4e 46 5f .CONF_MAP, CONF_
11f0: 4e 41 4d 45 53 50 41 43 45 2c 20 43 4f 4e 46 5f NAMESPACE, CONF_
1200: 50 52 45 46 49 58 2c 20 43 4f 4e 46 5f 53 55 42 PREFIX, CONF_SUB
1210: 43 4d 44 53 2c 20 43 4f 4e 46 5f 55 4e 4b 4e 4f CMDS, CONF_UNKNO
1220: 57 4e 0a 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 WN. };.
1230: 20 20 69 6e 74 20 69 6e 64 65 78 3b 0a 20 20 0a int index;. .
1240: 2d 2d 2d 20 34 37 35 30 2c 34 37 36 39 20 2d 2d --- 4750,4769 --
1250: 2d 2d 0a 20 20 09 45 4e 53 5f 43 4f 4e 46 49 47 --. .ENS_CONFIG
1260: 2c 20 45 4e 53 5f 43 52 45 41 54 45 2c 20 45 4e , ENS_CREATE, EN
1270: 53 5f 45 58 49 53 54 53 0a 20 20 20 20 20 20 7d S_EXISTS. }
1280: 3b 0a 20 20 20 20 20 20 73 74 61 74 69 63 20 63 ;. static c
1290: 6f 6e 73 74 20 63 68 61 72 20 2a 63 72 65 61 74 onst char *creat
12a0: 65 4f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b 0a 21 eOptions[] = {.!
12b0: 20 09 22 2d 63 6f 6d 6d 61 6e 64 22 2c 20 22 2d ."-command", "-
12c0: 6d 61 70 22 2c 20 22 2d 70 61 72 61 6d 65 74 65 map", "-paramete
12d0: 72 73 22 2c 20 22 2d 70 72 65 66 69 78 65 73 22 rs", "-prefixes"
12e0: 2c 20 22 2d 73 75 62 63 6f 6d 6d 61 6e 64 73 22 , "-subcommands"
12f0: 2c 20 0a 21 20 20 20 20 20 20 20 20 20 22 2d 75 , .! "-u
1300: 6e 6b 6e 6f 77 6e 22 2c 20 4e 55 4c 4c 0a 20 20 nknown", NULL.
1310: 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 65 6e 75 };. enu
1320: 6d 20 45 6e 73 43 72 65 61 74 65 4f 70 74 73 20 m EnsCreateOpts
1330: 7b 0a 21 20 09 43 52 54 5f 43 4d 44 2c 20 43 52 {.! .CRT_CMD, CR
1340: 54 5f 4d 41 50 2c 20 43 52 54 5f 50 41 52 41 4d T_MAP, CRT_PARAM
1350: 2c 20 43 52 54 5f 50 52 45 46 49 58 2c 20 43 52 , CRT_PREFIX, CR
1360: 54 5f 53 55 42 43 4d 44 53 2c 20 0a 21 20 20 20 T_SUBCMDS, .!
1370: 20 20 20 20 20 20 43 52 54 5f 55 4e 4b 4e 4f 57 CRT_UNKNOW
1380: 4e 0a 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 N. };.
1390: 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68 static const ch
13a0: 61 72 20 2a 63 6f 6e 66 69 67 4f 70 74 69 6f 6e ar *configOption
13b0: 73 5b 5d 20 3d 20 7b 0a 21 20 09 22 2d 6d 61 70 s[] = {.! ."-map
13c0: 22 2c 20 22 2d 6e 61 6d 65 73 70 61 63 65 22 2c ", "-namespace",
13d0: 20 22 2d 70 61 72 61 6d 65 74 65 72 73 22 2c 20 "-parameters",
13e0: 22 2d 70 72 65 66 69 78 65 73 22 2c 20 22 2d 73 "-prefixes", "-s
13f0: 75 62 63 6f 6d 6d 61 6e 64 73 22 2c 20 0a 21 20 ubcommands", .!
1400: 20 20 20 20 20 20 20 20 22 2d 75 6e 6b 6e 6f 77 "-unknow
1410: 6e 22 2c 20 4e 55 4c 4c 0a 20 20 20 20 20 20 7d n", NULL. }
1420: 3b 0a 20 20 20 20 20 20 65 6e 75 6d 20 45 6e 73 ;. enum Ens
1430: 43 6f 6e 66 69 67 4f 70 74 73 20 7b 0a 21 20 09 ConfigOpts {.! .
1440: 43 4f 4e 46 5f 4d 41 50 2c 20 43 4f 4e 46 5f 4e CONF_MAP, CONF_N
1450: 41 4d 45 53 50 41 43 45 2c 20 43 4f 4e 46 5f 50 AMESPACE, CONF_P
1460: 41 52 41 4d 2c 20 43 4f 4e 46 5f 50 52 45 46 49 ARAM, CONF_PREFI
1470: 58 2c 20 43 4f 4e 46 5f 53 55 42 43 4d 44 53 2c X, CONF_SUBCMDS,
1480: 20 0a 21 20 20 20 20 20 20 20 20 20 43 4f 4e 46 .! CONF
1490: 5f 55 4e 4b 4e 4f 57 4e 0a 20 20 20 20 20 20 7d _UNKNOWN. }
14a0: 3b 0a 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 ;. int inde
14b0: 78 3b 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a x;. .**********
14c0: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 34 37 38 39 2c 34 *****.*** 4789,4
14d0: 37 39 34 20 2a 2a 2a 2a 0a 2d 2d 2d 20 34 37 39 794 ****.--- 479
14e0: 38 2c 34 38 30 34 20 2d 2d 2d 2d 0a 20 20 09 54 8,4804 ----. .T
14f0: 63 6c 5f 4f 62 6a 20 2a 6d 61 70 4f 62 6a 20 3d cl_Obj *mapObj =
1500: 20 4e 55 4c 4c 3b 0a 20 20 09 69 6e 74 20 70 65 NULL;. .int pe
1510: 72 6d 69 74 50 72 65 66 69 78 20 3d 20 31 3b 0a rmitPrefix = 1;.
1520: 20 20 09 54 63 6c 5f 4f 62 6a 20 2a 75 6e 6b 6e .Tcl_Obj *unkn
1530: 6f 77 6e 4f 62 6a 20 3d 20 4e 55 4c 4c 3b 0a 2b ownObj = NULL;.+
1540: 20 09 54 63 6c 5f 4f 62 6a 20 2a 70 61 72 61 6d .Tcl_Obj *param
1550: 4f 62 6a 20 3d 20 4e 55 4c 4c 3b 0a 20 20 0a 20 Obj = NULL;. .
1560: 20 09 6f 62 6a 76 20 2b 3d 20 33 3b 0a 20 20 09 .objv += 3;. .
1570: 6f 62 6a 63 20 2d 3d 20 33 3b 0a 2a 2a 2a 2a 2a objc -= 3;.*****
1580: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 34 **********.*** 4
1590: 38 32 39 2c 34 38 33 34 20 2a 2a 2a 2a 0a 2d 2d 829,4834 ****.--
15a0: 2d 20 34 38 33 39 2c 34 38 35 33 20 2d 2d 2d 2d - 4839,4853 ----
15b0: 0a 20 20 09 09 7d 0a 20 20 09 09 73 75 62 63 6d . ..}. ..subcm
15c0: 64 4f 62 6a 20 3d 20 28 6c 65 6e 20 3e 20 30 20 dObj = (len > 0
15d0: 3f 20 6f 62 6a 76 5b 31 5d 20 3a 20 4e 55 4c 4c ? objv[1] : NULL
15e0: 29 3b 0a 20 20 09 09 63 6f 6e 74 69 6e 75 65 3b );. ..continue;
15f0: 0a 2b 20 09 20 20 20 20 63 61 73 65 20 43 52 54 .+ . case CRT
1600: 5f 50 41 52 41 4d 3a 0a 2b 20 09 09 69 66 20 28 _PARAM:.+ ..if (
1610: 54 63 6c 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 TclListObjLength
1620: 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d (interp, objv[1]
1630: 2c 20 26 6c 65 6e 29 20 21 3d 20 54 43 4c 5f 4f , &len) != TCL_O
1640: 4b 29 20 7b 0a 2b 20 09 09 20 20 20 20 69 66 20 K) {.+ .. if
1650: 28 61 6c 6c 6f 63 61 74 65 64 4d 61 70 46 6c 61 (allocatedMapFla
1660: 67 29 20 7b 0a 2b 20 09 09 09 54 63 6c 5f 44 65 g) {.+ ...Tcl_De
1670: 63 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 crRefCount(mapOb
1680: 6a 29 3b 0a 2b 20 09 09 20 20 20 20 7d 0a 2b 20 j);.+ .. }.+
1690: 09 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c .. return TCL
16a0: 5f 45 52 52 4f 52 3b 0a 2b 20 09 09 7d 0a 2b 20 _ERROR;.+ ..}.+
16b0: 09 09 70 61 72 61 6d 4f 62 6a 20 3d 20 28 6c 65 ..paramObj = (le
16c0: 6e 20 3e 20 30 20 3f 20 6f 62 6a 76 5b 31 5d 20 n > 0 ? objv[1]
16d0: 3a 20 4e 55 4c 4c 29 3b 0a 2b 20 09 09 63 6f 6e : NULL);.+ ..con
16e0: 74 69 6e 75 65 3b 0a 20 20 09 20 20 20 20 63 61 tinue;. . ca
16f0: 73 65 20 43 52 54 5f 4d 41 50 3a 20 7b 0a 20 20 se CRT_MAP: {.
1700: 09 09 54 63 6c 5f 4f 62 6a 20 2a 70 61 74 63 68 ..Tcl_Obj *patch
1710: 65 64 44 69 63 74 20 3d 20 4e 55 4c 4c 2c 20 2a edDict = NULL, *
1720: 73 75 62 63 6d 64 4f 62 6a 3b 0a 20 20 0a 2a 2a subcmdObj;. .**
1730: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
1740: 2a 20 34 39 33 35 2c 34 39 34 30 20 2a 2a 2a 2a * 4935,4940 ****
1750: 0a 2d 2d 2d 20 34 39 35 34 2c 34 39 36 30 20 2d .--- 4954,4960 -
1760: 2d 2d 2d 0a 20 20 09 54 63 6c 5f 53 65 74 45 6e ---. .Tcl_SetEn
1770: 73 65 6d 62 6c 65 53 75 62 63 6f 6d 6d 61 6e 64 sembleSubcommand
1780: 4c 69 73 74 28 69 6e 74 65 72 70 2c 20 74 6f 6b List(interp, tok
1790: 65 6e 2c 20 73 75 62 63 6d 64 4f 62 6a 29 3b 0a en, subcmdObj);.
17a0: 20 20 09 54 63 6c 5f 53 65 74 45 6e 73 65 6d 62 .Tcl_SetEnsemb
17b0: 6c 65 4d 61 70 70 69 6e 67 44 69 63 74 28 69 6e leMappingDict(in
17c0: 74 65 72 70 2c 20 74 6f 6b 65 6e 2c 20 6d 61 70 terp, token, map
17d0: 4f 62 6a 29 3b 0a 20 20 09 54 63 6c 5f 53 65 74 Obj);. .Tcl_Set
17e0: 45 6e 73 65 6d 62 6c 65 55 6e 6b 6e 6f 77 6e 48 EnsembleUnknownH
17f0: 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c 20 74 andler(interp, t
1800: 6f 6b 65 6e 2c 20 75 6e 6b 6e 6f 77 6e 4f 62 6a oken, unknownObj
1810: 29 3b 0a 2b 20 09 54 63 6c 5f 53 65 74 45 6e 73 );.+ .Tcl_SetEns
1820: 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 4c 69 embleParameterLi
1830: 73 74 28 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e st(interp, token
1840: 2c 20 70 61 72 61 6d 4f 62 6a 29 3b 0a 20 20 0a , paramObj);. .
1850: 20 20 09 2f 2a 0a 20 20 09 20 2a 20 54 72 69 63 ./*. . * Tric
1860: 6b 79 21 20 4d 75 73 74 20 65 6e 73 75 72 65 20 ky! Must ensure
1870: 74 68 61 74 20 74 68 65 20 72 65 73 75 6c 74 20 that the result
1880: 69 73 20 6e 6f 74 20 73 68 61 72 65 64 20 28 63 is not shared (c
1890: 6f 6d 6d 61 6e 64 20 64 65 6c 65 74 65 0a 2a 2a ommand delete.**
18a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
18b0: 2a 20 34 39 38 30 2c 34 39 38 35 20 2a 2a 2a 2a * 4980,4985 ****
18c0: 0a 2d 2d 2d 20 35 30 30 30 2c 35 30 31 31 20 2d .--- 5000,5011 -
18d0: 2d 2d 2d 0a 20 20 09 09 20 20 20 20 54 63 6c 5f ---. .. Tcl_
18e0: 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 SetObjResult(int
18f0: 65 72 70 2c 20 72 65 73 75 6c 74 4f 62 6a 29 3b erp, resultObj);
1900: 0a 20 20 09 09 7d 0a 20 20 09 09 62 72 65 61 6b . ..}. ..break
1910: 3b 0a 2b 20 09 20 20 20 20 63 61 73 65 20 43 4f ;.+ . case CO
1920: 4e 46 5f 50 41 52 41 4d 3a 0a 2b 20 09 09 54 63 NF_PARAM:.+ ..Tc
1930: 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 l_GetEnsemblePar
1940: 61 6d 65 74 65 72 4c 69 73 74 28 4e 55 4c 4c 2c ameterList(NULL,
1950: 20 74 6f 6b 65 6e 2c 20 26 72 65 73 75 6c 74 4f token, &resultO
1960: 62 6a 29 3b 0a 2b 20 09 09 69 66 20 28 72 65 73 bj);.+ ..if (res
1970: 75 6c 74 4f 62 6a 20 21 3d 20 4e 55 4c 4c 29 20 ultObj != NULL)
1980: 7b 0a 2b 20 09 09 20 20 20 20 54 63 6c 5f 53 65 {.+ .. Tcl_Se
1990: 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 tObjResult(inter
19a0: 70 2c 20 72 65 73 75 6c 74 4f 62 6a 29 3b 0a 2b p, resultObj);.+
19b0: 20 09 09 7d 0a 2b 20 09 09 62 72 65 61 6b 3b 0a ..}.+ ..break;.
19c0: 20 20 09 20 20 20 20 63 61 73 65 20 43 4f 4e 46 . case CONF
19d0: 5f 4d 41 50 3a 0a 20 20 09 09 54 63 6c 5f 47 65 _MAP:. ..Tcl_Ge
19e0: 74 45 6e 73 65 6d 62 6c 65 4d 61 70 70 69 6e 67 tEnsembleMapping
19f0: 44 69 63 74 28 4e 55 4c 4c 2c 20 74 6f 6b 65 6e Dict(NULL, token
1a00: 2c 20 26 72 65 73 75 6c 74 4f 62 6a 29 3b 0a 20 , &resultObj);.
1a10: 20 09 09 69 66 20 28 72 65 73 75 6c 74 4f 62 6a ..if (resultObj
1a20: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2a 2a 2a 2a != NULL) {.****
1a30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
1a40: 35 30 33 37 2c 35 30 34 32 20 2a 2a 2a 2a 0a 2d 5037,5042 ****.-
1a50: 2d 2d 20 35 30 36 33 2c 35 30 37 35 20 2d 2d 2d -- 5063,5075 ---
1a60: 2d 0a 20 20 09 09 20 20 20 20 54 63 6c 5f 4e 65 -. .. Tcl_Ne
1a70: 77 53 74 72 69 6e 67 4f 62 6a 28 28 28 4e 61 6d wStringObj(((Nam
1a80: 65 73 70 61 63 65 20 2a 29 6e 61 6d 65 73 70 61 espace *)namespa
1a90: 63 65 50 74 72 29 2d 3e 66 75 6c 6c 4e 61 6d 65 cePtr)->fullName
1aa0: 2c 0a 20 20 09 09 20 20 20 20 2d 31 29 29 3b 0a ,. .. -1));.
1ab0: 20 20 0a 2b 20 09 20 20 20 20 2f 2a 20 2d 70 61 .+ . /* -pa
1ac0: 72 61 6d 65 74 65 72 73 20 6f 70 74 69 6f 6e 20 rameters option
1ad0: 2a 2f 0a 2b 20 09 20 20 20 20 54 63 6c 5f 4c 69 */.+ . Tcl_Li
1ae0: 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 stObjAppendEleme
1af0: 6e 74 28 4e 55 4c 4c 2c 20 72 65 73 75 6c 74 4f nt(NULL, resultO
1b00: 62 6a 2c 0a 2b 20 09 09 20 20 20 20 54 63 6c 5f bj,.+ .. Tcl_
1b10: 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 63 6f 6e NewStringObj(con
1b20: 66 69 67 4f 70 74 69 6f 6e 73 5b 43 4f 4e 46 5f figOptions[CONF_
1b30: 50 41 52 41 4d 5d 2c 20 2d 31 29 29 3b 0a 2b 20 PARAM], -1));.+
1b40: 09 20 20 20 20 54 63 6c 5f 47 65 74 45 6e 73 65 . Tcl_GetEnse
1b50: 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 4c 69 73 mbleParameterLis
1b60: 74 28 4e 55 4c 4c 2c 20 74 6f 6b 65 6e 2c 20 26 t(NULL, token, &
1b70: 74 6d 70 4f 62 6a 29 3b 0a 2b 20 09 20 20 20 20 tmpObj);.+ .
1b80: 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 70 65 6e Tcl_ListObjAppen
1b90: 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c 2c 20 72 dElement(NULL, r
1ba0: 65 73 75 6c 74 4f 62 6a 2c 0a 2b 20 09 09 20 20 esultObj,.+ ..
1bb0: 20 20 28 74 6d 70 4f 62 6a 20 21 3d 20 4e 55 4c (tmpObj != NUL
1bc0: 4c 29 20 3f 20 74 6d 70 4f 62 6a 20 3a 20 54 63 L) ? tmpObj : Tc
1bd0: 6c 5f 4e 65 77 4f 62 6a 28 29 29 3b 0a 2b 20 0a l_NewObj());.+ .
1be0: 20 20 09 20 20 20 20 2f 2a 20 2d 70 72 65 66 69 . /* -prefi
1bf0: 78 20 6f 70 74 69 6f 6e 20 2a 2f 0a 20 20 09 20 x option */. .
1c00: 20 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 Tcl_ListObjAp
1c10: 70 65 6e 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c pendElement(NULL
1c20: 2c 20 72 65 73 75 6c 74 4f 62 6a 2c 0a 20 20 09 , resultObj,. .
1c30: 09 20 20 20 20 54 63 6c 5f 4e 65 77 53 74 72 69 . Tcl_NewStri
1c40: 6e 67 4f 62 6a 28 63 6f 6e 66 69 67 4f 70 74 69 ngObj(configOpti
1c50: 6f 6e 73 5b 43 4f 4e 46 5f 50 52 45 46 49 58 5d ons[CONF_PREFIX]
1c60: 2c 20 2d 31 29 29 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a , -1));.********
1c70: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 30 36 34 *******.*** 5064
1c80: 2c 35 30 37 35 20 2a 2a 2a 2a 0a 20 20 09 20 20 ,5075 ****. .
1c90: 20 20 54 63 6c 5f 44 69 63 74 53 65 61 72 63 68 Tcl_DictSearch
1ca0: 20 73 65 61 72 63 68 3b 0a 20 20 09 20 20 20 20 search;. .
1cb0: 54 63 6c 5f 4f 62 6a 20 2a 6c 69 73 74 4f 62 6a Tcl_Obj *listObj
1cc0: 3b 0a 20 20 09 20 20 20 20 69 6e 74 20 64 6f 6e ;. . int don
1cd0: 65 2c 20 6c 65 6e 2c 20 61 6c 6c 6f 63 61 74 65 e, len, allocate
1ce0: 64 4d 61 70 46 6c 61 67 20 3d 20 30 3b 0a 21 20 dMapFlag = 0;.!
1cf0: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 73 75 . Tcl_Obj *su
1d00: 62 63 6d 64 4f 62 6a 20 3d 20 4e 55 4c 4c 2c 20 bcmdObj = NULL,
1d10: 2a 6d 61 70 4f 62 6a 20 3d 20 4e 55 4c 4c 2c 0a *mapObj = NULL,.
1d20: 20 20 09 09 20 20 20 20 2a 75 6e 6b 6e 6f 77 6e .. *unknown
1d30: 4f 62 6a 20 3d 20 4e 55 4c 4c 3b 20 2f 2a 20 44 Obj = NULL; /* D
1d40: 65 66 61 75 6c 74 73 2c 20 73 69 6c 65 6e 63 65 efaults, silence
1d50: 20 67 63 63 20 34 20 77 61 72 6e 69 6e 67 73 20 gcc 4 warnings
1d60: 2a 2f 0a 20 20 09 20 20 20 20 69 6e 74 20 70 65 */. . int pe
1d70: 72 6d 69 74 50 72 65 66 69 78 2c 20 66 6c 61 67 rmitPrefix, flag
1d80: 73 20 3d 20 30 3b 09 2f 2a 20 73 69 6c 65 6e 63 s = 0;./* silenc
1d90: 65 20 67 63 63 20 34 20 77 61 72 6e 69 6e 67 20 e gcc 4 warning
1da0: 2a 2f 0a 20 20 0a 20 20 09 20 20 20 20 54 63 6c */. . . Tcl
1db0: 5f 47 65 74 45 6e 73 65 6d 62 6c 65 53 75 62 63 _GetEnsembleSubc
1dc0: 6f 6d 6d 61 6e 64 4c 69 73 74 28 4e 55 4c 4c 2c ommandList(NULL,
1dd0: 20 74 6f 6b 65 6e 2c 20 26 73 75 62 63 6d 64 4f token, &subcmdO
1de0: 62 6a 29 3b 0a 20 20 09 20 20 20 20 54 63 6c 5f bj);. . Tcl_
1df0: 47 65 74 45 6e 73 65 6d 62 6c 65 4d 61 70 70 69 GetEnsembleMappi
1e00: 6e 67 44 69 63 74 28 4e 55 4c 4c 2c 20 74 6f 6b ngDict(NULL, tok
1e10: 65 6e 2c 20 26 6d 61 70 4f 62 6a 29 3b 0a 20 20 en, &mapObj);.
1e20: 09 20 20 20 20 54 63 6c 5f 47 65 74 45 6e 73 65 . Tcl_GetEnse
1e30: 6d 62 6c 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c mbleUnknownHandl
1e40: 65 72 28 4e 55 4c 4c 2c 20 74 6f 6b 65 6e 2c 20 er(NULL, token,
1e50: 26 75 6e 6b 6e 6f 77 6e 4f 62 6a 29 3b 0a 20 20 &unknownObj);.
1e60: 09 20 20 20 20 54 63 6c 5f 47 65 74 45 6e 73 65 . Tcl_GetEnse
1e70: 6d 62 6c 65 46 6c 61 67 73 28 4e 55 4c 4c 2c 20 mbleFlags(NULL,
1e80: 74 6f 6b 65 6e 2c 20 26 66 6c 61 67 73 29 3b 0a token, &flags);.
1e90: 20 20 09 20 20 20 20 70 65 72 6d 69 74 50 72 65 . permitPre
1ea0: 66 69 78 20 3d 20 28 66 6c 61 67 73 20 26 20 54 fix = (flags & T
1eb0: 43 4c 5f 45 4e 53 45 4d 42 4c 45 5f 50 52 45 46 CL_ENSEMBLE_PREF
1ec0: 49 58 29 20 21 3d 20 30 3b 0a 2d 2d 2d 20 35 30 IX) != 0;.--- 50
1ed0: 39 37 2c 35 31 30 39 20 2d 2d 2d 2d 0a 20 20 09 97,5109 ----. .
1ee0: 20 20 20 20 54 63 6c 5f 44 69 63 74 53 65 61 72 Tcl_DictSear
1ef0: 63 68 20 73 65 61 72 63 68 3b 0a 20 20 09 20 20 ch search;. .
1f00: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6c 69 73 74 4f Tcl_Obj *listO
1f10: 62 6a 3b 0a 20 20 09 20 20 20 20 69 6e 74 20 64 bj;. . int d
1f20: 6f 6e 65 2c 20 6c 65 6e 2c 20 61 6c 6c 6f 63 61 one, len, alloca
1f30: 74 65 64 4d 61 70 46 6c 61 67 20 3d 20 30 3b 0a tedMapFlag = 0;.
1f40: 21 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a ! . Tcl_Obj *
1f50: 73 75 62 63 6d 64 4f 62 6a 20 3d 20 4e 55 4c 4c subcmdObj = NULL
1f60: 2c 20 2a 6d 61 70 4f 62 6a 20 3d 20 4e 55 4c 4c , *mapObj = NULL
1f70: 2c 20 2a 70 61 72 61 6d 4f 62 6a 20 3d 20 4e 55 , *paramObj = NU
1f80: 4c 4c 2c 0a 20 20 09 09 20 20 20 20 2a 75 6e 6b LL,. .. *unk
1f90: 6e 6f 77 6e 4f 62 6a 20 3d 20 4e 55 4c 4c 3b 20 nownObj = NULL;
1fa0: 2f 2a 20 44 65 66 61 75 6c 74 73 2c 20 73 69 6c /* Defaults, sil
1fb0: 65 6e 63 65 20 67 63 63 20 34 20 77 61 72 6e 69 ence gcc 4 warni
1fc0: 6e 67 73 20 2a 2f 0a 20 20 09 20 20 20 20 69 6e ngs */. . in
1fd0: 74 20 70 65 72 6d 69 74 50 72 65 66 69 78 2c 20 t permitPrefix,
1fe0: 66 6c 61 67 73 20 3d 20 30 3b 09 2f 2a 20 73 69 flags = 0;./* si
1ff0: 6c 65 6e 63 65 20 67 63 63 20 34 20 77 61 72 6e lence gcc 4 warn
2000: 69 6e 67 20 2a 2f 0a 20 20 0a 20 20 09 20 20 20 ing */. . .
2010: 20 54 63 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 Tcl_GetEnsemble
2020: 53 75 62 63 6f 6d 6d 61 6e 64 4c 69 73 74 28 4e SubcommandList(N
2030: 55 4c 4c 2c 20 74 6f 6b 65 6e 2c 20 26 73 75 62 ULL, token, &sub
2040: 63 6d 64 4f 62 6a 29 3b 0a 20 20 09 20 20 20 20 cmdObj);. .
2050: 54 63 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 4d Tcl_GetEnsembleM
2060: 61 70 70 69 6e 67 44 69 63 74 28 4e 55 4c 4c 2c appingDict(NULL,
2070: 20 74 6f 6b 65 6e 2c 20 26 6d 61 70 4f 62 6a 29 token, &mapObj)
2080: 3b 0a 2b 20 09 20 20 20 20 54 63 6c 5f 47 65 74 ;.+ . Tcl_Get
2090: 45 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 EnsembleParamete
20a0: 72 4c 69 73 74 28 4e 55 4c 4c 2c 20 74 6f 6b 65 rList(NULL, toke
20b0: 6e 2c 20 26 70 61 72 61 6d 4f 62 6a 29 3b 0a 20 n, ¶mObj);.
20c0: 20 09 20 20 20 20 54 63 6c 5f 47 65 74 45 6e 73 . Tcl_GetEns
20d0: 65 6d 62 6c 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 embleUnknownHand
20e0: 6c 65 72 28 4e 55 4c 4c 2c 20 74 6f 6b 65 6e 2c ler(NULL, token,
20f0: 20 26 75 6e 6b 6e 6f 77 6e 4f 62 6a 29 3b 0a 20 &unknownObj);.
2100: 20 09 20 20 20 20 54 63 6c 5f 47 65 74 45 6e 73 . Tcl_GetEns
2110: 65 6d 62 6c 65 46 6c 61 67 73 28 4e 55 4c 4c 2c embleFlags(NULL,
2120: 20 74 6f 6b 65 6e 2c 20 26 66 6c 61 67 73 29 3b token, &flags);
2130: 0a 20 20 09 20 20 20 20 70 65 72 6d 69 74 50 72 . . permitPr
2140: 65 66 69 78 20 3d 20 28 66 6c 61 67 73 20 26 20 efix = (flags &
2150: 54 43 4c 5f 45 4e 53 45 4d 42 4c 45 5f 50 52 45 TCL_ENSEMBLE_PRE
2160: 46 49 58 29 20 21 3d 20 30 3b 0a 2a 2a 2a 2a 2a FIX) != 0;.*****
2170: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 **********.*** 5
2180: 31 30 32 2c 35 31 30 37 20 2a 2a 2a 2a 0a 2d 2d 102,5107 ****.--
2190: 2d 20 35 31 33 36 2c 35 31 35 30 20 2d 2d 2d 2d - 5136,5150 ----
21a0: 0a 20 20 09 09 20 20 20 20 7d 0a 20 20 09 09 20 . .. }. ..
21b0: 20 20 20 73 75 62 63 6d 64 4f 62 6a 20 3d 20 28 subcmdObj = (
21c0: 6c 65 6e 20 3e 20 30 20 3f 20 6f 62 6a 76 5b 31 len > 0 ? objv[1
21d0: 5d 20 3a 20 4e 55 4c 4c 29 3b 0a 20 20 09 09 20 ] : NULL);. ..
21e0: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 2b 20 09 continue;.+ .
21f0: 09 63 61 73 65 20 43 4f 4e 46 5f 50 41 52 41 4d .case CONF_PARAM
2200: 3a 0a 2b 20 09 09 20 20 20 20 69 66 20 28 54 63 :.+ .. if (Tc
2210: 6c 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69 lListObjLength(i
2220: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d 2c 20 nterp, objv[1],
2230: 26 6c 65 6e 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 &len) != TCL_OK)
2240: 20 7b 0a 2b 20 09 09 09 69 66 20 28 61 6c 6c 6f {.+ ...if (allo
2250: 63 61 74 65 64 4d 61 70 46 6c 61 67 29 20 7b 0a catedMapFlag) {.
2260: 2b 20 09 09 09 20 20 20 20 54 63 6c 5f 44 65 63 + ... Tcl_Dec
2270: 72 52 65 66 43 6f 75 6e 74 28 6d 61 70 4f 62 6a rRefCount(mapObj
2280: 29 3b 0a 2b 20 09 09 09 7d 0a 2b 20 09 09 09 72 );.+ ...}.+ ...r
2290: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
22a0: 0a 2b 20 09 09 20 20 20 20 7d 0a 2b 20 09 09 20 .+ .. }.+ ..
22b0: 20 20 20 70 61 72 61 6d 4f 62 6a 20 3d 20 28 6c paramObj = (l
22c0: 65 6e 20 3e 20 30 20 3f 20 6f 62 6a 76 5b 31 5d en > 0 ? objv[1]
22d0: 20 3a 20 4e 55 4c 4c 29 3b 0a 2b 20 09 09 20 20 : NULL);.+ ..
22e0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 09 09 continue;. ..
22f0: 63 61 73 65 20 43 4f 4e 46 5f 4d 41 50 3a 20 7b case CONF_MAP: {
2300: 0a 20 20 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a . .. Tcl_Obj
2310: 20 2a 70 61 74 63 68 65 64 44 69 63 74 20 3d 20 *patchedDict =
2320: 4e 55 4c 4c 2c 20 2a 73 75 62 63 6d 64 4f 62 6a NULL, *subcmdObj
2330: 3b 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;. .***********
2340: 2a 2a 2a 2a 0a 2a 2a 2a 20 35 32 31 31 2c 35 32 ****.*** 5211,52
2350: 31 36 20 2a 2a 2a 2a 0a 2d 2d 2d 20 35 32 35 34 16 ****.--- 5254
2360: 2c 35 32 36 30 20 2d 2d 2d 2d 0a 20 20 09 09 20 ,5260 ----. ..
2370: 20 20 20 3a 20 66 6c 61 67 73 26 7e 54 43 4c 5f : flags&~TCL_
2380: 45 4e 53 45 4d 42 4c 45 5f 50 52 45 46 49 58 29 ENSEMBLE_PREFIX)
2390: 3b 0a 20 20 09 20 20 20 20 54 63 6c 5f 53 65 74 ;. . Tcl_Set
23a0: 45 6e 73 65 6d 62 6c 65 53 75 62 63 6f 6d 6d 61 EnsembleSubcomma
23b0: 6e 64 4c 69 73 74 28 69 6e 74 65 72 70 2c 20 74 ndList(interp, t
23c0: 6f 6b 65 6e 2c 20 73 75 62 63 6d 64 4f 62 6a 29 oken, subcmdObj)
23d0: 3b 0a 20 20 09 20 20 20 20 54 63 6c 5f 53 65 74 ;. . Tcl_Set
23e0: 45 6e 73 65 6d 62 6c 65 4d 61 70 70 69 6e 67 44 EnsembleMappingD
23f0: 69 63 74 28 69 6e 74 65 72 70 2c 20 74 6f 6b 65 ict(interp, toke
2400: 6e 2c 20 6d 61 70 4f 62 6a 29 3b 0a 2b 20 09 20 n, mapObj);.+ .
2410: 20 20 20 54 63 6c 5f 53 65 74 45 6e 73 65 6d 62 Tcl_SetEnsemb
2420: 6c 65 50 61 72 61 6d 65 74 65 72 4c 69 73 74 28 leParameterList(
2430: 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 2c 20 70 interp, token, p
2440: 61 72 61 6d 4f 62 6a 29 3b 0a 20 20 09 20 20 20 aramObj);. .
2450: 20 54 63 6c 5f 53 65 74 45 6e 73 65 6d 62 6c 65 Tcl_SetEnsemble
2460: 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 69 UnknownHandler(i
2470: 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 2c 20 75 6e nterp, token, un
2480: 6b 6e 6f 77 6e 4f 62 6a 29 3b 0a 20 20 09 20 20 knownObj);. .
2490: 20 20 54 63 6c 5f 53 65 74 45 6e 73 65 6d 62 6c Tcl_SetEnsembl
24a0: 65 46 6c 61 67 73 28 69 6e 74 65 72 70 2c 20 74 eFlags(interp, t
24b0: 6f 6b 65 6e 2c 20 66 6c 61 67 73 29 3b 0a 20 20 oken, flags);.
24c0: 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f . return TCL_
24d0: 4f 4b 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a OK;.************
24e0: 2a 2a 2a 0a 2a 2a 2a 20 35 32 37 37 2c 35 32 38 ***.*** 5277,528
24f0: 32 20 2a 2a 2a 2a 0a 2d 2d 2d 20 35 33 32 31 2c 2 ****.--- 5321,
2500: 35 33 32 38 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 5328 ----.
2510: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 ensemblePtr->sub
2520: 63 6d 64 4c 69 73 74 20 3d 20 4e 55 4c 4c 3b 0a cmdList = NULL;.
2530: 20 20 20 20 20 20 65 6e 73 65 6d 62 6c 65 50 74 ensemblePt
2540: 72 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 44 69 63 r->subcommandDic
2550: 74 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 20 t = NULL;.
2560: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 66 6c 61 ensemblePtr->fla
2570: 67 73 20 3d 20 66 6c 61 67 73 3b 0a 2b 20 20 20 gs = flags;.+
2580: 20 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e ensemblePtr->n
2590: 75 6d 50 61 72 61 6d 65 74 65 72 73 20 3d 20 30 umParameters = 0
25a0: 3b 0a 2b 20 20 20 20 20 65 6e 73 65 6d 62 6c 65 ;.+ ensemble
25b0: 50 74 72 2d 3e 70 61 72 61 6d 65 74 65 72 4c 69 Ptr->parameterLi
25c0: 73 74 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 st = NULL;.
25d0: 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 75 6e ensemblePtr->un
25e0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 3d 20 4e knownHandler = N
25f0: 55 4c 4c 3b 0a 20 20 20 20 20 20 65 6e 73 65 6d ULL;. ensem
2600: 62 6c 65 50 74 72 2d 3e 74 6f 6b 65 6e 20 3d 20 blePtr->token =
2610: 54 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43 6f 6d Tcl_CreateObjCom
2620: 6d 61 6e 64 28 69 6e 74 65 72 70 2c 20 6e 61 6d mand(interp, nam
2630: 65 2c 0a 20 20 09 20 20 20 20 4e 73 45 6e 73 65 e,. . NsEnse
2640: 6d 62 6c 65 49 6d 70 6c 65 6d 65 6e 74 61 74 69 mbleImplementati
2650: 6f 6e 43 6d 64 2c 20 65 6e 73 65 6d 62 6c 65 50 onCmd, ensembleP
2660: 74 72 2c 20 44 65 6c 65 74 65 45 6e 73 65 6d 62 tr, DeleteEnsemb
2670: 6c 65 43 6f 6e 66 69 67 29 3b 0a 2a 2a 2a 2a 2a leConfig);.*****
2680: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 **********.*** 5
2690: 33 37 38 2c 35 33 38 33 20 2a 2a 2a 2a 0a 2d 2d 378,5383 ****.--
26a0: 2d 20 35 34 32 34 2c 35 35 30 35 20 2d 2d 2d 2d - 5424,5505 ----
26b0: 0a 20 20 2f 2a 0a 20 20 20 2a 2d 2d 2d 2d 2d 2d . /*. *------
26c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
26d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
26e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
26f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2700: 0a 20 20 20 2a 0a 2b 20 20 2a 20 54 63 6c 5f 53 . *.+ * Tcl_S
2710: 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 etEnsembleParame
2720: 74 65 72 4c 69 73 74 20 2d 2d 0a 2b 20 20 2a 0a terList --.+ *.
2730: 2b 20 20 2a 09 53 65 74 20 74 68 65 20 70 61 72 + *.Set the par
2740: 61 6d 65 74 65 72 20 6c 69 73 74 20 66 6f 72 20 ameter list for
2750: 61 20 70 61 72 74 69 63 75 6c 61 72 20 65 6e 73 a particular ens
2760: 65 6d 62 6c 65 2e 0a 2b 20 20 2a 0a 2b 20 20 2a emble..+ *.+ *
2770: 20 52 65 73 75 6c 74 73 3a 0a 2b 20 20 2a 09 54 Results:.+ *.T
2780: 63 6c 20 72 65 73 75 6c 74 20 63 6f 64 65 20 28 cl result code (
2790: 65 72 72 6f 72 20 69 66 20 63 6f 6d 6d 61 6e 64 error if command
27a0: 20 74 6f 6b 65 6e 20 64 6f 65 73 20 6e 6f 74 20 token does not
27b0: 69 6e 64 69 63 61 74 65 20 61 6e 20 65 6e 73 65 indicate an ense
27c0: 6d 62 6c 65 0a 2b 20 20 2a 09 6f 72 20 74 68 65 mble.+ *.or the
27d0: 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 20 parameter list
27e0: 2d 20 69 66 20 6e 6f 6e 2d 4e 55 4c 4c 20 2d 20 - if non-NULL -
27f0: 69 73 20 6e 6f 74 20 61 20 6c 69 73 74 29 2e 0a is not a list)..
2800: 2b 20 20 2a 0a 2b 20 20 2a 20 53 69 64 65 20 65 + *.+ * Side e
2810: 66 66 65 63 74 73 3a 0a 2b 20 20 2a 09 54 68 65 ffects:.+ *.The
2820: 20 65 6e 73 65 6d 62 6c 65 20 69 73 20 75 70 64 ensemble is upd
2830: 61 74 65 64 20 61 6e 64 20 6d 61 72 6b 65 64 20 ated and marked
2840: 66 6f 72 20 72 65 63 6f 6d 70 69 6c 61 74 69 6f for recompilatio
2850: 6e 2e 0a 2b 20 20 2a 09 28 28 51 3a 20 49 73 20 n..+ *.((Q: Is
2860: 74 68 65 20 6c 61 74 74 65 72 20 6e 65 63 65 73 the latter neces
2870: 73 61 72 79 3f 29 29 0a 2b 20 20 2a 0a 2b 20 20 sary?)).+ *.+
2880: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
2890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
28a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
28b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
28c0: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 20 2a 2f 0a 2b 20 -------.+ */.+
28d0: 0a 2b 20 69 6e 74 0a 2b 20 54 63 6c 5f 53 65 74 .+ int.+ Tcl_Set
28e0: 45 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 EnsembleParamete
28f0: 72 4c 69 73 74 28 0a 2b 20 20 20 20 20 54 63 6c rList(.+ Tcl
2900: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
2910: 0a 2b 20 20 20 20 20 54 63 6c 5f 43 6f 6d 6d 61 .+ Tcl_Comma
2920: 6e 64 20 74 6f 6b 65 6e 2c 0a 2b 20 20 20 20 20 nd token,.+
2930: 54 63 6c 5f 4f 62 6a 20 2a 70 61 72 61 6d 4c 69 Tcl_Obj *paramLi
2940: 73 74 29 0a 2b 20 7b 0a 2b 20 20 20 20 20 43 6f st).+ {.+ Co
2950: 6d 6d 61 6e 64 20 2a 63 6d 64 50 74 72 20 3d 20 mmand *cmdPtr =
2960: 28 43 6f 6d 6d 61 6e 64 20 2a 29 20 74 6f 6b 65 (Command *) toke
2970: 6e 3b 0a 2b 20 20 20 20 20 45 6e 73 65 6d 62 6c n;.+ Ensembl
2980: 65 43 6f 6e 66 69 67 20 2a 65 6e 73 65 6d 62 6c eConfig *ensembl
2990: 65 50 74 72 3b 0a 2b 20 20 20 20 20 54 63 6c 5f ePtr;.+ Tcl_
29a0: 4f 62 6a 20 2a 6f 6c 64 4c 69 73 74 3b 0a 2b 20 Obj *oldList;.+
29b0: 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b 0a int length;.
29c0: 2b 20 0a 2b 20 20 20 20 20 69 66 20 28 63 6d 64 + .+ if (cmd
29d0: 50 74 72 2d 3e 6f 62 6a 50 72 6f 63 20 21 3d 20 Ptr->objProc !=
29e0: 4e 73 45 6e 73 65 6d 62 6c 65 49 6d 70 6c 65 6d NsEnsembleImplem
29f0: 65 6e 74 61 74 69 6f 6e 43 6d 64 29 20 7b 0a 2b entationCmd) {.+
2a00: 20 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 .Tcl_AppendResu
2a10: 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6f 6d 6d lt(interp, "comm
2a20: 61 6e 64 20 69 73 20 6e 6f 74 20 61 6e 20 65 6e and is not an en
2a30: 73 65 6d 62 6c 65 22 2c 20 4e 55 4c 4c 29 3b 0a semble", NULL);.
2a40: 2b 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 + .return TCL_ER
2a50: 52 4f 52 3b 0a 2b 20 20 20 20 20 7d 0a 2b 20 20 ROR;.+ }.+
2a60: 20 20 20 69 66 20 28 70 61 72 61 6d 4c 69 73 74 if (paramList
2a70: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 == NULL) {.+
2a80: 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20 30 length = 0
2a90: 3b 0a 2b 20 20 20 20 20 7d 20 65 6c 73 65 20 7b ;.+ } else {
2aa0: 0a 2b 20 09 69 66 20 28 54 63 6c 4c 69 73 74 4f .+ .if (TclListO
2ab0: 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72 70 2c bjLength(interp,
2ac0: 20 70 61 72 61 6d 4c 69 73 74 2c 20 26 6c 65 6e paramList, &len
2ad0: 67 74 68 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 gth) != TCL_OK)
2ae0: 7b 0a 2b 20 09 20 20 20 20 72 65 74 75 72 6e 20 {.+ . return
2af0: 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 09 7d 0a TCL_ERROR;.+ .}.
2b00: 2b 20 09 69 66 20 28 6c 65 6e 67 74 68 20 3c 20 + .if (length <
2b10: 31 29 20 7b 0a 2b 20 09 20 20 20 20 70 61 72 61 1) {.+ . para
2b20: 6d 4c 69 73 74 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 mList = NULL;.+
2b30: 09 7d 0a 2b 20 20 20 20 20 7d 0a 2b 20 0a 2b 20 .}.+ }.+ .+
2b40: 20 20 20 20 65 6e 73 65 6d 62 6c 65 50 74 72 20 ensemblePtr
2b50: 3d 20 63 6d 64 50 74 72 2d 3e 6f 62 6a 43 6c 69 = cmdPtr->objCli
2b60: 65 6e 74 44 61 74 61 3b 0a 2b 20 20 20 20 20 6f entData;.+ o
2b70: 6c 64 4c 69 73 74 20 3d 20 65 6e 73 65 6d 62 6c ldList = ensembl
2b80: 65 50 74 72 2d 3e 70 61 72 61 6d 65 74 65 72 4c ePtr->parameterL
2b90: 69 73 74 3b 0a 2b 20 20 20 20 20 65 6e 73 65 6d ist;.+ ensem
2ba0: 62 6c 65 50 74 72 2d 3e 70 61 72 61 6d 65 74 65 blePtr->paramete
2bb0: 72 4c 69 73 74 20 3d 20 70 61 72 61 6d 4c 69 73 rList = paramLis
2bc0: 74 3b 0a 2b 20 20 20 20 20 69 66 20 28 70 61 72 t;.+ if (par
2bd0: 61 6d 4c 69 73 74 20 21 3d 20 4e 55 4c 4c 29 20 amList != NULL)
2be0: 7b 0a 2b 20 09 54 63 6c 5f 49 6e 63 72 52 65 66 {.+ .Tcl_IncrRef
2bf0: 43 6f 75 6e 74 28 70 61 72 61 6d 4c 69 73 74 29 Count(paramList)
2c00: 3b 0a 2b 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 ;.+ }.+
2c10: 69 66 20 28 6f 6c 64 4c 69 73 74 20 21 3d 20 4e if (oldList != N
2c20: 55 4c 4c 29 20 7b 0a 2b 20 09 54 63 6c 44 65 63 ULL) {.+ .TclDec
2c30: 72 52 65 66 43 6f 75 6e 74 28 6f 6c 64 4c 69 73 rRefCount(oldLis
2c40: 74 29 3b 0a 2b 20 20 20 20 20 7d 0a 2b 20 20 20 t);.+ }.+
2c50: 20 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e ensemblePtr->n
2c60: 75 6d 50 61 72 61 6d 65 74 65 72 73 20 3d 20 6c umParameters = l
2c70: 65 6e 67 74 68 3b 0a 2b 20 0a 2b 20 20 20 20 20 ength;.+ .+
2c80: 2f 2a 0a 2b 20 20 20 20 20 20 2a 20 54 72 69 67 /*.+ * Trig
2c90: 67 65 72 20 61 6e 20 65 76 65 6e 74 75 61 6c 20 ger an eventual
2ca0: 72 65 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 recomputation of
2cb0: 20 74 68 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f the ensemble co
2cc0: 6d 6d 61 6e 64 20 73 65 74 2e 20 4e 6f 74 65 0a mmand set. Note.
2cd0: 2b 20 20 20 20 20 20 2a 20 74 68 61 74 20 74 68 + * that th
2ce0: 69 73 20 69 73 20 73 6c 69 67 68 74 6c 79 20 74 is is slightly t
2cf0: 72 69 63 6b 79 2c 20 61 73 20 69 74 20 6d 65 61 ricky, as it mea
2d00: 6e 73 20 74 68 61 74 20 77 65 20 61 72 65 20 6e ns that we are n
2d10: 6f 74 20 61 63 74 75 61 6c 6c 79 0a 2b 20 20 20 ot actually.+
2d20: 20 20 20 2a 20 63 6f 75 6e 74 69 6e 67 20 74 68 * counting th
2d30: 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e 61 6d 65 e number of name
2d40: 73 70 61 63 65 20 65 78 70 6f 72 74 20 61 63 74 space export act
2d50: 69 6f 6e 73 2c 20 62 75 74 20 69 74 20 69 73 20 ions, but it is
2d60: 74 68 65 20 73 69 6d 70 6c 65 73 74 0a 2b 20 20 the simplest.+
2d70: 20 20 20 20 2a 20 77 61 79 20 74 6f 20 67 6f 21 * way to go!
2d80: 0a 2b 20 20 20 20 20 20 2a 2f 0a 2b 20 0a 2b 20 .+ */.+ .+
2d90: 20 20 20 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d ensemblePtr-
2da0: 3e 6e 73 50 74 72 2d 3e 65 78 70 6f 72 74 4c 6f >nsPtr->exportLo
2db0: 6f 6b 75 70 45 70 6f 63 68 2b 2b 3b 0a 2b 20 0a okupEpoch++;.+ .
2dc0: 2b 20 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 20 + /*.+
2dd0: 2a 20 53 70 65 63 69 61 6c 20 68 61 63 6b 20 74 * Special hack t
2de0: 6f 20 6d 61 6b 65 20 63 6f 6d 70 69 6c 69 6e 67 o make compiling
2df0: 20 6f 66 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 of [info exists
2e00: 5d 20 77 6f 72 6b 20 77 68 65 6e 20 74 68 65 0a ] work when the.
2e10: 2b 20 20 20 20 20 20 2a 20 64 69 63 74 69 6f 6e + * diction
2e20: 61 72 79 20 69 73 20 6d 6f 64 69 66 69 65 64 2e ary is modified.
2e30: 0a 2b 20 20 20 20 20 20 2a 2f 0a 2b 20 0a 2b 20 .+ */.+ .+
2e40: 20 20 20 20 69 66 20 28 63 6d 64 50 74 72 2d 3e if (cmdPtr->
2e50: 63 6f 6d 70 69 6c 65 50 72 6f 63 20 21 3d 20 4e compileProc != N
2e60: 55 4c 4c 29 20 7b 0a 2b 20 09 28 28 49 6e 74 65 ULL) {.+ .((Inte
2e70: 72 70 20 2a 29 69 6e 74 65 72 70 29 2d 3e 63 6f rp *)interp)->co
2e80: 6d 70 69 6c 65 45 70 6f 63 68 2b 2b 3b 0a 2b 20 mpileEpoch++;.+
2e90: 20 20 20 20 7d 0a 2b 20 0a 2b 20 20 20 20 20 72 }.+ .+ r
2ea0: 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 2b 20 eturn TCL_OK;.+
2eb0: 7d 0a 2b 20 0c 0a 2b 20 2f 2a 0a 2b 20 20 2a 2d }.+ ..+ /*.+ *-
2ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2f00: 2d 2d 2d 2d 2d 0a 2b 20 20 2a 0a 20 20 20 2a 20 -----.+ *. *
2f10: 54 63 6c 5f 53 65 74 45 6e 73 65 6d 62 6c 65 4d Tcl_SetEnsembleM
2f20: 61 70 70 69 6e 67 44 69 63 74 20 2d 2d 0a 20 20 appingDict --.
2f30: 20 2a 0a 20 20 20 2a 09 53 65 74 20 74 68 65 20 *. *.Set the
2f40: 6d 61 70 70 69 6e 67 20 64 69 63 74 69 6f 6e 61 mapping dictiona
2f50: 72 79 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 ry for a particu
2f60: 6c 61 72 20 65 6e 73 65 6d 62 6c 65 2e 0a 2a 2a lar ensemble..**
2f70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
2f80: 2a 20 35 36 35 30 2c 35 36 35 35 20 2a 2a 2a 2a * 5650,5655 ****
2f90: 0a 2d 2d 2d 20 35 37 37 32 2c 35 38 31 37 20 2d .--- 5772,5817 -
2fa0: 2d 2d 2d 0a 20 20 2f 2a 0a 20 20 20 2a 2d 2d 2d ---. /*. *---
2fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2ff0: 2d 2d 2d 0a 20 20 20 2a 0a 2b 20 20 2a 20 54 63 ---. *.+ * Tc
3000: 6c 5f 47 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 l_GetEnsemblePar
3010: 61 6d 65 74 65 72 4c 69 73 74 20 2d 2d 0a 2b 20 ameterList --.+
3020: 20 2a 0a 2b 20 20 2a 09 47 65 74 20 74 68 65 20 *.+ *.Get the
3030: 6c 69 73 74 20 6f 66 20 70 61 72 61 6d 65 74 65 list of paramete
3040: 72 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 rs associated wi
3050: 74 68 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 th a particular
3060: 65 6e 73 65 6d 62 6c 65 2e 0a 2b 20 20 2a 0a 2b ensemble..+ *.+
3070: 20 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 20 * Results:.+
3080: 2a 09 54 63 6c 20 72 65 73 75 6c 74 20 63 6f 64 *.Tcl result cod
3090: 65 20 28 65 72 72 6f 72 20 69 66 20 63 6f 6d 6d e (error if comm
30a0: 61 6e 64 20 74 6f 6b 65 6e 20 64 6f 65 73 20 6e and token does n
30b0: 6f 74 20 69 6e 64 69 63 61 74 65 20 61 6e 0a 2b ot indicate an.+
30c0: 20 20 2a 09 65 6e 73 65 6d 62 6c 65 29 2e 20 54 *.ensemble). T
30d0: 68 65 20 6c 69 73 74 20 6f 66 20 70 61 72 61 6d he list of param
30e0: 65 74 65 72 73 20 69 73 20 72 65 74 75 72 6e 65 eters is returne
30f0: 64 20 62 79 20 75 70 64 61 74 69 6e 67 20 74 68 d by updating th
3100: 65 0a 2b 20 20 2a 09 76 61 72 69 61 62 6c 65 20 e.+ *.variable
3110: 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68 pointed to by th
3120: 65 20 6c 61 73 74 20 70 61 72 61 6d 65 74 65 72 e last parameter
3130: 20 28 4e 55 4c 4c 20 69 66 20 74 68 65 72 65 20 (NULL if there
3140: 61 72 65 20 0a 2b 20 20 2a 09 6e 6f 20 70 61 72 are .+ *.no par
3150: 61 6d 65 74 65 72 73 29 2e 0a 2b 20 20 2a 0a 2b ameters)..+ *.+
3160: 20 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 * Side effects
3170: 3a 0a 2b 20 20 2a 09 4e 6f 6e 65 0a 2b 20 20 2a :.+ *.None.+ *
3180: 0a 2b 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .+ *-----------
3190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
31a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
31b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
31c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 20 2a -----------.+ *
31d0: 2f 0a 2b 20 0a 2b 20 69 6e 74 0a 2b 20 54 63 6c /.+ .+ int.+ Tcl
31e0: 5f 47 65 74 45 6e 73 65 6d 62 6c 65 50 61 72 61 _GetEnsemblePara
31f0: 6d 65 74 65 72 4c 69 73 74 28 0a 2b 20 20 20 20 meterList(.+
3200: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
3210: 65 72 70 2c 0a 2b 20 20 20 20 20 54 63 6c 5f 43 erp,.+ Tcl_C
3220: 6f 6d 6d 61 6e 64 20 74 6f 6b 65 6e 2c 0a 2b 20 ommand token,.+
3230: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 2a 70 61 Tcl_Obj **pa
3240: 72 61 6d 4c 69 73 74 50 74 72 29 0a 2b 20 7b 0a ramListPtr).+ {.
3250: 2b 20 20 20 20 20 43 6f 6d 6d 61 6e 64 20 2a 63 + Command *c
3260: 6d 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e 64 mdPtr = (Command
3270: 20 2a 29 20 74 6f 6b 65 6e 3b 0a 2b 20 20 20 20 *) token;.+
3280: 20 45 6e 73 65 6d 62 6c 65 43 6f 6e 66 69 67 20 EnsembleConfig
3290: 2a 65 6e 73 65 6d 62 6c 65 50 74 72 3b 0a 2b 20 *ensemblePtr;.+
32a0: 0a 2b 20 20 20 20 20 69 66 20 28 63 6d 64 50 74 .+ if (cmdPt
32b0: 72 2d 3e 6f 62 6a 50 72 6f 63 20 21 3d 20 4e 73 r->objProc != Ns
32c0: 45 6e 73 65 6d 62 6c 65 49 6d 70 6c 65 6d 65 6e EnsembleImplemen
32d0: 74 61 74 69 6f 6e 43 6d 64 29 20 7b 0a 2b 20 09 tationCmd) {.+ .
32e0: 69 66 20 28 69 6e 74 65 72 70 20 21 3d 20 4e 55 if (interp != NU
32f0: 4c 4c 29 20 7b 0a 2b 20 09 20 20 20 20 54 63 6c LL) {.+ . Tcl
3300: 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e _AppendResult(in
3310: 74 65 72 70 2c 20 22 63 6f 6d 6d 61 6e 64 20 69 terp, "command i
3320: 73 20 6e 6f 74 20 61 6e 20 65 6e 73 65 6d 62 6c s not an ensembl
3330: 65 22 2c 20 4e 55 4c 4c 29 3b 0a 2b 20 09 7d 0a e", NULL);.+ .}.
3340: 2b 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 + .return TCL_ER
3350: 52 4f 52 3b 0a 2b 20 20 20 20 20 7d 0a 2b 20 0a ROR;.+ }.+ .
3360: 2b 20 20 20 20 20 65 6e 73 65 6d 62 6c 65 50 74 + ensemblePt
3370: 72 20 3d 20 63 6d 64 50 74 72 2d 3e 6f 62 6a 43 r = cmdPtr->objC
3380: 6c 69 65 6e 74 44 61 74 61 3b 0a 2b 20 20 20 20 lientData;.+
3390: 20 2a 70 61 72 61 6d 4c 69 73 74 50 74 72 20 3d *paramListPtr =
33a0: 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 70 61 ensemblePtr->pa
33b0: 72 61 6d 65 74 65 72 4c 69 73 74 3b 0a 2b 20 20 rameterList;.+
33c0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b return TCL_OK
33d0: 3b 0a 2b 20 7d 0a 2b 20 0c 0a 2b 20 2f 2a 0a 2b ;.+ }.+ ..+ /*.+
33e0: 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *-------------
33f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 20 2a 0a 20 ---------.+ *.
3430: 20 20 2a 20 54 63 6c 5f 47 65 74 45 6e 73 65 6d * Tcl_GetEnsem
3440: 62 6c 65 4d 61 70 70 69 6e 67 44 69 63 74 20 2d bleMappingDict -
3450: 2d 0a 20 20 20 2a 0a 20 20 20 2a 09 47 65 74 20 -. *. *.Get
3460: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 70 70 the command mapp
3470: 69 6e 67 20 64 69 63 74 69 6f 6e 61 72 79 20 61 ing dictionary a
3480: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 ssociated with a
3490: 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 2a 2a particular.****
34a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
34b0: 36 30 31 35 2c 36 30 32 36 20 2a 2a 2a 2a 0a 20 6015,6026 ****.
34c0: 20 20 20 20 20 69 6e 74 20 70 72 65 66 69 78 4f int prefixO
34d0: 62 6a 63 3b 09 09 2f 2a 20 53 69 7a 65 20 6f 66 bjc;../* Size of
34e0: 20 70 72 65 66 69 78 4f 62 6a 76 20 6f 66 20 63 prefixObjv of c
34f0: 6f 75 72 73 65 21 20 2a 2f 0a 20 20 20 20 20 20 ourse! */.
3500: 69 6e 74 20 72 65 70 61 72 73 65 43 6f 75 6e 74 int reparseCount
3510: 20 3d 20 30 3b 09 2f 2a 20 4e 75 6d 62 65 72 20 = 0;./* Number
3520: 6f 66 20 72 65 70 61 72 73 65 73 2e 20 2a 2f 0a of reparses. */.
3530: 20 20 0a 21 20 20 20 20 20 69 66 20 28 6f 62 6a .! if (obj
3540: 63 20 3c 20 32 29 20 7b 0a 21 20 09 54 63 6c 5f c < 2) {.! .Tcl_
3550: 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 WrongNumArgs(int
3560: 65 72 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 22 73 erp, 1, objv, "s
3570: 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 75 6d ubcommand ?argum
3580: 65 6e 74 20 2e 2e 2e 3f 22 29 3b 0a 20 20 09 72 ent ...?");. .r
3590: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
35a0: 0a 20 20 20 20 20 20 7d 0a 20 20 0a 2d 20 20 20 . }. .-
35b0: 72 65 73 74 61 72 74 45 6e 73 65 6d 62 6c 65 50 restartEnsembleP
35c0: 61 72 73 65 3a 0a 20 20 20 20 20 20 69 66 20 28 arse:. if (
35d0: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 73 50 ensemblePtr->nsP
35e0: 74 72 2d 3e 66 6c 61 67 73 20 26 20 4e 53 5f 44 tr->flags & NS_D
35f0: 59 49 4e 47 29 20 7b 0a 20 20 09 2f 2a 0a 20 20 YING) {. ./*.
3600: 09 20 2a 20 44 6f 6e 27 74 20 6b 6e 6f 77 20 68 . * Don't know h
3610: 6f 77 20 77 65 20 67 6f 74 20 68 65 72 65 2c 20 ow we got here,
3620: 62 75 74 20 6d 61 6b 65 20 74 68 69 6e 67 73 20 but make things
3630: 67 69 76 65 20 75 70 20 71 75 69 63 6b 6c 79 2e give up quickly.
3640: 0a 2d 2d 2d 20 36 31 37 37 2c 36 32 31 35 20 2d .--- 6177,6215 -
3650: 2d 2d 2d 0a 20 20 20 20 20 20 69 6e 74 20 70 72 ---. int pr
3660: 65 66 69 78 4f 62 6a 63 3b 09 09 2f 2a 20 53 69 efixObjc;../* Si
3670: 7a 65 20 6f 66 20 70 72 65 66 69 78 4f 62 6a 76 ze of prefixObjv
3680: 20 6f 66 20 63 6f 75 72 73 65 21 20 2a 2f 0a 20 of course! */.
3690: 20 20 20 20 20 69 6e 74 20 72 65 70 61 72 73 65 int reparse
36a0: 43 6f 75 6e 74 20 3d 20 30 3b 09 2f 2a 20 4e 75 Count = 0;./* Nu
36b0: 6d 62 65 72 20 6f 66 20 72 65 70 61 72 73 65 73 mber of reparses
36c0: 2e 20 2a 2f 0a 20 20 0a 21 20 20 20 72 65 73 74 . */. .! rest
36d0: 61 72 74 45 6e 73 65 6d 62 6c 65 50 61 72 73 65 artEnsembleParse
36e0: 3a 0a 21 20 20 20 20 20 2f 2a 20 0a 21 20 20 20 :.! /* .!
36f0: 20 20 20 2a 20 4d 75 73 74 20 72 65 63 68 65 63 * Must rechec
3700: 6b 20 6f 62 6a 63 2c 20 73 69 6e 63 65 20 6e 75 k objc, since nu
3710: 6d 50 61 72 61 6d 65 74 65 72 73 20 6d 61 79 20 mParameters may
3720: 68 61 76 65 20 63 68 61 6e 67 65 64 2e 0a 21 20 have changed..!
3730: 20 20 20 20 20 2a 20 43 66 2e 20 74 65 73 74 20 * Cf. test
3740: 6e 61 6d 65 73 70 61 63 65 2d 35 33 2e 39 2e 0a namespace-53.9..
3750: 21 20 20 20 20 20 20 2a 2f 0a 21 20 20 20 20 20 ! */.!
3760: 69 66 20 28 6f 62 6a 63 20 3c 20 32 20 2b 20 65 if (objc < 2 + e
3770: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 nsemblePtr->numP
3780: 61 72 61 6d 65 74 65 72 73 29 20 7b 0a 21 20 09 arameters) {.! .
3790: 2f 2a 20 0a 21 20 09 20 2a 20 57 65 20 64 6f 6e /* .! . * We don
37a0: 27 74 20 68 61 76 65 20 61 20 73 75 62 63 6f 6d 't have a subcom
37b0: 6d 61 6e 64 20 61 72 67 75 6d 65 6e 74 2e 0a 21 mand argument..!
37c0: 20 09 20 2a 20 4d 61 6b 65 20 65 72 72 6f 72 20 . * Make error
37d0: 6d 65 73 73 61 67 65 2e 0a 21 20 09 20 2a 2f 0a message..! . */.
37e0: 21 20 20 20 20 20 20 20 20 20 54 63 6c 5f 44 53 ! Tcl_DS
37f0: 74 72 69 6e 67 20 62 75 66 3b 09 2f 2a 20 4d 65 tring buf;./* Me
3800: 73 73 61 67 65 20 62 65 69 6e 67 20 62 75 69 6c ssage being buil
3810: 74 20 2a 2f 0a 21 20 20 20 20 20 20 20 20 20 54 t */.! T
3820: 63 6c 5f 4f 62 6a 20 2a 2a 65 6c 65 6d 50 74 72 cl_Obj **elemPtr
3830: 73 3b 20 20 20 20 20 2f 2a 20 50 61 72 61 6d 65 s; /* Parame
3840: 74 65 72 20 6e 61 6d 65 73 20 2a 2f 0a 21 20 20 ter names */.!
3850: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 3b 09 int len;.
3860: 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 70 61 ./* Number of pa
3870: 72 61 6d 65 74 65 72 73 20 74 6f 20 61 70 70 65 rameters to appe
3880: 6e 64 20 2a 2f 0a 21 20 20 20 20 20 20 20 20 20 nd */.!
3890: 0a 21 20 20 20 20 20 20 20 20 20 54 63 6c 5f 44 .! Tcl_D
38a0: 53 74 72 69 6e 67 49 6e 69 74 28 26 62 75 66 29 StringInit(&buf)
38b0: 3b 0a 21 20 20 20 20 20 20 20 20 20 69 66 20 28 ;.! if (
38c0: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 70 61 72 ensemblePtr->par
38d0: 61 6d 65 74 65 72 4c 69 73 74 20 3d 3d 20 4e 55 ameterList == NU
38e0: 4c 4c 29 20 7b 0a 21 20 20 20 20 20 20 20 20 20 LL) {.!
38f0: 20 20 20 20 6c 65 6e 20 3d 20 30 3b 0a 21 20 20 len = 0;.!
3900: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
3910: 20 28 54 63 6c 4c 69 73 74 4f 62 6a 47 65 74 45 (TclListObjGetE
3920: 6c 65 6d 65 6e 74 73 28 4e 55 4c 4c 2c 20 65 6e lements(NULL, en
3930: 73 65 6d 62 6c 65 50 74 72 2d 3e 70 61 72 61 6d semblePtr->param
3940: 65 74 65 72 4c 69 73 74 2c 20 0a 21 20 20 20 20 eterList, .!
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 &
3970: 6c 65 6e 2c 20 26 65 6c 65 6d 50 74 72 73 29 20 len, &elemPtrs)
3980: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 21 20 20 != TCL_OK) {.!
3990: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 54 68 /* Th
39a0: 69 73 20 63 61 6e 27 74 20 68 61 70 70 65 6e 2e is can't happen.
39b0: 20 2a 2f 0a 21 20 20 20 20 20 20 20 20 20 20 20 */.!
39c0: 20 20 54 63 6c 5f 50 61 6e 69 63 28 22 4c 69 73 Tcl_Panic("Lis
39d0: 74 20 6f 66 20 65 6e 73 65 6d 62 6c 65 20 70 61 t of ensemble pa
39e0: 72 61 6d 65 74 65 72 73 20 69 73 20 6e 6f 74 20 rameters is not
39f0: 61 20 6c 69 73 74 22 29 3b 0a 21 20 20 20 20 20 a list");.!
3a00: 20 20 20 20 7d 0a 21 20 20 20 20 20 20 20 20 20 }.!
3a10: 66 6f 72 20 28 3b 20 6c 65 6e 3e 30 3b 20 6c 65 for (; len>0; le
3a20: 6e 2d 2d 2c 65 6c 65 6d 50 74 72 73 2b 2b 29 20 n--,elemPtrs++)
3a30: 7b 0a 21 20 20 20 20 20 20 20 20 20 20 20 20 20 {.!
3a40: 54 63 6c 5f 44 53 74 72 69 6e 67 41 70 70 65 6e Tcl_DStringAppen
3a50: 64 28 26 62 75 66 2c 20 54 63 6c 5f 47 65 74 53 d(&buf, Tcl_GetS
3a60: 74 72 69 6e 67 28 2a 65 6c 65 6d 50 74 72 73 29 tring(*elemPtrs)
3a70: 2c 20 2d 31 29 3b 0a 21 20 20 20 20 20 20 20 20 , -1);.!
3a80: 20 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 Tcl_DString
3a90: 41 70 70 65 6e 64 28 26 62 75 66 2c 20 22 20 22 Append(&buf, " "
3aa0: 2c 20 2d 31 29 3b 0a 21 20 20 20 20 20 20 20 20 , -1);.!
3ab0: 20 7d 0a 21 20 20 20 20 20 20 20 20 20 54 63 6c }.! Tcl
3ac0: 5f 44 53 74 72 69 6e 67 41 70 70 65 6e 64 28 26 _DStringAppend(&
3ad0: 62 75 66 2c 20 22 73 75 62 63 6f 6d 6d 61 6e 64 buf, "subcommand
3ae0: 20 3f 61 72 67 75 6d 65 6e 74 20 2e 2e 2e 3f 22 ?argument ...?"
3af0: 2c 20 2d 31 29 3b 0a 21 20 09 54 63 6c 5f 57 72 , -1);.! .Tcl_Wr
3b00: 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 ongNumArgs(inter
3b10: 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 54 63 6c 5f p, 1, objv, Tcl_
3b20: 44 53 74 72 69 6e 67 56 61 6c 75 65 28 26 62 75 DStringValue(&bu
3b30: 66 29 29 3b 0a 21 20 20 20 20 20 20 20 20 20 54 f));.! T
3b40: 63 6c 5f 44 53 74 72 69 6e 67 46 72 65 65 28 26 cl_DStringFree(&
3b50: 62 75 66 29 3b 0a 21 20 20 20 20 20 20 20 20 20 buf);.!
3b60: 0a 20 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 . .return TCL_E
3b70: 52 52 4f 52 3b 0a 20 20 20 20 20 20 7d 0a 20 20 RROR;. }.
3b80: 0a 20 20 20 20 20 20 69 66 20 28 65 6e 73 65 6d . if (ensem
3b90: 62 6c 65 50 74 72 2d 3e 6e 73 50 74 72 2d 3e 66 blePtr->nsPtr->f
3ba0: 6c 61 67 73 20 26 20 4e 53 5f 44 59 49 4e 47 29 lags & NS_DYING)
3bb0: 20 7b 0a 20 20 09 2f 2a 0a 20 20 09 20 2a 20 44 {. ./*. . * D
3bc0: 6f 6e 27 74 20 6b 6e 6f 77 20 68 6f 77 20 77 65 on't know how we
3bd0: 20 67 6f 74 20 68 65 72 65 2c 20 62 75 74 20 6d got here, but m
3be0: 61 6b 65 20 74 68 69 6e 67 73 20 67 69 76 65 20 ake things give
3bf0: 75 70 20 71 75 69 63 6b 6c 79 2e 0a 2a 2a 2a 2a up quickly..****
3c00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
3c10: 36 30 34 36 2c 36 30 35 33 20 2a 2a 2a 2a 0a 20 6046,6053 ****.
3c20: 20 09 20 2a 20 70 61 72 74 20 77 68 65 72 65 20 . * part where
3c30: 77 65 20 64 6f 20 74 68 65 20 69 6e 76 6f 63 61 we do the invoca
3c40: 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 75 62 63 tion of the subc
3c50: 6f 6d 6d 61 6e 64 2e 0a 20 20 09 20 2a 2f 0a 20 ommand.. . */.
3c60: 20 0a 21 20 09 69 66 20 28 6f 62 6a 76 5b 31 5d .! .if (objv[1]
3c70: 2d 3e 74 79 70 65 50 74 72 20 3d 3d 20 26 74 63 ->typePtr == &tc
3c80: 6c 45 6e 73 65 6d 62 6c 65 43 6d 64 54 79 70 65 lEnsembleCmdType
3c90: 29 20 7b 0a 21 20 09 20 20 20 20 45 6e 73 65 6d ) {.! . Ensem
3ca0: 62 6c 65 43 6d 64 52 65 70 20 2a 65 6e 73 65 6d bleCmdRep *ensem
3cb0: 62 6c 65 43 6d 64 20 3d 20 6f 62 6a 76 5b 31 5d bleCmd = objv[1]
3cc0: 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e 6f 74 ->internalRep.ot
3cd0: 68 65 72 56 61 6c 75 65 50 74 72 3b 0a 20 20 0a herValuePtr;. .
3ce0: 20 20 09 20 20 20 20 69 66 20 28 65 6e 73 65 6d . if (ensem
3cf0: 62 6c 65 43 6d 64 2d 3e 6e 73 50 74 72 20 3d 3d bleCmd->nsPtr ==
3d00: 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 73 ensemblePtr->ns
3d10: 50 74 72 20 26 26 0a 20 20 09 09 20 20 20 20 65 Ptr &&. .. e
3d20: 6e 73 65 6d 62 6c 65 43 6d 64 2d 3e 65 70 6f 63 nsembleCmd->epoc
3d30: 68 20 3d 3d 20 65 6e 73 65 6d 62 6c 65 50 74 72 h == ensemblePtr
3d40: 2d 3e 65 70 6f 63 68 20 26 26 0a 2d 2d 2d 20 36 ->epoch &&.--- 6
3d50: 32 33 35 2c 36 32 34 33 20 2d 2d 2d 2d 0a 20 20 235,6243 ----.
3d60: 09 20 2a 20 70 61 72 74 20 77 68 65 72 65 20 77 . * part where w
3d70: 65 20 64 6f 20 74 68 65 20 69 6e 76 6f 63 61 74 e do the invocat
3d80: 69 6f 6e 20 6f 66 20 74 68 65 20 73 75 62 63 6f ion of the subco
3d90: 6d 6d 61 6e 64 2e 0a 20 20 09 20 2a 2f 0a 20 20 mmand.. . */.
3da0: 0a 21 20 09 69 66 20 28 6f 62 6a 76 5b 31 20 2b .! .if (objv[1 +
3db0: 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 ensemblePtr->nu
3dc0: 6d 50 61 72 61 6d 65 74 65 72 73 5d 2d 3e 74 79 mParameters]->ty
3dd0: 70 65 50 74 72 20 3d 3d 20 26 74 63 6c 45 6e 73 pePtr == &tclEns
3de0: 65 6d 62 6c 65 43 6d 64 54 79 70 65 29 20 7b 0a embleCmdType) {.
3df0: 21 20 09 20 20 20 20 45 6e 73 65 6d 62 6c 65 43 ! . EnsembleC
3e00: 6d 64 52 65 70 20 2a 65 6e 73 65 6d 62 6c 65 43 mdRep *ensembleC
3e10: 6d 64 20 3d 20 0a 21 20 20 20 20 20 20 20 20 20 md = .!
3e20: 20 20 20 20 20 20 6f 62 6a 76 5b 31 20 2b 20 65 objv[1 + e
3e30: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 nsemblePtr->numP
3e40: 61 72 61 6d 65 74 65 72 73 5d 2d 3e 69 6e 74 65 arameters]->inte
3e50: 72 6e 61 6c 52 65 70 2e 6f 74 68 65 72 56 61 6c rnalRep.otherVal
3e60: 75 65 50 74 72 3b 0a 20 20 0a 20 20 09 20 20 20 uePtr;. . .
3e70: 20 69 66 20 28 65 6e 73 65 6d 62 6c 65 43 6d 64 if (ensembleCmd
3e80: 2d 3e 6e 73 50 74 72 20 3d 3d 20 65 6e 73 65 6d ->nsPtr == ensem
3e90: 62 6c 65 50 74 72 2d 3e 6e 73 50 74 72 20 26 26 blePtr->nsPtr &&
3ea0: 0a 20 20 09 09 20 20 20 20 65 6e 73 65 6d 62 6c . .. ensembl
3eb0: 65 43 6d 64 2d 3e 65 70 6f 63 68 20 3d 3d 20 65 eCmd->epoch == e
3ec0: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 65 70 6f 63 nsemblePtr->epoc
3ed0: 68 20 26 26 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a h &&.***********
3ee0: 2a 2a 2a 2a 0a 2a 2a 2a 20 36 30 36 38 2c 36 30 ****.*** 6068,60
3ef0: 37 34 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 2a 74 ****. *
3f00: 2f 0a 20 20 0a 20 20 20 20 20 20 68 50 74 72 20 /. . hPtr
3f10: 3d 20 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e = Tcl_FindHashEn
3f20: 74 72 79 28 26 65 6e 73 65 6d 62 6c 65 50 74 72 try(&ensemblePtr
3f30: 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 54 61 62 6c ->subcommandTabl
3f40: 65 2c 0a 21 20 09 20 20 20 20 54 63 6c 47 65 74 e,.! . TclGet
3f50: 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 5d 29 29 String(objv[1]))
3f60: 3b 0a 20 20 20 20 20 20 69 66 20 28 68 50 74 72 ;. if (hPtr
3f70: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 63 != NULL) {. .c
3f80: 68 61 72 20 2a 66 75 6c 6c 4e 61 6d 65 20 3d 20 har *fullName =
3f90: 54 63 6c 5f 47 65 74 48 61 73 68 4b 65 79 28 26 Tcl_GetHashKey(&
3fa0: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 ensemblePtr->sub
3fb0: 63 6f 6d 6d 61 6e 64 54 61 62 6c 65 2c 20 68 50 commandTable, hP
3fc0: 74 72 29 3b 0a 20 20 0a 2d 2d 2d 20 36 32 35 38 tr);. .--- 6258
3fd0: 2c 36 32 36 34 20 2d 2d 2d 2d 0a 20 20 20 20 20 ,6264 ----.
3fe0: 20 20 2a 2f 0a 20 20 0a 20 20 20 20 20 20 68 50 */. . hP
3ff0: 74 72 20 3d 20 54 63 6c 5f 46 69 6e 64 48 61 73 tr = Tcl_FindHas
4000: 68 45 6e 74 72 79 28 26 65 6e 73 65 6d 62 6c 65 hEntry(&ensemble
4010: 50 74 72 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 54 Ptr->subcommandT
4020: 61 62 6c 65 2c 0a 21 20 09 20 20 20 20 54 63 6c able,.! . Tcl
4030: 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 GetString(objv[1
4040: 20 2b 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e + ensemblePtr->
4050: 6e 75 6d 50 61 72 61 6d 65 74 65 72 73 5d 29 29 numParameters]))
4060: 3b 0a 20 20 20 20 20 20 69 66 20 28 68 50 74 72 ;. if (hPtr
4070: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 63 != NULL) {. .c
4080: 68 61 72 20 2a 66 75 6c 6c 4e 61 6d 65 20 3d 20 har *fullName =
4090: 54 63 6c 5f 47 65 74 48 61 73 68 4b 65 79 28 26 Tcl_GetHashKey(&
40a0: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 ensemblePtr->sub
40b0: 63 6f 6d 6d 61 6e 64 54 61 62 6c 65 2c 20 68 50 commandTable, hP
40c0: 74 72 29 3b 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a tr);. .********
40d0: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 36 30 37 38 *******.*** 6078
40e0: 2c 36 30 38 34 20 2a 2a 2a 2a 0a 20 20 09 20 2a ,6084 ****. . *
40f0: 20 43 61 63 68 65 20 66 6f 72 20 6c 61 74 65 72 Cache for later
4100: 20 69 6e 20 74 68 65 20 73 75 62 63 6f 6d 6d 61 in the subcomma
4110: 6e 64 20 6f 62 6a 65 63 74 2e 0a 20 20 09 20 2a nd object.. . *
4120: 2f 0a 20 20 0a 21 20 09 4d 61 6b 65 43 61 63 68 /. .! .MakeCach
4130: 65 64 45 6e 73 65 6d 62 6c 65 43 6f 6d 6d 61 6e edEnsembleComman
4140: 64 28 6f 62 6a 76 5b 31 5d 2c 20 65 6e 73 65 6d d(objv[1], ensem
4150: 62 6c 65 50 74 72 2c 20 66 75 6c 6c 4e 61 6d 65 blePtr, fullName
4160: 2c 20 70 72 65 66 69 78 4f 62 6a 29 3b 0a 20 20 , prefixObj);.
4170: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 21 } else if (!
4180: 28 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 66 6c (ensemblePtr->fl
4190: 61 67 73 20 26 20 54 43 4c 5f 45 4e 53 45 4d 42 ags & TCL_ENSEMB
41a0: 4c 45 5f 50 52 45 46 49 58 29 29 20 7b 0a 20 20 LE_PREFIX)) {.
41b0: 09 2f 2a 0a 20 20 09 20 2a 20 43 6f 75 6c 64 20 ./*. . * Could
41c0: 6e 6f 74 20 6d 61 70 2c 20 6e 6f 20 70 72 65 66 not map, no pref
41d0: 69 78 69 6e 67 2c 20 67 6f 20 74 6f 20 75 6e 6b ixing, go to unk
41e0: 6e 6f 77 6e 2f 65 72 72 6f 72 20 68 61 6e 64 6c nown/error handl
41f0: 69 6e 67 2e 0a 2d 2d 2d 20 36 32 36 38 2c 36 32 ing..--- 6268,62
4200: 37 35 20 2d 2d 2d 2d 0a 20 20 09 20 2a 20 43 61 75 ----. . * Ca
4210: 63 68 65 20 66 6f 72 20 6c 61 74 65 72 20 69 6e che for later in
4220: 20 74 68 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 the subcommand
4230: 6f 62 6a 65 63 74 2e 0a 20 20 09 20 2a 2f 0a 20 object.. . */.
4240: 20 0a 21 20 09 4d 61 6b 65 43 61 63 68 65 64 45 .! .MakeCachedE
4250: 6e 73 65 6d 62 6c 65 43 6f 6d 6d 61 6e 64 28 6f nsembleCommand(o
4260: 62 6a 76 5b 31 20 2b 20 65 6e 73 65 6d 62 6c 65 bjv[1 + ensemble
4270: 50 74 72 2d 3e 6e 75 6d 50 61 72 61 6d 65 74 65 Ptr->numParamete
4280: 72 73 5d 2c 20 0a 21 20 20 20 20 20 20 20 20 20 rs], .!
4290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
42a0: 20 20 20 20 20 20 20 20 20 20 65 6e 73 65 6d 62 ensemb
42b0: 6c 65 50 74 72 2c 20 66 75 6c 6c 4e 61 6d 65 2c lePtr, fullName,
42c0: 20 70 72 65 66 69 78 4f 62 6a 29 3b 0a 20 20 20 prefixObj);.
42d0: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 21 28 } else if (!(
42e0: 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 66 6c 61 ensemblePtr->fla
42f0: 67 73 20 26 20 54 43 4c 5f 45 4e 53 45 4d 42 4c gs & TCL_ENSEMBL
4300: 45 5f 50 52 45 46 49 58 29 29 20 7b 0a 20 20 09 E_PREFIX)) {. .
4310: 2f 2a 0a 20 20 09 20 2a 20 43 6f 75 6c 64 20 6e /*. . * Could n
4320: 6f 74 20 6d 61 70 2c 20 6e 6f 20 70 72 65 66 69 ot map, no prefi
4330: 78 69 6e 67 2c 20 67 6f 20 74 6f 20 75 6e 6b 6e xing, go to unkn
4340: 6f 77 6e 2f 65 72 72 6f 72 20 68 61 6e 64 6c 69 own/error handli
4350: 6e 67 2e 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ng..************
4360: 2a 2a 2a 0a 2a 2a 2a 20 36 30 39 39 2c 36 31 30 ***.*** 6099,610
4370: 36 20 2a 2a 2a 2a 0a 20 20 09 69 6e 74 20 73 74 6 ****. .int st
4380: 72 69 6e 67 4c 65 6e 67 74 68 2c 20 69 3b 0a 20 ringLength, i;.
4390: 20 09 69 6e 74 20 74 61 62 6c 65 4c 65 6e 67 74 .int tableLengt
43a0: 68 20 3d 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d h = ensemblePtr-
43b0: 3e 73 75 62 63 6f 6d 6d 61 6e 64 54 61 62 6c 65 >subcommandTable
43c0: 2e 6e 75 6d 45 6e 74 72 69 65 73 3b 0a 20 20 0a .numEntries;. .
43d0: 21 20 09 73 75 62 63 6d 64 4e 61 6d 65 20 3d 20 ! .subcmdName =
43e0: 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 6a TclGetString(obj
43f0: 76 5b 31 5d 29 3b 0a 21 20 09 73 74 72 69 6e 67 v[1]);.! .string
4400: 4c 65 6e 67 74 68 20 3d 20 6f 62 6a 76 5b 31 5d Length = objv[1]
4410: 2d 3e 6c 65 6e 67 74 68 3b 0a 20 20 09 66 6f 72 ->length;. .for
4420: 20 28 69 3d 30 20 3b 20 69 3c 74 61 62 6c 65 4c (i=0 ; i<tableL
4430: 65 6e 67 74 68 20 3b 20 69 2b 2b 29 20 7b 0a 20 ength ; i++) {.
4440: 20 09 20 20 20 20 72 65 67 69 73 74 65 72 20 69 . register i
4450: 6e 74 20 63 6d 70 20 3d 20 73 74 72 6e 63 6d 70 nt cmp = strncmp
4460: 28 73 75 62 63 6d 64 4e 61 6d 65 2c 0a 20 20 09 (subcmdName,. .
4470: 09 20 20 20 20 65 6e 73 65 6d 62 6c 65 50 74 72 . ensemblePtr
4480: 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 41 72 72 61 ->subcommandArra
4490: 79 50 74 72 5b 69 5d 2c 0a 2d 2d 2d 20 36 32 39 yPtr[i],.--- 629
44a0: 30 2c 36 32 39 37 20 2d 2d 2d 2d 0a 20 20 09 69 0,6297 ----. .i
44b0: 6e 74 20 73 74 72 69 6e 67 4c 65 6e 67 74 68 2c nt stringLength,
44c0: 20 69 3b 0a 20 20 09 69 6e 74 20 74 61 62 6c 65 i;. .int table
44d0: 4c 65 6e 67 74 68 20 3d 20 65 6e 73 65 6d 62 6c Length = ensembl
44e0: 65 50 74 72 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 ePtr->subcommand
44f0: 54 61 62 6c 65 2e 6e 75 6d 45 6e 74 72 69 65 73 Table.numEntries
4500: 3b 0a 20 20 0a 21 20 09 73 75 62 63 6d 64 4e 61 ;. .! .subcmdNa
4510: 6d 65 20 3d 20 54 63 6c 47 65 74 53 74 72 69 6e me = TclGetStrin
4520: 67 28 6f 62 6a 76 5b 31 20 2b 20 65 6e 73 65 6d g(objv[1 + ensem
4530: 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 61 72 61 6d blePtr->numParam
4540: 65 74 65 72 73 5d 29 3b 0a 21 20 09 73 74 72 69 eters]);.! .stri
4550: 6e 67 4c 65 6e 67 74 68 20 3d 20 6f 62 6a 76 5b ngLength = objv[
4560: 31 20 2b 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 1 + ensemblePtr-
4570: 3e 6e 75 6d 50 61 72 61 6d 65 74 65 72 73 5d 2d >numParameters]-
4580: 3e 6c 65 6e 67 74 68 3b 0a 20 20 09 66 6f 72 20 >length;. .for
4590: 28 69 3d 30 20 3b 20 69 3c 74 61 62 6c 65 4c 65 (i=0 ; i<tableLe
45a0: 6e 67 74 68 20 3b 20 69 2b 2b 29 20 7b 0a 20 20 ngth ; i++) {.
45b0: 09 20 20 20 20 72 65 67 69 73 74 65 72 20 69 6e . register in
45c0: 74 20 63 6d 70 20 3d 20 73 74 72 6e 63 6d 70 28 t cmp = strncmp(
45d0: 73 75 62 63 6d 64 4e 61 6d 65 2c 0a 20 20 09 09 subcmdName,. ..
45e0: 20 20 20 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d ensemblePtr-
45f0: 3e 73 75 62 63 6f 6d 6d 61 6e 64 41 72 72 61 79 >subcommandArray
4600: 50 74 72 5b 69 5d 2c 0a 2a 2a 2a 2a 2a 2a 2a 2a Ptr[i],.********
4610: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 36 31 34 36 *******.*** 6146
4620: 2c 36 31 35 32 20 2a 2a 2a 2a 0a 20 20 09 20 2a ,6152 ****. . *
4630: 20 43 61 63 68 65 20 66 6f 72 20 6c 61 74 65 72 Cache for later
4640: 20 69 6e 20 74 68 65 20 73 75 62 63 6f 6d 6d 61 in the subcomma
4650: 6e 64 20 6f 62 6a 65 63 74 2e 0a 20 20 09 20 2a nd object.. . *
4660: 2f 0a 20 20 0a 21 20 09 4d 61 6b 65 43 61 63 68 /. .! .MakeCach
4670: 65 64 45 6e 73 65 6d 62 6c 65 43 6f 6d 6d 61 6e edEnsembleComman
4680: 64 28 6f 62 6a 76 5b 31 5d 2c 20 65 6e 73 65 6d d(objv[1], ensem
4690: 62 6c 65 50 74 72 2c 20 66 75 6c 6c 4e 61 6d 65 blePtr, fullName
46a0: 2c 20 70 72 65 66 69 78 4f 62 6a 29 3b 0a 20 20 , prefixObj);.
46b0: 20 20 20 20 7d 0a 20 20 0a 20 20 20 20 20 20 54 }. . T
46c0: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 cl_IncrRefCount(
46d0: 70 72 65 66 69 78 4f 62 6a 29 3b 0a 2d 2d 2d 20 prefixObj);.---
46e0: 36 33 33 37 2c 36 33 34 34 20 2d 2d 2d 2d 0a 20 6337,6344 ----.
46f0: 20 09 20 2a 20 43 61 63 68 65 20 66 6f 72 20 6c . * Cache for l
4700: 61 74 65 72 20 69 6e 20 74 68 65 20 73 75 62 63 ater in the subc
4710: 6f 6d 6d 61 6e 64 20 6f 62 6a 65 63 74 2e 0a 20 ommand object..
4720: 20 09 20 2a 2f 0a 20 20 0a 21 20 09 4d 61 6b 65 . */. .! .Make
4730: 43 61 63 68 65 64 45 6e 73 65 6d 62 6c 65 43 6f CachedEnsembleCo
4740: 6d 6d 61 6e 64 28 6f 62 6a 76 5b 31 20 2b 20 65 mmand(objv[1 + e
4750: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 nsemblePtr->numP
4760: 61 72 61 6d 65 74 65 72 73 5d 2c 20 0a 21 20 20 arameters], .!
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4790: 20 65 6e 73 65 6d 62 6c 65 50 74 72 2c 20 66 75 ensemblePtr, fu
47a0: 6c 6c 4e 61 6d 65 2c 20 70 72 65 66 69 78 4f 62 llName, prefixOb
47b0: 6a 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 0a 20 j);. }. .
47c0: 20 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 Tcl_IncrRef
47d0: 43 6f 75 6e 74 28 70 72 65 66 69 78 4f 62 6a 29 Count(prefixObj)
47e0: 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;.**************
47f0: 2a 0a 2a 2a 2a 20 36 31 35 38 2c 36 31 36 34 20 *.*** 6158,6164
4800: 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 2a 20 6e 75 ****. * nu
4810: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 mber of argument
4820: 73 20 74 6f 20 74 68 69 73 20 65 6e 73 65 6d 62 s to this ensemb
4830: 6c 65 20 63 6f 6d 6d 61 6e 64 29 2c 20 70 6f 70 le command), pop
4840: 75 6c 61 74 69 6e 67 20 69 74 20 61 6e 64 20 74 ulating it and t
4850: 68 65 6e 0a 20 20 20 20 20 20 20 2a 20 66 65 65 hen. * fee
4860: 64 69 6e 67 20 69 74 20 62 61 63 6b 20 74 68 72 ding it back thr
4870: 6f 75 67 68 20 74 68 65 20 6d 61 69 6e 20 63 6f ough the main co
4880: 6d 6d 61 6e 64 2d 6c 6f 6f 6b 75 70 20 65 6e 67 mmand-lookup eng
4890: 69 6e 65 2e 20 49 6e 20 74 68 65 6f 72 79 2c 20 ine. In theory,
48a0: 77 65 0a 20 20 20 20 20 20 20 2a 20 63 6f 75 6c we. * coul
48b0: 64 20 6c 6f 6f 6b 20 75 70 20 74 68 65 20 63 6f d look up the co
48c0: 6d 6d 61 6e 64 20 69 6e 20 74 68 65 20 6e 61 6d mmand in the nam
48d0: 65 73 70 61 63 65 20 6f 75 72 73 65 6c 76 65 73 espace ourselves
48e0: 2c 20 61 73 20 77 65 20 61 6c 72 65 61 64 79 0a , as we already.
48f0: 21 20 20 20 20 20 20 2a 20 68 61 76 65 20 74 68 ! * have th
4900: 65 20 6e 61 6d 65 73 70 61 63 65 20 69 6e 20 77 e namespace in w
4910: 68 69 63 68 20 69 74 20 69 73 20 67 75 61 72 61 hich it is guara
4920: 6e 74 65 65 64 20 74 6f 20 65 78 69 73 74 2c 20 nteed to exist,
4930: 62 75 74 20 77 65 20 64 6f 6e 27 74 20 64 6f 0a but we don't do.
4940: 20 20 20 20 20 20 20 2a 20 74 68 61 74 20 28 74 * that (t
4950: 68 65 20 63 61 63 68 65 69 6e 67 20 6f 66 20 74 he cacheing of t
4960: 68 65 20 63 6f 6d 6d 61 6e 64 20 6f 62 6a 65 63 he command objec
4970: 74 20 75 73 65 64 20 73 68 6f 75 6c 64 20 68 65 t used should he
4980: 6c 70 20 77 69 74 68 20 74 68 61 74 2e 29 0a 20 lp with that.).
4990: 20 20 20 20 20 20 2a 2f 0a 20 20 0a 2d 2d 2d 20 */. .---
49a0: 36 33 35 30 2c 36 33 36 30 20 2d 2d 2d 2d 0a 20 6350,6360 ----.
49b0: 20 20 20 20 20 20 2a 20 6e 75 6d 62 65 72 20 6f * number o
49c0: 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 f arguments to t
49d0: 68 69 73 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6d his ensemble com
49e0: 6d 61 6e 64 29 2c 20 70 6f 70 75 6c 61 74 69 6e mand), populatin
49f0: 67 20 69 74 20 61 6e 64 20 74 68 65 6e 0a 20 20 g it and then.
4a00: 20 20 20 20 20 2a 20 66 65 65 64 69 6e 67 20 69 * feeding i
4a10: 74 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20 74 t back through t
4a20: 68 65 20 6d 61 69 6e 20 63 6f 6d 6d 61 6e 64 2d he main command-
4a30: 6c 6f 6f 6b 75 70 20 65 6e 67 69 6e 65 2e 20 49 lookup engine. I
4a40: 6e 20 74 68 65 6f 72 79 2c 20 77 65 0a 20 20 20 n theory, we.
4a50: 20 20 20 20 2a 20 63 6f 75 6c 64 20 6c 6f 6f 6b * could look
4a60: 20 75 70 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 up the command
4a70: 69 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 in the namespace
4a80: 20 6f 75 72 73 65 6c 76 65 73 2c 20 61 73 20 77 ourselves, as w
4a90: 65 20 61 6c 72 65 61 64 79 0a 21 20 20 20 20 20 e already.!
4aa0: 20 2a 20 68 61 76 65 20 74 68 65 20 6e 61 6d 65 * have the name
4ab0: 73 70 61 63 65 20 69 6e 20 77 68 69 63 68 20 69 space in which i
4ac0: 74 20 69 73 20 67 75 61 72 61 6e 74 65 65 64 20 t is guaranteed
4ad0: 74 6f 20 65 78 69 73 74 2c 20 0a 21 20 20 20 20 to exist, .!
4ae0: 20 20 2a 20 0a 21 20 20 20 20 20 20 2a 20 20 20 * .! *
4af0: 28 28 51 3a 20 54 68 61 74 27 73 20 6e 6f 74 20 ((Q: That's not
4b00: 74 72 75 65 20 69 66 20 74 68 65 20 2d 6d 61 70 true if the -map
4b10: 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2c option is used,
4b20: 20 69 73 20 69 74 3f 29 29 0a 21 20 20 20 20 20 is it?)).!
4b30: 20 2a 20 0a 21 20 20 20 20 20 20 2a 20 62 75 74 * .! * but
4b40: 20 77 65 20 64 6f 6e 27 74 20 64 6f 0a 20 20 20 we don't do.
4b50: 20 20 20 20 2a 20 74 68 61 74 20 28 74 68 65 20 * that (the
4b60: 63 61 63 68 65 69 6e 67 20 6f 66 20 74 68 65 20 cacheing of the
4b70: 63 6f 6d 6d 61 6e 64 20 6f 62 6a 65 63 74 20 75 command object u
4b80: 73 65 64 20 73 68 6f 75 6c 64 20 68 65 6c 70 20 sed should help
4b90: 77 69 74 68 20 74 68 61 74 2e 29 0a 20 20 20 20 with that.).
4ba0: 20 20 20 2a 2f 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a */. .*******
4bb0: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 36 31 38 ********.*** 618
4bc0: 30 2c 36 31 39 37 20 2a 2a 2a 2a 0a 20 20 09 2f 0,6197 ****. ./
4bd0: 2a 0a 20 20 09 20 2a 20 52 65 63 6f 72 64 20 77 *. . * Record w
4be0: 68 61 74 20 61 72 67 75 6d 65 6e 74 73 20 74 68 hat arguments th
4bf0: 65 20 73 63 72 69 70 74 20 73 65 6e 74 20 69 6e e script sent in
4c00: 20 73 6f 20 74 68 61 74 20 74 68 69 6e 67 73 20 so that things
4c10: 6c 69 6b 65 0a 20 20 09 20 2a 20 54 63 6c 5f 57 like. . * Tcl_W
4c20: 72 6f 6e 67 4e 75 6d 41 72 67 73 20 63 61 6e 20 rongNumArgs can
4c30: 67 69 76 65 20 74 68 65 20 63 6f 72 72 65 63 74 give the correct
4c40: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a error message..
4c50: 20 20 09 20 2a 2f 0a 20 20 0a 20 20 09 69 73 52 . */. . .isR
4c60: 6f 6f 74 45 6e 73 65 6d 62 6c 65 20 3d 20 28 69 ootEnsemble = (i
4c70: 50 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 52 65 77 Ptr->ensembleRew
4c80: 72 69 74 65 2e 73 6f 75 72 63 65 4f 62 6a 73 20 rite.sourceObjs
4c90: 3d 3d 20 4e 55 4c 4c 29 3b 0a 20 20 09 69 66 20 == NULL);. .if
4ca0: 28 69 73 52 6f 6f 74 45 6e 73 65 6d 62 6c 65 29 (isRootEnsemble)
4cb0: 20 7b 0a 20 20 09 20 20 20 20 69 50 74 72 2d 3e {. . iPtr->
4cc0: 65 6e 73 65 6d 62 6c 65 52 65 77 72 69 74 65 2e ensembleRewrite.
4cd0: 73 6f 75 72 63 65 4f 62 6a 73 20 3d 20 6f 62 6a sourceObjs = obj
4ce0: 76 3b 0a 21 20 09 20 20 20 20 69 50 74 72 2d 3e v;.! . iPtr->
4cf0: 65 6e 73 65 6d 62 6c 65 52 65 77 72 69 74 65 2e ensembleRewrite.
4d00: 6e 75 6d 52 65 6d 6f 76 65 64 4f 62 6a 73 20 3d numRemovedObjs =
4d10: 20 32 3b 0a 21 20 09 20 20 20 20 69 50 74 72 2d 2;.! . iPtr-
4d20: 3e 65 6e 73 65 6d 62 6c 65 52 65 77 72 69 74 65 >ensembleRewrite
4d30: 2e 6e 75 6d 49 6e 73 65 72 74 65 64 4f 62 6a 73 .numInsertedObjs
4d40: 20 3d 20 70 72 65 66 69 78 4f 62 6a 63 3b 0a 20 = prefixObjc;.
4d50: 20 09 7d 20 65 6c 73 65 20 7b 0a 21 20 09 20 20 .} else {.! .
4d60: 20 20 69 6e 74 20 6e 69 20 3d 20 69 50 74 72 2d int ni = iPtr-
4d70: 3e 65 6e 73 65 6d 62 6c 65 52 65 77 72 69 74 65 >ensembleRewrite
4d80: 2e 6e 75 6d 49 6e 73 65 72 74 65 64 4f 62 6a 73 .numInsertedObjs
4d90: 3b 0a 21 20 0a 21 20 09 20 20 20 20 69 66 20 28 ;.! .! . if (
4da0: 6e 69 20 3c 20 32 29 20 7b 0a 21 20 09 09 69 50 ni < 2) {.! ..iP
4db0: 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 52 65 77 72 tr->ensembleRewr
4dc0: 69 74 65 2e 6e 75 6d 52 65 6d 6f 76 65 64 4f 62 ite.numRemovedOb
4dd0: 6a 73 20 2b 3d 20 32 20 2d 20 6e 69 3b 0a 20 20 js += 2 - ni;.
4de0: 09 09 69 50 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 ..iPtr->ensemble
4df0: 52 65 77 72 69 74 65 2e 6e 75 6d 49 6e 73 65 72 Rewrite.numInser
4e00: 74 65 64 4f 62 6a 73 20 2b 3d 20 70 72 65 66 69 tedObjs += prefi
4e10: 78 4f 62 6a 63 2d 31 3b 0a 20 20 09 20 20 20 20 xObjc-1;. .
4e20: 7d 20 65 6c 73 65 20 7b 0a 20 20 09 09 69 50 74 } else {. ..iPt
4e30: 72 2d 3e 65 6e 73 65 6d 62 6c 65 52 65 77 72 69 r->ensembleRewri
4e40: 74 65 2e 6e 75 6d 49 6e 73 65 72 74 65 64 4f 62 te.numInsertedOb
4e50: 6a 73 20 2b 3d 20 70 72 65 66 69 78 4f 62 6a 63 js += prefixObjc
4e60: 2d 32 3b 0a 2d 2d 2d 20 36 33 37 36 2c 36 33 39 -2;.--- 6376,639
4e70: 36 20 2d 2d 2d 2d 0a 20 20 09 2f 2a 0a 20 20 09 6 ----. ./*. .
4e80: 20 2a 20 52 65 63 6f 72 64 20 77 68 61 74 20 61 * Record what a
4e90: 72 67 75 6d 65 6e 74 73 20 74 68 65 20 73 63 72 rguments the scr
4ea0: 69 70 74 20 73 65 6e 74 20 69 6e 20 73 6f 20 74 ipt sent in so t
4eb0: 68 61 74 20 74 68 69 6e 67 73 20 6c 69 6b 65 0a hat things like.
4ec0: 20 20 09 20 2a 20 54 63 6c 5f 57 72 6f 6e 67 4e . * Tcl_WrongN
4ed0: 75 6d 41 72 67 73 20 63 61 6e 20 67 69 76 65 20 umArgs can give
4ee0: 74 68 65 20 63 6f 72 72 65 63 74 20 65 72 72 6f the correct erro
4ef0: 72 20 6d 65 73 73 61 67 65 2e 0a 2b 20 09 20 2a r message..+ . *
4f00: 20 50 61 72 61 6d 65 74 65 72 73 20 63 6f 75 6e Parameters coun
4f10: 74 20 62 6f 74 68 20 61 73 20 69 6e 73 65 72 74 t both as insert
4f20: 65 64 20 61 6e 64 20 72 65 6d 6f 76 65 64 20 61 ed and removed a
4f30: 72 67 75 6d 65 6e 74 73 2e 0a 20 20 09 20 2a 2f rguments.. . */
4f40: 0a 20 20 0a 20 20 09 69 73 52 6f 6f 74 45 6e 73 . . .isRootEns
4f50: 65 6d 62 6c 65 20 3d 20 28 69 50 74 72 2d 3e 65 emble = (iPtr->e
4f60: 6e 73 65 6d 62 6c 65 52 65 77 72 69 74 65 2e 73 nsembleRewrite.s
4f70: 6f 75 72 63 65 4f 62 6a 73 20 3d 3d 20 4e 55 4c ourceObjs == NUL
4f80: 4c 29 3b 0a 20 20 09 69 66 20 28 69 73 52 6f 6f L);. .if (isRoo
4f90: 74 45 6e 73 65 6d 62 6c 65 29 20 7b 0a 20 20 09 tEnsemble) {. .
4fa0: 20 20 20 20 69 50 74 72 2d 3e 65 6e 73 65 6d 62 iPtr->ensemb
4fb0: 6c 65 52 65 77 72 69 74 65 2e 73 6f 75 72 63 65 leRewrite.source
4fc0: 4f 62 6a 73 20 3d 20 6f 62 6a 76 3b 0a 21 20 09 Objs = objv;.! .
4fd0: 20 20 20 20 69 50 74 72 2d 3e 65 6e 73 65 6d 62 iPtr->ensemb
4fe0: 6c 65 52 65 77 72 69 74 65 2e 6e 75 6d 52 65 6d leRewrite.numRem
4ff0: 6f 76 65 64 4f 62 6a 73 20 3d 20 32 20 2b 20 65 ovedObjs = 2 + e
5000: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 nsemblePtr->numP
5010: 61 72 61 6d 65 74 65 72 73 3b 0a 21 20 09 20 20 arameters;.! .
5020: 20 20 69 50 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 iPtr->ensemble
5030: 52 65 77 72 69 74 65 2e 6e 75 6d 49 6e 73 65 72 Rewrite.numInser
5040: 74 65 64 4f 62 6a 73 20 3d 20 70 72 65 66 69 78 tedObjs = prefix
5050: 4f 62 6a 63 20 2b 20 65 6e 73 65 6d 62 6c 65 50 Objc + ensembleP
5060: 74 72 2d 3e 6e 75 6d 50 61 72 61 6d 65 74 65 72 tr->numParameter
5070: 73 3b 0a 20 20 09 7d 20 65 6c 73 65 20 7b 0a 21 s;. .} else {.!
5080: 20 09 20 20 20 20 69 6e 74 20 6e 69 20 3d 20 32 . int ni = 2
5090: 20 2b 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e + ensemblePtr->
50a0: 6e 75 6d 50 61 72 61 6d 65 74 65 72 73 0a 21 20 numParameters.!
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
50c0: 20 20 20 20 20 2d 20 20 69 50 74 72 2d 3e 65 6e - iPtr->en
50d0: 73 65 6d 62 6c 65 52 65 77 72 69 74 65 2e 6e 75 sembleRewrite.nu
50e0: 6d 49 6e 73 65 72 74 65 64 4f 62 6a 73 3b 0a 21 mInsertedObjs;.!
50f0: 20 09 09 09 09 2f 2a 20 50 6f 73 69 74 69 6f 6e ..../* Position
5100: 20 69 6e 20 6f 62 6a 76 20 6f 66 20 6e 65 77 20 in objv of new
5110: 66 72 6f 6e 74 20 0a 21 20 09 09 09 09 20 2a 20 front .! .... *
5120: 6f 66 20 69 6e 73 65 72 74 69 6f 6e 20 72 65 6c of insertion rel
5130: 61 74 69 76 65 20 74 6f 20 6f 6c 64 20 6f 6e 65 ative to old one
5140: 2e 20 2a 2f 0a 21 20 09 20 20 20 20 69 66 20 28 . */.! . if (
5150: 6e 69 20 3e 20 30 29 20 7b 0a 21 20 09 09 69 50 ni > 0) {.! ..iP
5160: 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 52 65 77 72 tr->ensembleRewr
5170: 69 74 65 2e 6e 75 6d 52 65 6d 6f 76 65 64 4f 62 ite.numRemovedOb
5180: 6a 73 20 2b 3d 20 6e 69 3b 0a 20 20 09 09 69 50 js += ni;. ..iP
5190: 74 72 2d 3e 65 6e 73 65 6d 62 6c 65 52 65 77 72 tr->ensembleRewr
51a0: 69 74 65 2e 6e 75 6d 49 6e 73 65 72 74 65 64 4f ite.numInsertedO
51b0: 62 6a 73 20 2b 3d 20 70 72 65 66 69 78 4f 62 6a bjs += prefixObj
51c0: 63 2d 31 3b 0a 20 20 09 20 20 20 20 7d 20 65 6c c-1;. . } el
51d0: 73 65 20 7b 0a 20 20 09 09 69 50 74 72 2d 3e 65 se {. ..iPtr->e
51e0: 6e 73 65 6d 62 6c 65 52 65 77 72 69 74 65 2e 6e nsembleRewrite.n
51f0: 75 6d 49 6e 73 65 72 74 65 64 4f 62 6a 73 20 2b umInsertedObjs +
5200: 3d 20 70 72 65 66 69 78 4f 62 6a 63 2d 32 3b 0a = prefixObjc-2;.
5210: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a ***************.
5220: 2a 2a 2a 20 36 32 30 36 2c 36 32 31 32 20 2a 2a *** 6206,6212 **
5230: 2a 2a 0a 20 20 09 74 65 6d 70 4f 62 6a 76 20 3d **. .tempObjv =
5240: 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 54 63 (Tcl_Obj **) Tc
5250: 6c 53 74 61 63 6b 41 6c 6c 6f 63 28 69 6e 74 65 lStackAlloc(inte
5260: 72 70 2c 0a 20 20 09 09 28 69 6e 74 29 20 73 69 rp,. ..(int) si
5270: 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 20 zeof(Tcl_Obj *)
5280: 2a 20 28 6f 62 6a 63 20 2d 20 32 20 2b 20 70 72 * (objc - 2 + pr
5290: 65 66 69 78 4f 62 6a 63 29 29 3b 0a 20 20 09 6d efixObjc));. .m
52a0: 65 6d 63 70 79 28 74 65 6d 70 4f 62 6a 76 2c 20 emcpy(tempObjv,
52b0: 70 72 65 66 69 78 4f 62 6a 76 2c 20 73 69 7a 65 prefixObjv, size
52c0: 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 20 2a 20 of(Tcl_Obj *) *
52d0: 70 72 65 66 69 78 4f 62 6a 63 29 3b 0a 21 20 09 prefixObjc);.! .
52e0: 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 6a 76 2b memcpy(tempObjv+
52f0: 70 72 65 66 69 78 4f 62 6a 63 2c 20 6f 62 6a 76 prefixObjc, objv
5300: 2b 32 2c 20 73 69 7a 65 6f 66 28 54 63 6c 5f 4f +2, sizeof(Tcl_O
5310: 62 6a 20 2a 29 20 2a 20 28 6f 62 6a 63 2d 32 29 bj *) * (objc-2)
5320: 29 3b 0a 20 20 0a 20 20 09 2f 2a 0a 20 20 09 20 );. . ./*. .
5330: 2a 20 48 61 6e 64 20 6f 66 66 20 74 6f 20 74 68 * Hand off to th
5340: 65 20 74 61 72 67 65 74 20 63 6f 6d 6d 61 6e 64 e target command
5350: 2e 0a 2d 2d 2d 20 36 34 30 35 2c 36 34 31 35 20 ..--- 6405,6415
5360: 2d 2d 2d 2d 0a 20 20 09 74 65 6d 70 4f 62 6a 76 ----. .tempObjv
5370: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 = (Tcl_Obj **)
5380: 54 63 6c 53 74 61 63 6b 41 6c 6c 6f 63 28 69 6e TclStackAlloc(in
5390: 74 65 72 70 2c 0a 20 20 09 09 28 69 6e 74 29 20 terp,. ..(int)
53a0: 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a sizeof(Tcl_Obj *
53b0: 29 20 2a 20 28 6f 62 6a 63 20 2d 20 32 20 2b 20 ) * (objc - 2 +
53c0: 70 72 65 66 69 78 4f 62 6a 63 29 29 3b 0a 20 20 prefixObjc));.
53d0: 09 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 6a 76 .memcpy(tempObjv
53e0: 2c 20 70 72 65 66 69 78 4f 62 6a 76 2c 20 73 69 , prefixObjv, si
53f0: 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 20 zeof(Tcl_Obj *)
5400: 2a 20 70 72 65 66 69 78 4f 62 6a 63 29 3b 0a 21 * prefixObjc);.!
5410: 20 09 6d 65 6d 63 70 79 28 74 65 6d 70 4f 62 6a .memcpy(tempObj
5420: 76 2b 70 72 65 66 69 78 4f 62 6a 63 2c 20 6f 62 v+prefixObjc, ob
5430: 6a 76 2b 31 2c 20 0a 21 20 20 20 20 20 20 20 20 jv+1, .!
5440: 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 54 sizeof(T
5450: 63 6c 5f 4f 62 6a 20 2a 29 20 2a 20 65 6e 73 65 cl_Obj *) * ense
5460: 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 61 72 61 mblePtr->numPara
5470: 6d 65 74 65 72 73 29 3b 0a 21 20 09 6d 65 6d 63 meters);.! .memc
5480: 70 79 28 74 65 6d 70 4f 62 6a 76 2b 70 72 65 66 py(tempObjv+pref
5490: 69 78 4f 62 6a 63 2b 65 6e 73 65 6d 62 6c 65 50 ixObjc+ensembleP
54a0: 74 72 2d 3e 6e 75 6d 50 61 72 61 6d 65 74 65 72 tr->numParameter
54b0: 73 2c 20 0a 21 20 20 20 20 20 20 20 20 20 20 20 s, .!
54c0: 20 20 20 20 20 6f 62 6a 76 2b 65 6e 73 65 6d 62 objv+ensemb
54d0: 6c 65 50 74 72 2d 3e 6e 75 6d 50 61 72 61 6d 65 lePtr->numParame
54e0: 74 65 72 73 2b 32 2c 20 0a 21 20 20 20 20 20 20 ters+2, .!
54f0: 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 sizeof
5500: 28 54 63 6c 5f 4f 62 6a 20 2a 29 20 2a 20 28 6f (Tcl_Obj *) * (o
5510: 62 6a 63 2d 65 6e 73 65 6d 62 6c 65 50 74 72 2d bjc-ensemblePtr-
5520: 3e 6e 75 6d 50 61 72 61 6d 65 74 65 72 73 2d 32 >numParameters-2
5530: 29 29 3b 0a 20 20 0a 20 20 09 2f 2a 0a 20 20 09 ));. . ./*. .
5540: 20 2a 20 48 61 6e 64 20 6f 66 66 20 74 6f 20 74 * Hand off to t
5550: 68 65 20 74 61 72 67 65 74 20 63 6f 6d 6d 61 6e he target comman
5560: 64 2e 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a d..*************
5570: 2a 2a 0a 2a 2a 2a 20 36 33 33 34 2c 36 33 35 31 **.*** 6334,6351
5580: 20 2a 2a 2a 2a 0a 20 20 0a 20 20 20 20 20 20 54 ****. . T
5590: 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 cl_ResetResult(i
55a0: 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 20 54 63 nterp);. Tc
55b0: 6c 5f 53 65 74 45 72 72 6f 72 43 6f 64 65 28 69 l_SetErrorCode(i
55c0: 6e 74 65 72 70 2c 20 22 54 43 4c 22 2c 20 22 4c nterp, "TCL", "L
55d0: 4f 4f 4b 55 50 22 2c 20 22 45 4e 53 45 4d 42 4c OOKUP", "ENSEMBL
55e0: 45 22 2c 0a 21 20 09 20 20 20 20 54 63 6c 47 65 E",.! . TclGe
55f0: 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 5d 29 tString(objv[1])
5600: 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 20 20 20 69 , NULL);. i
5610: 66 20 28 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e f (ensemblePtr->
5620: 73 75 62 63 6f 6d 6d 61 6e 64 54 61 62 6c 65 2e subcommandTable.
5630: 6e 75 6d 45 6e 74 72 69 65 73 20 3d 3d 20 30 29 numEntries == 0)
5640: 20 7b 0a 21 20 09 54 63 6c 5f 41 70 70 65 6e 64 {.! .Tcl_Append
5650: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 Result(interp, "
5660: 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 unknown subcomma
5670: 6e 64 20 5c 22 22 2c 54 63 6c 47 65 74 53 74 72 nd \"",TclGetStr
5680: 69 6e 67 28 6f 62 6a 76 5b 31 5d 29 2c 0a 20 20 ing(objv[1]),.
5690: 09 09 22 5c 22 3a 20 6e 61 6d 65 73 70 61 63 65 .."\": namespace
56a0: 20 22 2c 20 65 6e 73 65 6d 62 6c 65 50 74 72 2d ", ensemblePtr-
56b0: 3e 6e 73 50 74 72 2d 3e 66 75 6c 6c 4e 61 6d 65 >nsPtr->fullName
56c0: 2c 0a 20 20 09 09 22 20 64 6f 65 73 20 6e 6f 74 ,. .." does not
56d0: 20 65 78 70 6f 72 74 20 61 6e 79 20 63 6f 6d 6d export any comm
56e0: 61 6e 64 73 22 2c 20 4e 55 4c 4c 29 3b 0a 20 20 ands", NULL);.
56f0: 09 54 63 6c 5f 53 65 74 45 72 72 6f 72 43 6f 64 .Tcl_SetErrorCod
5700: 65 28 69 6e 74 65 72 70 2c 20 22 54 43 4c 22 2c e(interp, "TCL",
5710: 20 22 4c 4f 4f 4b 55 50 22 2c 20 22 53 55 42 43 "LOOKUP", "SUBC
5720: 4f 4d 4d 41 4e 44 22 2c 0a 21 20 09 09 54 63 6c OMMAND",.! ..Tcl
5730: 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 GetString(objv[1
5740: 5d 29 2c 20 4e 55 4c 4c 29 3b 0a 20 20 09 72 65 ]), NULL);. .re
5750: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a turn TCL_ERROR;.
5760: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 54 63 }. Tc
5770: 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 l_AppendResult(i
5780: 6e 74 65 72 70 2c 20 22 75 6e 6b 6e 6f 77 6e 20 nterp, "unknown
5790: 22 2c 0a 20 20 09 20 20 20 20 28 65 6e 73 65 6d ",. . (ensem
57a0: 62 6c 65 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 blePtr->flags &
57b0: 54 43 4c 5f 45 4e 53 45 4d 42 4c 45 5f 50 52 45 TCL_ENSEMBLE_PRE
57c0: 46 49 58 20 3f 20 22 6f 72 20 61 6d 62 69 67 75 FIX ? "or ambigu
57d0: 6f 75 73 20 22 20 3a 20 22 22 29 2c 0a 21 20 09 ous " : ""),.! .
57e0: 20 20 20 20 22 73 75 62 63 6f 6d 6d 61 6e 64 20 "subcommand
57f0: 5c 22 22 2c 20 54 63 6c 47 65 74 53 74 72 69 6e \"", TclGetStrin
5800: 67 28 6f 62 6a 76 5b 31 5d 29 2c 20 22 5c 22 3a g(objv[1]), "\":
5810: 20 6d 75 73 74 20 62 65 20 22 2c 20 4e 55 4c 4c must be ", NULL
5820: 29 3b 0a 20 20 20 20 20 20 69 66 20 28 65 6e 73 );. if (ens
5830: 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 63 6f 6d emblePtr->subcom
5840: 6d 61 6e 64 54 61 62 6c 65 2e 6e 75 6d 45 6e 74 mandTable.numEnt
5850: 72 69 65 73 20 3d 3d 20 31 29 20 7b 0a 20 20 09 ries == 1) {. .
5860: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
5870: 28 69 6e 74 65 72 70 2c 20 65 6e 73 65 6d 62 6c (interp, ensembl
5880: 65 50 74 72 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 ePtr->subcommand
5890: 41 72 72 61 79 50 74 72 5b 30 5d 2c 20 4e 55 4c ArrayPtr[0], NUL
58a0: 4c 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 L);. } else
58b0: 20 7b 0a 2d 2d 2d 20 36 35 33 37 2c 36 35 35 36 {.--- 6537,6556
58c0: 20 2d 2d 2d 2d 0a 20 20 0a 20 20 20 20 20 20 54 ----. . T
58d0: 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 cl_ResetResult(i
58e0: 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 20 54 63 nterp);. Tc
58f0: 6c 5f 53 65 74 45 72 72 6f 72 43 6f 64 65 28 69 l_SetErrorCode(i
5900: 6e 74 65 72 70 2c 20 22 54 43 4c 22 2c 20 22 4c nterp, "TCL", "L
5910: 4f 4f 4b 55 50 22 2c 20 22 45 4e 53 45 4d 42 4c OOKUP", "ENSEMBL
5920: 45 22 2c 0a 21 20 09 20 20 20 20 54 63 6c 47 65 E",.! . TclGe
5930: 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 2b 65 tString(objv[1+e
5940: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 nsemblePtr->numP
5950: 61 72 61 6d 65 74 65 72 73 5d 29 2c 20 4e 55 4c arameters]), NUL
5960: 4c 29 3b 0a 20 20 20 20 20 20 69 66 20 28 65 6e L);. if (en
5970: 73 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 63 6f semblePtr->subco
5980: 6d 6d 61 6e 64 54 61 62 6c 65 2e 6e 75 6d 45 6e mmandTable.numEn
5990: 74 72 69 65 73 20 3d 3d 20 30 29 20 7b 0a 21 20 tries == 0) {.!
59a0: 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c .Tcl_AppendResul
59b0: 74 28 69 6e 74 65 72 70 2c 20 22 75 6e 6b 6e 6f t(interp, "unkno
59c0: 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 5c 22 wn subcommand \"
59d0: 22 2c 0a 21 20 20 20 20 20 20 20 20 20 20 20 20 ",.!
59e0: 20 20 20 20 20 54 63 6c 47 65 74 53 74 72 69 6e TclGetStrin
59f0: 67 28 6f 62 6a 76 5b 31 2b 65 6e 73 65 6d 62 6c g(objv[1+ensembl
5a00: 65 50 74 72 2d 3e 6e 75 6d 50 61 72 61 6d 65 74 ePtr->numParamet
5a10: 65 72 73 5d 29 2c 0a 20 20 09 09 22 5c 22 3a 20 ers]),. .."\":
5a20: 6e 61 6d 65 73 70 61 63 65 20 22 2c 20 65 6e 73 namespace ", ens
5a30: 65 6d 62 6c 65 50 74 72 2d 3e 6e 73 50 74 72 2d emblePtr->nsPtr-
5a40: 3e 66 75 6c 6c 4e 61 6d 65 2c 0a 20 20 09 09 22 >fullName,. .."
5a50: 20 64 6f 65 73 20 6e 6f 74 20 65 78 70 6f 72 74 does not export
5a60: 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 73 22 2c 20 any commands",
5a70: 4e 55 4c 4c 29 3b 0a 20 20 09 54 63 6c 5f 53 65 NULL);. .Tcl_Se
5a80: 74 45 72 72 6f 72 43 6f 64 65 28 69 6e 74 65 72 tErrorCode(inter
5a90: 70 2c 20 22 54 43 4c 22 2c 20 22 4c 4f 4f 4b 55 p, "TCL", "LOOKU
5aa0: 50 22 2c 20 22 53 55 42 43 4f 4d 4d 41 4e 44 22 P", "SUBCOMMAND"
5ab0: 2c 0a 21 20 09 09 54 63 6c 47 65 74 53 74 72 69 ,.! ..TclGetStri
5ac0: 6e 67 28 6f 62 6a 76 5b 31 2b 65 6e 73 65 6d 62 ng(objv[1+ensemb
5ad0: 6c 65 50 74 72 2d 3e 6e 75 6d 50 61 72 61 6d 65 lePtr->numParame
5ae0: 74 65 72 73 5d 29 2c 20 4e 55 4c 4c 29 3b 0a 20 ters]), NULL);.
5af0: 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 .return TCL_ERR
5b00: 4f 52 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 OR;. }.
5b10: 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 Tcl_AppendResu
5b20: 6c 74 28 69 6e 74 65 72 70 2c 20 22 75 6e 6b 6e lt(interp, "unkn
5b30: 6f 77 6e 20 22 2c 0a 20 20 09 20 20 20 20 28 65 own ",. . (e
5b40: 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 66 6c 61 67 nsemblePtr->flag
5b50: 73 20 26 20 54 43 4c 5f 45 4e 53 45 4d 42 4c 45 s & TCL_ENSEMBLE
5b60: 5f 50 52 45 46 49 58 20 3f 20 22 6f 72 20 61 6d _PREFIX ? "or am
5b70: 62 69 67 75 6f 75 73 20 22 20 3a 20 22 22 29 2c biguous " : ""),
5b80: 0a 21 20 09 20 20 20 20 22 73 75 62 63 6f 6d 6d .! . "subcomm
5b90: 61 6e 64 20 5c 22 22 2c 20 54 63 6c 47 65 74 53 and \"", TclGetS
5ba0: 74 72 69 6e 67 28 6f 62 6a 76 5b 31 2b 65 6e 73 tring(objv[1+ens
5bb0: 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 6d 50 61 72 emblePtr->numPar
5bc0: 61 6d 65 74 65 72 73 5d 29 2c 20 0a 21 20 20 20 ameters]), .!
5bd0: 20 20 20 20 20 20 20 20 20 20 22 5c 22 3a 20 6d "\": m
5be0: 75 73 74 20 62 65 20 22 2c 20 4e 55 4c 4c 29 3b ust be ", NULL);
5bf0: 0a 20 20 20 20 20 20 69 66 20 28 65 6e 73 65 6d . if (ensem
5c00: 62 6c 65 50 74 72 2d 3e 73 75 62 63 6f 6d 6d 61 blePtr->subcomma
5c10: 6e 64 54 61 62 6c 65 2e 6e 75 6d 45 6e 74 72 69 ndTable.numEntri
5c20: 65 73 20 3d 3d 20 31 29 20 7b 0a 20 20 09 54 63 es == 1) {. .Tc
5c30: 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 l_AppendResult(i
5c40: 6e 74 65 72 70 2c 20 65 6e 73 65 6d 62 6c 65 50 nterp, ensembleP
5c50: 74 72 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 41 72 tr->subcommandAr
5c60: 72 61 79 50 74 72 5b 30 5d 2c 20 4e 55 4c 4c 29 rayPtr[0], NULL)
5c70: 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b ;. } else {
5c80: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
5c90: 0a 2a 2a 2a 20 36 33 35 39 2c 36 33 36 35 20 2a .*** 6359,6365 *
5ca0: 2a 2a 2a 0a 20 20 09 09 65 6e 73 65 6d 62 6c 65 ***. ..ensemble
5cb0: 50 74 72 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 41 Ptr->subcommandA
5cc0: 72 72 61 79 50 74 72 5b 69 5d 2c 20 4e 55 4c 4c rrayPtr[i], NULL
5cd0: 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 );. }.
5ce0: 20 54 63 6c 5f 53 65 74 45 72 72 6f 72 43 6f 64 Tcl_SetErrorCod
5cf0: 65 28 69 6e 74 65 72 70 2c 20 22 54 43 4c 22 2c e(interp, "TCL",
5d00: 20 22 4c 4f 4f 4b 55 50 22 2c 20 22 53 55 42 43 "LOOKUP", "SUBC
5d10: 4f 4d 4d 41 4e 44 22 2c 0a 21 20 09 20 20 20 20 OMMAND",.! .
5d20: 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 6a TclGetString(obj
5d30: 76 5b 31 5d 29 2c 20 4e 55 4c 4c 29 3b 0a 20 20 v[1]), NULL);.
5d40: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 return TCL_E
5d50: 52 52 4f 52 3b 0a 20 20 7d 0a 20 20 0c 0a 2d 2d RROR;. }. ..--
5d60: 2d 20 36 35 36 34 2c 36 35 37 30 20 2d 2d 2d 2d - 6564,6570 ----
5d70: 0a 20 20 09 09 65 6e 73 65 6d 62 6c 65 50 74 72 . ..ensemblePtr
5d80: 2d 3e 73 75 62 63 6f 6d 6d 61 6e 64 41 72 72 61 ->subcommandArra
5d90: 79 50 74 72 5b 69 5d 2c 20 4e 55 4c 4c 29 3b 0a yPtr[i], NULL);.
5da0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 54 63 }. Tc
5db0: 6c 5f 53 65 74 45 72 72 6f 72 43 6f 64 65 28 69 l_SetErrorCode(i
5dc0: 6e 74 65 72 70 2c 20 22 54 43 4c 22 2c 20 22 4c nterp, "TCL", "L
5dd0: 4f 4f 4b 55 50 22 2c 20 22 53 55 42 43 4f 4d 4d OOKUP", "SUBCOMM
5de0: 41 4e 44 22 2c 0a 21 20 09 20 20 20 20 54 63 6c AND",.! . Tcl
5df0: 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 GetString(objv[1
5e00: 2b 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 6e 75 +ensemblePtr->nu
5e10: 6d 50 61 72 61 6d 65 74 65 72 73 5d 29 2c 20 4e mParameters]), N
5e20: 55 4c 4c 29 3b 0a 20 20 20 20 20 20 72 65 74 75 ULL);. retu
5e30: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 rn TCL_ERROR;.
5e40: 7d 0a 20 20 0c 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }. ..**********
5e50: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 36 35 30 32 2c 36 *****.*** 6502,6
5e60: 35 30 37 20 2a 2a 2a 2a 0a 2d 2d 2d 20 36 37 30 507 ****.--- 670
5e70: 37 2c 36 37 31 35 20 2d 2d 2d 2d 0a 20 20 20 20 7,6715 ----.
5e80: 20 20 69 66 20 28 65 6e 73 65 6d 62 6c 65 50 74 if (ensemblePt
5e90: 72 2d 3e 73 75 62 63 6d 64 4c 69 73 74 20 21 3d r->subcmdList !=
5ea0: 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 54 63 6c 5f NULL) {. .Tcl_
5eb0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 65 6e 73 DecrRefCount(ens
5ec0: 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 63 6d 64 emblePtr->subcmd
5ed0: 4c 69 73 74 29 3b 0a 20 20 20 20 20 20 7d 0a 2b List);. }.+
5ee0: 20 20 20 20 20 69 66 20 28 65 6e 73 65 6d 62 6c if (ensembl
5ef0: 65 50 74 72 2d 3e 70 61 72 61 6d 65 74 65 72 4c ePtr->parameterL
5f00: 69 73 74 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b ist != NULL) {.+
5f10: 20 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 .Tcl_DecrRefCou
5f20: 6e 74 28 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e nt(ensemblePtr->
5f30: 70 61 72 61 6d 65 74 65 72 4c 69 73 74 29 3b 0a parameterList);.
5f40: 2b 20 20 20 20 20 7d 0a 20 20 20 20 20 20 69 66 + }. if
5f50: 20 28 65 6e 73 65 6d 62 6c 65 50 74 72 2d 3e 73 (ensemblePtr->s
5f60: 75 62 63 6f 6d 6d 61 6e 64 44 69 63 74 20 21 3d ubcommandDict !=
5f70: 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 54 63 6c 5f NULL) {. .Tcl_
5f80: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 65 6e 73 DecrRefCount(ens
5f90: 65 6d 62 6c 65 50 74 72 2d 3e 73 75 62 63 6f 6d emblePtr->subcom
5fa0: 6d 61 6e 64 44 69 63 74 29 3b 0a 20 20 20 20 20 mandDict);.
5fb0: 20 7d 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 }.Index: generi
5fc0: 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a c/tclStubInit.c.
5fd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5fe0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5ff0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6000: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6010: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
6020: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 vsroot/tcl/tcl/g
6030: 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e eneric/tclStubIn
6040: 69 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e it.c,v.retrievin
6050: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 35 30 g revision 1.150
6060: 0a 64 69 66 66 20 2d 63 20 2d 72 31 2e 31 35 30 .diff -c -r1.150
6070: 20 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 2a tclStubInit.c.*
6080: 2a 2a 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 ** generic/tclSt
6090: 75 62 49 6e 69 74 2e 63 09 32 33 20 4a 61 6e 20 ubInit.c.23 Jan
60a0: 32 30 30 38 20 31 37 3a 33 31 3a 34 32 20 2d 30 2008 17:31:42 -0
60b0: 30 30 30 09 31 2e 31 35 30 0a 2d 2d 2d 20 67 65 000.1.150.--- ge
60c0: 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 neric/tclStubIni
60d0: 74 2e 63 09 32 35 20 46 65 62 20 32 30 30 38 20 t.c.25 Feb 2008
60e0: 32 33 3a 30 37 3a 30 38 20 2d 30 30 30 30 0a 2a 23:07:08 -0000.*
60f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
6100: 2a 2a 20 31 31 32 38 2c 31 31 33 33 20 2a 2a 2a ** 1128,1133 ***
6110: 2a 0a 2d 2d 2d 20 31 31 32 38 2c 31 31 33 35 20 *.--- 1128,1135
6120: 2d 2d 2d 2d 0a 20 20 20 20 20 20 54 63 6c 5f 41 ----. Tcl_A
6130: 70 70 65 6e 64 46 6f 72 6d 61 74 54 6f 4f 62 6a ppendFormatToObj
6140: 2c 20 2f 2a 20 35 37 37 20 2a 2f 0a 20 20 20 20 , /* 577 */.
6150: 20 20 54 63 6c 5f 4f 62 6a 50 72 69 6e 74 66 2c Tcl_ObjPrintf,
6160: 20 2f 2a 20 35 37 38 20 2a 2f 0a 20 20 20 20 20 /* 578 */.
6170: 20 54 63 6c 5f 41 70 70 65 6e 64 50 72 69 6e 74 Tcl_AppendPrint
6180: 66 54 6f 4f 62 6a 2c 20 2f 2a 20 35 37 39 20 2a fToObj, /* 579 *
6190: 2f 0a 2b 20 20 20 20 20 54 63 6c 5f 53 65 74 45 /.+ Tcl_SetE
61a0: 6e 73 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 nsembleParameter
61b0: 4c 69 73 74 2c 20 2f 2a 20 35 38 30 20 2a 2f 0a List, /* 580 */.
61c0: 2b 20 20 20 20 20 54 63 6c 5f 47 65 74 45 6e 73 + Tcl_GetEns
61d0: 65 6d 62 6c 65 50 61 72 61 6d 65 74 65 72 4c 69 embleParameterLi
61e0: 73 74 2c 20 2f 2a 20 35 38 31 20 2a 2f 0a 20 20 st, /* 581 */.
61f0: 7d 3b 0a 20 20 0a 20 20 2f 2a 20 21 45 4e 44 21 };. . /* !END!
6200: 3a 20 44 6f 20 6e 6f 74 20 65 64 69 74 20 61 62 : Do not edit ab
6210: 6f 76 65 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a ove this line. *
6220: 2f 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e /.Index: tests/n
6230: 61 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d amespace.test.==
6240: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6250: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6260: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6270: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6280: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
6290: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 root/tcl/tcl/tes
62a0: 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 ts/namespace.tes
62b0: 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 t,v.retrieving r
62c0: 65 76 69 73 69 6f 6e 20 31 2e 37 30 0a 64 69 66 evision 1.70.dif
62d0: 66 20 2d 63 20 2d 72 31 2e 37 30 20 6e 61 6d 65 f -c -r1.70 name
62e0: 73 70 61 63 65 2e 74 65 73 74 0a 2a 2a 2a 20 74 space.test.*** t
62f0: 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 ests/namespace.t
6300: 65 73 74 09 31 33 20 44 65 63 20 32 30 30 37 20 est.13 Dec 2007
6310: 31 35 3a 32 36 3a 30 36 20 2d 30 30 30 30 09 31 15:26:06 -0000.1
6320: 2e 37 30 0a 2d 2d 2d 20 74 65 73 74 73 2f 6e 61 .70.--- tests/na
6330: 6d 65 73 70 61 63 65 2e 74 65 73 74 09 32 35 20 mespace.test.25
6340: 46 65 62 20 32 30 30 38 20 32 33 3a 30 37 3a 31 Feb 2008 23:07:1
6350: 32 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 2 -0000.********
6360: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 36 39 36 *******.*** 1696
6370: 2c 31 37 30 32 20 2a 2a 2a 2a 0a 20 20 20 20 20 ,1702 ****.
6380: 20 7d 0a 20 20 20 20 20 20 6e 61 6d 65 73 70 61 }. namespa
6390: 63 65 20 64 65 6c 65 74 65 20 6e 73 0a 20 20 20 ce delete ns.
63a0: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 21 20 set result.!
63b0: 7d 20 7b 2d 6d 61 70 20 7b 7d 20 2d 6e 61 6d 65 } {-map {} -name
63c0: 73 70 61 63 65 20 3a 3a 6e 73 20 2d 70 72 65 66 space ::ns -pref
63d0: 69 78 65 73 20 31 20 2d 73 75 62 63 6f 6d 6d 61 ixes 1 -subcomma
63e0: 6e 64 73 20 7b 7d 20 2d 75 6e 6b 6e 6f 77 6e 20 nds {} -unknown
63f0: 7b 7d 7d 0a 20 20 74 65 73 74 20 6e 61 6d 65 73 {}}. test names
6400: 70 61 63 65 2d 34 35 2e 32 20 7b 65 6e 73 65 6d pace-45.2 {ensem
6410: 62 6c 65 3a 20 69 6e 74 72 6f 73 70 65 63 74 69 ble: introspecti
6420: 6f 6e 7d 20 7b 0a 20 20 20 20 20 20 6e 61 6d 65 on} {. name
6430: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
6440: 20 20 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 .namespace exp
6450: 6f 72 74 20 78 0a 2d 2d 2d 20 31 36 39 36 2c 31 ort x.--- 1696,1
6460: 37 30 32 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 7d 702 ----. }
6470: 0a 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 . namespace
6480: 20 64 65 6c 65 74 65 20 6e 73 0a 20 20 20 20 20 delete ns.
6490: 20 73 65 74 20 72 65 73 75 6c 74 0a 21 20 7d 20 set result.! }
64a0: 7b 2d 6d 61 70 20 7b 7d 20 2d 6e 61 6d 65 73 70 {-map {} -namesp
64b0: 61 63 65 20 3a 3a 6e 73 20 2d 70 61 72 61 6d 65 ace ::ns -parame
64c0: 74 65 72 73 20 7b 7d 20 2d 70 72 65 66 69 78 65 ters {} -prefixe
64d0: 73 20 31 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 73 s 1 -subcommands
64e0: 20 7b 7d 20 2d 75 6e 6b 6e 6f 77 6e 20 7b 7d 7d {} -unknown {}}
64f0: 0a 20 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 . test namespac
6500: 65 2d 34 35 2e 32 20 7b 65 6e 73 65 6d 62 6c 65 e-45.2 {ensemble
6510: 3a 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 7d : introspection}
6520: 20 7b 0a 20 20 20 20 20 20 6e 61 6d 65 73 70 61 {. namespa
6530: 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 20 20 09 ce eval ns {. .
6540: 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 namespace export
6550: 20 78 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a x.*************
6560: 2a 2a 0a 2a 2a 2a 20 31 39 31 30 2c 31 39 31 36 **.*** 1910,1916
6570: 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 6c 61 70 70 ****. lapp
6580: 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 end result [catc
6590: 68 20 7b 66 6f 6f 20 62 61 72 7d 20 6d 73 67 5d h {foo bar} msg]
65a0: 20 24 6d 73 67 20 5b 6e 61 6d 65 73 70 61 63 65 $msg [namespace
65b0: 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 ensemble config
65c0: 20 66 6f 6f 5d 0a 20 20 20 20 20 20 72 65 6e 61 foo]. rena
65d0: 6d 65 20 66 6f 6f 20 7b 7d 0a 20 20 20 20 20 20 me foo {}.
65e0: 73 65 74 20 72 65 73 75 6c 74 0a 21 20 7d 20 7b set result.! } {
65f0: 7b 4c 4f 47 20 3a 3a 66 6f 6f 20 62 61 72 7d 20 {LOG ::foo bar}
6600: 31 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 1 {unknown subco
6610: 6d 6d 61 6e 64 20 22 62 61 72 22 3a 20 6e 61 6d mmand "bar": nam
6620: 65 73 70 61 63 65 20 3a 3a 20 64 6f 65 73 20 6e espace :: does n
6630: 6f 74 20 65 78 70 6f 72 74 20 61 6e 79 20 63 6f ot export any co
6640: 6d 6d 61 6e 64 73 7d 20 7b 4c 4f 47 20 3a 3a 66 mmands} {LOG ::f
6650: 6f 6f 20 62 61 72 7d 20 62 6f 6f 20 68 6f 6f 20 oo bar} boo hoo
6660: 30 20 7b 7b 4c 4f 47 20 3a 3a 66 6f 6f 20 62 61 0 {{LOG ::foo ba
6670: 72 7d 20 31 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 r} 1 {unknown su
6680: 62 63 6f 6d 6d 61 6e 64 20 22 62 61 72 22 3a 20 bcommand "bar":
6690: 6e 61 6d 65 73 70 61 63 65 20 3a 3a 20 64 6f 65 namespace :: doe
66a0: 73 20 6e 6f 74 20 65 78 70 6f 72 74 20 61 6e 79 s not export any
66b0: 20 63 6f 6d 6d 61 6e 64 73 7d 20 7b 4c 4f 47 20 commands} {LOG
66c0: 3a 3a 66 6f 6f 20 62 61 72 7d 20 62 6f 6f 20 68 ::foo bar} boo h
66d0: 6f 6f 7d 20 7b 2d 6d 61 70 20 7b 7d 20 2d 6e 61 oo} {-map {} -na
66e0: 6d 65 73 70 61 63 65 20 3a 3a 20 2d 70 72 65 66 mespace :: -pref
66f0: 69 78 65 73 20 31 20 2d 73 75 62 63 6f 6d 6d 61 ixes 1 -subcomma
6700: 6e 64 73 20 7b 7d 20 2d 75 6e 6b 6e 6f 77 6e 20 nds {} -unknown
6710: 62 61 72 7d 7d 0a 20 20 74 65 73 74 20 6e 61 6d bar}}. test nam
6720: 65 73 70 61 63 65 2d 34 37 2e 36 20 7b 65 6e 73 espace-47.6 {ens
6730: 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20 68 emble: unknown h
6740: 61 6e 64 6c 65 72 7d 20 7b 0a 20 20 20 20 20 20 andler} {.
6750: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
6760: 6c 65 20 63 72 65 61 74 65 20 2d 63 6f 6d 6d 61 le create -comma
6770: 6e 64 20 66 6f 6f 20 2d 75 6e 6b 6e 6f 77 6e 20 nd foo -unknown
6780: 62 61 72 0a 20 20 20 20 20 20 70 72 6f 63 20 62 bar. proc b
6790: 61 72 20 7b 61 72 67 73 7d 20 7b 0a 2d 2d 2d 20 ar {args} {.---
67a0: 31 39 31 30 2c 31 39 31 36 20 2d 2d 2d 2d 0a 20 1910,1916 ----.
67b0: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 lappend res
67c0: 75 6c 74 20 5b 63 61 74 63 68 20 7b 66 6f 6f 20 ult [catch {foo
67d0: 62 61 72 7d 20 6d 73 67 5d 20 24 6d 73 67 20 5b bar} msg] $msg [
67e0: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
67f0: 6c 65 20 63 6f 6e 66 69 67 20 66 6f 6f 5d 0a 20 le config foo].
6800: 20 20 20 20 20 72 65 6e 61 6d 65 20 66 6f 6f 20 rename foo
6810: 7b 7d 0a 20 20 20 20 20 20 73 65 74 20 72 65 73 {}. set res
6820: 75 6c 74 0a 21 20 7d 20 7b 7b 4c 4f 47 20 3a 3a ult.! } {{LOG ::
6830: 66 6f 6f 20 62 61 72 7d 20 31 20 7b 75 6e 6b 6e foo bar} 1 {unkn
6840: 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 own subcommand "
6850: 62 61 72 22 3a 20 6e 61 6d 65 73 70 61 63 65 20 bar": namespace
6860: 3a 3a 20 64 6f 65 73 20 6e 6f 74 20 65 78 70 6f :: does not expo
6870: 72 74 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 73 7d rt any commands}
6880: 20 7b 4c 4f 47 20 3a 3a 66 6f 6f 20 62 61 72 7d {LOG ::foo bar}
6890: 20 62 6f 6f 20 68 6f 6f 20 30 20 7b 7b 4c 4f 47 boo hoo 0 {{LOG
68a0: 20 3a 3a 66 6f 6f 20 62 61 72 7d 20 31 20 7b 75 ::foo bar} 1 {u
68b0: 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e nknown subcomman
68c0: 64 20 22 62 61 72 22 3a 20 6e 61 6d 65 73 70 61 d "bar": namespa
68d0: 63 65 20 3a 3a 20 64 6f 65 73 20 6e 6f 74 20 65 ce :: does not e
68e0: 78 70 6f 72 74 20 61 6e 79 20 63 6f 6d 6d 61 6e xport any comman
68f0: 64 73 7d 20 7b 4c 4f 47 20 3a 3a 66 6f 6f 20 62 ds} {LOG ::foo b
6900: 61 72 7d 20 62 6f 6f 20 68 6f 6f 7d 20 7b 2d 6d ar} boo hoo} {-m
6910: 61 70 20 7b 7d 20 2d 6e 61 6d 65 73 70 61 63 65 ap {} -namespace
6920: 20 3a 3a 20 2d 70 61 72 61 6d 65 74 65 72 73 20 :: -parameters
6930: 7b 7d 20 2d 70 72 65 66 69 78 65 73 20 31 20 2d {} -prefixes 1 -
6940: 73 75 62 63 6f 6d 6d 61 6e 64 73 20 7b 7d 20 2d subcommands {} -
6950: 75 6e 6b 6e 6f 77 6e 20 62 61 72 7d 7d 0a 20 20 unknown bar}}.
6960: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 34 test namespace-4
6970: 37 2e 36 20 7b 65 6e 73 65 6d 62 6c 65 3a 20 75 7.6 {ensemble: u
6980: 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 nknown handler}
6990: 7b 0a 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 {. namespac
69a0: 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 e ensemble creat
69b0: 65 20 2d 63 6f 6d 6d 61 6e 64 20 66 6f 6f 20 2d e -command foo -
69c0: 75 6e 6b 6e 6f 77 6e 20 62 61 72 0a 20 20 20 20 unknown bar.
69d0: 20 20 70 72 6f 63 20 62 61 72 20 7b 61 72 67 73 proc bar {args
69e0: 7d 20 7b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a } {.************
69f0: 2a 2a 2a 0a 2a 2a 2a 20 31 39 37 37 2c 31 39 38 ***.*** 1977,198
6a00: 33 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 62 61 72 3 ****. bar
6a10: 20 7a 20 37 38 39 0a 20 20 20 20 20 20 6e 61 6d z 789. nam
6a20: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
6a30: 6f 0a 20 20 20 20 20 20 73 65 74 20 72 65 73 75 o. set resu
6a40: 6c 74 0a 21 20 7d 20 7b 7b 2d 6d 61 70 20 7b 7d lt.! } {{-map {}
6a50: 20 2d 6e 61 6d 65 73 70 61 63 65 20 3a 3a 66 6f -namespace ::fo
6a60: 6f 20 2d 70 72 65 66 69 78 65 73 20 31 20 2d 73 o -prefixes 1 -s
6a70: 75 62 63 6f 6d 6d 61 6e 64 73 20 78 20 2d 75 6e ubcommands x -un
6a80: 6b 6e 6f 77 6e 20 3a 3a 66 6f 6f 3a 3a 75 7d 20 known ::foo::u}
6a90: 58 58 58 20 31 32 33 20 3a 3a 66 6f 6f 3a 3a 62 XXX 123 ::foo::b
6aa0: 61 72 20 7b 79 20 34 35 36 7d 20 59 59 59 20 34 ar {y 456} YYY 4
6ab0: 35 36 20 3a 3a 66 6f 6f 3a 3a 62 61 72 20 7b 7a 56 ::foo::bar {z
6ac0: 20 37 38 39 7d 20 5a 5a 5a 20 37 38 39 7d 0a 20 789} ZZZ 789}.
6ad0: 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d test namespace-
6ae0: 34 38 2e 32 20 7b 65 6e 73 65 6d 62 6c 65 73 20 48.2 {ensembles
6af0: 61 6e 64 20 6e 61 6d 65 73 70 61 63 65 20 69 6d and namespace im
6b00: 70 6f 72 74 3a 20 65 78 69 73 74 73 7d 20 7b 0a port: exists} {.
6b10: 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 namespace
6b20: 65 76 61 6c 20 66 6f 6f 20 7b 0a 20 20 09 6e 61 eval foo {. .na
6b30: 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 mespace ensemble
6b40: 20 63 72 65 61 74 65 20 2d 63 6f 6d 6d 61 6e 64 create -command
6b50: 20 3a 3a 66 6f 6f 3a 3a 62 61 72 0a 2d 2d 2d 20 ::foo::bar.---
6b60: 31 39 37 37 2c 31 39 38 33 20 2d 2d 2d 2d 0a 20 1977,1983 ----.
6b70: 20 20 20 20 20 62 61 72 20 7a 20 37 38 39 0a 20 bar z 789.
6b80: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 namespace d
6b90: 65 6c 65 74 65 20 66 6f 6f 0a 20 20 20 20 20 20 elete foo.
6ba0: 73 65 74 20 72 65 73 75 6c 74 0a 21 20 7d 20 7b set result.! } {
6bb0: 7b 2d 6d 61 70 20 7b 7d 20 2d 6e 61 6d 65 73 70 {-map {} -namesp
6bc0: 61 63 65 20 3a 3a 66 6f 6f 20 2d 70 61 72 61 6d ace ::foo -param
6bd0: 65 74 65 72 73 20 7b 7d 20 2d 70 72 65 66 69 78 eters {} -prefix
6be0: 65 73 20 31 20 2d 73 75 62 63 6f 6d 6d 61 6e 64 es 1 -subcommand
6bf0: 73 20 78 20 2d 75 6e 6b 6e 6f 77 6e 20 3a 3a 66 s x -unknown ::f
6c00: 6f 6f 3a 3a 75 7d 20 58 58 58 20 31 32 33 20 3a oo::u} XXX 123 :
6c10: 3a 66 6f 6f 3a 3a 62 61 72 20 7b 79 20 34 35 36 :foo::bar {y 456
6c20: 7d 20 59 59 59 20 34 35 36 20 3a 3a 66 6f 6f 3a } YYY 456 ::foo:
6c30: 3a 62 61 72 20 7b 7a 20 37 38 39 7d 20 5a 5a 5a :bar {z 789} ZZZ
6c40: 20 37 38 39 7d 0a 20 20 74 65 73 74 20 6e 61 6d 789}. test nam
6c50: 65 73 70 61 63 65 2d 34 38 2e 32 20 7b 65 6e 73 espace-48.2 {ens
6c60: 65 6d 62 6c 65 73 20 61 6e 64 20 6e 61 6d 65 73 embles and names
6c70: 70 61 63 65 20 69 6d 70 6f 72 74 3a 20 65 78 69 pace import: exi
6c80: 73 74 73 7d 20 7b 0a 20 20 20 20 20 20 6e 61 6d sts} {. nam
6c90: 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 espace eval foo
6ca0: 7b 0a 20 20 09 6e 61 6d 65 73 70 61 63 65 20 65 {. .namespace e
6cb0: 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d nsemble create -
6cc0: 63 6f 6d 6d 61 6e 64 20 3a 3a 66 6f 6f 3a 3a 62 command ::foo::b
6cd0: 61 72 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ar.*************
6ce0: 2a 2a 0a 2a 2a 2a 20 32 36 31 39 2c 32 36 32 35 **.*** 2619,2625
6cf0: 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 72 65 6e 61 ****. rena
6d00: 6d 65 20 75 6e 6b 6e 6f 77 6e 2e 73 61 76 65 20 me unknown.save
6d10: 3a 3a 75 6e 6b 6e 6f 77 6e 0a 20 20 20 20 20 20 ::unknown.
6d20: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
6d30: 3a 20 5b 6c 69 73 74 20 6e 61 6d 65 73 70 61 63 : [list namespac
6d40: 65 20 75 6e 6b 6e 6f 77 6e 20 24 68 61 6e 64 6c e unknown $handl
6d50: 65 72 5d 0a 20 20 7d 20 2d 72 65 73 75 6c 74 20 er]. } -result
6d60: 53 55 43 43 45 53 53 0a 21 20 20 20 20 20 0a 20 SUCCESS.! .
6d70: 20 23 20 63 6c 65 61 6e 75 70 0a 20 20 63 61 74 # cleanup. cat
6d80: 63 68 20 7b 72 65 6e 61 6d 65 20 63 6d 64 31 20 ch {rename cmd1
6d90: 7b 7d 7d 0a 20 20 63 61 74 63 68 20 7b 75 6e 73 {}}. catch {uns
6da0: 65 74 20 6c 7d 0a 2d 2d 2d 20 32 36 31 39 2c 32 et l}.--- 2619,2
6db0: 38 34 30 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 72 840 ----. r
6dc0: 65 6e 61 6d 65 20 75 6e 6b 6e 6f 77 6e 2e 73 61 ename unknown.sa
6dd0: 76 65 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 20 20 20 ve ::unknown.
6de0: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
6df0: 6c 20 3a 3a 20 5b 6c 69 73 74 20 6e 61 6d 65 73 l :: [list names
6e00: 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 24 68 61 pace unknown $ha
6e10: 6e 64 6c 65 72 5d 0a 20 20 7d 20 2d 72 65 73 75 ndler]. } -resu
6e20: 6c 74 20 53 55 43 43 45 53 53 0a 21 20 0a 21 20 lt SUCCESS.! .!
6e30: 23 20 54 49 50 20 78 78 78 20 2d 20 65 6e 73 65 # TIP xxx - ense
6e40: 6d 62 6c 65 73 20 77 69 74 68 20 70 61 72 61 6d mbles with param
6e50: 65 74 65 72 73 0a 21 20 0a 21 20 74 65 73 74 20 eters.! .! test
6e60: 6e 61 6d 65 73 70 61 63 65 2d 35 33 2e 31 20 7b namespace-53.1 {
6e70: 65 6e 73 65 6d 62 6c 65 73 3a 20 70 61 72 61 6d ensembles: param
6e80: 65 74 65 72 73 7d 20 7b 0a 21 20 20 20 20 20 6e eters} {.! n
6e90: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 amespace eval ns
6ea0: 20 7b 0a 21 20 09 6e 61 6d 65 73 70 61 63 65 20 {.! .namespace
6eb0: 65 78 70 6f 72 74 20 78 0a 21 20 09 70 72 6f 63 export x.! .proc
6ec0: 20 78 20 7b 70 61 72 61 7d 20 7b 6c 69 73 74 20 x {para} {list
6ed0: 31 20 24 70 61 72 61 7d 0a 21 20 09 6e 61 6d 65 1 $para}.! .name
6ee0: 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 space ensemble c
6ef0: 72 65 61 74 65 20 2d 70 61 72 61 6d 65 74 65 72 reate -parameter
6f00: 73 20 7b 70 61 72 61 31 7d 0a 21 20 20 20 20 20 s {para1}.!
6f10: 7d 0a 21 20 20 20 20 20 6c 69 73 74 20 5b 69 6e }.! list [in
6f20: 66 6f 20 63 6f 6d 6d 61 6e 64 20 6e 73 5d 20 5b fo command ns] [
6f30: 6e 73 20 62 61 72 20 78 5d 20 5b 6e 61 6d 65 73 ns bar x] [names
6f40: 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 5d 20 pace delete ns]
6f50: 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 20 6e 73 [info command ns
6f60: 5d 0a 21 20 7d 20 7b 6e 73 20 7b 31 20 62 61 72 ].! } {ns {1 bar
6f70: 7d 20 7b 7d 20 7b 7d 7d 0a 21 20 0a 21 20 74 65 } {} {}}.! .! te
6f80: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 33 2e st namespace-53.
6f90: 32 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 70 61 2 {ensembles: pa
6fa0: 72 61 6d 65 74 65 72 73 7d 20 2d 73 65 74 75 70 rameters} -setup
6fb0: 20 7b 0a 21 20 20 20 20 20 6e 61 6d 65 73 70 61 {.! namespa
6fc0: 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 21 20 09 ce eval ns {.! .
6fd0: 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 namespace export
6fe0: 20 78 0a 21 20 09 70 72 6f 63 20 78 20 7b 70 61 x.! .proc x {pa
6ff0: 72 61 7d 20 7b 6c 69 73 74 20 31 20 24 70 61 72 ra} {list 1 $par
7000: 61 7d 0a 21 20 09 6e 61 6d 65 73 70 61 63 65 20 a}.! .namespace
7010: 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 0a ensemble create.
7020: 21 20 20 20 20 20 7d 0a 21 20 7d 20 2d 62 6f 64 ! }.! } -bod
7030: 79 20 7b 0a 21 20 20 20 20 20 6e 61 6d 65 73 70 y {.! namesp
7040: 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e ace ensemble con
7050: 66 69 67 75 72 65 20 6e 73 20 2d 70 61 72 61 6d figure ns -param
7060: 65 74 65 72 73 20 7b 70 61 72 61 31 7d 0a 21 20 eters {para1}.!
7070: 20 20 20 20 72 65 6e 61 6d 65 20 6e 73 20 66 6f rename ns fo
7080: 6f 0a 21 20 20 20 20 20 6c 69 73 74 20 5b 69 6e o.! list [in
7090: 66 6f 20 63 6f 6d 6d 61 6e 64 20 66 6f 6f 5d 20 fo command foo]
70a0: 5b 66 6f 6f 20 62 61 72 20 78 5d 20 5b 6e 61 6d [foo bar x] [nam
70b0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 espace delete ns
70c0: 5d 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 20 ] [info command
70d0: 66 6f 6f 5d 0a 21 20 7d 20 2d 72 65 73 75 6c 74 foo].! } -result
70e0: 20 7b 66 6f 6f 20 7b 31 20 62 61 72 7d 20 7b 7d {foo {1 bar} {}
70f0: 20 7b 7d 7d 0a 21 20 0a 21 20 74 65 73 74 20 6e {}}.! .! test n
7100: 61 6d 65 73 70 61 63 65 2d 35 33 2e 33 20 7b 65 amespace-53.3 {e
7110: 6e 73 65 6d 62 6c 65 73 3a 20 70 61 72 61 6d 65 nsembles: parame
7120: 74 65 72 73 7d 20 2d 73 65 74 75 70 20 7b 0a 21 ters} -setup {.!
7130: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 namespace e
7140: 76 61 6c 20 6e 73 20 7b 0a 21 20 09 6e 61 6d 65 val ns {.! .name
7150: 73 70 61 63 65 20 65 78 70 6f 72 74 20 78 2a 0a space export x*.
7160: 21 20 09 70 72 6f 63 20 78 31 20 7b 70 61 72 61 ! .proc x1 {para
7170: 7d 20 7b 6c 69 73 74 20 31 20 24 70 61 72 61 7d } {list 1 $para}
7180: 0a 21 20 09 70 72 6f 63 20 78 32 20 7b 70 61 72 .! .proc x2 {par
7190: 61 7d 20 7b 6c 69 73 74 20 32 20 24 70 61 72 61 a} {list 2 $para
71a0: 7d 0a 21 20 09 6e 61 6d 65 73 70 61 63 65 20 65 }.! .namespace e
71b0: 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d nsemble create -
71c0: 70 61 72 61 6d 65 74 65 72 73 20 70 61 72 61 6d parameters param
71d0: 31 0a 21 20 20 20 20 20 7d 0a 21 20 7d 20 2d 62 1.! }.! } -b
71e0: 6f 64 79 20 7b 0a 21 20 20 20 20 20 73 65 74 20 ody {.! set
71f0: 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5b 6e 73 result [list [ns
7200: 20 78 32 20 78 31 5d 20 5b 6e 73 20 78 31 20 78 x2 x1] [ns x1 x
7210: 32 5d 5d 0a 21 20 20 20 20 20 6c 61 70 70 65 6e 2]].! lappen
7220: 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 d result [catch
7230: 7b 6e 73 20 78 7d 20 6d 73 67 5d 20 24 6d 73 67 {ns x} msg] $msg
7240: 0a 21 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 .! lappend r
7250: 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 esult [catch {ns
7260: 20 78 20 78 7d 20 6d 73 67 5d 20 24 6d 73 67 0a x x} msg] $msg.
7270: 21 20 20 20 20 20 72 65 6e 61 6d 65 20 6e 73 20 ! rename ns
7280: 7b 7d 0a 21 20 20 20 20 20 6c 61 70 70 65 6e 64 {}.! lappend
7290: 20 72 65 73 75 6c 74 20 5b 69 6e 66 6f 20 63 6f result [info co
72a0: 6d 6d 61 6e 64 20 6e 73 3a 3a 78 31 5d 0a 21 20 mmand ns::x1].!
72b0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 namespace de
72c0: 6c 65 74 65 20 6e 73 0a 21 20 20 20 20 20 6c 61 lete ns.! la
72d0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 69 6e ppend result [in
72e0: 66 6f 20 63 6f 6d 6d 61 6e 64 20 6e 73 3a 3a 78 fo command ns::x
72f0: 31 5d 0a 21 20 7d 20 2d 72 65 73 75 6c 74 5c 0a 1].! } -result\.
7300: 21 20 20 20 20 7b 7b 31 20 78 32 7d 20 7b 32 20 ! {{1 x2} {2
7310: 78 31 7d 5c 0a 21 20 20 20 20 20 31 20 7b 77 72 x1}\.! 1 {wr
7320: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 ong # args: shou
7330: 6c 64 20 62 65 20 22 6e 73 20 70 61 72 61 6d 31 ld be "ns param1
7340: 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 subcommand ?arg
7350: 75 6d 65 6e 74 20 2e 2e 2e 3f 22 7d 5c 0a 21 20 ument ...?"}\.!
7360: 20 20 20 20 31 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 1 {unknown o
7370: 72 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62 63 r ambiguous subc
7380: 6f 6d 6d 61 6e 64 20 22 78 22 3a 20 6d 75 73 74 ommand "x": must
7390: 20 62 65 20 78 31 2c 20 6f 72 20 78 32 7d 5c 0a be x1, or x2}\.
73a0: 21 20 20 20 20 20 3a 3a 6e 73 3a 3a 78 31 20 7b ! ::ns::x1 {
73b0: 7d 7d 0a 21 20 0a 21 20 74 65 73 74 20 6e 61 6d }}.! .! test nam
73c0: 65 73 70 61 63 65 2d 35 33 2e 34 20 7b 65 6e 73 espace-53.4 {ens
73d0: 65 6d 62 6c 65 73 3a 20 70 61 72 61 6d 65 74 65 embles: paramete
73e0: 72 73 7d 20 2d 73 65 74 75 70 20 7b 0a 21 20 20 rs} -setup {.!
73f0: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
7400: 6c 20 6e 73 20 7b 0a 21 20 09 6e 61 6d 65 73 70 l ns {.! .namesp
7410: 61 63 65 20 65 78 70 6f 72 74 20 78 2a 0a 21 20 ace export x*.!
7420: 09 70 72 6f 63 20 78 31 20 7b 61 31 20 61 32 7d .proc x1 {a1 a2}
7430: 20 7b 6c 69 73 74 20 31 20 24 61 31 20 24 61 32 {list 1 $a1 $a2
7440: 7d 0a 21 20 09 70 72 6f 63 20 78 32 20 7b 61 31 }.! .proc x2 {a1
7450: 20 61 32 7d 20 7b 6c 69 73 74 20 32 20 24 61 31 a2} {list 2 $a1
7460: 20 24 61 32 7d 0a 21 20 09 70 72 6f 63 20 78 33 $a2}.! .proc x3
7470: 20 7b 61 31 20 61 32 7d 20 7b 6c 69 73 74 20 33 {a1 a2} {list 3
7480: 20 24 61 31 20 24 61 32 7d 0a 21 20 09 6e 61 6d $a1 $a2}.! .nam
7490: 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 espace ensemble
74a0: 63 72 65 61 74 65 0a 21 20 20 20 20 20 7d 0a 21 create.! }.!
74b0: 20 7d 20 2d 62 6f 64 79 20 7b 0a 21 20 20 20 20 } -body {.!
74c0: 20 73 65 74 20 72 65 73 75 6c 74 20 7b 7d 0a 21 set result {}.!
74d0: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 lappend res
74e0: 75 6c 74 20 5b 6e 73 20 78 31 20 78 32 20 78 33 ult [ns x1 x2 x3
74f0: 5d 0a 21 20 20 20 20 20 6e 61 6d 65 73 70 61 63 ].! namespac
7500: 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 e ensemble confi
7510: 67 75 72 65 20 6e 73 20 2d 70 61 72 61 6d 65 74 gure ns -paramet
7520: 65 72 73 20 70 31 0a 21 20 20 20 20 20 6c 61 70 ers p1.! lap
7530: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 6e 73 20 pend result [ns
7540: 78 31 20 78 32 20 78 33 5d 0a 21 20 20 20 20 20 x1 x2 x3].!
7550: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
7560: 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 20 le configure ns
7570: 2d 70 61 72 61 6d 65 74 65 72 73 20 7b 70 31 20 -parameters {p1
7580: 70 32 7d 0a 21 20 20 20 20 20 6c 61 70 70 65 6e p2}.! lappen
7590: 64 20 72 65 73 75 6c 74 20 5b 6e 73 20 78 31 20 d result [ns x1
75a0: 78 32 20 78 33 5d 0a 21 20 7d 20 2d 63 6c 65 61 x2 x3].! } -clea
75b0: 6e 75 70 20 7b 0a 21 20 20 20 20 20 6e 61 6d 65 nup {.! name
75c0: 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 0a space delete ns.
75d0: 21 20 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 31 20 ! } -result {{1
75e0: 78 32 20 78 33 7d 20 7b 32 20 78 31 20 78 33 7d x2 x3} {2 x1 x3}
75f0: 20 7b 33 20 78 31 20 78 32 7d 7d 0a 21 20 0a 21 {3 x1 x2}}.! .!
7600: 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d test namespace-
7610: 35 33 2e 35 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 53.5 {ensembles:
7620: 20 70 61 72 61 6d 65 74 65 72 73 7d 20 2d 73 65 parameters} -se
7630: 74 75 70 20 7b 0a 21 20 20 20 20 20 6e 61 6d 65 tup {.! name
7640: 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a space eval ns {.
7650: 21 20 09 6e 61 6d 65 73 70 61 63 65 20 65 78 70 ! .namespace exp
7660: 6f 72 74 20 78 2a 0a 21 20 09 70 72 6f 63 20 78 ort x*.! .proc x
7670: 31 20 7b 70 61 72 61 7d 20 7b 6c 69 73 74 20 31 1 {para} {list 1
7680: 20 24 70 61 72 61 7d 0a 21 20 09 70 72 6f 63 20 $para}.! .proc
7690: 78 32 20 7b 70 61 72 61 7d 20 7b 6c 69 73 74 20 x2 {para} {list
76a0: 32 20 24 70 61 72 61 7d 0a 21 20 09 70 72 6f 63 2 $para}.! .proc
76b0: 20 78 33 20 7b 70 61 72 61 7d 20 7b 6c 69 73 74 x3 {para} {list
76c0: 20 33 20 24 70 61 72 61 7d 0a 21 20 09 6e 61 6d 3 $para}.! .nam
76d0: 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 espace ensemble
76e0: 63 72 65 61 74 65 0a 21 20 20 20 20 20 7d 0a 21 create.! }.!
76f0: 20 7d 20 2d 62 6f 64 79 20 7b 0a 21 20 20 20 20 } -body {.!
7700: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 set result [lis
7710: 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 20 78 t [catch {ns x x
7720: 31 7d 20 6d 73 67 5d 20 24 6d 73 67 5d 0a 21 20 1} msg] $msg].!
7730: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 lappend resu
7740: 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 31 lt [catch {ns x1
7750: 20 78 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 21 20 x} msg] $msg.!
7760: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 6e namespace en
7770: 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 semble configure
7780: 20 6e 73 20 2d 70 61 72 61 6d 65 74 65 72 73 20 ns -parameters
7790: 70 31 0a 21 20 20 20 20 20 6c 61 70 70 65 6e 64 p1.! lappend
77a0: 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b result [catch {
77b0: 6e 73 20 78 31 20 78 7d 20 6d 73 67 5d 20 24 6d ns x1 x} msg] $m
77c0: 73 67 0a 21 20 20 20 20 20 6c 61 70 70 65 6e 64 sg.! lappend
77d0: 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b result [catch {
77e0: 6e 73 20 78 20 78 31 7d 20 6d 73 67 5d 20 24 6d ns x x1} msg] $m
77f0: 73 67 0a 21 20 7d 20 2d 63 6c 65 61 6e 75 70 20 sg.! } -cleanup
7800: 7b 0a 21 20 20 20 20 20 6e 61 6d 65 73 70 61 63 {.! namespac
7810: 65 20 64 65 6c 65 74 65 20 6e 73 0a 21 20 7d 20 e delete ns.! }
7820: 2d 72 65 73 75 6c 74 5c 0a 21 20 20 20 20 7b 31 -result\.! {1
7830: 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 {unknown or amb
7840: 69 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e iguous subcomman
7850: 64 20 22 78 22 3a 20 6d 75 73 74 20 62 65 20 78 d "x": must be x
7860: 31 2c 20 78 32 2c 20 6f 72 20 78 33 7d 5c 0a 21 1, x2, or x3}\.!
7870: 20 20 20 20 20 30 20 7b 31 20 78 7d 5c 0a 21 20 0 {1 x}\.!
7880: 20 20 20 20 31 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 1 {unknown o
7890: 72 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62 63 r ambiguous subc
78a0: 6f 6d 6d 61 6e 64 20 22 78 22 3a 20 6d 75 73 74 ommand "x": must
78b0: 20 62 65 20 78 31 2c 20 78 32 2c 20 6f 72 20 78 be x1, x2, or x
78c0: 33 7d 5c 0a 21 20 20 20 20 20 30 20 7b 31 20 78 3}\.! 0 {1 x
78d0: 7d 7d 0a 21 20 0a 21 20 74 65 73 74 20 6e 61 6d }}.! .! test nam
78e0: 65 73 70 61 63 65 2d 35 33 2e 36 20 7b 65 6e 73 espace-53.6 {ens
78f0: 65 6d 62 6c 65 73 3a 20 6e 65 73 74 65 64 7d 20 embles: nested}
7900: 2d 73 65 74 75 70 20 7b 0a 21 20 20 20 20 20 6e -setup {.! n
7910: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 amespace eval ns
7920: 20 7b 0a 21 20 09 6e 61 6d 65 73 70 61 63 65 20 {.! .namespace
7930: 65 78 70 6f 72 74 20 78 2a 0a 21 20 09 6e 61 6d export x*.! .nam
7940: 65 73 70 61 63 65 20 65 76 61 6c 20 78 30 20 7b espace eval x0 {
7950: 0a 21 20 09 20 20 20 20 70 72 6f 63 20 7a 20 7b .! . proc z {
7960: 61 72 67 73 7d 20 7b 6c 69 73 74 20 30 20 24 61 args} {list 0 $a
7970: 72 67 73 7d 0a 21 20 09 20 20 20 20 6e 61 6d 65 rgs}.! . name
7980: 73 70 61 63 65 20 65 78 70 6f 72 74 20 7a 0a 21 space export z.!
7990: 20 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 . namespace
79a0: 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 65 0a ensemble create.
79b0: 21 20 09 7d 0a 21 20 09 70 72 6f 63 20 78 31 20 ! .}.! .proc x1
79c0: 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 31 20 24 {args} {list 1 $
79d0: 61 72 67 73 7d 0a 21 20 09 70 72 6f 63 20 78 32 args}.! .proc x2
79e0: 20 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 32 20 {args} {list 2
79f0: 24 61 72 67 73 7d 0a 21 20 09 70 72 6f 63 20 78 $args}.! .proc x
7a00: 33 20 7b 61 72 67 73 7d 20 7b 6c 69 73 74 20 33 3 {args} {list 3
7a10: 20 24 61 72 67 73 7d 0a 21 20 09 6e 61 6d 65 73 $args}.! .names
7a20: 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 pace ensemble cr
7a30: 65 61 74 65 20 2d 70 61 72 61 6d 65 74 65 72 73 eate -parameters
7a40: 20 70 0a 21 20 20 20 20 20 7d 0a 21 20 7d 20 2d p.! }.! } -
7a50: 62 6f 64 79 20 7b 0a 21 20 20 20 20 20 6c 69 73 body {.! lis
7a60: 74 20 5b 6e 73 20 7a 20 78 30 5d 20 5b 6e 73 20 t [ns z x0] [ns
7a70: 7a 20 78 31 5d 20 5b 6e 73 20 7a 20 78 32 5d 20 z x1] [ns z x2]
7a80: 5b 6e 73 20 7a 20 78 33 5d 0a 21 20 7d 20 2d 63 [ns z x3].! } -c
7a90: 6c 65 61 6e 75 70 20 7b 0a 21 20 20 20 20 20 6e leanup {.! n
7aa0: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
7ab0: 6e 73 0a 21 20 7d 20 2d 72 65 73 75 6c 74 20 7b ns.! } -result {
7ac0: 7b 30 20 7b 7d 7d 20 7b 31 20 7a 7d 20 7b 32 20 {0 {}} {1 z} {2
7ad0: 7a 7d 20 7b 33 20 7a 7d 7d 0a 21 20 0a 21 20 74 z} {3 z}}.! .! t
7ae0: 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 33 est namespace-53
7af0: 2e 37 20 7b 65 6e 73 65 6d 62 6c 65 73 3a 20 70 .7 {ensembles: p
7b00: 61 72 61 6d 65 74 65 72 73 20 26 20 77 72 6f 6e arameters & wron
7b10: 67 20 23 20 61 72 67 73 7d 20 2d 73 65 74 75 70 g # args} -setup
7b20: 20 7b 0a 21 20 20 20 20 20 6e 61 6d 65 73 70 61 {.! namespa
7b30: 63 65 20 65 76 61 6c 20 6e 73 20 7b 0a 21 20 09 ce eval ns {.! .
7b40: 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 namespace export
7b50: 20 78 2a 0a 21 20 09 70 72 6f 63 20 78 31 20 7b x*.! .proc x1 {
7b60: 61 31 20 61 32 20 61 33 20 61 34 7d 20 7b 6c 69 a1 a2 a3 a4} {li
7b70: 73 74 20 78 31 20 24 61 31 20 24 61 32 20 24 61 st x1 $a1 $a2 $a
7b80: 33 20 24 61 34 7d 0a 21 20 09 6e 61 6d 65 73 70 3 $a4}.! .namesp
7b90: 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 ace ensemble cre
7ba0: 61 74 65 20 2d 70 61 72 61 6d 65 74 65 72 73 20 ate -parameters
7bb0: 70 31 0a 21 20 20 20 20 20 7d 0a 21 20 7d 20 2d p1.! }.! } -
7bc0: 62 6f 64 79 20 7b 0a 21 20 20 20 20 20 73 65 74 body {.! set
7bd0: 20 72 65 73 75 6c 74 20 7b 7d 0a 21 20 20 20 20 result {}.!
7be0: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 lappend result
7bf0: 5b 63 61 74 63 68 20 7b 6e 73 7d 20 6d 73 67 5d [catch {ns} msg]
7c00: 20 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 70 70 $msg.! lapp
7c10: 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 end result [catc
7c20: 68 20 7b 6e 73 20 78 31 7d 20 6d 73 67 5d 20 24 h {ns x1} msg] $
7c30: 6d 73 67 0a 21 20 20 20 20 20 6c 61 70 70 65 6e msg.! lappen
7c40: 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 d result [catch
7c50: 7b 6e 73 20 78 31 20 78 31 7d 20 6d 73 67 5d 20 {ns x1 x1} msg]
7c60: 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 70 70 65 $msg.! lappe
7c70: 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 nd result [catch
7c80: 20 7b 6e 73 20 78 31 20 78 31 20 78 31 7d 20 6d {ns x1 x1 x1} m
7c90: 73 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 6c sg] $msg.! l
7ca0: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 append result [c
7cb0: 61 74 63 68 20 7b 6e 73 20 78 31 20 78 31 20 78 atch {ns x1 x1 x
7cc0: 31 20 78 31 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 1 x1} msg] $msg.
7cd0: 21 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 ! lappend re
7ce0: 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 sult [catch {ns
7cf0: 78 31 20 78 31 20 78 31 20 78 31 20 78 31 7d 20 x1 x1 x1 x1 x1}
7d00: 6d 73 67 5d 20 24 6d 73 67 0a 21 20 7d 20 2d 63 msg] $msg.! } -c
7d10: 6c 65 61 6e 75 70 20 7b 0a 21 20 20 20 20 20 6e leanup {.! n
7d20: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
7d30: 6e 73 0a 21 20 7d 20 2d 72 65 73 75 6c 74 5c 0a ns.! } -result\.
7d40: 21 20 20 20 20 7b 31 20 7b 77 72 6f 6e 67 20 23 ! {1 {wrong #
7d50: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
7d60: 20 22 6e 73 20 70 31 20 73 75 62 63 6f 6d 6d 61 "ns p1 subcomma
7d70: 6e 64 20 3f 61 72 67 75 6d 65 6e 74 20 2e 2e 2e nd ?argument ...
7d80: 3f 22 7d 5c 0a 21 20 20 20 20 20 31 20 7b 77 72 ?"}\.! 1 {wr
7d90: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 ong # args: shou
7da0: 6c 64 20 62 65 20 22 6e 73 20 70 31 20 73 75 62 ld be "ns p1 sub
7db0: 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 75 6d 65 6e command ?argumen
7dc0: 74 20 2e 2e 2e 3f 22 7d 5c 0a 21 20 20 20 20 20 t ...?"}\.!
7dd0: 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 1 {wrong # args:
7de0: 20 73 68 6f 75 6c 64 20 62 65 20 22 6e 73 20 78 should be "ns x
7df0: 31 20 78 31 20 61 32 20 61 33 20 61 34 22 7d 5c 1 x1 a2 a3 a4"}\
7e00: 0a 21 20 20 20 20 20 31 20 7b 77 72 6f 6e 67 20 .! 1 {wrong
7e10: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
7e20: 65 20 22 6e 73 20 78 31 20 78 31 20 61 32 20 61 e "ns x1 x1 a2 a
7e30: 33 20 61 34 22 7d 5c 0a 21 20 20 20 20 20 31 20 3 a4"}\.! 1
7e40: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 {wrong # args: s
7e50: 68 6f 75 6c 64 20 62 65 20 22 6e 73 20 78 31 20 hould be "ns x1
7e60: 78 31 20 61 32 20 61 33 20 61 34 22 7d 5c 0a 21 x1 a2 a3 a4"}\.!
7e70: 20 20 20 20 20 30 20 7b 78 31 20 78 31 20 78 31 0 {x1 x1 x1
7e80: 20 78 31 20 78 31 7d 7d 0a 21 20 0a 21 20 74 65 x1 x1}}.! .! te
7e90: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 33 2e st namespace-53.
7ea0: 38 20 7b 65 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 8 {ensemble: unk
7eb0: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 20 63 68 61 nown handler cha
7ec0: 6e 67 69 6e 67 20 2d 70 61 72 61 6d 65 74 65 72 nging -parameter
7ed0: 73 7d 20 2d 73 65 74 75 70 20 7b 0a 21 20 20 20 s} -setup {.!
7ee0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
7ef0: 20 6e 73 20 7b 0a 21 20 09 6e 61 6d 65 73 70 61 ns {.! .namespa
7f00: 63 65 20 65 78 70 6f 72 74 20 78 2a 0a 21 20 09 ce export x*.! .
7f10: 70 72 6f 63 20 78 31 20 7b 61 31 7d 20 7b 6c 69 proc x1 {a1} {li
7f20: 73 74 20 31 20 24 61 31 7d 0a 21 20 09 70 72 6f st 1 $a1}.! .pro
7f30: 63 20 4d 61 67 69 63 20 7b 65 6e 73 65 6d 62 6c c Magic {ensembl
7f40: 65 20 73 75 62 63 6d 64 20 61 72 67 73 7d 20 7b e subcmd args} {
7f50: 0a 21 20 09 20 20 20 20 6e 61 6d 65 73 70 61 63 .! . namespac
7f60: 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 e ensemble confi
7f70: 67 75 72 65 20 24 65 6e 73 65 6d 62 6c 65 5c 0a gure $ensemble\.
7f80: 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 !
7f90: 2d 70 61 72 61 6d 65 74 65 72 73 20 5b 6c 72 61 -parameters [lra
7fa0: 6e 67 65 20 70 31 20 5b 6c 6c 65 6e 67 74 68 20 nge p1 [llength
7fb0: 5b 0a 21 20 20 20 20 20 20 20 20 20 20 20 20 20 [.!
7fc0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 6e namespace en
7fd0: 73 65 6d 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 semble configure
7fe0: 20 24 65 6e 73 65 6d 62 6c 65 20 2d 70 61 72 61 $ensemble -para
7ff0: 6d 65 74 65 72 73 0a 21 20 20 20 20 20 20 20 20 meters.!
8000: 20 20 20 20 20 20 20 5d 5d 20 30 5d 0a 21 20 20 ]] 0].!
8010: 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 0a list.
8020: 21 20 09 7d 0a 21 20 09 6e 61 6d 65 73 70 61 63 ! .}.! .namespac
8030: 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 e ensemble creat
8040: 65 20 2d 75 6e 6b 6e 6f 77 6e 20 3a 3a 6e 73 3a e -unknown ::ns:
8050: 3a 4d 61 67 69 63 0a 21 20 20 20 20 20 7d 0a 21 :Magic.! }.!
8060: 20 7d 20 2d 62 6f 64 79 20 7b 0a 21 20 20 20 20 } -body {.!
8070: 20 73 65 74 20 72 65 73 75 6c 74 20 7b 7d 0a 21 set result {}.!
8080: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 lappend res
8090: 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 ult [catch {ns x
80a0: 31 20 78 32 7d 20 6d 73 67 5d 20 24 6d 73 67 20 1 x2} msg] $msg
80b0: 5b 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d [namespace ensem
80c0: 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 ble configure ns
80d0: 20 2d 70 61 72 61 6d 65 74 65 72 73 5d 0a 21 20 -parameters].!
80e0: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 lappend resu
80f0: 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 32 lt [catch {ns x2
8100: 20 78 31 7d 20 6d 73 67 5d 20 24 6d 73 67 20 5b x1} msg] $msg [
8110: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
8120: 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 20 le configure ns
8130: 2d 70 61 72 61 6d 65 74 65 72 73 5d 0a 21 20 20 -parameters].!
8140: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c lappend resul
8150: 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 32 20 t [catch {ns x2
8160: 78 33 7d 20 6d 73 67 5d 20 24 6d 73 67 20 5b 6e x3} msg] $msg [n
8170: 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c amespace ensembl
8180: 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 20 2d e configure ns -
8190: 70 61 72 61 6d 65 74 65 72 73 5d 0a 21 20 7d 20 parameters].! }
81a0: 2d 63 6c 65 61 6e 75 70 20 7b 0a 21 20 20 20 20 -cleanup {.!
81b0: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
81c0: 65 20 6e 73 0a 21 20 7d 20 2d 72 65 73 75 6c 74 e ns.! } -result
81d0: 5c 0a 21 20 20 20 20 7b 30 20 7b 31 20 78 32 7d \.! {0 {1 x2}
81e0: 20 7b 7d 5c 0a 21 20 20 20 20 20 30 20 7b 31 20 {}\.! 0 {1
81f0: 78 32 7d 20 70 31 5c 0a 21 20 20 20 20 20 31 20 x2} p1\.! 1
8200: 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 {unknown or ambi
8210: 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 guous subcommand
8220: 20 22 78 32 22 3a 20 6d 75 73 74 20 62 65 20 78 "x2": must be x
8230: 31 7d 20 7b 7d 7d 0a 21 20 0a 21 20 74 65 73 74 1} {}}.! .! test
8240: 20 6e 61 6d 65 73 70 61 63 65 2d 35 33 2e 39 20 namespace-53.9
8250: 7b 65 6e 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f {ensemble: unkno
8260: 77 6e 20 68 61 6e 64 6c 65 72 20 63 68 61 6e 67 wn handler chang
8270: 69 6e 67 20 2d 70 61 72 61 6d 65 74 65 72 73 2c ing -parameters,
8280: 5c 0a 21 20 20 20 74 68 65 72 65 62 79 20 65 61 \.! thereby ea
8290: 74 69 6e 67 20 61 6c 6c 20 61 72 67 73 7d 20 2d ting all args} -
82a0: 73 65 74 75 70 20 7b 0a 21 20 20 20 20 20 6e 61 setup {.! na
82b0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6e 73 20 mespace eval ns
82c0: 7b 0a 21 20 09 6e 61 6d 65 73 70 61 63 65 20 65 {.! .namespace e
82d0: 78 70 6f 72 74 20 78 2a 0a 21 20 09 70 72 6f 63 xport x*.! .proc
82e0: 20 78 31 20 7b 61 72 67 73 7d 20 7b 6c 69 73 74 x1 {args} {list
82f0: 20 31 20 24 61 72 67 73 7d 0a 21 20 09 70 72 6f 1 $args}.! .pro
8300: 63 20 4d 61 67 69 63 20 7b 65 6e 73 65 6d 62 6c c Magic {ensembl
8310: 65 20 73 75 62 63 6d 64 20 61 72 67 73 7d 20 7b e subcmd args} {
8320: 0a 21 20 09 20 20 20 20 6e 61 6d 65 73 70 61 63 .! . namespac
8330: 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f 6e 66 69 e ensemble confi
8340: 67 75 72 65 20 24 65 6e 73 65 6d 62 6c 65 5c 0a gure $ensemble\.
8350: 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 !
8360: 2d 70 61 72 61 6d 65 74 65 72 73 20 7b 70 31 20 -parameters {p1
8370: 70 32 20 70 33 20 70 34 20 70 35 7d 0a 21 20 20 p2 p3 p4 p5}.!
8380: 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 0a list.
8390: 21 20 09 7d 0a 21 20 09 6e 61 6d 65 73 70 61 63 ! .}.! .namespac
83a0: 65 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 e ensemble creat
83b0: 65 20 2d 75 6e 6b 6e 6f 77 6e 20 3a 3a 6e 73 3a e -unknown ::ns:
83c0: 3a 4d 61 67 69 63 0a 21 20 20 20 20 20 7d 0a 21 :Magic.! }.!
83d0: 20 7d 20 2d 62 6f 64 79 20 7b 0a 21 20 20 20 20 } -body {.!
83e0: 20 73 65 74 20 72 65 73 75 6c 74 20 7b 7d 0a 21 set result {}.!
83f0: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 lappend res
8400: 75 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 ult [catch {ns x
8410: 31 20 78 32 7d 20 6d 73 67 5d 20 24 6d 73 67 20 1 x2} msg] $msg
8420: 5b 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d [namespace ensem
8430: 62 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 ble configure ns
8440: 20 2d 70 61 72 61 6d 65 74 65 72 73 5d 0a 21 20 -parameters].!
8450: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 lappend resu
8460: 6c 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 78 32 lt [catch {ns x2
8470: 20 78 31 7d 20 6d 73 67 5d 20 24 6d 73 67 20 5b x1} msg] $msg [
8480: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
8490: 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 20 le configure ns
84a0: 2d 70 61 72 61 6d 65 74 65 72 73 5d 0a 21 20 20 -parameters].!
84b0: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c lappend resul
84c0: 74 20 5b 63 61 74 63 68 20 7b 6e 73 20 61 31 20 t [catch {ns a1
84d0: 61 32 20 61 33 20 61 34 20 61 35 20 78 31 7d 20 a2 a3 a4 a5 x1}
84e0: 6d 73 67 5d 20 24 6d 73 67 20 5b 6e 61 6d 65 73 msg] $msg [names
84f0: 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 6f pace ensemble co
8500: 6e 66 69 67 75 72 65 20 6e 73 20 2d 70 61 72 61 nfigure ns -para
8510: 6d 65 74 65 72 73 5d 0a 21 20 7d 20 2d 63 6c 65 meters].! } -cle
8520: 61 6e 75 70 20 7b 0a 21 20 20 20 20 20 6e 61 6d anup {.! nam
8530: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 6e 73 espace delete ns
8540: 0a 21 20 7d 20 2d 72 65 73 75 6c 74 5c 0a 21 20 .! } -result\.!
8550: 20 20 20 7b 30 20 7b 31 20 78 32 7d 20 7b 7d 5c {0 {1 x2} {}\
8560: 0a 21 20 20 20 20 20 31 20 7b 77 72 6f 6e 67 20 .! 1 {wrong
8570: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
8580: 65 20 22 6e 73 20 70 31 20 70 32 20 70 33 20 70 e "ns p1 p2 p3 p
8590: 34 20 70 35 20 73 75 62 63 6f 6d 6d 61 6e 64 20 4 p5 subcommand
85a0: 3f 61 72 67 75 6d 65 6e 74 20 2e 2e 2e 3f 22 7d ?argument ...?"}
85b0: 20 7b 70 31 20 70 32 20 70 33 20 70 34 20 70 35 {p1 p2 p3 p4 p5
85c0: 7d 5c 0a 21 20 20 20 20 20 30 20 7b 31 20 7b 61 }\.! 0 {1 {a
85d0: 31 20 61 32 20 61 33 20 61 34 20 61 35 7d 7d 20 1 a2 a3 a4 a5}}
85e0: 7b 70 31 20 70 32 20 70 33 20 70 34 20 70 35 7d {p1 p2 p3 p4 p5}
85f0: 7d 0a 21 20 0a 21 20 74 65 73 74 20 6e 61 6d 65 }.! .! test name
8600: 73 70 61 63 65 2d 35 33 2e 31 30 20 7b 65 6e 73 space-53.10 {ens
8610: 65 6d 62 6c 65 73 3a 20 6e 65 73 74 65 64 20 72 embles: nested r
8620: 65 77 72 69 74 65 7d 20 2d 73 65 74 75 70 20 7b ewrite} -setup {
8630: 0a 21 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 .! namespace
8640: 20 65 76 61 6c 20 6e 73 20 7b 0a 21 20 09 6e 61 eval ns {.! .na
8650: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 78 mespace export x
8660: 0a 21 20 09 6e 61 6d 65 73 70 61 63 65 20 65 76 .! .namespace ev
8670: 61 6c 20 78 20 7b 0a 21 20 09 20 20 20 20 70 72 al x {.! . pr
8680: 6f 63 20 7a 30 20 7b 7d 20 7b 6c 69 73 74 20 30 oc z0 {} {list 0
8690: 7d 0a 21 20 09 20 20 20 20 70 72 6f 63 20 7a 31 }.! . proc z1
86a0: 20 7b 61 31 7d 20 7b 6c 69 73 74 20 31 20 24 61 {a1} {list 1 $a
86b0: 31 7d 0a 21 20 09 20 20 20 20 70 72 6f 63 20 7a 1}.! . proc z
86c0: 32 20 7b 61 31 20 61 32 7d 20 7b 6c 69 73 74 20 2 {a1 a2} {list
86d0: 32 20 24 61 31 20 24 61 32 7d 0a 21 20 09 20 20 2 $a1 $a2}.! .
86e0: 20 20 70 72 6f 63 20 7a 33 20 7b 61 31 20 61 32 proc z3 {a1 a2
86f0: 20 61 33 7d 20 7b 6c 69 73 74 20 33 20 24 61 31 a3} {list 3 $a1
8700: 20 24 61 32 20 24 61 33 7d 0a 21 20 09 20 20 20 $a2 $a3}.! .
8710: 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 namespace expor
8720: 74 20 7a 2a 0a 21 20 09 20 20 20 20 6e 61 6d 65 t z*.! . name
8730: 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 20 63 space ensemble c
8740: 72 65 61 74 65 0a 21 20 09 7d 0a 21 20 09 6e 61 reate.! .}.! .na
8750: 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 6c 65 mespace ensemble
8760: 20 63 72 65 61 74 65 20 2d 70 61 72 61 6d 65 74 create -paramet
8770: 65 72 73 20 70 0a 21 20 20 20 20 20 7d 0a 21 20 ers p.! }.!
8780: 7d 20 2d 62 6f 64 79 20 7b 0a 21 20 20 20 20 20 } -body {.!
8790: 73 65 74 20 72 65 73 75 6c 74 20 7b 7d 0a 21 20 set result {}.!
87a0: 20 20 20 20 23 20 49 6e 20 74 68 65 73 65 20 63 # In these c
87b0: 61 73 65 73 2c 20 70 61 72 73 69 6e 67 20 74 68 ases, parsing th
87c0: 65 20 73 75 62 65 6e 73 65 6d 62 6c 65 20 64 6f e subensemble do
87d0: 65 73 20 6e 6f 74 20 67 72 61 62 20 61 20 6e 65 es not grab a ne
87e0: 77 20 77 6f 72 64 2e 0a 21 20 20 20 20 20 6c 61 w word..! la
87f0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
8800: 74 63 68 20 7b 6e 73 20 7a 30 20 78 7d 20 6d 73 tch {ns z0 x} ms
8810: 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 g] $msg.! la
8820: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
8830: 74 63 68 20 7b 6e 73 20 7a 31 20 78 7d 20 6d 73 tch {ns z1 x} ms
8840: 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 g] $msg.! la
8850: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
8860: 74 63 68 20 7b 6e 73 20 7a 32 20 78 7d 20 6d 73 tch {ns z2 x} ms
8870: 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 g] $msg.! la
8880: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
8890: 74 63 68 20 7b 6e 73 20 7a 32 20 78 20 76 7d 20 tch {ns z2 x v}
88a0: 6d 73 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 msg] $msg.!
88b0: 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d 62 namespace ensemb
88c0: 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 6e 73 3a le configure ns:
88d0: 3a 78 20 2d 70 61 72 61 6d 65 74 65 72 73 20 71 :x -parameters q
88e0: 31 0a 21 20 20 20 20 20 23 20 49 6e 20 74 68 65 1.! # In the
88f0: 73 65 20 63 61 73 65 73 2c 20 70 61 72 73 69 6e se cases, parsin
8900: 67 20 74 68 65 20 73 75 62 65 6e 73 65 6d 62 6c g the subensembl
8910: 65 20 67 72 61 62 73 20 61 20 6e 65 77 20 77 6f e grabs a new wo
8920: 72 64 2e 0a 21 20 20 20 20 20 6c 61 70 70 65 6e rd..! lappen
8930: 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 d result [catch
8940: 7b 6e 73 20 76 20 78 20 7a 30 7d 20 6d 73 67 5d {ns v x z0} msg]
8950: 20 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 70 70 $msg.! lapp
8960: 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 end result [catc
8970: 68 20 7b 6e 73 20 76 20 78 20 7a 31 7d 20 6d 73 h {ns v x z1} ms
8980: 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 6c 61 g] $msg.! la
8990: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 ppend result [ca
89a0: 74 63 68 20 7b 6e 73 20 76 20 78 20 7a 32 7d 20 tch {ns v x z2}
89b0: 6d 73 67 5d 20 24 6d 73 67 0a 21 20 20 20 20 20 msg] $msg.!
89c0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b lappend result [
89d0: 63 61 74 63 68 20 7b 6e 73 20 76 20 78 20 7a 32 catch {ns v x z2
89e0: 20 76 32 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 21 v2} msg] $msg.!
89f0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 21 20 } -cleanup {.!
8a00: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 namespace de
8a10: 6c 65 74 65 20 6e 73 0a 21 20 7d 20 2d 72 65 73 lete ns.! } -res
8a20: 75 6c 74 5c 0a 21 20 20 20 20 7b 30 20 30 5c 0a ult\.! {0 0\.
8a30: 21 20 20 20 20 20 31 20 7b 77 72 6f 6e 67 20 23 ! 1 {wrong #
8a40: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
8a50: 20 22 6e 73 20 7a 31 20 78 20 61 31 22 7d 5c 0a "ns z1 x a1"}\.
8a60: 21 20 20 20 20 20 31 20 7b 77 72 6f 6e 67 20 23 ! 1 {wrong #
8a70: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
8a80: 20 22 6e 73 20 7a 32 20 78 20 61 31 20 61 32 22 "ns z2 x a1 a2"
8a90: 7d 5c 0a 21 20 20 20 20 20 31 20 7b 77 72 6f 6e }\.! 1 {wron
8aa0: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 g # args: should
8ab0: 20 62 65 20 22 6e 73 20 7a 32 20 78 20 61 31 20 be "ns z2 x a1
8ac0: 61 32 22 7d 5c 0a 21 20 20 20 20 20 31 20 7b 77 a2"}\.! 1 {w
8ad0: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
8ae0: 75 6c 64 20 62 65 20 22 3a 3a 6e 73 3a 3a 78 3a uld be "::ns::x:
8af0: 3a 7a 30 22 7d 5c 0a 21 20 20 20 20 20 30 20 7b :z0"}\.! 0 {
8b00: 31 20 76 7d 5c 0a 21 20 20 20 20 20 31 20 7b 77 1 v}\.! 1 {w
8b10: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
8b20: 75 6c 64 20 62 65 20 22 6e 73 20 76 20 78 20 7a uld be "ns v x z
8b30: 32 20 61 32 22 7d 5c 0a 21 20 20 20 20 20 30 20 2 a2"}\.! 0
8b40: 7b 32 20 76 20 76 32 7d 7d 0a 21 20 0a 20 20 23 {2 v v2}}.! . #
8b50: 20 63 6c 65 61 6e 75 70 0a 20 20 63 61 74 63 68 cleanup. catch
8b60: 20 7b 72 65 6e 61 6d 65 20 63 6d 64 31 20 7b 7d {rename cmd1 {}
8b70: 7d 0a 20 20 63 61 74 63 68 20 7b 75 6e 73 65 74 }. catch {unset
8b80: 20 6c 7d 0a l}.