Attachment "apply2.patch" to
ticket [944803ffff]
added by
msofer
2004-04-30 17:28:36.
0000: 3f 20 67 65 6e 65 72 69 63 2f 74 63 6c 4f 62 6a ? generic/tclObj
0010: 2e 63 2e 4f 52 49 47 0a 3f 20 67 65 6e 65 72 69 .c.ORIG.? generi
0020: 63 2f 74 63 6c 50 72 6f 63 2e 63 2e 6c 61 6d 62 c/tclProc.c.lamb
0030: 64 61 0a 3f 20 75 6e 69 78 2f 2e 6c 6f 67 0a 3f da.? unix/.log.?
0040: 20 75 6e 69 78 2f 2e 6f 66 6c 0a 3f 20 75 6e 69 unix/.ofl.? uni
0050: 78 2f 45 52 52 0a 3f 20 75 6e 69 78 2f 64 6c 74 x/ERR.? unix/dlt
0060: 65 73 74 2e 6d 61 72 6b 65 72 0a 3f 20 75 6e 69 est.marker.? uni
0070: 78 2f 6e 73 50 74 72 0a 3f 20 75 6e 69 78 2f 74 x/nsPtr.? unix/t
0080: 63 6c 73 68 2d 68 65 61 64 0a 3f 20 75 6e 69 78 clsh-head.? unix
0090: 2f 74 63 6c 73 68 2d 6e 6f 41 73 79 6e 63 0a 3f /tclsh-noAsync.?
00a0: 20 75 6e 69 78 2f 74 63 6c 73 68 2d 6e 6f 53 74 unix/tclsh-noSt
00b0: 61 72 74 0a 3f 20 75 6e 69 78 2f 78 2e 6c 6f 67 art.? unix/x.log
00c0: 0a 3f 20 75 6e 69 78 2f 78 2e 6f 66 6c 0a 49 6e .? unix/x.ofl.In
00d0: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c dex: generic/tcl
00e0: 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d Basic.c.========
00f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
0130: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
0140: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
0150: 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 74 72 clBasic.c,v.retr
0160: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 ieving revision
0170: 31 2e 39 39 0a 64 69 66 66 20 2d 75 20 2d 72 31 1.99.diff -u -r1
0180: 2e 39 39 20 74 63 6c 42 61 73 69 63 2e 63 0a 2d .99 tclBasic.c.-
0190: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 -- generic/tclBa
01a0: 73 69 63 2e 63 09 36 20 41 70 72 20 32 30 30 34 sic.c.6 Apr 2004
01b0: 20 32 32 3a 32 35 3a 34 38 20 2d 30 30 30 30 09 22:25:48 -0000.
01c0: 31 2e 39 39 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 1.99.+++ generic
01d0: 2f 74 63 6c 42 61 73 69 63 2e 63 09 33 30 20 41 /tclBasic.c.30 A
01e0: 70 72 20 32 30 30 34 20 31 30 3a 30 38 3a 32 31 pr 2004 10:08:21
01f0: 20 2d 30 30 30 30 0a 40 40 20 2d 36 31 2c 36 20 -0000.@@ -61,6
0200: 2b 36 31 2c 38 20 40 40 0a 20 0a 20 20 20 20 20 +61,8 @@. .
0210: 7b 22 61 70 70 65 6e 64 22 2c 09 09 28 54 63 6c {"append",..(Tcl
0220: 5f 43 6d 64 50 72 6f 63 20 2a 29 20 4e 55 4c 4c _CmdProc *) NULL
0230: 2c 09 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 43 ,.Tcl_AppendObjC
0240: 6d 64 2c 0a 20 09 54 63 6c 43 6f 6d 70 69 6c 65 md,. .TclCompile
0250: 41 70 70 65 6e 64 43 6d 64 2c 09 09 31 7d 2c 0a AppendCmd,..1},.
0260: 2b 20 20 20 20 7b 22 61 70 70 6c 79 22 2c 09 09 + {"apply",..
0270: 28 54 63 6c 5f 43 6d 64 50 72 6f 63 20 2a 29 20 (Tcl_CmdProc *)
0280: 4e 55 4c 4c 2c 09 54 63 6c 5f 41 70 70 6c 79 4f NULL,.Tcl_ApplyO
0290: 62 6a 43 6d 64 2c 0a 2b 20 20 20 20 20 20 20 20 bjCmd,.+
02a0: 28 43 6f 6d 70 69 6c 65 50 72 6f 63 20 2a 29 20 (CompileProc *)
02b0: 4e 55 4c 4c 2c 09 09 31 7d 2c 0a 20 20 20 20 20 NULL,..1},.
02c0: 7b 22 61 72 72 61 79 22 2c 09 09 28 54 63 6c 5f {"array",..(Tcl_
02d0: 43 6d 64 50 72 6f 63 20 2a 29 20 4e 55 4c 4c 2c CmdProc *) NULL,
02e0: 09 54 63 6c 5f 41 72 72 61 79 4f 62 6a 43 6d 64 .Tcl_ArrayObjCmd
02f0: 2c 0a 20 20 20 20 20 20 20 20 20 28 43 6f 6d 70 ,. (Comp
0300: 69 6c 65 50 72 6f 63 20 2a 29 20 4e 55 4c 4c 2c ileProc *) NULL,
0310: 09 09 31 7d 2c 0a 20 20 20 20 20 7b 22 62 69 6e ..1},. {"bin
0320: 61 72 79 22 2c 09 09 28 54 63 6c 5f 43 6d 64 50 ary",..(Tcl_CmdP
0330: 72 6f 63 20 2a 29 20 4e 55 4c 4c 2c 09 54 63 6c roc *) NULL,.Tcl
0340: 5f 42 69 6e 61 72 79 4f 62 6a 43 6d 64 2c 0a 40 _BinaryObjCmd,.@
0350: 40 20 2d 34 33 33 2c 37 20 2b 34 33 35 2c 37 20 @ -433,7 +435,7
0360: 40 40 0a 20 09 20 20 20 20 20 20 20 20 26 26 20 @@. . &&
0370: 28 63 6d 64 49 6e 66 6f 50 74 72 2d 3e 63 6f 6d (cmdInfoPtr->com
0380: 70 69 6c 65 50 72 6f 63 20 3d 3d 20 28 43 6f 6d pileProc == (Com
0390: 70 69 6c 65 50 72 6f 63 20 2a 29 20 4e 55 4c 4c pileProc *) NULL
03a0: 29 29 20 7b 0a 20 09 20 20 20 20 54 63 6c 5f 50 )) {. . Tcl_P
03b0: 61 6e 69 63 28 22 54 63 6c 5f 43 72 65 61 74 65 anic("Tcl_Create
03c0: 49 6e 74 65 72 70 3a 20 62 75 69 6c 74 69 6e 20 Interp: builtin
03d0: 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20 4e 55 4c command with NUL
03e0: 4c 20 73 74 72 69 6e 67 20 61 6e 64 20 6f 62 6a L string and obj
03f0: 65 63 74 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 63 ect command proc
0400: 73 20 61 6e 64 20 61 20 4e 55 4c 4c 20 63 6f 6d s and a NULL com
0410: 70 69 6c 65 20 70 72 6f 63 5c 6e 22 29 3b 0a 20 pile proc\n");.
0420: 09 7d 0a 2d 09 0a 2b 0a 20 09 68 50 74 72 20 3d .}.-..+. .hPtr =
0430: 20 54 63 6c 5f 43 72 65 61 74 65 48 61 73 68 45 Tcl_CreateHashE
0440: 6e 74 72 79 28 26 69 50 74 72 2d 3e 67 6c 6f 62 ntry(&iPtr->glob
0450: 61 6c 4e 73 50 74 72 2d 3e 63 6d 64 54 61 62 6c alNsPtr->cmdTabl
0460: 65 2c 0a 20 09 20 20 20 20 20 20 20 20 63 6d 64 e,. . cmd
0470: 49 6e 66 6f 50 74 72 2d 3e 6e 61 6d 65 2c 20 26 InfoPtr->name, &
0480: 6e 65 77 29 3b 0a 20 09 69 66 20 28 6e 65 77 29 new);. .if (new)
0490: 20 7b 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 {.Index: generi
04a0: 63 2f 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d c/tclInt.h.=====
04b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ==============.R
04f0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f CS file: /cvsroo
0500: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 t/tcl/tcl/generi
0510: 63 2f 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 c/tclInt.h,v.ret
0520: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
0530: 20 31 2e 31 35 34 0a 64 69 66 66 20 2d 75 20 2d 1.154.diff -u -
0540: 72 31 2e 31 35 34 20 74 63 6c 49 6e 74 2e 68 0a r1.154 tclInt.h.
0550: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 --- generic/tclI
0560: 6e 74 2e 68 09 32 35 20 41 70 72 20 32 30 30 34 nt.h.25 Apr 2004
0570: 20 32 30 3a 31 36 3a 33 31 20 2d 30 30 30 30 09 20:16:31 -0000.
0580: 31 2e 31 35 34 0a 2b 2b 2b 20 67 65 6e 65 72 69 1.154.+++ generi
0590: 63 2f 74 63 6c 49 6e 74 2e 68 09 33 30 20 41 70 c/tclInt.h.30 Ap
05a0: 72 20 32 30 30 34 20 31 30 3a 30 38 3a 32 33 20 r 2004 10:08:23
05b0: 2d 30 30 30 30 0a 40 40 20 2d 31 36 35 39 2c 36 -0000.@@ -1659,6
05c0: 20 2b 31 36 35 39 2c 39 20 40 40 0a 20 45 58 54 +1659,9 @@. EXT
05d0: 45 52 4e 20 76 6f 69 64 09 09 54 63 6c 46 69 6e ERN void..TclFin
05e0: 61 6c 69 7a 65 53 79 6e 63 68 72 6f 6e 69 7a 61 alizeSynchroniza
05f0: 74 69 6f 6e 20 5f 41 4e 53 49 5f 41 52 47 53 5f tion _ANSI_ARGS_
0600: 28 28 76 6f 69 64 29 29 3b 0a 20 45 58 54 45 52 ((void));. EXTER
0610: 4e 20 76 6f 69 64 09 09 54 63 6c 46 69 6e 61 6c N void..TclFinal
0620: 69 7a 65 4c 6f 63 6b 20 5f 41 4e 53 49 5f 41 52 izeLock _ANSI_AR
0630: 47 53 5f 28 28 76 6f 69 64 29 29 3b 0a 20 45 58 GS_((void));. EX
0640: 54 45 52 4e 20 76 6f 69 64 09 09 54 63 6c 46 69 TERN void..TclFi
0650: 6e 61 6c 69 7a 65 54 68 72 65 61 64 44 61 74 61 nalizeThreadData
0660: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 76 6f _ANSI_ARGS_((vo
0670: 69 64 29 29 3b 0a 2b 45 58 54 45 52 4e 20 69 6e id));.+EXTERN in
0680: 74 09 09 54 63 6c 47 65 74 4e 61 6d 65 73 70 61 t..TclGetNamespa
0690: 63 65 46 72 6f 6d 4f 62 6a 20 5f 41 4e 53 49 5f ceFromObj _ANSI_
06a0: 41 52 47 53 5f 28 28 0a 2b 09 09 09 20 20 20 20 ARGS_((.+...
06b0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
06c0: 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a rp, Tcl_Obj *obj
06d0: 50 74 72 2c 0a 2b 09 09 09 20 20 20 20 54 63 6c Ptr,.+... Tcl
06e0: 5f 4e 61 6d 65 73 70 61 63 65 20 2a 2a 6e 73 50 _Namespace **nsP
06f0: 74 72 50 74 72 29 29 3b 0a 20 45 58 54 45 52 4e trPtr));. EXTERN
0700: 20 69 6e 74 09 09 54 63 6c 47 6c 6f 62 20 5f 41 int..TclGlob _A
0710: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 NSI_ARGS_((Tcl_I
0720: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 nterp *interp,.
0730: 09 09 09 20 20 20 20 63 68 61 72 20 2a 70 61 74 ... char *pat
0740: 74 65 72 6e 2c 20 54 63 6c 5f 4f 62 6a 20 2a 75 tern, Tcl_Obj *u
0750: 6e 71 75 6f 74 65 64 50 72 65 66 69 78 2c 20 0a nquotedPrefix, .
0760: 20 09 09 09 20 20 20 20 69 6e 74 20 67 6c 6f 62 ... int glob
0770: 46 6c 61 67 73 2c 20 54 63 6c 5f 47 6c 6f 62 54 Flags, Tcl_GlobT
0780: 79 70 65 44 61 74 61 2a 20 74 79 70 65 73 29 29 ypeData* types))
0790: 3b 0a 40 40 20 2d 31 38 34 33 2c 36 20 2b 31 38 ;.@@ -1843,6 +18
07a0: 34 36 2c 38 20 40 40 0a 20 09 09 20 20 20 20 54 46,8 @@. .. T
07b0: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
07c0: 70 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c p, int objc, Tcl
07d0: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 _Obj *CONST objv
07e0: 5b 5d 29 29 3b 0a 20 45 58 54 45 52 4e 20 69 6e []));. EXTERN in
07f0: 74 09 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 43 t.Tcl_AppendObjC
0800: 6d 64 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 md _ANSI_ARGS_((
0810: 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e ClientData clien
0820: 74 44 61 74 61 2c 0a 20 09 09 20 20 20 20 54 63 tData,. .. Tc
0830: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 l_Interp *interp
0840: 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f , int objc, Tcl_
0850: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b Obj *CONST objv[
0860: 5d 29 29 3b 0a 2b 45 58 54 45 52 4e 20 69 6e 74 ]));.+EXTERN int
0870: 09 54 63 6c 5f 41 70 70 6c 79 4f 62 6a 43 6d 64 .Tcl_ApplyObjCmd
0880: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c _ANSI_ARGS_((Cl
0890: 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44 ientData clientD
08a0: 61 74 61 2c 0a 2b 09 09 20 20 20 20 54 63 6c 5f ata,.+.. Tcl_
08b0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
08c0: 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 int objc, Tcl_Ob
08d0: 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 j *CONST objv[])
08e0: 29 3b 0a 20 45 58 54 45 52 4e 20 69 6e 74 09 54 );. EXTERN int.T
08f0: 63 6c 5f 41 72 72 61 79 4f 62 6a 43 6d 64 20 5f cl_ArrayObjCmd _
0900: 41 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c 69 65 ANSI_ARGS_((Clie
0910: 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 ntData clientDat
0920: 61 2c 0a 20 09 09 20 20 20 20 54 63 6c 5f 49 6e a,. .. Tcl_In
0930: 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 69 6e terp *interp, in
0940: 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 t objc, Tcl_Obj
0950: 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 29 3b *CONST objv[]));
0960: 0a 20 45 58 54 45 52 4e 20 69 6e 74 09 54 63 6c . EXTERN int.Tcl
0970: 5f 42 69 6e 61 72 79 4f 62 6a 43 6d 64 20 5f 41 _BinaryObjCmd _A
0980: 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c 69 65 6e NSI_ARGS_((Clien
0990: 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 tData clientData
09a0: 2c 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 ,.Index: generic
09b0: 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d 3d 3d /tclNamesp.c.===
09c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
09d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
09e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
09f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a00: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
0a10: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 oot/tcl/tcl/gene
0a20: 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 2c ric/tclNamesp.c,
0a30: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
0a40: 69 73 69 6f 6e 20 31 2e 33 37 0a 64 69 66 66 20 ision 1.37.diff
0a50: 2d 75 20 2d 72 31 2e 33 37 20 74 63 6c 4e 61 6d -u -r1.37 tclNam
0a60: 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 esp.c.--- generi
0a70: 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 32 34 c/tclNamesp.c.24
0a80: 20 4d 61 72 20 32 30 30 34 20 32 31 3a 35 34 3a Mar 2004 21:54:
0a90: 33 32 20 2d 30 30 30 30 09 31 2e 33 37 0a 2b 2b 32 -0000.1.37.++
0aa0: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d + generic/tclNam
0ab0: 65 73 70 2e 63 09 33 30 20 41 70 72 20 32 30 30 esp.c.30 Apr 200
0ac0: 34 20 31 30 3a 30 38 3a 32 36 20 2d 30 30 30 30 4 10:08:26 -0000
0ad0: 0a 40 40 20 2d 31 38 30 2c 39 20 2b 31 38 30 2c .@@ -180,9 +180,
0ae0: 36 20 40 40 0a 20 73 74 61 74 69 63 20 76 6f 69 6 @@. static voi
0af0: 64 09 09 44 75 70 4e 73 4e 61 6d 65 49 6e 74 65 d..DupNsNameInte
0b00: 72 6e 61 6c 52 65 70 20 5f 41 4e 53 49 5f 41 52 rnalRep _ANSI_AR
0b10: 47 53 5f 28 28 54 63 6c 5f 4f 62 6a 20 2a 6f 62 GS_((Tcl_Obj *ob
0b20: 6a 50 74 72 2c 0a 20 09 09 09 20 20 20 20 54 63 jPtr,. ... Tc
0b30: 6c 5f 4f 62 6a 20 2a 63 6f 70 79 50 74 72 29 29 l_Obj *copyPtr))
0b40: 3b 0a 20 73 74 61 74 69 63 20 76 6f 69 64 09 09 ;. static void..
0b50: 46 72 65 65 4e 73 4e 61 6d 65 49 6e 74 65 72 6e FreeNsNameIntern
0b60: 61 6c 52 65 70 20 5f 41 4e 53 49 5f 41 52 47 53 alRep _ANSI_ARGS
0b70: 5f 28 28 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 _((Tcl_Obj *objP
0b80: 74 72 29 29 3b 0a 2d 73 74 61 74 69 63 20 69 6e tr));.-static in
0b90: 74 09 09 47 65 74 4e 61 6d 65 73 70 61 63 65 46 t..GetNamespaceF
0ba0: 72 6f 6d 4f 62 6a 20 5f 41 4e 53 49 5f 41 52 47 romObj _ANSI_ARG
0bb0: 53 5f 28 28 0a 2d 09 09 09 20 20 20 20 54 63 6c S_((.-... Tcl
0bc0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
0bd0: 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 Tcl_Obj *objPtr
0be0: 2c 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f 4e 61 ,.-... Tcl_Na
0bf0: 6d 65 73 70 61 63 65 20 2a 2a 6e 73 50 74 72 50 mespace **nsPtrP
0c00: 74 72 29 29 3b 0a 20 73 74 61 74 69 63 20 69 6e tr));. static in
0c10: 74 09 09 49 6e 76 6f 6b 65 49 6d 70 6f 72 74 65 t..InvokeImporte
0c20: 64 43 6d 64 20 5f 41 4e 53 49 5f 41 52 47 53 5f dCmd _ANSI_ARGS_
0c30: 28 28 0a 20 09 09 09 20 20 20 20 43 6c 69 65 6e ((. ... Clien
0c40: 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 tData clientData
0c50: 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e , Tcl_Interp *in
0c60: 74 65 72 70 2c 0a 20 09 09 09 20 20 20 20 69 6e terp,. ... in
0c70: 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 t objc, Tcl_Obj
0c80: 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 29 3b *CONST objv[]));
0c90: 0a 40 40 20 2d 32 34 39 36 2c 37 20 2b 32 34 39 .@@ -2496,7 +249
0ca0: 33 2c 37 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 3,7 @@. /*. *--
0cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0cd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ce0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0cf0: 2d 2d 2d 2d 0a 20 20 2a 0a 2d 20 2a 20 47 65 74 ----. *.- * Get
0d00: 4e 61 6d 65 73 70 61 63 65 46 72 6f 6d 4f 62 6a NamespaceFromObj
0d10: 20 2d 2d 0a 2b 20 2a 20 54 63 6c 47 65 74 4e 61 --.+ * TclGetNa
0d20: 6d 65 73 70 61 63 65 46 72 6f 6d 4f 62 6a 20 2d mespaceFromObj -
0d30: 2d 0a 20 20 2a 0a 20 20 2a 09 47 65 74 73 20 74 -. *. *.Gets t
0d40: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 73 70 65 he namespace spe
0d50: 63 69 66 69 65 64 20 62 79 20 74 68 65 20 6e 61 cified by the na
0d60: 6d 65 20 69 6e 20 61 20 54 63 6c 5f 4f 62 6a 2e me in a Tcl_Obj.
0d70: 0a 20 20 2a 0a 40 40 20 2d 32 35 31 38 2c 38 20 . *.@@ -2518,8
0d80: 2b 32 35 31 35 2c 38 20 40 40 0a 20 20 2a 2d 2d +2515,8 @@. *--
0d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0db0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0dc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0dd0: 2d 2d 2d 2d 0a 20 20 2a 2f 0a 20 0a 2d 73 74 61 ----. */. .-sta
0de0: 74 69 63 20 69 6e 74 0a 2d 47 65 74 4e 61 6d 65 tic int.-GetName
0df0: 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 69 6e 74 spaceFromObj(int
0e00: 65 72 70 2c 20 6f 62 6a 50 74 72 2c 20 6e 73 50 erp, objPtr, nsP
0e10: 74 72 50 74 72 29 0a 2b 69 6e 74 0a 2b 54 63 6c trPtr).+int.+Tcl
0e20: 47 65 74 4e 61 6d 65 73 70 61 63 65 46 72 6f 6d GetNamespaceFrom
0e30: 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 50 Obj(interp, objP
0e40: 74 72 2c 20 6e 73 50 74 72 50 74 72 29 0a 20 20 tr, nsPtrPtr).
0e50: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 Tcl_Interp *i
0e60: 6e 74 65 72 70 3b 09 09 2f 2a 20 54 68 65 20 63 nterp;../* The c
0e70: 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 urrent interpret
0e80: 65 72 2e 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f er. */. Tcl_
0e90: 4f 62 6a 20 2a 6f 62 6a 50 74 72 3b 09 09 2f 2a Obj *objPtr;../*
0ea0: 20 54 68 65 20 6f 62 6a 65 63 74 20 74 6f 20 62 The object to b
0eb0: 65 20 72 65 73 6f 6c 76 65 64 20 61 73 20 74 68 e resolved as th
0ec0: 65 20 6e 61 6d 65 0a 20 09 09 09 09 20 2a 20 6f e name. .... * o
0ed0: 66 20 61 20 6e 61 6d 65 73 70 61 63 65 2e 20 2a f a namespace. *
0ee0: 2f 0a 40 40 20 2d 32 37 37 32 2c 37 20 2b 32 37 /.@@ -2772,7 +27
0ef0: 36 39 2c 37 20 40 40 0a 20 20 20 20 20 69 66 20 69,7 @@. if
0f00: 28 6f 62 6a 63 20 3d 3d 20 32 29 20 7b 0a 20 09 (objc == 2) {. .
0f10: 6e 73 50 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 nsPtr = (Namespa
0f20: 63 65 20 2a 29 20 54 63 6c 5f 47 65 74 43 75 72 ce *) Tcl_GetCur
0f30: 72 65 6e 74 4e 61 6d 65 73 70 61 63 65 28 69 6e rentNamespace(in
0f40: 74 65 72 70 29 3b 0a 20 20 20 20 20 7d 20 65 6c terp);. } el
0f50: 73 65 20 69 66 20 28 28 6f 62 6a 63 20 3d 3d 20 se if ((objc ==
0f60: 33 29 20 7c 7c 20 28 6f 62 6a 63 20 3d 3d 20 34 3) || (objc == 4
0f70: 29 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 69 66 )) {.- if
0f80: 20 28 47 65 74 4e 61 6d 65 73 70 61 63 65 46 72 (GetNamespaceFr
0f90: 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 omObj(interp, ob
0fa0: 6a 76 5b 32 5d 2c 20 26 6e 61 6d 65 73 70 61 63 jv[2], &namespac
0fb0: 65 50 74 72 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 ePtr) != TCL_OK)
0fc0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 {.+ if (
0fd0: 54 63 6c 47 65 74 4e 61 6d 65 73 70 61 63 65 46 TclGetNamespaceF
0fe0: 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f romObj(interp, o
0ff0: 62 6a 76 5b 32 5d 2c 20 26 6e 61 6d 65 73 70 61 bjv[2], &namespa
1000: 63 65 50 74 72 29 20 21 3d 20 54 43 4c 5f 4f 4b cePtr) != TCL_OK
1010: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
1020: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f return TCL_ERRO
1030: 52 3b 0a 20 20 20 20 20 20 20 20 20 7d 0a 20 20 R;. }.
1040: 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 73 if (names
1050: 70 61 63 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 pacePtr == NULL)
1060: 20 7b 0a 40 40 20 2d 33 31 30 38 2c 37 20 2b 33 {.@@ -3108,7 +3
1070: 31 30 35 2c 37 20 40 40 0a 20 20 20 20 20 20 2a 105,7 @@. *
1080: 20 6e 61 6d 65 73 70 61 63 65 20 6f 62 6a 65 63 namespace objec
1090: 74 20 61 6c 6f 6e 67 20 74 68 65 20 77 61 79 2e t along the way.
10a0: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 . */. .-
10b0: 20 72 65 73 75 6c 74 20 3d 20 47 65 74 4e 61 6d result = GetNam
10c0: 65 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 69 6e espaceFromObj(in
10d0: 74 65 72 70 2c 20 6f 62 6a 76 5b 32 5d 2c 20 26 terp, objv[2], &
10e0: 6e 61 6d 65 73 70 61 63 65 50 74 72 29 3b 0a 2b namespacePtr);.+
10f0: 20 20 20 20 72 65 73 75 6c 74 20 3d 20 54 63 6c result = Tcl
1100: 47 65 74 4e 61 6d 65 73 70 61 63 65 46 72 6f 6d GetNamespaceFrom
1110: 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 Obj(interp, objv
1120: 5b 32 5d 2c 20 26 6e 61 6d 65 73 70 61 63 65 50 [2], &namespaceP
1130: 74 72 29 3b 0a 20 20 20 20 20 69 66 20 28 72 65 tr);. if (re
1140: 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 sult != TCL_OK)
1150: 7b 0a 20 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur
1160: 6e 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 7d n result;. }
1170: 0a 40 40 20 2d 33 32 31 33 2c 37 20 2b 33 32 31 .@@ -3213,7 +321
1180: 30 2c 37 20 40 40 0a 20 20 20 20 20 20 2a 20 43 0,7 @@. * C
1190: 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 68 65 heck whether the
11a0: 20 67 69 76 65 6e 20 6e 61 6d 65 73 70 61 63 65 given namespace
11b0: 20 65 78 69 73 74 73 0a 20 20 20 20 20 20 2a 2f exists. */
11c0: 0a 20 0a 2d 20 20 20 20 69 66 20 28 47 65 74 4e . .- if (GetN
11d0: 61 6d 65 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 amespaceFromObj(
11e0: 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 32 5d 2c interp, objv[2],
11f0: 20 26 6e 61 6d 65 73 70 61 63 65 50 74 72 29 20 &namespacePtr)
1200: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 20 20 != TCL_OK) {.+
1210: 20 20 69 66 20 28 54 63 6c 47 65 74 4e 61 6d 65 if (TclGetName
1220: 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 69 6e 74 spaceFromObj(int
1230: 65 72 70 2c 20 6f 62 6a 76 5b 32 5d 2c 20 26 6e erp, objv[2], &n
1240: 61 6d 65 73 70 61 63 65 50 74 72 29 20 21 3d 20 amespacePtr) !=
1250: 54 43 4c 5f 4f 4b 29 20 7b 0a 20 20 20 20 20 20 TCL_OK) {.
1260: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 return TCL_ER
1270: 52 4f 52 3b 0a 20 20 20 20 20 7d 0a 20 0a 40 40 ROR;. }. .@@
1280: 20 2d 33 35 32 30 2c 37 20 2b 33 35 31 37 2c 37 -3520,7 +3517,7
1290: 20 40 40 0a 20 20 20 20 20 20 2a 20 52 65 73 6f @@. * Reso
12a0: 6c 76 65 20 74 68 65 20 6e 61 6d 65 73 70 61 63 lve the namespac
12b0: 65 20 72 65 66 65 72 65 6e 63 65 2e 0a 20 20 20 e reference..
12c0: 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 72 65 73 */. .- res
12d0: 75 6c 74 20 3d 20 47 65 74 4e 61 6d 65 73 70 61 ult = GetNamespa
12e0: 63 65 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 ceFromObj(interp
12f0: 2c 20 6f 62 6a 76 5b 32 5d 2c 20 26 6e 61 6d 65 , objv[2], &name
1300: 73 70 61 63 65 50 74 72 29 3b 0a 2b 20 20 20 20 spacePtr);.+
1310: 72 65 73 75 6c 74 20 3d 20 54 63 6c 47 65 74 4e result = TclGetN
1320: 61 6d 65 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 amespaceFromObj(
1330: 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 32 5d 2c interp, objv[2],
1340: 20 26 6e 61 6d 65 73 70 61 63 65 50 74 72 29 3b &namespacePtr);
1350: 0a 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 . if (result
1360: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 20 != TCL_OK) {.
1370: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 return re
1380: 73 75 6c 74 3b 0a 20 20 20 20 20 7d 0a 40 40 20 sult;. }.@@
1390: 2d 33 36 38 35 2c 37 20 2b 33 36 38 32 2c 37 20 -3685,7 +3682,7
13a0: 40 40 0a 20 20 20 20 20 69 66 20 28 6f 62 6a 63 @@. if (objc
13b0: 20 3d 3d 20 32 29 20 7b 0a 20 20 20 20 20 20 20 == 2) {.
13c0: 20 20 6e 73 50 74 72 20 3d 20 54 63 6c 5f 47 65 nsPtr = Tcl_Ge
13d0: 74 43 75 72 72 65 6e 74 4e 61 6d 65 73 70 61 63 tCurrentNamespac
13e0: 65 28 69 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 e(interp);.
13f0: 7d 20 65 6c 73 65 20 69 66 20 28 6f 62 6a 63 20 } else if (objc
1400: 3d 3d 20 33 29 20 7b 0a 2d 09 72 65 73 75 6c 74 == 3) {.-.result
1410: 20 3d 20 47 65 74 4e 61 6d 65 73 70 61 63 65 46 = GetNamespaceF
1420: 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f romObj(interp, o
1430: 62 6a 76 5b 32 5d 2c 20 26 6e 73 50 74 72 29 3b bjv[2], &nsPtr);
1440: 0a 2b 09 72 65 73 75 6c 74 20 3d 20 54 63 6c 47 .+.result = TclG
1450: 65 74 4e 61 6d 65 73 70 61 63 65 46 72 6f 6d 4f etNamespaceFromO
1460: 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b bj(interp, objv[
1470: 32 5d 2c 20 26 6e 73 50 74 72 29 3b 0a 20 20 20 2], &nsPtr);.
1480: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 if (result
1490: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 20 != TCL_OK) {.
14a0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
14b0: 6e 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 20 n result;.
14c0: 20 20 20 7d 0a 49 6e 64 65 78 3a 20 67 65 6e 65 }.Index: gene
14d0: 72 69 63 2f 74 63 6c 50 72 6f 63 2e 63 0a 3d 3d ric/tclProc.c.==
14e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1520: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
1530: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e root/tcl/tcl/gen
1540: 65 72 69 63 2f 74 63 6c 50 72 6f 63 2e 63 2c 76 eric/tclProc.c,v
1550: 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 .retrieving revi
1560: 73 69 6f 6e 20 31 2e 35 30 0a 64 69 66 66 20 2d sion 1.50.diff -
1570: 75 20 2d 72 31 2e 35 30 20 74 63 6c 50 72 6f 63 u -r1.50 tclProc
1580: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
1590: 63 6c 50 72 6f 63 2e 63 09 39 20 4d 61 72 20 32 clProc.c.9 Mar 2
15a0: 30 30 34 20 31 32 3a 35 39 3a 30 35 20 2d 30 30 004 12:59:05 -00
15b0: 30 30 09 31 2e 35 30 0a 2b 2b 2b 20 67 65 6e 65 00.1.50.+++ gene
15c0: 72 69 63 2f 74 63 6c 50 72 6f 63 2e 63 09 33 30 ric/tclProc.c.30
15d0: 20 41 70 72 20 32 30 30 34 20 31 30 3a 30 38 3a Apr 2004 10:08:
15e0: 32 37 20 2d 30 30 30 30 0a 40 40 20 2d 36 2c 36 27 -0000.@@ -6,6
15f0: 20 2b 36 2c 37 20 40 40 0a 20 20 2a 0a 20 20 2a +6,7 @@. *. *
1600: 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 Copyright (c) 1
1610: 39 38 37 2d 31 39 39 33 20 54 68 65 20 52 65 67 987-1993 The Reg
1620: 65 6e 74 73 20 6f 66 20 74 68 65 20 55 6e 69 76 ents of the Univ
1630: 65 72 73 69 74 79 20 6f 66 20 43 61 6c 69 66 6f ersity of Califo
1640: 72 6e 69 61 2e 0a 20 20 2a 20 43 6f 70 79 72 69 rnia.. * Copyri
1650: 67 68 74 20 28 63 29 20 31 39 39 34 2d 31 39 39 ght (c) 1994-199
1660: 38 20 53 75 6e 20 4d 69 63 72 6f 73 79 73 74 65 8 Sun Microsyste
1670: 6d 73 2c 20 49 6e 63 2e 0a 2b 20 2a 20 43 6f 70 ms, Inc..+ * Cop
1680: 79 72 69 67 68 74 20 28 63 29 20 32 30 30 34 20 yright (c) 2004
1690: 20 20 20 20 20 4d 69 67 75 65 6c 20 53 6f 66 65 Miguel Sofe
16a0: 72 0a 20 20 2a 0a 20 20 2a 20 53 65 65 20 74 68 r. *. * See th
16b0: 65 20 66 69 6c 65 20 22 6c 69 63 65 6e 73 65 2e e file "license.
16c0: 74 65 72 6d 73 22 20 66 6f 72 20 69 6e 66 6f 72 terms" for infor
16d0: 6d 61 74 69 6f 6e 20 6f 6e 20 75 73 61 67 65 20 mation on usage
16e0: 61 6e 64 20 72 65 64 69 73 74 72 69 62 75 74 69 and redistributi
16f0: 6f 6e 0a 20 20 2a 20 6f 66 20 74 68 69 73 20 66 on. * of this f
1700: 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20 61 20 44 ile, and for a D
1710: 49 53 43 4c 41 49 4d 45 52 20 4f 46 20 41 4c 4c ISCLAIMER OF ALL
1720: 20 57 41 52 52 41 4e 54 49 45 53 2e 0a 40 40 20 WARRANTIES..@@
1730: 2d 31 37 32 31 2c 34 20 2b 31 37 32 32 2c 32 30 -1721,4 +1722,20
1740: 33 20 40 40 0a 20 7d 0a 20 0a 20 0a 2b 0c 0a 2b 3 @@. }. . .+..+
1750: 2f 2a 0a 2b 20 2a 20 4c 41 4d 42 44 41 20 61 6e /*.+ * LAMBDA an
1760: 64 20 41 50 50 4c 59 20 69 6d 70 6c 65 6d 65 6e d APPLY implemen
1770: 74 61 74 69 6f 6e 0a 2b 20 2a 0a 2b 20 2a 2f 0a tation.+ *.+ */.
1780: 2b 0a 2b 73 74 61 74 69 63 20 76 6f 69 64 09 09 +.+static void..
1790: 44 75 70 4c 61 6d 62 64 61 49 6e 74 65 72 6e 61 DupLambdaInterna
17a0: 6c 52 65 70 20 5f 41 4e 53 49 5f 41 52 47 53 5f lRep _ANSI_ARGS_
17b0: 28 28 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 ((Tcl_Obj *objPt
17c0: 72 2c 0a 2b 09 09 09 20 20 20 20 54 63 6c 5f 4f r,.+... Tcl_O
17d0: 62 6a 20 2a 63 6f 70 79 50 74 72 29 29 3b 0a 2b bj *copyPtr));.+
17e0: 73 74 61 74 69 63 20 76 6f 69 64 09 09 46 72 65 static void..Fre
17f0: 65 4c 61 6d 62 64 61 49 6e 74 65 72 6e 61 6c 52 eLambdaInternalR
1800: 65 70 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 ep _ANSI_ARGS_((
1810: 0a 2b 20 20 20 20 09 09 09 20 20 20 20 54 63 6c .+ ... Tcl
1820: 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 29 29 3b 0a _Obj *objPtr));.
1830: 2b 73 74 61 74 69 63 20 69 6e 74 09 09 53 65 74 +static int..Set
1840: 4c 61 6d 62 64 61 46 72 6f 6d 41 6e 79 20 5f 41 LambdaFromAny _A
1850: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 NSI_ARGS_((Tcl_I
1860: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b nterp *interp,.+
1870: 09 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a ... Tcl_Obj *
1880: 6f 62 6a 50 74 72 29 29 3b 0a 2b 0a 2b 54 63 6c objPtr));.+.+Tcl
1890: 5f 4f 62 6a 54 79 70 65 20 74 63 6c 4c 61 6d 62 _ObjType tclLamb
18a0: 64 61 54 79 70 65 20 3d 20 7b 0a 2b 20 20 20 20 daType = {.+
18b0: 22 6c 61 6d 62 64 61 22 2c 09 09 09 09 2f 2a 20 "lambda",..../*
18c0: 6e 61 6d 65 20 2a 2f 0a 2b 20 20 20 20 46 72 65 name */.+ Fre
18d0: 65 4c 61 6d 62 64 61 49 6e 74 65 72 6e 61 6c 52 eLambdaInternalR
18e0: 65 70 2c 09 20 20 20 20 20 20 20 20 2f 2a 20 66 ep,. /* f
18f0: 72 65 65 49 6e 74 52 65 70 50 72 6f 63 20 2a 2f reeIntRepProc */
1900: 0a 2b 20 20 20 20 44 75 70 4c 61 6d 62 64 61 49 .+ DupLambdaI
1910: 6e 74 65 72 6e 61 6c 52 65 70 2c 09 20 20 20 20 nternalRep,.
1920: 20 20 20 20 2f 2a 20 64 75 70 49 6e 74 52 65 70 /* dupIntRep
1930: 50 72 6f 63 20 2a 2f 0a 2b 20 20 20 20 28 54 63 Proc */.+ (Tc
1940: 6c 5f 55 70 64 61 74 65 53 74 72 69 6e 67 50 72 l_UpdateStringPr
1950: 6f 63 20 2a 29 20 4e 55 4c 4c 2c 09 2f 2a 20 75 oc *) NULL,./* u
1960: 70 64 61 74 65 53 74 72 69 6e 67 50 72 6f 63 20 pdateStringProc
1970: 2a 2f 0a 2b 20 20 20 20 53 65 74 4c 61 6d 62 64 */.+ SetLambd
1980: 61 46 72 6f 6d 41 6e 79 09 09 09 2f 2a 20 73 65 aFromAny.../* se
1990: 74 46 72 6f 6d 41 6e 79 50 72 6f 63 20 2a 2f 0a tFromAnyProc */.
19a0: 2b 7d 3b 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 20 61 20 +};.+.+/*.+ * a
19b0: 4c 61 6d 62 64 61 20 54 63 6c 5f 4f 62 6a 20 68 Lambda Tcl_Obj h
19c0: 61 73 20 74 68 65 20 66 6f 72 6d 0a 2b 20 2a 0a as the form.+ *.
19d0: 2b 20 2a 20 20 70 74 72 31 20 69 73 20 61 20 2a + * ptr1 is a *
19e0: 50 72 6f 63 3a 20 20 20 20 20 70 6f 69 6e 74 65 Proc: pointe
19f0: 72 20 74 6f 20 61 20 70 72 6f 63 20 73 74 72 75 r to a proc stru
1a00: 63 74 75 72 65 0a 2b 20 2a 20 20 70 74 72 32 20 cture.+ * ptr2
1a10: 69 73 20 61 20 2a 54 63 6c 5f 4f 62 6a 3a 20 20 is a *Tcl_Obj:
1a20: 74 68 65 20 6c 61 6d 62 64 61 27 73 20 6e 61 6d the lambda's nam
1a30: 65 73 70 61 63 65 0a 2b 20 2a 2f 0a 2b 0a 2b 73 espace.+ */.+.+s
1a40: 74 61 74 69 63 20 76 6f 69 64 0a 2b 44 75 70 4c tatic void.+DupL
1a50: 61 6d 62 64 61 49 6e 74 65 72 6e 61 6c 52 65 70 ambdaInternalRep
1a60: 28 73 72 63 50 74 72 2c 20 63 6f 70 79 50 74 72 (srcPtr, copyPtr
1a70: 29 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a ).+ Tcl_Obj *
1a80: 73 72 63 50 74 72 3b 09 09 2f 2a 20 4f 62 6a 65 srcPtr;../* Obje
1a90: 63 74 20 77 69 74 68 20 69 6e 74 65 72 6e 61 6c ct with internal
1aa0: 20 72 65 70 20 74 6f 20 63 6f 70 79 2e 20 2a 2f rep to copy. */
1ab0: 0a 2b 20 20 20 20 72 65 67 69 73 74 65 72 20 54 .+ register T
1ac0: 63 6c 5f 4f 62 6a 20 2a 63 6f 70 79 50 74 72 3b cl_Obj *copyPtr;
1ad0: 09 2f 2a 20 4f 62 6a 65 63 74 20 77 69 74 68 20 ./* Object with
1ae0: 69 6e 74 65 72 6e 61 6c 20 72 65 70 20 74 6f 20 internal rep to
1af0: 73 65 74 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 set. */.+{.+
1b00: 50 72 6f 63 20 2a 70 72 6f 63 50 74 72 20 3d 20 Proc *procPtr =
1b10: 28 50 72 6f 63 20 2a 29 20 73 72 63 50 74 72 2d (Proc *) srcPtr-
1b20: 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e 74 77 6f >internalRep.two
1b30: 50 74 72 56 61 6c 75 65 2e 70 74 72 31 3b 0a 2b PtrValue.ptr1;.+
1b40: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 73 4f Tcl_Obj *nsO
1b50: 62 6a 50 74 72 20 3d 20 28 54 63 6c 5f 4f 62 6a bjPtr = (Tcl_Obj
1b60: 20 2a 29 20 73 72 63 50 74 72 2d 3e 69 6e 74 65 *) srcPtr->inte
1b70: 72 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 rnalRep.twoPtrVa
1b80: 6c 75 65 2e 70 74 72 32 3b 0a 2b 0a 2b 20 20 20 lue.ptr2;.+.+
1b90: 20 63 6f 70 79 50 74 72 2d 3e 69 6e 74 65 72 6e copyPtr->intern
1ba0: 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 alRep.twoPtrValu
1bb0: 65 2e 70 74 72 31 20 3d 20 28 56 4f 49 44 20 2a e.ptr1 = (VOID *
1bc0: 29 20 70 72 6f 63 50 74 72 3b 0a 2b 20 20 20 20 ) procPtr;.+
1bd0: 63 6f 70 79 50 74 72 2d 3e 69 6e 74 65 72 6e 61 copyPtr->interna
1be0: 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 lRep.twoPtrValue
1bf0: 2e 70 74 72 32 20 3d 20 28 56 4f 49 44 20 2a 29 .ptr2 = (VOID *)
1c00: 20 6e 73 4f 62 6a 50 74 72 3b 0a 2b 0a 2b 20 20 nsObjPtr;.+.+
1c10: 20 20 70 72 6f 63 50 74 72 2d 3e 72 65 66 43 6f procPtr->refCo
1c20: 75 6e 74 2b 2b 3b 0a 2b 20 20 20 20 54 63 6c 5f unt++;.+ Tcl_
1c30: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6e 73 4f IncrRefCount(nsO
1c40: 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20 63 6f 70 bjPtr);.+ cop
1c50: 79 50 74 72 2d 3e 74 79 70 65 50 74 72 20 3d 20 yPtr->typePtr =
1c60: 26 74 63 6c 4c 61 6d 62 64 61 54 79 70 65 3b 0a &tclLambdaType;.
1c70: 2b 7d 0a 2b 0a 2b 73 74 61 74 69 63 20 76 6f 69 +}.+.+static voi
1c80: 64 0a 2b 46 72 65 65 4c 61 6d 62 64 61 49 6e 74 d.+FreeLambdaInt
1c90: 65 72 6e 61 6c 52 65 70 28 6f 62 6a 50 74 72 29 ernalRep(objPtr)
1ca0: 0a 2b 20 20 20 20 72 65 67 69 73 74 65 72 20 54 .+ register T
1cb0: 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 3b 09 cl_Obj *objPtr;.
1cc0: 2f 2a 20 43 6d 64 4e 61 6d 65 20 6f 62 6a 65 63 /* CmdName objec
1cd0: 74 20 77 69 74 68 20 69 6e 74 65 72 6e 61 6c 0a t with internal.
1ce0: 2b 09 09 09 09 20 2a 20 72 65 70 72 65 73 65 6e +.... * represen
1cf0: 74 61 74 69 6f 6e 20 74 6f 20 66 72 65 65 2e 20 tation to free.
1d00: 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 50 72 6f 63 20 */.+{.+ Proc
1d10: 2a 70 72 6f 63 50 74 72 20 3d 20 28 50 72 6f 63 *procPtr = (Proc
1d20: 20 2a 29 20 6f 62 6a 50 74 72 2d 3e 69 6e 74 65 *) objPtr->inte
1d30: 72 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 rnalRep.twoPtrVa
1d40: 6c 75 65 2e 70 74 72 31 3b 0a 2b 20 20 20 20 54 lue.ptr1;.+ T
1d50: 63 6c 5f 4f 62 6a 20 2a 6e 73 4f 62 6a 50 74 72 cl_Obj *nsObjPtr
1d60: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 29 20 6f = (Tcl_Obj *) o
1d70: 62 6a 50 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 bjPtr->internalR
1d80: 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 ep.twoPtrValue.p
1d90: 74 72 32 3b 0a 2b 0a 2b 20 20 20 20 70 72 6f 63 tr2;.+.+ proc
1da0: 50 74 72 2d 3e 72 65 66 43 6f 75 6e 74 2d 2d 3b Ptr->refCount--;
1db0: 0a 2b 20 20 20 20 69 66 20 28 70 72 6f 63 50 74 .+ if (procPt
1dc0: 72 2d 3e 72 65 66 43 6f 75 6e 74 20 3d 3d 20 30 r->refCount == 0
1dd0: 29 20 7b 0a 2b 09 54 63 6c 50 72 6f 63 43 6c 65 ) {.+.TclProcCle
1de0: 61 6e 75 70 50 72 6f 63 28 70 72 6f 63 50 74 72 anupProc(procPtr
1df0: 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 54 );.+ }.+ T
1e00: 63 6c 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6e clDecrRefCount(n
1e10: 73 4f 62 6a 50 74 72 29 3b 0a 2b 7d 0a 2b 0a 2b sObjPtr);.+}.+.+
1e20: 0a 2b 73 74 61 74 69 63 20 69 6e 74 0a 2b 53 65 .+static int.+Se
1e30: 74 4c 61 6d 62 64 61 46 72 6f 6d 41 6e 79 28 69 tLambdaFromAny(i
1e40: 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72 29 0a 2b nterp, objPtr).+
1e50: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a Tcl_Interp *
1e60: 69 6e 74 65 72 70 3b 09 09 2f 2a 20 55 73 65 64 interp;../* Used
1e70: 20 66 6f 72 20 65 72 72 6f 72 20 72 65 70 6f 72 for error repor
1e80: 74 69 6e 67 20 69 66 20 6e 6f 74 20 4e 55 4c 4c ting if not NULL
1e90: 2e 20 2a 2f 0a 2b 20 20 20 20 72 65 67 69 73 74 . */.+ regist
1ea0: 65 72 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 er Tcl_Obj *objP
1eb0: 74 72 3b 09 2f 2a 20 54 68 65 20 6f 62 6a 65 63 tr;./* The objec
1ec0: 74 20 74 6f 20 63 6f 6e 76 65 72 74 2e 20 2a 2f t to convert. */
1ed0: 0a 2b 7b 0a 2b 20 20 20 20 63 68 61 72 20 2a 6e .+{.+ char *n
1ee0: 61 6d 65 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 ame;.+ Tcl_Ob
1ef0: 6a 20 2a 61 72 67 73 50 74 72 2c 20 2a 62 6f 64 j *argsPtr, *bod
1f00: 79 50 74 72 2c 20 2a 6e 73 4f 62 6a 50 74 72 2c yPtr, *nsObjPtr,
1f10: 20 2a 2a 6f 62 6a 76 2c 20 2a 65 72 72 50 74 72 **objv, *errPtr
1f20: 3b 0a 2b 20 20 20 20 69 6e 74 20 6f 62 6a 63 3b ;.+ int objc;
1f30: 0a 2b 20 20 20 20 50 72 6f 63 20 2a 70 72 6f 63 .+ Proc *proc
1f40: 50 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 72 65 Ptr;.+ int re
1f50: 73 75 6c 74 3b 0a 2b 0a 2b 20 20 20 20 2f 2a 0a sult;.+.+ /*.
1f60: 2b 20 20 20 20 20 2a 20 43 6f 6e 76 65 72 74 20 + * Convert
1f70: 6f 62 6a 50 74 72 20 74 6f 20 6c 69 73 74 20 74 objPtr to list t
1f80: 79 70 65 20 66 69 72 73 74 3b 20 69 66 20 69 74 ype first; if it
1f90: 20 63 61 6e 6e 6f 74 20 62 65 0a 2b 20 20 20 20 cannot be.+
1fa0: 20 2a 20 63 6f 6e 76 65 72 74 65 64 2c 20 6f 72 * converted, or
1fb0: 20 69 66 20 69 74 73 20 6c 65 6e 67 74 68 20 69 if its length i
1fc0: 73 20 6e 6f 74 20 32 2c 20 74 68 65 6e 20 69 74 s not 2, then it
1fd0: 20 63 61 6e 6e 6f 74 0a 2b 20 20 20 20 20 2a 20 cannot.+ *
1fe0: 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 be converted to
1ff0: 74 63 6c 4c 61 6d 62 64 61 54 79 70 65 2e 0a 2b tclLambdaType..+
2000: 20 20 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 72 */.+.+ r
2010: 65 73 75 6c 74 20 3d 20 54 63 6c 5f 4c 69 73 74 esult = Tcl_List
2020: 4f 62 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 ObjGetElements(i
2030: 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72 2c 20 26 nterp, objPtr, &
2040: 6f 62 6a 63 2c 20 26 6f 62 6a 76 29 3b 0a 2b 20 objc, &objv);.+
2050: 20 20 20 69 66 20 28 28 72 65 73 75 6c 74 20 21 if ((result !
2060: 3d 20 54 43 4c 5f 4f 4b 29 20 7c 7c 20 28 28 6f = TCL_OK) || ((o
2070: 62 6a 63 20 21 3d 20 32 29 20 26 26 20 28 6f 62 bjc != 2) && (ob
2080: 6a 63 20 21 3d 20 33 29 29 29 20 7b 0a 2b 09 65 jc != 3))) {.+.e
2090: 72 72 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 53 rrPtr = Tcl_NewS
20a0: 74 72 69 6e 67 4f 62 6a 28 22 63 61 6e 27 74 20 tringObj("can't
20b0: 69 6e 74 65 72 70 72 65 74 20 5c 22 22 2c 2d 31 interpret \"",-1
20c0: 29 3b 0a 2b 09 54 63 6c 5f 49 6e 63 72 52 65 66 );.+.Tcl_IncrRef
20d0: 43 6f 75 6e 74 28 65 72 72 50 74 72 29 3b 0a 2b Count(errPtr);.+
20e0: 09 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 54 6f .Tcl_AppendObjTo
20f0: 4f 62 6a 28 65 72 72 50 74 72 2c 20 6f 62 6a 50 Obj(errPtr, objP
2100: 74 72 29 3b 0a 2b 09 54 63 6c 5f 41 70 70 65 6e tr);.+.Tcl_Appen
2110: 64 54 6f 4f 62 6a 28 65 72 72 50 74 72 2c 20 22 dToObj(errPtr, "
2120: 5c 22 20 61 73 20 61 20 6c 61 6d 62 64 61 20 65 \" as a lambda e
2130: 78 70 72 65 73 73 69 6f 6e 22 2c 20 2d 31 29 3b xpression", -1);
2140: 0a 2b 09 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 .+.Tcl_SetObjRes
2150: 75 6c 74 28 69 6e 74 65 72 70 2c 20 65 72 72 50 ult(interp, errP
2160: 74 72 29 3b 0a 2b 09 54 63 6c 5f 44 65 63 72 52 tr);.+.Tcl_DecrR
2170: 65 66 43 6f 75 6e 74 28 65 72 72 50 74 72 29 3b efCount(errPtr);
2180: 0a 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 .+.return TCL_ER
2190: 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 ROR;.+ }.+.+
21a0: 20 20 20 61 72 67 73 50 74 72 20 3d 20 6f 62 6a argsPtr = obj
21b0: 76 5b 30 5d 3b 0a 2b 20 20 20 20 62 6f 64 79 50 v[0];.+ bodyP
21c0: 74 72 20 3d 20 6f 62 6a 76 5b 31 5d 3b 0a 2b 0a tr = objv[1];.+.
21d0: 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 + /*.+ *
21e0: 43 72 65 61 74 65 20 61 6e 64 20 69 6e 69 74 69 Create and initi
21f0: 61 6c 69 7a 65 20 74 68 65 20 50 72 6f 63 20 73 alize the Proc s
2200: 74 72 75 63 74 2e 20 54 68 65 20 63 6d 64 50 74 truct. The cmdPt
2210: 72 20 66 69 65 6c 64 20 69 73 0a 2b 20 20 20 20 r field is.+
2220: 20 2a 20 73 65 74 20 74 6f 20 4e 55 4c 4c 20 74 * set to NULL t
2230: 6f 20 73 69 67 6e 61 6c 20 74 68 61 74 20 74 68 o signal that th
2240: 69 73 20 69 73 20 61 6e 20 61 6e 6f 6e 79 6d 6f is is an anonymo
2250: 75 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 2b 20 20 us function..+
2260: 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 6e 61 6d */.+.+ nam
2270: 65 20 3d 20 54 63 6c 47 65 74 53 74 72 69 6e 67 e = TclGetString
2280: 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20 0a (objPtr);.+ .
2290: 2b 20 20 20 20 69 66 20 28 54 63 6c 43 72 65 61 + if (TclCrea
22a0: 74 65 50 72 6f 63 28 69 6e 74 65 72 70 2c 20 2f teProc(interp, /
22b0: 2a 69 67 6e 6f 72 65 64 20 6e 73 50 74 72 2a 2f *ignored nsPtr*/
22c0: 20 4e 55 4c 4c 2c 20 6e 61 6d 65 2c 20 61 72 67 NULL, name, arg
22d0: 73 50 74 72 2c 0a 2b 09 09 62 6f 64 79 50 74 72 sPtr,.+..bodyPtr
22e0: 2c 20 26 70 72 6f 63 50 74 72 29 20 21 3d 20 54 , &procPtr) != T
22f0: 43 4c 5f 4f 4b 29 20 7b 0a 2b 20 20 20 20 20 20 CL_OK) {.+
2300: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 return TCL_ERR
2310: 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 OR;.+ }.+
2320: 70 72 6f 63 50 74 72 2d 3e 72 65 66 43 6f 75 6e procPtr->refCoun
2330: 74 2b 2b 3b 0a 2b 20 20 20 20 70 72 6f 63 50 74 t++;.+ procPt
2340: 72 2d 3e 63 6d 64 50 74 72 20 3d 20 28 43 6f 6d r->cmdPtr = (Com
2350: 6d 61 6e 64 20 2a 29 20 4e 55 4c 4c 3b 0a 2b 0a mand *) NULL;.+.
2360: 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 + /*.+ *
2370: 53 65 74 20 74 68 65 20 6e 61 6d 65 73 70 61 63 Set the namespac
2380: 65 20 66 6f 72 20 74 68 69 73 20 6c 61 6d 62 64 e for this lambd
2390: 61 3a 20 67 69 76 65 6e 20 62 79 20 6f 62 6a 76 a: given by objv
23a0: 5b 32 5d 20 75 6e 64 65 72 73 74 6f 6f 64 0a 2b [2] understood.+
23b0: 20 20 20 20 20 2a 20 61 73 20 61 20 67 6c 6f 62 * as a glob
23c0: 61 6c 20 72 65 66 65 72 65 6e 63 65 2c 20 6f 72 al reference, or
23d0: 20 65 6c 73 65 20 67 6c 6f 62 61 6c 20 70 65 72 else global per
23e0: 20 64 65 66 61 75 6c 74 2e 0a 2b 20 20 20 20 20 default..+
23f0: 2a 2f 0a 2b 20 20 20 20 0a 2b 20 20 20 20 6e 73 */.+ .+ ns
2400: 4f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 ObjPtr = Tcl_New
2410: 53 74 72 69 6e 67 4f 62 6a 28 22 3a 3a 22 2c 20 StringObj("::",
2420: 32 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 63 2);.+ Tcl_Inc
2430: 72 52 65 66 43 6f 75 6e 74 28 6e 73 4f 62 6a 50 rRefCount(nsObjP
2440: 74 72 29 3b 20 20 20 20 0a 2b 0a 2b 20 20 20 20 tr); .+.+
2450: 69 66 20 28 6f 62 6a 63 20 3d 3d 20 33 29 20 7b if (objc == 3) {
2460: 0a 2b 09 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a .+.Tcl_AppendObj
2470: 54 6f 4f 62 6a 28 6e 73 4f 62 6a 50 74 72 2c 20 ToObj(nsObjPtr,
2480: 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 20 20 20 20 7d objv[2]);.+ }
2490: 0a 2b 09 20 20 20 20 09 0a 2b 20 20 20 20 0a 2b .+. ..+ .+
24a0: 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 46 /*.+ * F
24b0: 72 65 65 20 74 68 65 20 6c 69 73 74 20 69 6e 74 ree the list int
24c0: 65 72 6e 61 6c 72 65 70 20 6f 66 20 6f 62 6a 50 ernalrep of objP
24d0: 74 72 20 2d 20 74 68 69 73 20 77 69 6c 6c 20 66 tr - this will f
24e0: 72 65 65 20 61 72 67 73 50 74 72 2c 20 62 75 74 ree argsPtr, but
24f0: 0a 2b 20 20 20 20 20 2a 20 62 6f 64 79 50 74 72 .+ * bodyPtr
2500: 20 72 65 74 61 69 6e 73 20 61 20 72 65 66 65 72 retains a refer
2510: 65 6e 63 65 20 66 72 6f 6d 20 74 68 65 20 50 72 ence from the Pr
2520: 6f 63 20 73 74 72 75 63 74 75 72 65 2e 20 54 68 oc structure. Th
2530: 65 6e 20 66 69 6e 69 73 68 0a 2b 20 20 20 20 20 en finish.+
2540: 2a 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e * the conversion
2550: 20 74 6f 20 74 63 6c 4c 61 6d 62 64 61 54 79 70 to tclLambdaTyp
2560: 65 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b 20 e..+ */.+.+
2570: 20 20 20 6f 62 6a 50 74 72 2d 3e 74 79 70 65 50 objPtr->typeP
2580: 74 72 2d 3e 66 72 65 65 49 6e 74 52 65 70 50 72 tr->freeIntRepPr
2590: 6f 63 28 6f 62 6a 50 74 72 29 3b 0a 2b 0a 2b 20 oc(objPtr);.+.+
25a0: 20 20 20 6f 62 6a 50 74 72 2d 3e 69 6e 74 65 72 objPtr->inter
25b0: 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c nalRep.twoPtrVal
25c0: 75 65 2e 70 74 72 31 20 3d 20 28 56 4f 49 44 20 ue.ptr1 = (VOID
25d0: 2a 29 20 70 72 6f 63 50 74 72 3b 0a 2b 20 20 20 *) procPtr;.+
25e0: 20 6f 62 6a 50 74 72 2d 3e 69 6e 74 65 72 6e 61 objPtr->interna
25f0: 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 lRep.twoPtrValue
2600: 2e 70 74 72 32 20 3d 20 28 56 4f 49 44 20 2a 29 .ptr2 = (VOID *)
2610: 20 6e 73 4f 62 6a 50 74 72 3b 0a 2b 20 20 20 20 nsObjPtr;.+
2620: 6f 62 6a 50 74 72 2d 3e 74 79 70 65 50 74 72 20 objPtr->typePtr
2630: 3d 20 26 74 63 6c 4c 61 6d 62 64 61 54 79 70 65 = &tclLambdaType
2640: 3b 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 ;.+ return TC
2650: 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0a 2b 69 6e 74 0a L_OK;.+}.+.+int.
2660: 2b 54 63 6c 5f 41 70 70 6c 79 4f 62 6a 43 6d 64 +Tcl_ApplyObjCmd
2670: 28 64 75 6d 6d 79 2c 20 69 6e 74 65 72 70 2c 20 (dummy, interp,
2680: 6f 62 6a 63 2c 20 6f 62 6a 76 29 0a 2b 20 20 20 objc, objv).+
2690: 20 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d ClientData dumm
26a0: 79 3b 09 09 2f 2a 20 4e 6f 74 20 75 73 65 64 2e y;../* Not used.
26b0: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 */.+ Tcl_Int
26c0: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a erp *interp;../*
26d0: 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72 Current interpr
26e0: 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e eter. */.+ in
26f0: 74 20 6f 62 6a 63 3b 09 09 09 2f 2a 20 4e 75 6d t objc;.../* Num
2700: 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 ber of arguments
2710: 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 . */.+ Tcl_Ob
2720: 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 3b j *CONST objv[];
2730: 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62 6a ./* Argument obj
2740: 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 ects. */.+{.+
2750: 20 49 6e 74 65 72 70 20 2a 69 50 74 72 20 3d 20 Interp *iPtr =
2760: 28 49 6e 74 65 72 70 20 2a 29 20 69 6e 74 65 72 (Interp *) inter
2770: 70 3b 0a 2b 20 20 20 20 50 72 6f 63 20 2a 70 72 p;.+ Proc *pr
2780: 6f 63 50 74 72 3b 0a 2b 20 20 20 20 54 63 6c 5f ocPtr;.+ Tcl_
2790: 4f 62 6a 20 2a 6c 61 6d 62 64 61 50 74 72 2c 20 Obj *lambdaPtr,
27a0: 2a 6e 73 4f 62 6a 50 74 72 2c 20 2a 65 72 72 50 *nsObjPtr, *errP
27b0: 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 72 65 73 tr;.+ int res
27c0: 75 6c 74 3b 0a 2b 20 20 20 20 43 6f 6d 6d 61 6e ult;.+ Comman
27d0: 64 20 63 6d 64 3b 0a 2b 20 20 20 20 54 63 6c 5f d cmd;.+ Tcl_
27e0: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 Namespace *nsPtr
27f0: 3b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 69 66 20 ;.+ .+ if
2800: 28 6f 62 6a 63 20 3c 20 32 29 20 7b 0a 2b 09 54 (objc < 2) {.+.T
2810: 63 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 cl_WrongNumArgs(
2820: 69 6e 74 65 72 70 2c 20 31 2c 20 6f 62 6a 76 2c interp, 1, objv,
2830: 20 22 6c 61 6d 62 64 61 45 78 70 72 20 3f 61 72 "lambdaExpr ?ar
2840: 67 31 20 61 72 67 32 20 2e 2e 2e 3f 22 29 3b 0a g1 arg2 ...?");.
2850: 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 +.return TCL_ERR
2860: 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 OR;.+ }.+.+
2870: 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 53 65 74 /*.+ * Set
2880: 20 6c 61 6d 62 64 61 50 74 72 2c 20 63 6f 6e 76 lambdaPtr, conv
2890: 65 72 74 20 69 74 20 74 6f 20 74 63 6c 4c 61 6d ert it to tclLam
28a0: 62 64 61 54 79 70 65 20 69 6e 20 74 68 65 20 63 bdaType in the c
28b0: 75 72 72 65 6e 74 0a 2b 20 20 20 20 20 2a 20 69 urrent.+ * i
28c0: 6e 74 65 72 70 20 69 66 20 6e 65 63 65 73 73 61 nterp if necessa
28d0: 72 79 2e 0a 2b 20 20 20 20 20 2a 2f 0a 20 0a 2b ry..+ */. .+
28e0: 20 20 20 20 6c 61 6d 62 64 61 50 74 72 20 3d 20 lambdaPtr =
28f0: 6f 62 6a 76 5b 31 5d 3b 0a 2b 20 20 20 20 69 66 objv[1];.+ if
2900: 20 28 6c 61 6d 62 64 61 50 74 72 2d 3e 74 79 70 (lambdaPtr->typ
2910: 65 50 74 72 20 3d 3d 20 26 74 63 6c 4c 61 6d 62 ePtr == &tclLamb
2920: 64 61 54 79 70 65 29 20 7b 0a 2b 09 70 72 6f 63 daType) {.+.proc
2930: 50 74 72 20 3d 20 28 50 72 6f 63 20 2a 29 20 6c Ptr = (Proc *) l
2940: 61 6d 62 64 61 50 74 72 2d 3e 69 6e 74 65 72 6e ambdaPtr->intern
2950: 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 alRep.twoPtrValu
2960: 65 2e 70 74 72 31 3b 0a 2b 20 20 20 20 7d 20 65 e.ptr1;.+ } e
2970: 6c 73 65 20 7b 0a 2b 09 70 72 6f 63 50 74 72 20 lse {.+.procPtr
2980: 3d 20 28 50 72 6f 63 20 2a 29 20 4e 55 4c 4c 3b = (Proc *) NULL;
2990: 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 69 .+ }.+.+ i
29a0: 66 20 28 28 70 72 6f 63 50 74 72 20 3d 3d 20 4e f ((procPtr == N
29b0: 55 4c 4c 29 20 7c 7c 20 28 70 72 6f 63 50 74 72 ULL) || (procPtr
29c0: 2d 3e 69 50 74 72 20 21 3d 20 69 50 74 72 29 29 ->iPtr != iPtr))
29d0: 20 7b 0a 2b 09 72 65 73 75 6c 74 20 3d 20 53 65 {.+.result = Se
29e0: 74 4c 61 6d 62 64 61 46 72 6f 6d 41 6e 79 28 69 tLambdaFromAny(i
29f0: 6e 74 65 72 70 2c 20 6c 61 6d 62 64 61 50 74 72 nterp, lambdaPtr
2a00: 29 3b 0a 2b 09 69 66 20 28 72 65 73 75 6c 74 20 );.+.if (result
2a10: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 != TCL_OK) {.+.
2a20: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 return result
2a30: 3b 0a 2b 09 7d 0a 2b 09 70 72 6f 63 50 74 72 20 ;.+.}.+.procPtr
2a40: 3d 20 28 50 72 6f 63 20 2a 29 20 6c 61 6d 62 64 = (Proc *) lambd
2a50: 61 50 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 aPtr->internalRe
2a60: 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 74 p.twoPtrValue.pt
2a70: 72 31 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 r1;.+ }.+
2a80: 70 72 6f 63 50 74 72 2d 3e 63 6d 64 50 74 72 20 procPtr->cmdPtr
2a90: 3d 20 26 63 6d 64 3b 0a 2b 20 20 20 20 0a 2b 20 = &cmd;.+ .+
2aa0: 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 46 69 /*.+ * Fi
2ab0: 6e 64 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 nd the namespace
2ac0: 20 77 68 65 72 65 20 74 68 69 73 20 6c 61 6d 62 where this lamb
2ad0: 64 61 20 73 68 6f 75 6c 64 20 72 75 6e 2c 20 61 da should run, a
2ae0: 6e 64 0a 2b 20 20 20 20 20 2a 20 70 75 73 68 20 nd.+ * push
2af0: 61 20 63 61 6c 6c 20 66 72 61 6d 65 20 66 6f 72 a call frame for
2b00: 20 74 68 61 74 20 6e 61 6d 65 73 70 61 63 65 2e that namespace.
2b10: 20 4e 6f 74 65 20 74 68 61 74 0a 2b 20 20 20 20 Note that.+
2b20: 20 2a 20 54 63 6c 4f 62 6a 49 6e 74 65 72 70 50 * TclObjInterpP
2b30: 72 6f 63 28 29 20 77 69 6c 6c 20 70 6f 70 20 69 roc() will pop i
2b40: 74 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 20 20 20 t..+ */.+
2b50: 20 0a 2b 20 20 20 20 6e 73 4f 62 6a 50 74 72 20 .+ nsObjPtr
2b60: 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 29 20 6c 61 = (Tcl_Obj *) la
2b70: 6d 62 64 61 50 74 72 2d 3e 69 6e 74 65 72 6e 61 mbdaPtr->interna
2b80: 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 lRep.twoPtrValue
2b90: 2e 70 74 72 32 3b 0a 2b 20 20 20 20 72 65 73 75 .ptr2;.+ resu
2ba0: 6c 74 20 20 3d 20 54 63 6c 47 65 74 4e 61 6d 65 lt = TclGetName
2bb0: 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 69 6e 74 spaceFromObj(int
2bc0: 65 72 70 2c 20 6e 73 4f 62 6a 50 74 72 2c 20 26 erp, nsObjPtr, &
2bd0: 6e 73 50 74 72 29 3b 0a 2b 20 20 20 20 69 66 20 nsPtr);.+ if
2be0: 28 72 65 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f (result != TCL_O
2bf0: 4b 29 20 7b 0a 2b 09 72 65 74 75 72 6e 20 72 65 K) {.+.return re
2c00: 73 75 6c 74 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 sult;.+ }.+
2c10: 20 20 69 66 20 28 6e 73 50 74 72 20 3d 3d 20 28 if (nsPtr == (
2c20: 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 29 Tcl_Namespace *)
2c30: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 65 72 72 50 74 NULL) {.+.errPt
2c40: 72 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e r = Tcl_NewStrin
2c50: 67 4f 62 6a 28 22 63 61 6e 6e 6f 74 20 66 69 6e gObj("cannot fin
2c60: 64 20 6e 61 6d 65 73 70 61 63 65 20 5c 22 22 2c d namespace \"",
2c70: 2d 31 29 3b 0a 2b 09 54 63 6c 5f 49 6e 63 72 52 -1);.+.Tcl_IncrR
2c80: 65 66 43 6f 75 6e 74 28 65 72 72 50 74 72 29 3b efCount(errPtr);
2c90: 0a 2b 09 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a .+.Tcl_AppendObj
2ca0: 54 6f 4f 62 6a 28 65 72 72 50 74 72 2c 20 6e 73 ToObj(errPtr, ns
2cb0: 4f 62 6a 50 74 72 29 3b 0a 2b 09 54 63 6c 5f 41 ObjPtr);.+.Tcl_A
2cc0: 70 70 65 6e 64 54 6f 4f 62 6a 28 65 72 72 50 74 ppendToObj(errPt
2cd0: 72 2c 20 22 5c 22 22 2c 20 2d 31 29 3b 0a 2b 09 r, "\"", -1);.+.
2ce0: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 Tcl_SetObjResult
2cf0: 28 69 6e 74 65 72 70 2c 20 65 72 72 50 74 72 29 (interp, errPtr)
2d00: 3b 0a 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43 ;.+.Tcl_DecrRefC
2d10: 6f 75 6e 74 28 65 72 72 50 74 72 29 3b 0a 2b 09 ount(errPtr);.+.
2d20: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 return TCL_ERROR
2d30: 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 ;.+ }.+.+
2d40: 2f 2a 0a 2b 20 20 20 20 20 20 63 6d 64 20 3d 20 /*.+ cmd =
2d50: 2a 28 28 43 6f 6d 6d 61 6e 64 20 2a 29 20 54 63 *((Command *) Tc
2d60: 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64 46 72 6f 6d l_GetCommandFrom
2d70: 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 Obj(interp, objv
2d80: 5b 30 5d 29 29 3b 0a 2b 20 20 20 20 2a 2f 0a 2b [0]));.+ */.+
2d90: 20 20 20 20 63 6d 64 2e 6e 73 50 74 72 20 3d 20 cmd.nsPtr =
2da0: 28 4e 61 6d 65 73 70 61 63 65 20 2a 29 20 6e 73 (Namespace *) ns
2db0: 50 74 72 3b 0a 2b 0a 2b 20 20 20 20 72 65 74 75 Ptr;.+.+ retu
2dc0: 72 6e 20 54 63 6c 4f 62 6a 49 6e 74 65 72 70 50 rn TclObjInterpP
2dd0: 72 6f 63 28 28 43 6c 69 65 6e 74 44 61 74 61 29 roc((ClientData)
2de0: 20 70 72 6f 63 50 74 72 2c 20 69 6e 74 65 72 70 procPtr, interp
2df0: 2c 20 6f 62 6a 63 2d 31 2c 20 6f 62 6a 76 2b 31 , objc-1, objv+1
2e00: 29 3b 0a 2b 7d 0a );.+}.