TclOO Package

Hex Artifact Content
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
Send your abstracts to tclconference@googlegroups.com
or submit via the online form by Aug 20.

Artifact 65e062de711e363282ea604bfe502f1c239ff3cc:

Wiki page [Doc: Tcl_Method] 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  &lt;tclOO.h&gt;<
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   &quot;real&quot
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.