Tcl Source Code

Hex Artifact Content
Login

Artifact fcd0902c0165f8b0bb3a42c8049fa59c59168884:

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                                );.+}.