] by
dkf
2016-09-17 13:38:14.
0000: 44 20 32 30 31 36 2d 30 39 2d 31 37 54 31 33 3a D 2016-09-17T13:
0010: 33 38 3a 31 34 2e 31 39 34 0a 4c 20 44 6f 63 3a 38:14.194.L Doc:
0020: 5c 73 54 63 6c 5f 4d 65 74 68 6f 64 0a 4e 20 74 \sTcl_Method.N t
0030: 65 78 74 2f 78 2d 6d 61 72 6b 64 6f 77 6e 0a 50 ext/x-markdown.P
0040: 20 34 33 34 61 33 66 61 66 30 61 35 36 34 61 64 434a3faf0a564ad
0050: 39 64 63 39 35 61 31 62 65 32 61 30 39 38 62 30 9dc95a1be2a098b0
0060: 36 62 31 32 35 30 66 66 66 0a 55 20 64 6b 66 0a 6b1250fff.U dkf.
0070: 57 20 31 32 35 32 37 0a 3c 68 31 3e 54 63 6c 5c W 12527.<h1>Tcl\
0080: 5f 4d 65 74 68 6f 64 20 61 6e 64 20 73 75 70 70 _Method and supp
0090: 6f 72 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 orting functions
00a0: 3c 2f 68 31 3e 0d 0a 3c 44 4c 20 73 74 79 6c 65 </h1>..<DL style
00b0: 3d 22 66 6f 6e 74 2d 73 69 7a 65 3a 2e 38 35 65 ="font-size:.85e
00c0: 6d 22 3e 0d 0a 3c 44 44 3e 3c 41 20 48 52 45 46 m">..<DD><A HREF
00d0: 3d 22 23 4d 32 22 20 4e 41 4d 45 3d 22 4c 34 37 ="#M2" NAME="L47
00e0: 36 22 3e 4e 41 4d 45 3c 2f 41 3e 0d 0a 3c 44 44 6">NAME</A>..<DD
00f0: 3e 3c 41 20 48 52 45 46 3d 22 23 4d 33 22 20 4e ><A HREF="#M3" N
0100: 41 4d 45 3d 22 4c 34 37 37 22 3e 53 59 4e 4f 50 AME="L477">SYNOP
0110: 53 49 53 3c 2f 41 3e 0d 0a 3c 44 44 3e 3c 41 20 SIS</A>..<DD><A
0120: 48 52 45 46 3d 22 23 4d 35 22 20 4e 41 4d 45 3d HREF="#M5" NAME=
0130: 22 4c 34 37 39 22 3e 44 45 53 43 52 49 50 54 49 "L479">DESCRIPTI
0140: 4f 4e 3c 2f 41 3e 0d 0a 3c 44 44 3e 3c 41 20 48 ON</A>..<DD><A H
0150: 52 45 46 3d 22 23 4d 36 22 20 4e 41 4d 45 3d 22 REF="#M6" NAME="
0160: 4c 34 38 30 22 3e 4d 45 54 48 4f 44 20 43 52 45 L480">METHOD CRE
0170: 41 54 49 4f 4e 3c 2f 41 3e 0d 0a 3c 44 44 3e 3c ATION</A>..<DD><
0180: 41 20 48 52 45 46 3d 22 23 4d 37 22 20 4e 41 4d A HREF="#M7" NAM
0190: 45 3d 22 4c 34 38 31 22 3e 4d 45 54 48 4f 44 20 E="L481">METHOD
01a0: 43 41 4c 4c 20 43 4f 4e 54 45 58 54 53 3c 2f 41 CALL CONTEXTS</A
01b0: 3e 0d 0a 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 >..<DD><A HREF="
01c0: 23 4d 38 22 20 4e 41 4d 45 3d 22 4c 34 38 32 22 #M8" NAME="L482"
01d0: 3e 4d 45 54 48 4f 44 20 54 59 50 45 53 3c 2f 41 >METHOD TYPES</A
01e0: 3e 0d 0a 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 >..<DD><A HREF="
01f0: 23 4d 39 22 20 4e 41 4d 45 3d 22 4c 34 38 33 22 #M9" NAME="L483"
0200: 3e 54 43 4c 5c 5f 4d 45 54 48 4f 44 43 41 4c 4c >TCL\_METHODCALL
0210: 50 52 4f 43 20 46 55 4e 43 54 49 4f 4e 20 53 49 PROC FUNCTION SI
0220: 47 4e 41 54 55 52 45 3c 2f 41 3e 0d 0a 3c 44 44 GNATURE</A>..<DD
0230: 3e 3c 41 20 48 52 45 46 3d 22 23 4d 31 30 22 20 ><A HREF="#M10"
0240: 4e 41 4d 45 3d 22 4c 34 38 34 22 3e 54 43 4c 5c NAME="L484">TCL\
0250: 5f 4d 45 54 48 4f 44 44 45 4c 45 54 45 50 52 4f _METHODDELETEPRO
0260: 43 20 46 55 4e 43 54 49 4f 4e 20 53 49 47 4e 41 C FUNCTION SIGNA
0270: 54 55 52 45 3c 2f 41 3e 0d 0a 3c 44 44 3e 3c 41 TURE</A>..<DD><A
0280: 20 48 52 45 46 3d 22 23 4d 31 31 22 20 4e 41 4d HREF="#M11" NAM
0290: 45 3d 22 4c 34 38 35 22 3e 54 43 4c 5c 5f 43 4c E="L485">TCL\_CL
02a0: 4f 4e 45 50 52 4f 43 20 46 55 4e 43 54 49 4f 4e ONEPROC FUNCTION
02b0: 20 53 49 47 4e 41 54 55 52 45 3c 2f 41 3e 0d 0a SIGNATURE</A>..
02c0: 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 23 4d 31 <DD><A HREF="#M1
02d0: 32 22 20 4e 41 4d 45 3d 22 4c 34 38 36 22 3e 53 2" NAME="L486">S
02e0: 45 45 20 41 4c 53 4f 3c 2f 41 3e 0d 0a 3c 44 44 EE ALSO</A>..<DD
02f0: 3e 3c 41 20 48 52 45 46 3d 22 23 4d 31 33 22 20 ><A HREF="#M13"
0300: 4e 41 4d 45 3d 22 4c 34 38 37 22 3e 4b 45 59 57 NAME="L487">KEYW
0310: 4f 52 44 53 3c 2f 41 3e 0d 0a 3c 2f 44 4c 3e 0d ORDS</A>..</DL>.
0320: 0a 3c 48 33 3e 3c 41 20 4e 41 4d 45 3d 22 4d 32 .<H3><A NAME="M2
0330: 22 3e 4e 41 4d 45 3c 2f 41 3e 3c 2f 48 33 3e 0d ">NAME</A></H3>.
0340: 0a 3c 62 3e 54 63 6c 5c 5f 43 6c 61 73 73 53 65 .<b>Tcl\_ClassSe
0350: 74 43 6f 6e 73 74 72 75 63 74 6f 72 3c 2f 62 3e tConstructor</b>
0360: 2c 20 3c 62 3e 54 63 6c 5c 5f 43 6c 61 73 73 53 , <b>Tcl\_ClassS
0370: 65 74 44 65 73 74 72 75 63 74 6f 72 3c 2f 62 3e etDestructor</b>
0380: 2c 20 3c 62 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 , <b>Tcl\_Method
0390: 44 65 63 6c 61 72 65 72 43 6c 61 73 73 3c 2f 62 DeclarerClass</b
03a0: 3e 2c 20 3c 62 3e 54 63 6c 5c 5f 4d 65 74 68 6f >, <b>Tcl\_Metho
03b0: 64 44 65 63 6c 61 72 65 72 4f 62 6a 65 63 74 3c dDeclarerObject<
03c0: 2f 62 3e 2c 20 3c 62 3e 54 63 6c 5c 5f 4d 65 74 /b>, <b>Tcl\_Met
03d0: 68 6f 64 49 73 50 75 62 6c 69 63 3c 2f 62 3e 2c hodIsPublic</b>,
03e0: 20 3c 62 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 49 <b>Tcl\_MethodI
03f0: 73 54 79 70 65 3c 2f 62 3e 2c 20 3c 62 3e 54 63 sType</b>, <b>Tc
0400: 6c 5c 5f 4d 65 74 68 6f 64 4e 61 6d 65 3c 2f 62 l\_MethodName</b
0410: 3e 2c 20 3c 62 3e 54 63 6c 5c 5f 4e 65 77 49 6e >, <b>Tcl\_NewIn
0420: 73 74 61 6e 63 65 4d 65 74 68 6f 64 3c 2f 62 3e stanceMethod</b>
0430: 2c 20 3c 62 3e 54 63 6c 5c 5f 4e 65 77 4d 65 74 , <b>Tcl\_NewMet
0440: 68 6f 64 3c 2f 62 3e 2c 20 3c 62 3e 54 63 6c 5c hod</b>, <b>Tcl\
0450: 5f 4f 62 6a 65 63 74 43 6f 6e 74 65 78 74 49 6e _ObjectContextIn
0460: 76 6f 6b 65 4e 65 78 74 3c 2f 62 3e 2c 20 3c 62 vokeNext</b>, <b
0470: 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 43 6f 6e 74 >Tcl\_ObjectCont
0480: 65 78 74 49 73 46 69 6c 74 65 72 69 6e 67 3c 2f extIsFiltering</
0490: 62 3e 2c 20 3c 62 3e 54 63 6c 5c 5f 4f 62 6a 65 b>, <b>Tcl\_Obje
04a0: 63 74 43 6f 6e 74 65 78 74 4d 65 74 68 6f 64 3c ctContextMethod<
04b0: 2f 62 3e 2c 20 3c 62 3e 54 63 6c 5c 5f 4f 62 6a /b>, <b>Tcl\_Obj
04c0: 65 63 74 43 6f 6e 74 65 78 74 4f 62 6a 65 63 74 ectContextObject
04d0: 3c 2f 62 3e 2c 20 3c 62 3e 54 63 6c 5c 5f 4f 62 </b>, <b>Tcl\_Ob
04e0: 6a 65 63 74 43 6f 6e 74 65 78 74 53 6b 69 70 70 jectContextSkipp
04f0: 65 64 41 72 67 73 3c 2f 62 3e 20 26 6d 64 61 73 edArgs</b> &mdas
0500: 68 3b 20 6d 61 6e 69 70 75 6c 61 74 65 20 6d 65 h; manipulate me
0510: 74 68 6f 64 73 20 61 6e 64 20 6d 65 74 68 6f 64 thods and method
0520: 2d 63 61 6c 6c 20 63 6f 6e 74 65 78 74 73 0d 0a -call contexts..
0530: 3c 48 33 3e 3c 41 20 4e 41 4d 45 3d 22 4d 33 22 <H3><A NAME="M3"
0540: 3e 53 59 4e 4f 50 53 49 53 3c 2f 41 3e 3c 2f 48 >SYNOPSIS</A></H
0550: 33 3e 0d 0a 3c 42 3e 23 69 6e 63 6c 75 64 65 20 3>..<B>#include
0560: 26 6c 74 3b 74 63 6c 4f 4f 2e 68 26 67 74 3b 3c <tclOO.h><
0570: 2f 42 3e 3c 42 52 3e 3c 62 72 3e 0d 0a 54 63 6c /B><BR><br>..Tcl
0580: 5c 5f 4d 65 74 68 6f 64 20 3c 42 3e 54 63 6c 5c \_Method <B>Tcl\
0590: 5f 4e 65 77 4d 65 74 68 6f 64 3c 2f 42 3e 28 3c _NewMethod</B>(<
05a0: 49 3e 69 6e 74 65 72 70 2c 20 63 6c 61 73 73 2c I>interp, class,
05b0: 20 6e 61 6d 65 4f 62 6a 2c 20 69 73 50 75 62 6c nameObj, isPubl
05c0: 69 63 2c 20 6d 65 74 68 6f 64 54 79 70 65 50 74 ic, methodTypePt
05d0: 72 2c 20 63 6c 69 65 6e 74 44 61 74 61 3c 2f 49 r, clientData</I
05e0: 3e 29 3c 42 52 3e 0d 0a 54 63 6c 5c 5f 4d 65 74 >)<BR>..Tcl\_Met
05f0: 68 6f 64 20 3c 42 3e 54 63 6c 5c 5f 4e 65 77 49 hod <B>Tcl\_NewI
0600: 6e 73 74 61 6e 63 65 4d 65 74 68 6f 64 3c 2f 42 nstanceMethod</B
0610: 3e 28 3c 49 3e 69 6e 74 65 72 70 2c 20 6f 62 6a >(<I>interp, obj
0620: 65 63 74 2c 20 6e 61 6d 65 4f 62 6a 2c 20 69 73 ect, nameObj, is
0630: 50 75 62 6c 69 63 2c 20 6d 65 74 68 6f 64 54 79 Public, methodTy
0640: 70 65 50 74 72 2c 20 63 6c 69 65 6e 74 44 61 74 pePtr, clientDat
0650: 61 3c 2f 49 3e 29 3c 42 52 3e 0d 0a 76 6f 69 64 a</I>)<BR>..void
0660: 20 3c 42 3e 54 63 6c 5c 5f 43 6c 61 73 73 53 65 <B>Tcl\_ClassSe
0670: 74 43 6f 6e 73 74 72 75 63 74 6f 72 3c 2f 42 3e tConstructor</B>
0680: 28 3c 49 3e 69 6e 74 65 72 70 2c 20 63 6c 61 73 (<I>interp, clas
0690: 73 2c 20 6d 65 74 68 6f 64 3c 2f 49 3e 29 3c 42 s, method</I>)<B
06a0: 52 3e 0d 0a 76 6f 69 64 20 3c 42 3e 54 63 6c 5c R>..void <B>Tcl\
06b0: 5f 43 6c 61 73 73 53 65 74 44 65 73 74 72 75 63 _ClassSetDestruc
06c0: 74 6f 72 3c 2f 42 3e 28 3c 49 3e 69 6e 74 65 72 tor</B>(<I>inter
06d0: 70 2c 20 63 6c 61 73 73 2c 20 6d 65 74 68 6f 64 p, class, method
06e0: 3c 2f 49 3e 29 3c 42 52 3e 0d 0a 3c 41 20 48 52 </I>)<BR>..<A HR
06f0: 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 54 EF="?name=Doc:+T
0700: 63 6c 5f 43 6c 61 73 73 22 3e 54 63 6c 5c 5f 43 cl_Class">Tcl\_C
0710: 6c 61 73 73 3c 2f 41 3e 20 3c 42 3e 54 63 6c 5c lass</A> <B>Tcl\
0720: 5f 4d 65 74 68 6f 64 44 65 63 6c 61 72 65 72 43 _MethodDeclarerC
0730: 6c 61 73 73 3c 2f 42 3e 28 3c 49 3e 6d 65 74 68 lass</B>(<I>meth
0740: 6f 64 3c 2f 49 3e 29 3c 42 52 3e 0d 0a 3c 41 20 od</I>)<BR>..<A
0750: 48 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a HREF="?name=Doc:
0760: 2b 54 63 6c 5f 43 6c 61 73 73 22 3e 54 63 6c 5c +Tcl_Class">Tcl\
0770: 5f 4f 62 6a 65 63 74 3c 2f 41 3e 20 3c 42 3e 54 _Object</A> <B>T
0780: 63 6c 5c 5f 4d 65 74 68 6f 64 44 65 63 6c 61 72 cl\_MethodDeclar
0790: 65 72 4f 62 6a 65 63 74 3c 2f 42 3e 28 3c 49 3e erObject</B>(<I>
07a0: 6d 65 74 68 6f 64 3c 2f 49 3e 29 3c 42 52 3e 0d method</I>)<BR>.
07b0: 0a 54 63 6c 5c 5f 4f 62 6a 20 5c 2a 3c 42 3e 54 .Tcl\_Obj \*<B>T
07c0: 63 6c 5c 5f 4d 65 74 68 6f 64 4e 61 6d 65 3c 2f cl\_MethodName</
07d0: 42 3e 28 3c 49 3e 6d 65 74 68 6f 64 3c 2f 49 3e B>(<I>method</I>
07e0: 29 3c 42 52 3e 0d 0a 69 6e 74 20 3c 42 3e 54 63 )<BR>..int <B>Tc
07f0: 6c 5c 5f 4d 65 74 68 6f 64 49 73 50 75 62 6c 69 l\_MethodIsPubli
0800: 63 3c 2f 42 3e 28 3c 49 3e 6d 65 74 68 6f 64 3c c</B>(<I>method<
0810: 2f 49 3e 29 3c 42 52 3e 0d 0a 69 6e 74 20 3c 42 /I>)<BR>..int <B
0820: 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 49 73 54 79 >Tcl\_MethodIsTy
0830: 70 65 3c 2f 42 3e 28 3c 49 3e 6d 65 74 68 6f 64 pe</B>(<I>method
0840: 2c 20 6d 65 74 68 6f 64 54 79 70 65 50 74 72 2c , methodTypePtr,
0850: 20 63 6c 69 65 6e 74 44 61 74 61 50 74 72 3c 2f clientDataPtr</
0860: 49 3e 29 3c 42 52 3e 0d 0a 69 6e 74 20 3c 42 3e I>)<BR>..int <B>
0870: 54 63 6c 5c 5f 4f 62 6a 65 63 74 43 6f 6e 74 65 Tcl\_ObjectConte
0880: 78 74 49 6e 76 6f 6b 65 4e 65 78 74 3c 2f 42 3e xtInvokeNext</B>
0890: 28 3c 49 3e 69 6e 74 65 72 70 2c 20 63 6f 6e 74 (<I>interp, cont
08a0: 65 78 74 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 2c ext, objc, objv,
08b0: 20 73 6b 69 70 3c 2f 49 3e 29 3c 42 52 3e 0d 0a skip</I>)<BR>..
08c0: 69 6e 74 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 int <B>Tcl\_Obje
08d0: 63 74 43 6f 6e 74 65 78 74 49 73 46 69 6c 74 65 ctContextIsFilte
08e0: 72 69 6e 67 3c 2f 42 3e 28 3c 49 3e 63 6f 6e 74 ring</B>(<I>cont
08f0: 65 78 74 3c 2f 49 3e 29 3c 42 52 3e 0d 0a 54 63 ext</I>)<BR>..Tc
0900: 6c 5c 5f 4d 65 74 68 6f 64 20 3c 42 3e 54 63 6c l\_Method <B>Tcl
0910: 5c 5f 4f 62 6a 65 63 74 43 6f 6e 74 65 78 74 4d \_ObjectContextM
0920: 65 74 68 6f 64 3c 2f 42 3e 28 3c 49 3e 63 6f 6e ethod</B>(<I>con
0930: 74 65 78 74 3c 2f 49 3e 29 3c 42 52 3e 0d 0a 3c text</I>)<BR>..<
0940: 41 20 48 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f A HREF="?name=Do
0950: 63 3a 2b 54 63 6c 5f 43 6c 61 73 73 22 3e 54 63 c:+Tcl_Class">Tc
0960: 6c 5c 5f 4f 62 6a 65 63 74 3c 2f 41 3e 20 3c 42 l\_Object</A> <B
0970: 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 43 6f 6e 74 >Tcl\_ObjectCont
0980: 65 78 74 4f 62 6a 65 63 74 3c 2f 42 3e 28 3c 49 extObject</B>(<I
0990: 3e 63 6f 6e 74 65 78 74 3c 2f 49 3e 29 3c 42 52 >context</I>)<BR
09a0: 3e 0d 0a 69 6e 74 20 3c 42 3e 54 63 6c 5c 5f 4f >..int <B>Tcl\_O
09b0: 62 6a 65 63 74 43 6f 6e 74 65 78 74 53 6b 69 70 bjectContextSkip
09c0: 70 65 64 41 72 67 73 3c 2f 42 3e 28 3c 49 3e 63 pedArgs</B>(<I>c
09d0: 6f 6e 74 65 78 74 3c 2f 49 3e 29 3c 42 52 3e 0d ontext</I>)<BR>.
09e0: 0a 3c 48 33 3e 3c 41 20 4e 41 4d 45 3d 22 4d 34 .<H3><A NAME="M4
09f0: 22 3e 41 52 47 55 4d 45 4e 54 53 3c 2f 41 3e 3c ">ARGUMENTS</A><
0a00: 2f 48 33 3e 0d 0a 3c 44 4c 20 63 6c 61 73 73 3d /H3>..<DL class=
0a10: 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 3c 44 "arguments">..<D
0a20: 54 3e 54 63 6c 5c 5f 49 6e 74 65 72 70 20 3c 42 T>Tcl\_Interp <B
0a30: 3e 5c 2a 69 6e 74 65 72 70 3c 2f 42 3e 20 28 69 >\*interp</B> (i
0a40: 6e 2f 6f 75 74 29 3c 44 44 3e 0d 0a 54 68 65 20 n/out)<DD>..The
0a50: 69 6e 74 65 72 70 72 65 74 65 72 20 68 6f 6c 64 interpreter hold
0a60: 69 6e 67 20 74 68 65 20 6f 62 6a 65 63 74 20 6f ing the object o
0a70: 72 20 63 6c 61 73 73 20 74 6f 20 63 72 65 61 74 r class to creat
0a80: 65 20 6f 72 20 75 70 64 61 74 65 20 61 20 6d 65 e or update a me
0a90: 74 68 6f 64 20 69 6e 2e 0d 0a 3c 50 3e 3c 44 54 thod in...<P><DT
0aa0: 3e 3c 41 20 48 52 45 46 3d 22 3f 6e 61 6d 65 3d ><A HREF="?name=
0ab0: 44 6f 63 3a 2b 54 63 6c 5f 43 6c 61 73 73 22 3e Doc:+Tcl_Class">
0ac0: 54 63 6c 5c 5f 4f 62 6a 65 63 74 3c 2f 41 3e 20 Tcl\_Object</A>
0ad0: 3c 42 3e 6f 62 6a 65 63 74 3c 2f 42 3e 20 28 69 <B>object</B> (i
0ae0: 6e 29 3c 44 44 3e 0d 0a 54 68 65 20 6f 62 6a 65 n)<DD>..The obje
0af0: 63 74 20 74 6f 20 63 72 65 61 74 65 20 74 68 65 ct to create the
0b00: 20 6d 65 74 68 6f 64 20 69 6e 2e 0d 0a 3c 50 3e method in...<P>
0b10: 3c 44 54 3e 3c 41 20 48 52 45 46 3d 22 3f 6e 61 <DT><A HREF="?na
0b20: 6d 65 3d 44 6f 63 3a 2b 54 63 6c 5f 43 6c 61 73 me=Doc:+Tcl_Clas
0b30: 73 22 3e 54 63 6c 5c 5f 43 6c 61 73 73 3c 2f 41 s">Tcl\_Class</A
0b40: 3e 20 3c 42 3e 63 6c 61 73 73 3c 2f 42 3e 20 28 > <B>class</B> (
0b50: 69 6e 29 3c 44 44 3e 0d 0a 54 68 65 20 63 6c 61 in)<DD>..The cla
0b60: 73 73 20 74 6f 20 63 72 65 61 74 65 20 74 68 65 ss to create the
0b70: 20 6d 65 74 68 6f 64 20 69 6e 2e 0d 0a 3c 50 3e method in...<P>
0b80: 3c 44 54 3e 54 63 6c 5c 5f 4f 62 6a 20 3c 42 3e <DT>Tcl\_Obj <B>
0b90: 5c 2a 6e 61 6d 65 4f 62 6a 3c 2f 42 3e 20 28 69 \*nameObj</B> (i
0ba0: 6e 29 3c 44 44 3e 0d 0a 54 68 65 20 6e 61 6d 65 n)<DD>..The name
0bb0: 20 6f 66 20 74 68 65 20 6d 65 74 68 6f 64 20 74 of the method t
0bc0: 6f 20 63 72 65 61 74 65 2e 20 53 68 6f 75 6c 64 o create. Should
0bd0: 20 6e 6f 74 20 62 65 20 4e 55 4c 4c 20 75 6e 6c not be NULL unl
0be0: 65 73 73 20 63 72 65 61 74 69 6e 67 0d 0a 63 6f ess creating..co
0bf0: 6e 73 74 72 75 63 74 6f 72 73 20 6f 72 20 64 65 nstructors or de
0c00: 73 74 72 75 63 74 6f 72 73 2e 0d 0a 3c 50 3e 3c structors...<P><
0c10: 44 54 3e 69 6e 74 20 3c 42 3e 69 73 50 75 62 6c DT>int <B>isPubl
0c20: 69 63 3c 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d ic</B> (in)<DD>.
0c30: 0a 41 20 66 6c 61 67 20 73 61 79 69 6e 67 20 77 .A flag saying w
0c40: 68 61 74 20 74 68 65 20 76 69 73 69 62 69 6c 69 hat the visibili
0c50: 74 79 20 6f 66 20 74 68 65 20 6d 65 74 68 6f 64 ty of the method
0c60: 20 69 73 2e 20 54 68 65 20 6f 6e 6c 79 20 73 75 is. The only su
0c70: 70 70 6f 72 74 65 64 20 70 75 62 6c 69 63 0d 0a pported public..
0c80: 76 61 6c 75 65 73 20 6f 66 20 74 68 69 73 20 66 values of this f
0c90: 6c 61 67 20 61 72 65 20 30 20 66 6f 72 20 61 20 lag are 0 for a
0ca0: 6e 6f 6e 2d 65 78 70 6f 72 74 65 64 20 6d 65 74 non-exported met
0cb0: 68 6f 64 2c 20 61 6e 64 20 31 20 66 6f 72 20 61 hod, and 1 for a
0cc0: 6e 20 65 78 70 6f 72 74 65 64 0d 0a 6d 65 74 68 n exported..meth
0cd0: 6f 64 2e 0d 0a 3c 50 3e 3c 44 54 3e 54 63 6c 5c od...<P><DT>Tcl\
0ce0: 5f 4d 65 74 68 6f 64 54 79 70 65 20 3c 42 3e 5c _MethodType <B>\
0cf0: 2a 6d 65 74 68 6f 64 54 79 70 65 50 74 72 3c 2f *methodTypePtr</
0d00: 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a 41 20 64 B> (in)<DD>..A d
0d10: 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 escription of th
0d20: 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 6d 65 e type of the me
0d30: 74 68 6f 64 20 74 6f 20 63 72 65 61 74 65 2c 20 thod to create,
0d40: 6f 72 20 74 68 65 20 74 79 70 65 20 6f 66 20 6d or the type of m
0d50: 65 74 68 6f 64 20 74 6f 0d 0a 63 6f 6d 70 61 72 ethod to..compar
0d60: 65 20 61 67 61 69 6e 73 74 2e 0d 0a 3c 50 3e 3c e against...<P><
0d70: 44 54 3e 43 6c 69 65 6e 74 44 61 74 61 20 3c 42 DT>ClientData <B
0d80: 3e 63 6c 69 65 6e 74 44 61 74 61 3c 2f 42 3e 20 >clientData</B>
0d90: 28 69 6e 29 3c 44 44 3e 0d 0a 41 20 70 69 65 63 (in)<DD>..A piec
0da0: 65 20 6f 66 20 64 61 74 61 20 74 68 61 74 20 69 e of data that i
0db0: 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 s passed to the
0dc0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f implementation o
0dd0: 66 20 74 68 65 20 6d 65 74 68 6f 64 20 77 69 74 f the method wit
0de0: 68 6f 75 74 0d 0a 69 6e 74 65 72 70 72 65 74 61 hout..interpreta
0df0: 74 69 6f 6e 2e 0d 0a 3c 50 3e 3c 44 54 3e 43 6c tion...<P><DT>Cl
0e00: 69 65 6e 74 44 61 74 61 20 3c 42 3e 5c 2a 63 6c ientData <B>\*cl
0e10: 69 65 6e 74 44 61 74 61 50 74 72 3c 2f 42 3e 20 ientDataPtr</B>
0e20: 28 6f 75 74 29 3c 44 44 3e 0d 0a 41 20 70 6f 69 (out)<DD>..A poi
0e30: 6e 74 65 72 20 74 6f 20 61 20 76 61 72 69 61 62 nter to a variab
0e40: 6c 65 20 69 6e 20 77 68 69 63 68 20 74 6f 20 77 le in which to w
0e50: 72 69 74 65 20 74 68 65 20 3c 49 3e 63 6c 69 65 rite the <I>clie
0e60: 6e 74 44 61 74 61 3c 2f 49 3e 20 76 61 6c 75 65 ntData</I> value
0e70: 20 73 75 70 70 6c 69 65 64 0d 0a 77 68 65 6e 20 supplied..when
0e80: 74 68 65 20 6d 65 74 68 6f 64 20 77 61 73 20 63 the method was c
0e90: 72 65 61 74 65 64 2e 20 49 66 20 4e 55 4c 4c 2c reated. If NULL,
0ea0: 20 74 68 65 20 3c 49 3e 63 6c 69 65 6e 74 44 61 the <I>clientDa
0eb0: 74 61 3c 2f 49 3e 20 76 61 6c 75 65 20 77 69 6c ta</I> value wil
0ec0: 6c 20 6e 6f 74 20 62 65 0d 0a 72 65 74 72 69 65 l not be..retrie
0ed0: 76 65 64 2e 0d 0a 3c 50 3e 3c 44 54 3e 54 63 6c ved...<P><DT>Tcl
0ee0: 5c 5f 4d 65 74 68 6f 64 20 3c 42 3e 6d 65 74 68 \_Method <B>meth
0ef0: 6f 64 3c 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d od</B> (in)<DD>.
0f00: 0a 41 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 .A reference to
0f10: 61 20 6d 65 74 68 6f 64 20 74 6f 20 77 6f 72 6b a method to work
0f20: 20 77 69 74 68 2e 20 54 68 69 73 20 69 73 20 61 with. This is a
0f30: 6e 20 6f 70 61 71 75 65 20 74 6f 6b 65 6e 2e 0d n opaque token..
0f40: 0a 3c 50 3e 3c 44 54 3e 54 63 6c 5c 5f 4f 62 6a .<P><DT>Tcl\_Obj
0f50: 65 63 74 43 6f 6e 74 65 78 74 20 3c 42 3e 63 6f ectContext <B>co
0f60: 6e 74 65 78 74 3c 2f 42 3e 20 28 69 6e 29 3c 44 ntext</B> (in)<D
0f70: 44 3e 0d 0a 41 20 72 65 66 65 72 65 6e 63 65 20 D>..A reference
0f80: 74 6f 20 61 20 6d 65 74 68 6f 64 2d 63 61 6c 6c to a method-call
0f90: 20 63 6f 6e 74 65 78 74 2e 20 54 68 69 73 20 69 context. This i
0fa0: 73 20 61 6e 20 6f 70 61 71 75 65 20 74 6f 6b 65 s an opaque toke
0fb0: 6e 2e 20 4e 6f 74 65 20 74 68 61 74 20 63 6c 69 n. Note that cli
0fc0: 65 6e 74 20 63 6f 64 65 20 3c 49 3e 6d 75 73 74 ent code <I>must
0fd0: 20 6e 6f 74 3c 2f 49 3e 0d 0a 72 65 74 61 69 6e not</I>..retain
0fe0: 20 61 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 a reference to
0ff0: 61 20 63 6f 6e 74 65 78 74 3b 20 69 74 73 20 6c a context; its l
1000: 69 66 65 73 70 61 6e 20 69 73 20 63 6f 75 70 6c ifespan is coupl
1010: 65 64 20 74 6f 20 74 68 65 20 54 63 6c 20 65 78 ed to the Tcl ex
1020: 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a ecution stack...
1030: 3c 50 3e 3c 44 54 3e 69 6e 74 20 3c 42 3e 6f 62 <P><DT>int <B>ob
1040: 6a 63 3c 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d jc</B> (in)<DD>.
1050: 0a 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 .The number of a
1060: 72 67 75 6d 65 6e 74 73 20 74 6f 20 70 61 73 73 rguments to pass
1070: 20 74 6f 20 74 68 65 20 6d 65 74 68 6f 64 20 69 to the method i
1080: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a mplementation...
1090: 3c 50 3e 3c 44 54 3e 54 63 6c 5c 5f 4f 62 6a 20 <P><DT>Tcl\_Obj
10a0: 5c 2a 63 6f 6e 73 74 20 3c 42 3e 5c 2a 6f 62 6a \*const <B>\*obj
10b0: 76 3c 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a v</B> (in)<DD>..
10c0: 41 6e 20 61 72 72 61 79 20 6f 66 20 61 72 67 75 An array of argu
10d0: 6d 65 6e 74 73 20 74 6f 20 70 61 73 73 20 74 6f ments to pass to
10e0: 20 74 68 65 20 6d 65 74 68 6f 64 20 69 6d 70 6c the method impl
10f0: 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 3c 50 3e ementation...<P>
1100: 3c 44 54 3e 69 6e 74 20 3c 42 3e 73 6b 69 70 3c <DT>int <B>skip<
1110: 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a 54 68 /B> (in)<DD>..Th
1120: 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 e number of argu
1130: 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 ments passed to
1140: 74 68 65 20 6d 65 74 68 6f 64 20 69 6d 70 6c 65 the method imple
1150: 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 20 64 mentation that d
1160: 6f 20 6e 6f 74 0d 0a 72 65 70 72 65 73 65 6e 74 o not..represent
1170: 20 26 71 75 6f 74 3b 72 65 61 6c 26 71 75 6f 74 "real"
1180: 3b 20 61 72 67 75 6d 65 6e 74 73 2e 0d 0a 3c 50 ; arguments...<P
1190: 3e 3c 2f 44 4c 3e 0d 0a 3c 48 33 3e 3c 41 20 4e ></DL>..<H3><A N
11a0: 41 4d 45 3d 22 4d 35 22 3e 44 45 53 43 52 49 50 AME="M5">DESCRIP
11b0: 54 49 4f 4e 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 41 TION</A></H3>..A
11c0: 20 6d 65 74 68 6f 64 20 69 73 20 61 6e 20 6f 70 method is an op
11d0: 65 72 61 74 69 6f 6e 20 63 61 72 72 69 65 64 20 eration carried
11e0: 6f 75 74 20 6f 6e 20 61 6e 20 6f 62 6a 65 63 74 out on an object
11f0: 20 74 68 61 74 20 69 73 20 61 73 73 6f 63 69 61 that is associa
1200: 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a 6f 62 ted with the..ob
1210: 6a 65 63 74 2e 20 45 76 65 72 79 20 6d 65 74 68 ject. Every meth
1220: 6f 64 20 6d 75 73 74 20 62 65 20 61 74 74 61 63 od must be attac
1230: 68 65 64 20 74 6f 20 65 69 74 68 65 72 20 61 6e hed to either an
1240: 20 6f 62 6a 65 63 74 20 6f 72 20 61 20 63 6c 61 object or a cla
1250: 73 73 3b 20 6d 65 74 68 6f 64 73 0d 0a 61 74 74 ss; methods..att
1260: 61 63 68 65 64 20 74 6f 20 61 20 63 6c 61 73 73 ached to a class
1270: 20 61 72 65 20 61 73 73 6f 63 69 61 74 65 64 20 are associated
1280: 77 69 74 68 20 61 6c 6c 20 69 6e 73 74 61 6e 63 with all instanc
1290: 65 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 69 es (direct and i
12a0: 6e 64 69 72 65 63 74 29 20 6f 66 0d 0a 74 68 61 ndirect) of..tha
12b0: 74 20 63 6c 61 73 73 2e 0d 0a 3c 50 3e 0d 0a 47 t class...<P>..G
12c0: 69 76 65 6e 20 61 20 6d 65 74 68 6f 64 2c 20 74 iven a method, t
12d0: 68 65 20 65 6e 74 69 74 79 20 74 68 61 74 20 64 he entity that d
12e0: 65 63 6c 61 72 65 64 20 69 74 20 63 61 6e 20 62 eclared it can b
12f0: 65 20 66 6f 75 6e 64 20 75 73 69 6e 67 0d 0a 3c e found using..<
1300: 42 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 44 65 63 B>Tcl\_MethodDec
1310: 6c 61 72 65 72 43 6c 61 73 73 3c 2f 42 3e 20 77 larerClass</B> w
1320: 68 69 63 68 20 72 65 74 75 72 6e 73 20 74 68 65 hich returns the
1330: 20 63 6c 61 73 73 20 74 68 61 74 20 74 68 65 20 class that the
1340: 6d 65 74 68 6f 64 20 69 73 0d 0a 61 74 74 61 63 method is..attac
1350: 68 65 64 20 74 6f 20 28 6f 72 20 4e 55 4c 4c 20 hed to (or NULL
1360: 69 66 20 74 68 65 20 6d 65 74 68 6f 64 20 69 73 if the method is
1370: 20 6e 6f 74 20 61 74 74 61 63 68 65 64 20 74 6f not attached to
1380: 20 61 6e 79 20 63 6c 61 73 73 29 20 61 6e 64 0d any class) and.
1390: 0a 3c 42 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 44 .<B>Tcl\_MethodD
13a0: 65 63 6c 61 72 65 72 4f 62 6a 65 63 74 3c 2f 42 eclarerObject</B
13b0: 3e 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 > which returns
13c0: 74 68 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 the object that
13d0: 74 68 65 20 6d 65 74 68 6f 64 20 69 73 0d 0a 61 the method is..a
13e0: 74 74 61 63 68 65 64 20 74 6f 20 28 6f 72 20 4e ttached to (or N
13f0: 55 4c 4c 20 69 66 20 74 68 65 20 6d 65 74 68 6f ULL if the metho
1400: 64 20 69 73 20 6e 6f 74 20 61 74 74 61 63 68 65 d is not attache
1410: 64 20 74 6f 20 61 6e 20 6f 62 6a 65 63 74 29 2e d to an object).
1420: 20 54 68 65 20 6e 61 6d 65 20 6f 66 0d 0a 74 68 The name of..th
1430: 65 20 6d 65 74 68 6f 64 20 63 61 6e 20 62 65 20 e method can be
1440: 72 65 74 72 69 65 76 65 64 20 77 69 74 68 20 3c retrieved with <
1450: 42 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 4e 61 6d B>Tcl\_MethodNam
1460: 65 3c 2f 42 3e 20 61 6e 64 20 77 68 65 74 68 65 e</B> and whethe
1470: 72 20 74 68 65 20 6d 65 74 68 6f 64 0d 0a 69 73 r the method..is
1480: 20 65 78 70 6f 72 74 65 64 20 69 73 20 72 65 74 exported is ret
1490: 72 69 65 76 65 64 20 77 69 74 68 20 3c 42 3e 54 rieved with <B>T
14a0: 63 6c 5c 5f 4d 65 74 68 6f 64 49 73 50 75 62 6c cl\_MethodIsPubl
14b0: 69 63 3c 2f 42 3e 2e 20 54 68 65 20 74 79 70 65 ic</B>. The type
14c0: 20 6f 66 20 74 68 65 20 6d 65 74 68 6f 64 0d 0a of the method..
14d0: 63 61 6e 20 61 6c 73 6f 20 62 65 20 69 6e 74 72 can also be intr
14e0: 6f 73 70 65 63 74 65 64 20 75 70 6f 6e 20 74 6f ospected upon to
14f0: 20 61 20 6c 69 6d 69 74 65 64 20 64 65 67 72 65 a limited degre
1500: 65 3b 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0d e; the function.
1510: 0a 3c 42 3e 54 63 6c 5c 5f 4d 65 74 68 6f 64 49 .<B>Tcl\_MethodI
1520: 73 54 79 70 65 3c 2f 42 3e 20 72 65 74 75 72 6e sType</B> return
1530: 73 20 77 68 65 74 68 65 72 20 61 20 6d 65 74 68 s whether a meth
1540: 6f 64 20 69 73 20 6f 66 20 61 20 70 61 72 74 69 od is of a parti
1550: 63 75 6c 61 72 20 74 79 70 65 2c 0d 0a 61 73 73 cular type,..ass
1560: 69 67 6e 69 6e 67 20 74 68 65 20 70 65 72 2d 6d igning the per-m
1570: 65 74 68 6f 64 20 3c 49 3e 63 6c 69 65 6e 74 44 ethod <I>clientD
1580: 61 74 61 3c 2f 49 3e 20 74 6f 20 74 68 65 20 76 ata</I> to the v
1590: 61 72 69 61 62 6c 65 20 70 6f 69 6e 74 65 64 20 ariable pointed
15a0: 74 6f 20 62 79 0d 0a 3c 49 3e 63 6c 69 65 6e 74 to by..<I>client
15b0: 44 61 74 61 50 74 72 3c 2f 49 3e 20 69 66 20 28 DataPtr</I> if (
15c0: 74 68 61 74 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c that is non-NULL
15d0: 29 20 69 66 20 74 68 65 20 74 79 70 65 20 69 73 ) if the type is
15e0: 20 6d 61 74 63 68 65 64 2e 0d 0a 3c 48 34 3e 3c matched...<H4><
15f0: 41 20 4e 41 4d 45 3d 22 4d 36 22 3e 4d 45 54 48 A NAME="M6">METH
1600: 4f 44 20 43 52 45 41 54 49 4f 4e 3c 2f 41 3e 3c OD CREATION</A><
1610: 2f 48 34 3e 0d 0a 4d 65 74 68 6f 64 73 20 61 72 /H4>..Methods ar
1620: 65 20 63 72 65 61 74 65 64 20 62 79 20 3c 42 3e e created by <B>
1630: 54 63 6c 5c 5f 4e 65 77 4d 65 74 68 6f 64 3c 2f Tcl\_NewMethod</
1640: 42 3e 20 61 6e 64 20 3c 42 3e 54 63 6c 5c 5f 4e B> and <B>Tcl\_N
1650: 65 77 49 6e 73 74 61 6e 63 65 4d 65 74 68 6f 64 ewInstanceMethod
1660: 3c 2f 42 3e 2c 0d 0a 77 68 69 63 68 0d 0a 63 72 </B>,..which..cr
1670: 65 61 74 65 20 61 20 6d 65 74 68 6f 64 20 61 74 eate a method at
1680: 74 61 63 68 65 64 20 74 6f 20 61 20 63 6c 61 73 tached to a clas
1690: 73 20 6f 72 20 61 6e 20 6f 62 6a 65 63 74 20 72 s or an object r
16a0: 65 73 70 65 63 74 69 76 65 6c 79 2e 20 49 6e 20 espectively. In
16b0: 62 6f 74 68 20 63 61 73 65 73 2c 0d 0a 74 68 65 both cases,..the
16c0: 20 3c 49 3e 6e 61 6d 65 4f 62 6a 3c 2f 49 3e 20 <I>nameObj</I>
16d0: 61 72 67 75 6d 65 6e 74 20 67 69 76 65 73 20 74 argument gives t
16e0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d he name of the m
16f0: 65 74 68 6f 64 20 74 6f 20 63 72 65 61 74 65 2c ethod to create,
1700: 20 74 68 65 0d 0a 3c 49 3e 69 73 50 75 62 6c 69 the..<I>isPubli
1710: 63 3c 2f 49 3e 20 61 72 67 75 6d 65 6e 74 20 73 c</I> argument s
1720: 74 61 74 65 73 20 77 68 65 74 68 65 72 20 74 68 tates whether th
1730: 65 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 e method should
1740: 62 65 20 65 78 70 6f 72 74 65 64 0d 0a 69 6e 69 be exported..ini
1750: 74 69 61 6c 6c 79 2c 20 74 68 65 20 3c 49 3e 6d tially, the <I>m
1760: 65 74 68 6f 64 54 79 70 65 50 74 72 3c 2f 49 3e ethodTypePtr</I>
1770: 20 61 72 67 75 6d 65 6e 74 20 64 65 73 63 72 69 argument descri
1780: 62 65 73 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e bes the implemen
1790: 74 61 74 69 6f 6e 20 6f 66 0d 0a 74 68 65 20 6d tation of..the m
17a0: 65 74 68 6f 64 20 28 73 65 65 20 74 68 65 20 3c ethod (see the <
17b0: 42 3e 3c 41 20 48 52 45 46 3d 22 23 4d 38 22 3e B><A HREF="#M8">
17c0: 4d 45 54 48 4f 44 20 54 59 50 45 53 3c 2f 41 3e METHOD TYPES</A>
17d0: 3c 2f 42 3e 20 73 65 63 74 69 6f 6e 20 62 65 6c </B> section bel
17e0: 6f 77 29 20 61 6e 64 20 74 68 65 20 3c 49 3e 63 ow) and the <I>c
17f0: 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e 0d 0a 61 lientData</I>..a
1800: 72 67 75 6d 65 6e 74 20 67 69 76 65 73 20 73 6f rgument gives so
1810: 6d 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f me implementatio
1820: 6e 2d 73 70 65 63 69 66 69 63 20 64 61 74 61 20 n-specific data
1830: 74 68 61 74 20 69 73 20 70 61 73 73 65 64 20 6f that is passed o
1840: 6e 20 74 6f 20 74 68 65 0d 0a 69 6d 70 6c 65 6d n to the..implem
1850: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 entation of the
1860: 6d 65 74 68 6f 64 20 77 68 65 6e 20 69 74 20 69 method when it i
1870: 73 20 63 61 6c 6c 65 64 2e 0d 0a 3c 50 3e 0d 0a s called...<P>..
1880: 57 68 65 6e 20 74 68 65 20 3c 49 3e 6e 61 6d 65 When the <I>name
1890: 4f 62 6a 3c 2f 49 3e 20 61 72 67 75 6d 65 6e 74 Obj</I> argument
18a0: 20 74 6f 20 3c 42 3e 54 63 6c 5c 5f 4e 65 77 4d to <B>Tcl\_NewM
18b0: 65 74 68 6f 64 3c 2f 42 3e 20 69 73 20 4e 55 4c ethod</B> is NUL
18c0: 4c 2c 20 61 6e 0d 0a 75 6e 6e 61 6d 65 64 20 6d L, an..unnamed m
18d0: 65 74 68 6f 64 20 69 73 20 63 72 65 61 74 65 64 ethod is created
18e0: 2c 20 77 68 69 63 68 20 69 73 20 75 73 65 64 20 , which is used
18f0: 66 6f 72 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 for constructors
1900: 20 61 6e 64 20 64 65 73 74 72 75 63 74 6f 72 73 and destructors
1910: 2e 0d 0a 43 6f 6e 73 74 72 75 63 74 6f 72 73 20 ...Constructors
1920: 73 68 6f 75 6c 64 20 62 65 20 69 6e 73 74 61 6c should be instal
1930: 6c 65 64 20 69 6e 74 6f 20 74 68 65 69 72 20 63 led into their c
1940: 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 0d 0a lass using the..
1950: 3c 42 3e 54 63 6c 5c 5f 43 6c 61 73 73 53 65 74 <B>Tcl\_ClassSet
1960: 43 6f 6e 73 74 72 75 63 74 6f 72 3c 2f 42 3e 20 Constructor</B>
1970: 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 64 65 function, and de
1980: 73 74 72 75 63 74 6f 72 73 20 28 77 68 69 63 68 structors (which
1990: 20 6d 75 73 74 20 6e 6f 74 0d 0a 72 65 71 75 69 must not..requi
19a0: 72 65 20 61 6e 79 20 61 72 67 75 6d 65 6e 74 73 re any arguments
19b0: 29 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 73 74 ) should be inst
19c0: 61 6c 6c 65 64 20 69 6e 74 6f 20 74 68 65 69 72 alled into their
19d0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 class using the
19e0: 0d 0a 3c 42 3e 54 63 6c 5c 5f 43 6c 61 73 73 53 ..<B>Tcl\_ClassS
19f0: 65 74 44 65 73 74 72 75 63 74 6f 72 3c 2f 42 3e etDestructor</B>
1a00: 20 66 75 6e 63 74 69 6f 6e 2e 20 55 6e 6e 61 6d function. Unnam
1a10: 65 64 20 6d 65 74 68 6f 64 73 20 73 68 6f 75 6c ed methods shoul
1a20: 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 66 6f d not be used fo
1a30: 72 0d 0a 61 6e 79 20 6f 74 68 65 72 20 70 75 72 r..any other pur
1a40: 70 6f 73 65 2c 20 61 6e 64 20 6e 61 6d 65 64 20 pose, and named
1a50: 6d 65 74 68 6f 64 73 20 73 68 6f 75 6c 64 20 6e methods should n
1a60: 6f 74 20 62 65 20 75 73 65 64 20 61 73 20 65 69 ot be used as ei
1a70: 74 68 65 72 20 63 6f 6e 73 74 72 75 63 74 6f 72 ther constructor
1a80: 73 0d 0a 6f 72 20 64 65 73 74 72 75 63 74 6f 72 s..or destructor
1a90: 73 2e 20 41 6c 73 6f 20 6e 6f 74 65 20 74 68 61 s. Also note tha
1aa0: 74 20 61 20 4e 55 4c 4c 20 3c 49 3e 6d 65 74 68 t a NULL <I>meth
1ab0: 6f 64 54 79 70 65 50 74 72 3c 2f 49 3e 20 69 73 odTypePtr</I> is
1ac0: 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 used to provide
1ad0: 0d 0a 69 6e 74 65 72 6e 61 6c 20 73 69 67 6e 61 ..internal signa
1ae0: 6c 69 6e 67 2c 20 61 6e 64 20 73 68 6f 75 6c 64 ling, and should
1af0: 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 not be used in
1b00: 63 6c 69 65 6e 74 20 63 6f 64 65 2e 0d 0a 3c 48 client code...<H
1b10: 34 3e 3c 41 20 4e 41 4d 45 3d 22 4d 37 22 3e 4d 4><A NAME="M7">M
1b20: 45 54 48 4f 44 20 43 41 4c 4c 20 43 4f 4e 54 45 ETHOD CALL CONTE
1b30: 58 54 53 3c 2f 41 3e 3c 2f 48 34 3e 0d 0a 57 68 XTS</A></H4>..Wh
1b40: 65 6e 20 61 20 6d 65 74 68 6f 64 20 69 73 20 63 en a method is c
1b50: 61 6c 6c 65 64 2c 20 61 20 6d 65 74 68 6f 64 2d alled, a method-
1b60: 63 61 6c 6c 20 63 6f 6e 74 65 78 74 20 72 65 66 call context ref
1b70: 65 72 65 6e 63 65 20 69 73 20 70 61 73 73 65 64 erence is passed
1b80: 20 69 6e 20 61 73 20 6f 6e 65 0d 0a 6f 66 20 74 in as one..of t
1b90: 68 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 he arguments to
1ba0: 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 the implementati
1bb0: 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 69 on function. Thi
1bc0: 73 20 63 6f 6e 74 65 78 74 20 63 61 6e 20 62 65 s context can be
1bd0: 20 69 6e 73 70 65 63 74 65 64 0d 0a 74 6f 20 70 inspected..to p
1be0: 72 6f 76 69 64 65 20 69 6e 66 6f 72 6d 61 74 69 rovide informati
1bf0: 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63 61 6c on about the cal
1c00: 6c 65 72 2c 20 62 75 74 20 73 68 6f 75 6c 64 20 ler, but should
1c10: 6e 6f 74 20 62 65 20 72 65 74 61 69 6e 65 64 20 not be retained
1c20: 62 65 79 6f 6e 64 20 74 68 65 0d 0a 6d 6f 6d 65 beyond the..mome
1c30: 6e 74 20 77 68 65 6e 20 74 68 65 20 6d 65 74 68 nt when the meth
1c40: 6f 64 20 63 61 6c 6c 20 74 65 72 6d 69 6e 61 74 od call terminat
1c50: 65 73 2e 0d 0a 3c 50 3e 0d 0a 54 68 65 20 6d 65 es...<P>..The me
1c60: 74 68 6f 64 20 74 68 61 74 20 69 73 20 62 65 69 thod that is bei
1c70: 6e 67 20 63 61 6c 6c 65 64 20 63 61 6e 20 62 65 ng called can be
1c80: 20 72 65 74 72 69 65 76 65 64 20 66 72 6f 6d 20 retrieved from
1c90: 74 68 65 20 63 6f 6e 74 65 78 74 20 62 79 20 75 the context by u
1ca0: 73 69 6e 67 0d 0a 3c 42 3e 54 63 6c 5c 5f 4f 62 sing..<B>Tcl\_Ob
1cb0: 6a 65 63 74 43 6f 6e 74 65 78 74 4d 65 74 68 6f jectContextMetho
1cc0: 64 3c 2f 42 3e 2c 20 61 6e 64 20 74 68 65 20 6f d</B>, and the o
1cd0: 62 6a 65 63 74 20 74 68 61 74 20 63 61 75 73 65 bject that cause
1ce0: 64 20 74 68 65 20 6d 65 74 68 6f 64 20 74 6f 20 d the method to
1cf0: 62 65 0d 0a 69 6e 76 6f 6b 65 64 20 63 61 6e 20 be..invoked can
1d00: 62 65 20 72 65 74 72 69 65 76 65 64 20 77 69 74 be retrieved wit
1d10: 68 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 h <B>Tcl\_Object
1d20: 43 6f 6e 74 65 78 74 4f 62 6a 65 63 74 3c 2f 42 ContextObject</B
1d30: 3e 2e 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 >. The number of
1d40: 0d 0a 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 ..arguments that
1d50: 20 61 72 65 20 74 6f 20 62 65 20 73 6b 69 70 70 are to be skipp
1d60: 65 64 20 28 65 2e 67 2e 20 74 68 65 20 6f 62 6a ed (e.g. the obj
1d70: 65 63 74 20 6e 61 6d 65 20 61 6e 64 20 6d 65 74 ect name and met
1d80: 68 6f 64 20 6e 61 6d 65 20 69 6e 20 61 0d 0a 6e hod name in a..n
1d90: 6f 72 6d 61 6c 20 6d 65 74 68 6f 64 20 63 61 6c ormal method cal
1da0: 6c 29 20 69 73 20 72 65 61 64 20 77 69 74 68 20 l) is read with
1db0: 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 43 6f <B>Tcl\_ObjectCo
1dc0: 6e 74 65 78 74 53 6b 69 70 70 65 64 41 72 67 73 ntextSkippedArgs
1dd0: 3c 2f 42 3e 2c 20 61 6e 64 20 74 68 65 0d 0a 63 </B>, and the..c
1de0: 6f 6e 74 65 78 74 20 63 61 6e 20 61 6c 73 6f 20 ontext can also
1df0: 72 65 70 6f 72 74 20 77 68 65 74 68 65 72 20 69 report whether i
1e00: 74 20 69 73 20 77 6f 72 6b 69 6e 67 20 61 73 20 t is working as
1e10: 61 20 66 69 6c 74 65 72 20 66 6f 72 20 61 6e 6f a filter for ano
1e20: 74 68 65 72 20 6d 65 74 68 6f 64 0d 0a 74 68 72 ther method..thr
1e30: 6f 75 67 68 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a ough <B>Tcl\_Obj
1e40: 65 63 74 43 6f 6e 74 65 78 74 49 73 46 69 6c 74 ectContextIsFilt
1e50: 65 72 69 6e 67 3c 2f 42 3e 2e 0d 0a 3c 50 3e 0d ering</B>...<P>.
1e60: 0a 44 75 72 69 6e 67 20 74 68 65 20 65 78 65 63 .During the exec
1e70: 75 74 69 6f 6e 20 6f 66 20 61 20 6d 65 74 68 6f ution of a metho
1e80: 64 2c 20 74 68 65 20 6d 65 74 68 6f 64 20 69 6d d, the method im
1e90: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 61 79 plementation may
1ea0: 20 63 68 6f 6f 73 65 20 74 6f 0d 0a 69 6e 76 6f choose to..invo
1eb0: 6b 65 20 74 68 65 20 73 74 61 67 65 73 20 6f 66 ke the stages of
1ec0: 20 74 68 65 20 6d 65 74 68 6f 64 20 63 61 6c 6c the method call
1ed0: 20 63 68 61 69 6e 20 74 68 61 74 20 63 6f 6d 65 chain that come
1ee0: 20 61 66 74 65 72 20 74 68 65 20 63 75 72 72 65 after the curre
1ef0: 6e 74 20 6d 65 74 68 6f 64 0d 0a 69 6d 70 6c 65 nt method..imple
1f00: 6d 65 6e 74 61 74 69 6f 6e 2e 20 54 68 69 73 20 mentation. This
1f10: 28 74 68 65 20 63 6f 72 65 20 6f 66 20 74 68 65 (the core of the
1f20: 20 3c 42 3e 3c 41 20 48 52 45 46 3d 22 3f 6e 61 <B><A HREF="?na
1f30: 6d 65 3d 44 6f 63 3a 2b 6e 65 78 74 22 3e 6e 65 me=Doc:+next">ne
1f40: 78 74 3c 2f 41 3e 3c 2f 42 3e 20 63 6f 6d 6d 61 xt</A></B> comma
1f50: 6e 64 29 20 69 73 20 64 6f 6e 65 20 75 73 69 6e nd) is done usin
1f60: 67 0d 0a 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63 g..<B>Tcl\_Objec
1f70: 74 43 6f 6e 74 65 78 74 49 6e 76 6f 6b 65 4e 65 tContextInvokeNe
1f80: 78 74 3c 2f 42 3e 2e 20 4e 6f 74 65 20 74 68 61 xt</B>. Note tha
1f90: 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 t this function
1fa0: 64 6f 65 73 20 6e 6f 74 20 6d 61 6e 69 70 75 6c does not manipul
1fb0: 61 74 65 0d 0a 74 68 65 20 63 61 6c 6c 2d 66 72 ate..the call-fr
1fc0: 61 6d 65 20 73 74 61 63 6b 2c 20 75 6e 6c 69 6b ame stack, unlik
1fd0: 65 20 74 68 65 20 3c 42 3e 3c 41 20 48 52 45 46 e the <B><A HREF
1fe0: 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6e 65 78 ="?name=Doc:+nex
1ff0: 74 22 3e 6e 65 78 74 3c 2f 41 3e 3c 2f 42 3e 20 t">next</A></B>
2000: 63 6f 6d 6d 61 6e 64 3b 20 69 66 20 74 68 65 20 command; if the
2010: 6d 65 74 68 6f 64 0d 0a 69 6d 70 6c 65 6d 65 6e method..implemen
2020: 74 61 74 69 6f 6e 20 68 61 73 20 70 75 73 68 65 tation has pushe
2030: 64 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 65 78 d one or more ex
2040: 74 72 61 20 66 72 61 6d 65 73 20 6f 6e 20 74 68 tra frames on th
2050: 65 20 73 74 61 63 6b 20 61 73 20 70 61 72 74 20 e stack as part
2060: 6f 66 20 69 74 73 0d 0a 69 6d 70 6c 65 6d 65 6e of its..implemen
2070: 74 61 74 69 6f 6e 2c 20 69 74 20 69 73 20 61 6c tation, it is al
2080: 73 6f 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 so responsible f
2090: 6f 72 20 74 65 6d 70 6f 72 61 72 69 6c 79 20 70 or temporarily p
20a0: 6f 70 70 69 6e 67 20 74 68 6f 73 65 20 66 72 61 opping those fra
20b0: 6d 65 73 0d 0a 66 72 6f 6d 20 74 68 65 20 73 74 mes..from the st
20c0: 61 63 6b 20 77 68 69 6c 65 20 74 68 65 20 3c 42 ack while the <B
20d0: 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 43 6f 6e 74 >Tcl\_ObjectCont
20e0: 65 78 74 49 6e 76 6f 6b 65 4e 65 78 74 3c 2f 42 extInvokeNext</B
20f0: 3e 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 65 > function is..e
2100: 78 65 63 75 74 69 6e 67 2e 20 4e 6f 74 65 20 61 xecuting. Note a
2110: 6c 73 6f 20 74 68 61 74 20 74 68 65 20 6d 65 74 lso that the met
2120: 68 6f 64 2d 63 61 6c 6c 20 63 6f 6e 74 65 78 74 hod-call context
2130: 20 69 73 20 3c 49 3e 6e 65 76 65 72 3c 2f 49 3e is <I>never</I>
2140: 20 64 65 6c 65 74 65 64 0d 0a 64 75 72 69 6e 67 deleted..during
2150: 20 74 68 65 20 65 78 65 63 75 74 69 6f 6e 20 6f the execution o
2160: 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e f this function.
2170: 0d 0a 3c 48 33 3e 3c 41 20 4e 41 4d 45 3d 22 4d ..<H3><A NAME="M
2180: 38 22 3e 4d 45 54 48 4f 44 20 54 59 50 45 53 3c 8">METHOD TYPES<
2190: 2f 41 3e 3c 2f 48 33 3e 0d 0a 54 68 65 20 74 79 /A></H3>..The ty
21a0: 70 65 73 20 6f 66 20 6d 65 74 68 6f 64 73 20 61 pes of methods a
21b0: 72 65 20 64 65 73 63 72 69 62 65 64 20 62 79 20 re described by
21c0: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 54 a pointer to a T
21d0: 63 6c 5c 5f 4d 65 74 68 6f 64 54 79 70 65 20 73 cl\_MethodType s
21e0: 74 72 75 63 74 75 72 65 2c 0d 0a 77 68 69 63 68 tructure,..which
21f0: 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 3a 0d is defined as:.
2200: 0a 3c 50 3e 0d 0a 3c 50 52 45 3e 74 79 70 65 64 .<P>..<PRE>typed
2210: 65 66 20 73 74 72 75 63 74 20 7b 0d 0a 20 20 20 ef struct {..
2220: 20 69 6e 74 20 3c 49 3e 76 65 72 73 69 6f 6e 3c int <I>version<
2230: 2f 49 3e 3b 0d 0a 20 20 20 20 63 6f 6e 73 74 20 /I>;.. const
2240: 63 68 61 72 20 5c 2a 3c 49 3e 6e 61 6d 65 3c 2f char \*<I>name</
2250: 49 3e 3b 0d 0a 20 20 20 20 54 63 6c 5c 5f 4d 65 I>;.. Tcl\_Me
2260: 74 68 6f 64 43 61 6c 6c 50 72 6f 63 20 5c 2a 3c thodCallProc \*<
2270: 49 3e 63 61 6c 6c 50 72 6f 63 3c 2f 49 3e 3b 0d I>callProc</I>;.
2280: 0a 20 20 20 20 54 63 6c 5c 5f 4d 65 74 68 6f 64 . Tcl\_Method
2290: 44 65 6c 65 74 65 50 72 6f 63 20 5c 2a 3c 49 3e DeleteProc \*<I>
22a0: 64 65 6c 65 74 65 50 72 6f 63 3c 2f 49 3e 3b 0d deleteProc</I>;.
22b0: 0a 20 20 20 20 54 63 6c 5c 5f 43 6c 6f 6e 65 50 . Tcl\_CloneP
22c0: 72 6f 63 20 5c 2a 3c 49 3e 63 6c 6f 6e 65 50 72 roc \*<I>clonePr
22d0: 6f 63 3c 2f 49 3e 3b 0d 0a 7d 20 3c 42 3e 54 63 oc</I>;..} <B>Tc
22e0: 6c 5c 5f 4d 65 74 68 6f 64 54 79 70 65 3c 2f 42 l\_MethodType</B
22f0: 3e 3b 3c 2f 50 52 45 3e 0d 0a 3c 50 3e 0d 0a 54 >;</PRE>..<P>..T
2300: 68 65 20 3c 49 3e 76 65 72 73 69 6f 6e 3c 2f 49 he <I>version</I
2310: 3e 20 66 69 65 6c 64 20 61 6c 6c 6f 77 73 20 66 > field allows f
2320: 6f 72 20 66 75 74 75 72 65 20 65 78 70 61 6e 73 or future expans
2330: 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 72 75 63 ion of the struc
2340: 74 75 72 65 2c 20 61 6e 64 0d 0a 73 68 6f 75 6c ture, and..shoul
2350: 64 20 61 6c 77 61 79 73 20 62 65 20 64 65 63 6c d always be decl
2360: 61 72 65 64 20 65 71 75 61 6c 20 74 6f 20 54 43 ared equal to TC
2370: 4c 5c 5f 4f 4f 5c 5f 4d 45 54 48 4f 44 5c 5f 56 L\_OO\_METHOD\_V
2380: 45 52 53 49 4f 4e 5c 5f 43 55 52 52 45 4e 54 2e ERSION\_CURRENT.
2390: 20 54 68 65 0d 0a 3c 49 3e 6e 61 6d 65 3c 2f 49 The..<I>name</I
23a0: 3e 20 66 69 65 6c 64 20 70 72 6f 76 69 64 65 73 > field provides
23b0: 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c a human-readabl
23c0: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 74 e name for the t
23d0: 79 70 65 2c 20 61 6e 64 20 69 73 20 74 68 65 20 ype, and is the
23e0: 76 61 6c 75 65 0d 0a 74 68 61 74 20 69 73 20 65 value..that is e
23f0: 78 70 6f 73 65 64 20 76 69 61 20 74 68 65 20 3c xposed via the <
2400: 42 3e 69 6e 66 6f 20 63 6c 61 73 73 20 6d 65 74 B>info class met
2410: 68 6f 64 74 79 70 65 3c 2f 42 3e 20 61 6e 64 0d hodtype</B> and.
2420: 0a 3c 42 3e 69 6e 66 6f 20 6f 62 6a 65 63 74 20 .<B>info object
2430: 6d 65 74 68 6f 64 74 79 70 65 3c 2f 42 3e 20 54 methodtype</B> T
2440: 63 6c 20 63 6f 6d 6d 61 6e 64 73 2e 0d 0a 3c 50 cl commands...<P
2450: 3e 0d 0a 54 68 65 20 3c 49 3e 63 61 6c 6c 50 72 >..The <I>callPr
2460: 6f 63 3c 2f 49 3e 20 66 69 65 6c 64 20 67 69 76 oc</I> field giv
2470: 65 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 es a function th
2480: 61 74 20 69 73 20 63 61 6c 6c 65 64 20 77 68 65 at is called whe
2490: 6e 20 74 68 65 20 6d 65 74 68 6f 64 20 69 73 0d n the method is.
24a0: 0a 69 6e 76 6f 6b 65 64 3b 20 69 74 20 6d 75 73 .invoked; it mus
24b0: 74 20 6e 65 76 65 72 20 62 65 20 4e 55 4c 4c 2e t never be NULL.
24c0: 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c 49 3e 64 65 ..<P>..The <I>de
24d0: 6c 65 74 65 50 72 6f 63 3c 2f 49 3e 20 66 69 65 leteProc</I> fie
24e0: 6c 64 20 67 69 76 65 73 20 61 20 66 75 6e 63 74 ld gives a funct
24f0: 69 6f 6e 20 74 68 61 74 20 69 73 20 75 73 65 64 ion that is used
2500: 20 74 6f 20 64 65 6c 65 74 65 20 61 0d 0a 70 61 to delete a..pa
2510: 72 74 69 63 75 6c 61 72 20 6d 65 74 68 6f 64 2c rticular method,
2520: 20 61 6e 64 20 69 73 20 63 61 6c 6c 65 64 20 77 and is called w
2530: 68 65 6e 20 74 68 65 20 6d 65 74 68 6f 64 20 69 hen the method i
2540: 73 20 72 65 70 6c 61 63 65 64 20 6f 72 20 72 65 s replaced or re
2550: 6d 6f 76 65 64 3b 20 69 66 0d 0a 74 68 65 20 66 moved; if..the f
2560: 69 65 6c 64 20 69 73 20 4e 55 4c 4c 2c 20 69 74 ield is NULL, it
2570: 20 69 73 20 61 73 73 75 6d 65 64 20 74 68 61 74 is assumed that
2580: 20 74 68 65 20 6d 65 74 68 6f 64 27 73 20 3c 49 the method's <I
2590: 3e 63 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e 20 >clientData</I>
25a0: 6e 65 65 64 73 20 6e 6f 0d 0a 73 70 65 63 69 61 needs no..specia
25b0: 6c 20 61 63 74 69 6f 6e 20 74 6f 20 64 65 6c 65 l action to dele
25c0: 74 65 2e 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c 49 te...<P>..The <I
25d0: 3e 63 6c 6f 6e 65 50 72 6f 63 3c 2f 49 3e 20 66 >cloneProc</I> f
25e0: 69 65 6c 64 20 69 73 20 65 69 74 68 65 72 20 61 ield is either a
25f0: 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 function that i
2600: 73 20 75 73 65 64 20 74 6f 20 63 6f 70 79 20 61 s used to copy a
2610: 20 6d 65 74 68 6f 64 27 73 0d 0a 3c 49 3e 63 6c method's..<I>cl
2620: 69 65 6e 74 44 61 74 61 3c 2f 49 3e 20 28 61 73 ientData</I> (as
2630: 20 70 61 72 74 20 6f 66 20 3c 42 3e 3c 41 20 48 part of <B><A H
2640: 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b REF="?name=Doc:+
2650: 54 63 6c 5f 43 6c 61 73 73 22 3e 54 63 6c 5c 5f Tcl_Class">Tcl\_
2660: 43 6f 70 79 4f 62 6a 65 63 74 49 6e 73 74 61 6e CopyObjectInstan
2670: 63 65 3c 2f 41 3e 3c 2f 42 3e 29 20 6f 72 20 4e ce</A></B>) or N
2680: 55 4c 4c 20 74 6f 20 69 6e 64 69 63 61 74 65 0d ULL to indicate.
2690: 0a 74 68 61 74 20 74 68 65 20 3c 49 3e 63 6c 69 .that the <I>cli
26a0: 65 6e 74 44 61 74 61 3c 2f 49 3e 20 63 61 6e 20 entData</I> can
26b0: 6a 75 73 74 20 62 65 20 63 6f 70 69 65 64 20 64 just be copied d
26c0: 69 72 65 63 74 6c 79 2e 0d 0a 3c 48 34 3e 3c 41 irectly...<H4><A
26d0: 20 4e 41 4d 45 3d 22 4d 39 22 3e 54 43 4c 5c 5f NAME="M9">TCL\_
26e0: 4d 45 54 48 4f 44 43 41 4c 4c 50 52 4f 43 20 46 METHODCALLPROC F
26f0: 55 4e 43 54 49 4f 4e 20 53 49 47 4e 41 54 55 52 UNCTION SIGNATUR
2700: 45 3c 2f 41 3e 3c 2f 48 34 3e 0d 0a 46 75 6e 63 E</A></H4>..Func
2710: 74 69 6f 6e 73 20 6d 61 74 63 68 69 6e 67 20 74 tions matching t
2720: 68 69 73 20 73 69 67 6e 61 74 75 72 65 20 61 72 his signature ar
2730: 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 68 e called when th
2740: 65 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f e method is invo
2750: 6b 65 64 2e 0d 0a 3c 50 3e 0d 0a 3c 50 52 45 3e ked...<P>..<PRE>
2760: 74 79 70 65 64 65 66 20 69 6e 74 20 3c 42 3e 54 typedef int <B>T
2770: 63 6c 5c 5f 4d 65 74 68 6f 64 43 61 6c 6c 50 72 cl\_MethodCallPr
2780: 6f 63 3c 2f 42 3e 28 0d 0a 20 20 20 20 20 20 20 oc</B>(..
2790: 20 43 6c 69 65 6e 74 44 61 74 61 20 3c 49 3e 63 ClientData <I>c
27a0: 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e 2c 0d 0a lientData</I>,..
27b0: 20 20 20 20 20 20 20 20 54 63 6c 5c 5f 49 6e 74 Tcl\_Int
27c0: 65 72 70 20 5c 2a 3c 49 3e 69 6e 74 65 72 70 3c erp \*<I>interp<
27d0: 2f 49 3e 2c 0d 0a 20 20 20 20 20 20 20 20 54 63 /I>,.. Tc
27e0: 6c 5c 5f 4f 62 6a 65 63 74 43 6f 6e 74 65 78 74 l\_ObjectContext
27f0: 20 3c 49 3e 6f 62 6a 65 63 74 43 6f 6e 74 65 78 <I>objectContex
2800: 74 3c 2f 49 3e 2c 0d 0a 20 20 20 20 20 20 20 20 t</I>,..
2810: 69 6e 74 20 3c 49 3e 6f 62 6a 63 3c 2f 49 3e 2c int <I>objc</I>,
2820: 0d 0a 20 20 20 20 20 20 20 20 54 63 6c 5c 5f 4f .. Tcl\_O
2830: 62 6a 20 5c 2a 63 6f 6e 73 74 20 5c 2a 3c 49 3e bj \*const \*<I>
2840: 6f 62 6a 76 3c 2f 49 3e 29 3b 3c 2f 50 52 45 3e objv</I>);</PRE>
2850: 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c 49 3e 63 6c ..<P>..The <I>cl
2860: 69 65 6e 74 44 61 74 61 3c 2f 49 3e 20 61 72 67 ientData</I> arg
2870: 75 6d 65 6e 74 20 74 6f 20 61 20 54 63 6c 5c 5f ument to a Tcl\_
2880: 4d 65 74 68 6f 64 43 61 6c 6c 50 72 6f 63 20 69 MethodCallProc i
2890: 73 20 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 s the value that
28a0: 20 77 61 73 0d 0a 67 69 76 65 6e 20 77 68 65 6e was..given when
28b0: 20 74 68 65 20 6d 65 74 68 6f 64 20 77 61 73 20 the method was
28c0: 63 72 65 61 74 65 64 2c 20 74 68 65 20 3c 49 3e created, the <I>
28d0: 69 6e 74 65 72 70 3c 2f 49 3e 20 69 73 20 61 20 interp</I> is a
28e0: 70 6c 61 63 65 20 69 6e 20 77 68 69 63 68 20 74 place in which t
28f0: 6f 0d 0a 65 78 65 63 75 74 65 20 73 63 72 69 70 o..execute scrip
2900: 74 73 20 61 6e 64 20 61 63 63 65 73 73 20 76 61 ts and access va
2910: 72 69 61 62 6c 65 73 20 61 73 20 77 65 6c 6c 20 riables as well
2920: 61 73 20 62 65 69 6e 67 20 77 68 65 72 65 20 74 as being where t
2930: 6f 20 70 75 74 20 74 68 65 20 72 65 73 75 6c 74 o put the result
2940: 0d 0a 6f 66 20 74 68 65 20 6d 65 74 68 6f 64 2c ..of the method,
2950: 20 61 6e 64 20 74 68 65 20 3c 49 3e 6f 62 6a 63 and the <I>objc
2960: 3c 2f 49 3e 20 61 6e 64 20 3c 49 3e 6f 62 6a 76 </I> and <I>objv
2970: 3c 2f 49 3e 20 66 69 65 6c 64 73 20 67 69 76 65 </I> fields give
2980: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 0d 0a the parameter..
2990: 6f 62 6a 65 63 74 73 20 74 6f 20 74 68 65 20 6d objects to the m
29a0: 65 74 68 6f 64 2e 20 54 68 65 20 63 61 6c 6c 69 ethod. The calli
29b0: 6e 67 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 ng context of th
29c0: 65 20 6d 65 74 68 6f 64 20 63 61 6e 20 62 65 20 e method can be
29d0: 64 69 73 63 6f 76 65 72 65 64 0d 0a 74 68 72 6f discovered..thro
29e0: 75 67 68 20 74 68 65 20 3c 49 3e 6f 62 6a 65 63 ugh the <I>objec
29f0: 74 43 6f 6e 74 65 78 74 3c 2f 49 3e 20 61 72 67 tContext</I> arg
2a00: 75 6d 65 6e 74 2c 20 61 6e 64 20 74 68 65 20 72 ument, and the r
2a10: 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d eturn value from
2a20: 20 61 0d 0a 54 63 6c 5c 5f 4d 65 74 68 6f 64 43 a..Tcl\_MethodC
2a30: 61 6c 6c 50 72 6f 63 20 69 73 20 61 6e 79 20 54 allProc is any T
2a40: 63 6c 20 72 65 74 75 72 6e 20 63 6f 64 65 20 28 cl return code (
2a50: 65 2e 67 2e 2c 20 54 43 4c 5c 5f 4f 4b 2c 20 54 e.g., TCL\_OK, T
2a60: 43 4c 5c 5f 45 52 52 4f 52 29 2e 0d 0a 3c 48 34 CL\_ERROR)...<H4
2a70: 3e 3c 41 20 4e 41 4d 45 3d 22 4d 31 30 22 3e 54 ><A NAME="M10">T
2a80: 43 4c 5c 5f 4d 45 54 48 4f 44 44 45 4c 45 54 45 CL\_METHODDELETE
2a90: 50 52 4f 43 20 46 55 4e 43 54 49 4f 4e 20 53 49 PROC FUNCTION SI
2aa0: 47 4e 41 54 55 52 45 3c 2f 41 3e 3c 2f 48 34 3e GNATURE</A></H4>
2ab0: 0d 0a 46 75 6e 63 74 69 6f 6e 73 20 6d 61 74 63 ..Functions matc
2ac0: 68 69 6e 67 20 74 68 69 73 20 73 69 67 6e 61 74 hing this signat
2ad0: 75 72 65 20 61 72 65 20 75 73 65 64 20 77 68 65 ure are used whe
2ae0: 6e 20 61 20 6d 65 74 68 6f 64 20 69 73 20 64 65 n a method is de
2af0: 6c 65 74 65 64 2c 20 77 68 65 74 68 65 72 0d 0a leted, whether..
2b00: 74 68 72 6f 75 67 68 20 61 20 6e 65 77 20 6d 65 through a new me
2b10: 74 68 6f 64 20 62 65 69 6e 67 20 63 72 65 61 74 thod being creat
2b20: 65 64 20 6f 72 20 62 65 63 61 75 73 65 20 74 68 ed or because th
2b30: 65 20 6f 62 6a 65 63 74 20 6f 72 20 63 6c 61 73 e object or clas
2b40: 73 20 69 73 20 64 65 6c 65 74 65 64 2e 0d 0a 3c s is deleted...<
2b50: 50 3e 0d 0a 3c 50 52 45 3e 74 79 70 65 64 65 66 P>..<PRE>typedef
2b60: 20 76 6f 69 64 20 3c 42 3e 54 63 6c 5c 5f 4d 65 void <B>Tcl\_Me
2b70: 74 68 6f 64 44 65 6c 65 74 65 50 72 6f 63 3c 2f thodDeleteProc</
2b80: 42 3e 28 0d 0a 20 20 20 20 20 20 20 20 43 6c 69 B>(.. Cli
2b90: 65 6e 74 44 61 74 61 20 3c 49 3e 63 6c 69 65 6e entData <I>clien
2ba0: 74 44 61 74 61 3c 2f 49 3e 29 3b 3c 2f 50 52 45 tData</I>);</PRE
2bb0: 3e 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c 49 3e 63 >..<P>..The <I>c
2bc0: 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e 20 61 72 lientData</I> ar
2bd0: 67 75 6d 65 6e 74 20 74 6f 20 61 20 54 63 6c 5c gument to a Tcl\
2be0: 5f 4d 65 74 68 6f 64 44 65 6c 65 74 65 50 72 6f _MethodDeletePro
2bf0: 63 20 77 69 6c 6c 20 62 65 20 74 68 65 20 73 61 c will be the sa
2c00: 6d 65 20 61 73 0d 0a 74 68 65 20 76 61 6c 75 65 me as..the value
2c10: 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 3c passed to the <
2c20: 49 3e 63 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e I>clientData</I>
2c30: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 3c 42 3e argument to <B>
2c40: 54 63 6c 5c 5f 4e 65 77 4d 65 74 68 6f 64 3c 2f Tcl\_NewMethod</
2c50: 42 3e 20 6f 72 0d 0a 3c 42 3e 54 63 6c 5c 5f 4e B> or..<B>Tcl\_N
2c60: 65 77 49 6e 73 74 61 6e 63 65 4d 65 74 68 6f 64 ewInstanceMethod
2c70: 3c 2f 42 3e 20 77 68 65 6e 20 74 68 65 20 6d 65 </B> when the me
2c80: 74 68 6f 64 20 77 61 73 20 63 72 65 61 74 65 64 thod was created
2c90: 2e 0d 0a 3c 48 34 3e 3c 41 20 4e 41 4d 45 3d 22 ...<H4><A NAME="
2ca0: 4d 31 31 22 3e 54 43 4c 5c 5f 43 4c 4f 4e 45 50 M11">TCL\_CLONEP
2cb0: 52 4f 43 20 46 55 4e 43 54 49 4f 4e 20 53 49 47 ROC FUNCTION SIG
2cc0: 4e 41 54 55 52 45 3c 2f 41 3e 3c 2f 48 34 3e 0d NATURE</A></H4>.
2cd0: 0a 46 75 6e 63 74 69 6f 6e 73 20 6d 61 74 63 68 .Functions match
2ce0: 69 6e 67 20 74 68 69 73 20 73 69 67 6e 61 74 75 ing this signatu
2cf0: 72 65 20 61 72 65 20 75 73 65 64 20 74 6f 20 63 re are used to c
2d00: 6f 70 79 20 61 20 6d 65 74 68 6f 64 20 77 68 65 opy a method whe
2d10: 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 6f 72 0d n the object or.
2d20: 0a 63 6c 61 73 73 20 69 73 20 63 6f 70 69 65 64 .class is copied
2d30: 20 75 73 69 6e 67 20 3c 42 3e 3c 41 20 48 52 45 using <B><A HRE
2d40: 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 54 63 F="?name=Doc:+Tc
2d50: 6c 5f 43 6c 61 73 73 22 3e 54 63 6c 5c 5f 43 6f l_Class">Tcl\_Co
2d60: 70 79 4f 62 6a 65 63 74 49 6e 73 74 61 6e 63 65 pyObjectInstance
2d70: 3c 2f 41 3e 3c 2f 42 3e 20 28 6f 72 20 3c 42 3e </A></B> (or <B>
2d80: 3c 41 20 48 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 <A HREF="?name=D
2d90: 6f 63 3a 2b 6f 6f 3a 3a 63 6f 70 79 22 3e 6f 6f oc:+oo::copy">oo
2da0: 3a 3a 63 6f 70 79 3c 2f 41 3e 3c 2f 42 3e 29 2e ::copy</A></B>).
2db0: 0d 0a 3c 50 3e 0d 0a 3c 50 52 45 3e 74 79 70 65 ..<P>..<PRE>type
2dc0: 64 65 66 20 69 6e 74 20 3c 42 3e 54 63 6c 5c 5f def int <B>Tcl\_
2dd0: 43 6c 6f 6e 65 50 72 6f 63 3c 2f 42 3e 28 0d 0a CloneProc</B>(..
2de0: 20 20 20 20 20 20 20 20 54 63 6c 5c 5f 49 6e 74 Tcl\_Int
2df0: 65 72 70 20 5c 2a 3c 49 3e 69 6e 74 65 72 70 3c erp \*<I>interp<
2e00: 2f 49 3e 2c 0d 0a 20 20 20 20 20 20 20 20 43 6c /I>,.. Cl
2e10: 69 65 6e 74 44 61 74 61 20 3c 49 3e 6f 6c 64 43 ientData <I>oldC
2e20: 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e 2c 0d 0a lientData</I>,..
2e30: 20 20 20 20 20 20 20 20 43 6c 69 65 6e 74 44 61 ClientDa
2e40: 74 61 20 5c 2a 3c 49 3e 6e 65 77 43 6c 69 65 6e ta \*<I>newClien
2e50: 74 44 61 74 61 50 74 72 3c 2f 49 3e 29 3b 3c 2f tDataPtr</I>);</
2e60: 50 52 45 3e 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c PRE>..<P>..The <
2e70: 49 3e 69 6e 74 65 72 70 3c 2f 49 3e 20 61 72 67 I>interp</I> arg
2e80: 75 6d 65 6e 74 20 67 69 76 65 73 20 61 20 70 6c ument gives a pl
2e90: 61 63 65 20 74 6f 20 77 72 69 74 65 20 61 6e 20 ace to write an
2ea0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77 68 error message wh
2eb0: 65 6e 20 74 68 65 0d 0a 61 74 74 65 6d 70 74 20 en the..attempt
2ec0: 74 6f 20 63 6c 6f 6e 65 20 74 68 65 20 6f 62 6a to clone the obj
2ed0: 65 63 74 20 69 73 20 74 6f 20 66 61 69 6c 2c 20 ect is to fail,
2ee0: 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 in which case th
2ef0: 65 20 63 6c 6f 6e 65 20 70 72 6f 63 65 64 75 72 e clone procedur
2f00: 65 20 6d 75 73 74 0d 0a 61 6c 73 6f 20 72 65 74 e must..also ret
2f10: 75 72 6e 20 54 43 4c 5c 5f 45 52 52 4f 52 3b 20 urn TCL\_ERROR;
2f20: 69 74 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e it should return
2f30: 20 54 43 4c 5c 5f 4f 4b 20 6f 74 68 65 72 77 69 TCL\_OK otherwi
2f40: 73 65 2e 0d 0a 54 68 65 20 3c 49 3e 6f 6c 64 43 se...The <I>oldC
2f50: 6c 69 65 6e 74 44 61 74 61 3c 2f 49 3e 20 66 69 lientData</I> fi
2f60: 65 6c 64 20 74 6f 20 61 20 54 63 6c 5c 5f 43 6c eld to a Tcl\_Cl
2f70: 6f 6e 65 50 72 6f 63 20 67 69 76 65 73 20 74 68 oneProc gives th
2f80: 65 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 e value from the
2f90: 0d 0a 6d 65 74 68 6f 64 20 62 65 69 6e 67 20 63 ..method being c
2fa0: 6f 70 69 65 64 20 66 72 6f 6d 2c 20 61 6e 64 20 opied from, and
2fb0: 74 68 65 20 3c 49 3e 6e 65 77 43 6c 69 65 6e 74 the <I>newClient
2fc0: 44 61 74 61 50 74 72 3c 2f 49 3e 20 66 69 65 6c DataPtr</I> fiel
2fd0: 64 20 77 69 6c 6c 20 70 6f 69 6e 74 20 74 6f 0d d will point to.
2fe0: 0a 61 20 76 61 72 69 61 62 6c 65 20 69 6e 20 77 .a variable in w
2ff0: 68 69 63 68 20 74 6f 20 77 72 69 74 65 20 74 68 hich to write th
3000: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 e value for the
3010: 6d 65 74 68 6f 64 20 62 65 69 6e 67 20 63 6f 70 method being cop
3020: 69 65 64 20 74 6f 2e 0d 0a 3c 48 33 3e 3c 41 20 ied to...<H3><A
3030: 4e 41 4d 45 3d 22 4d 31 32 22 3e 53 45 45 20 41 NAME="M12">SEE A
3040: 4c 53 4f 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 3c 42 LSO</A></H3>..<B
3050: 3e 3c 41 20 48 52 45 46 3d 22 3f 6e 61 6d 65 3d ><A HREF="?name=
3060: 44 6f 63 3a 2b 54 63 6c 5f 43 6c 61 73 73 22 3e Doc:+Tcl_Class">
3070: 54 63 6c 5c 5f 43 6c 61 73 73 3c 2f 61 3e 3c 2f Tcl\_Class</a></
3080: 42 3e 2c 20 3c 42 3e 3c 41 20 48 52 45 46 3d 22 B>, <B><A HREF="
3090: 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6f 6f 3a 3a 63 ?name=Doc:+oo::c
30a0: 6c 61 73 73 22 3e 6f 6f 3a 3a 63 6c 61 73 73 3c lass">oo::class<
30b0: 2f 41 3e 3c 2f 42 3e 2c 20 3c 42 3e 3c 41 20 48 /A></B>, <B><A H
30c0: 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b REF="?name=Doc:+
30d0: 6f 6f 3a 3a 64 65 66 69 6e 65 22 3e 6f 6f 3a 3a oo::define">oo::
30e0: 64 65 66 69 6e 65 3c 2f 41 3e 3c 2f 42 3e 2c 20 define</A></B>,
30f0: 3c 42 3e 3c 41 20 48 52 45 46 3d 22 3f 6e 61 6d <B><A HREF="?nam
3100: 65 3d 44 6f 63 3a 2b 6f 6f 3a 3a 6f 62 6a 65 63 e=Doc:+oo::objec
3110: 74 22 3e 6f 6f 3a 3a 6f 62 6a 65 63 74 3c 2f 41 t">oo::object</A
3120: 3e 3c 2f 42 3e 0d 0a 3c 48 33 3e 3c 41 20 4e 41 ></B>..<H3><A NA
3130: 4d 45 3d 22 4d 31 33 22 3e 4b 45 59 57 4f 52 44 ME="M13">KEYWORD
3140: 53 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 63 6f 6e 73 S</A></H3>..cons
3150: 74 72 75 63 74 6f 72 2c 20 6d 65 74 68 6f 64 2c tructor, method,
3160: 20 6f 62 6a 65 63 74 0a 5a 20 31 39 30 39 62 62 object.Z 1909bb
3170: 38 39 31 33 65 63 63 65 37 66 62 65 66 32 36 35 8913ecce7fbef265
3180: 36 61 32 30 65 34 66 66 35 33 0a 6a20e4ff53.