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 d3b68699b29e01813a5e54bec4eb38d84b5c0dcf:

Wiki page [Doc: Tcl_Class] by dkf 2016-09-17 13:35:06.
0000: 44 20 32 30 31 36 2d 30 39 2d 31 37 54 31 33 3a  D 2016-09-17T13:
0010: 33 35 3a 30 36 2e 34 32 32 0a 4c 20 44 6f 63 3a  35:06.422.L Doc:
0020: 5c 73 54 63 6c 5f 43 6c 61 73 73 0a 4e 20 74 65  \sTcl_Class.N te
0030: 78 74 2f 78 2d 6d 61 72 6b 64 6f 77 6e 0a 50 20  xt/x-markdown.P 
0040: 63 34 37 62 32 63 63 66 62 36 65 37 64 62 32 61  c47b2ccfb6e7db2a
0050: 66 38 63 36 31 34 39 36 38 65 64 32 36 31 31 30  f8c614968ed26110
0060: 33 38 36 65 33 32 61 33 0a 55 20 64 6b 66 0a 57  386e32a3.U dkf.W
0070: 20 31 31 38 35 39 0a 3c 68 31 3e 54 63 6c 5c 5f   11859.<h1>Tcl\_
0080: 43 6c 61 73 73 2c 20 54 63 6c 5c 5f 4f 62 6a 65  Class, Tcl\_Obje
0090: 63 74 20 61 6e 64 20 73 75 70 70 6f 72 74 69 6e  ct and supportin
00a0: 67 20 66 75 6e 63 74 69 6f 6e 73 3c 2f 68 31 3e  g functions</h1>
00b0: 0d 0a 3c 44 4c 20 73 74 79 6c 65 3d 22 66 6f 6e  ..<DL style="fon
00c0: 74 2d 73 69 7a 65 3a 2e 38 35 65 6d 22 3e 0d 0a  t-size:.85em">..
00d0: 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 23 4d 32  <DD><A HREF="#M2
00e0: 22 20 4e 41 4d 45 3d 22 4c 38 36 22 3e 4e 41 4d  " NAME="L86">NAM
00f0: 45 3c 2f 41 3e 0d 0a 3c 44 44 3e 3c 41 20 48 52  E</A>..<DD><A HR
0100: 45 46 3d 22 23 4d 33 22 20 4e 41 4d 45 3d 22 4c  EF="#M3" NAME="L
0110: 38 37 22 3e 53 59 4e 4f 50 53 49 53 3c 2f 41 3e  87">SYNOPSIS</A>
0120: 0d 0a 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 23  ..<DD><A HREF="#
0130: 4d 34 22 20 4e 41 4d 45 3d 22 4c 38 38 22 3e 41  M4" NAME="L88">A
0140: 52 47 55 4d 45 4e 54 53 3c 2f 41 3e 0d 0a 3c 44  RGUMENTS</A>..<D
0150: 44 3e 3c 41 20 48 52 45 46 3d 22 23 4d 35 22 20  D><A HREF="#M5" 
0160: 4e 41 4d 45 3d 22 4c 38 39 22 3e 44 45 53 43 52  NAME="L89">DESCR
0170: 49 50 54 49 4f 4e 3c 2f 41 3e 0d 0a 3c 44 44 3e  IPTION</A>..<DD>
0180: 3c 41 20 48 52 45 46 3d 22 23 4d 36 22 20 4e 41  <A HREF="#M6" NA
0190: 4d 45 3d 22 4c 39 30 22 3e 4f 42 4a 45 43 54 20  ME="L90">OBJECT 
01a0: 41 4e 44 20 43 4c 41 53 53 20 4d 45 54 41 44 41  AND CLASS METADA
01b0: 54 41 3c 2f 41 3e 0d 0a 3c 44 44 3e 3c 41 20 48  TA</A>..<DD><A H
01c0: 52 45 46 3d 22 23 4d 37 22 20 4e 41 4d 45 3d 22  REF="#M7" NAME="
01d0: 4c 39 31 22 3e 54 43 4c 5c 5f 4f 42 4a 45 43 54  L91">TCL\_OBJECT
01e0: 4d 45 54 41 44 41 54 41 54 59 50 45 20 53 54 52  METADATATYPE STR
01f0: 55 43 54 55 52 45 3c 2f 41 3e 0d 0a 3c 44 44 3e  UCTURE</A>..<DD>
0200: 3c 41 20 48 52 45 46 3d 22 23 4d 38 22 20 4e 41  <A HREF="#M8" NA
0210: 4d 45 3d 22 4c 39 32 22 3e 54 43 4c 5c 5f 4f 42  ME="L92">TCL\_OB
0220: 4a 45 43 54 4d 45 54 41 44 41 54 41 44 45 4c 45  JECTMETADATADELE
0230: 54 45 50 52 4f 43 20 46 55 4e 43 54 49 4f 4e 20  TEPROC FUNCTION 
0240: 53 49 47 4e 41 54 55 52 45 3c 2f 41 3e 0d 0a 3c  SIGNATURE</A>..<
0250: 44 44 3e 3c 41 20 48 52 45 46 3d 22 23 4d 39 22  DD><A HREF="#M9"
0260: 20 4e 41 4d 45 3d 22 4c 39 33 22 3e 54 43 4c 5c   NAME="L93">TCL\
0270: 5f 43 4c 4f 4e 45 50 52 4f 43 20 46 55 4e 43 54  _CLONEPROC FUNCT
0280: 49 4f 4e 20 53 49 47 4e 41 54 55 52 45 3c 2f 41  ION SIGNATURE</A
0290: 3e 0d 0a 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22  >..<DD><A HREF="
02a0: 23 4d 31 30 22 20 4e 41 4d 45 3d 22 4c 39 34 22  #M10" NAME="L94"
02b0: 3e 4f 42 4a 45 43 54 20 4d 45 54 48 4f 44 20 4e  >OBJECT METHOD N
02c0: 41 4d 45 20 4d 41 50 50 49 4e 47 3c 2f 41 3e 0d  AME MAPPING</A>.
02d0: 0a 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 23 4d  .<DD><A HREF="#M
02e0: 31 31 22 20 4e 41 4d 45 3d 22 4c 39 35 22 3e 54  11" NAME="L95">T
02f0: 43 4c 5c 5f 4f 42 4a 45 43 54 4d 41 50 4d 45 54  CL\_OBJECTMAPMET
0300: 48 4f 44 4e 41 4d 45 50 52 4f 43 20 46 55 4e 43  HODNAMEPROC FUNC
0310: 54 49 4f 4e 20 53 49 47 4e 41 54 55 52 45 3c 2f  TION SIGNATURE</
0320: 41 3e 0d 0a 3c 44 44 3e 3c 41 20 48 52 45 46 3d  A>..<DD><A HREF=
0330: 22 23 4d 31 32 22 20 4e 41 4d 45 3d 22 4c 39 36  "#M12" NAME="L96
0340: 22 3e 53 45 45 20 41 4c 53 4f 3c 2f 41 3e 0d 0a  ">SEE ALSO</A>..
0350: 3c 44 44 3e 3c 41 20 48 52 45 46 3d 22 23 4d 31  <DD><A HREF="#M1
0360: 33 22 20 4e 41 4d 45 3d 22 4c 39 37 22 3e 4b 45  3" NAME="L97">KE
0370: 59 57 4f 52 44 53 3c 2f 41 3e 0d 0a 3c 2f 44 4c  YWORDS</A>..</DL
0380: 3e 0d 0a 3c 48 33 3e 3c 41 20 4e 41 4d 45 3d 22  >..<H3><A NAME="
0390: 4d 32 22 3e 4e 41 4d 45 3c 2f 41 3e 3c 2f 48 33  M2">NAME</A></H3
03a0: 3e 0d 0a 54 63 6c 5c 5f 43 6c 61 73 73 47 65 74  >..Tcl\_ClassGet
03b0: 4d 65 74 61 64 61 74 61 2c 20 54 63 6c 5c 5f 43  Metadata, Tcl\_C
03c0: 6c 61 73 73 53 65 74 4d 65 74 61 64 61 74 61 2c  lassSetMetadata,
03d0: 20 54 63 6c 5c 5f 43 6f 70 79 4f 62 6a 65 63 74   Tcl\_CopyObject
03e0: 49 6e 73 74 61 6e 63 65 2c 20 54 63 6c 5c 5f 47  Instance, Tcl\_G
03f0: 65 74 43 6c 61 73 73 41 73 4f 62 6a 65 63 74 2c  etClassAsObject,
0400: 20 54 63 6c 5c 5f 47 65 74 4f 62 6a 65 63 74 41   Tcl\_GetObjectA
0410: 73 43 6c 61 73 73 2c 20 54 63 6c 5c 5f 47 65 74  sClass, Tcl\_Get
0420: 4f 62 6a 65 63 74 43 6f 6d 6d 61 6e 64 2c 20 54  ObjectCommand, T
0430: 63 6c 5c 5f 47 65 74 4f 62 6a 65 63 74 46 72 6f  cl\_GetObjectFro
0440: 6d 4f 62 6a 2c 20 54 63 6c 5c 5f 47 65 74 4f 62  mObj, Tcl\_GetOb
0450: 6a 65 63 74 4e 61 6d 65 2c 20 54 63 6c 5c 5f 47  jectName, Tcl\_G
0460: 65 74 4f 62 6a 65 63 74 4e 61 6d 65 73 70 61 63  etObjectNamespac
0470: 65 2c 20 54 63 6c 5c 5f 4e 65 77 4f 62 6a 65 63  e, Tcl\_NewObjec
0480: 74 49 6e 73 74 61 6e 63 65 2c 20 54 63 6c 5c 5f  tInstance, Tcl\_
0490: 4f 62 6a 65 63 74 44 65 6c 65 74 65 64 2c 20 54  ObjectDeleted, T
04a0: 63 6c 5c 5f 4f 62 6a 65 63 74 47 65 74 4d 65 74  cl\_ObjectGetMet
04b0: 61 64 61 74 61 2c 20 54 63 6c 5c 5f 4f 62 6a 65  adata, Tcl\_Obje
04c0: 63 74 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 4d  ctGetMethodNameM
04d0: 61 70 70 65 72 2c 20 54 63 6c 5c 5f 4f 62 6a 65  apper, Tcl\_Obje
04e0: 63 74 53 65 74 4d 65 74 61 64 61 74 61 2c 20 54  ctSetMetadata, T
04f0: 63 6c 5c 5f 4f 62 6a 65 63 74 53 65 74 4d 65 74  cl\_ObjectSetMet
0500: 68 6f 64 4e 61 6d 65 4d 61 70 70 65 72 20 26 6d  hodNameMapper &m
0510: 64 61 73 68 3b 20 6d 61 6e 69 70 75 6c 61 74 65  dash; manipulate
0520: 20 6f 62 6a 65 63 74 73 20 61 6e 64 20 63 6c 61   objects and cla
0530: 73 73 65 73 0d 0a 3c 48 33 3e 3c 41 20 4e 41 4d  sses..<H3><A NAM
0540: 45 3d 22 4d 33 22 3e 53 59 4e 4f 50 53 49 53 3c  E="M3">SYNOPSIS<
0550: 2f 41 3e 3c 2f 48 33 3e 0d 0a 3c 70 72 65 3e 0d  /A></H3>..<pre>.
0560: 0a 3c 42 3e 23 69 6e 63 6c 75 64 65 20 26 6c 74  .<B>#include &lt
0570: 3b 74 63 6c 4f 4f 2e 68 26 67 74 3b 3c 2f 42 3e  ;tclOO.h&gt;</B>
0580: 3c 62 72 3e 0d 0a 54 63 6c 5c 5f 4f 62 6a 65 63  <br>..Tcl\_Objec
0590: 74 20 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a  t <B>Tcl\_GetObj
05a0: 65 63 74 46 72 6f 6d 4f 62 6a 3c 2f 42 3e 28 3c  ectFromObj</B>(<
05b0: 49 3e 69 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72  I>interp, objPtr
05c0: 3c 2f 49 3e 29 0d 0a 54 63 6c 5c 5f 4f 62 6a 65  </I>)..Tcl\_Obje
05d0: 63 74 20 3c 42 3e 54 63 6c 5c 5f 47 65 74 43 6c  ct <B>Tcl\_GetCl
05e0: 61 73 73 41 73 4f 62 6a 65 63 74 3c 2f 42 3e 28  assAsObject</B>(
05f0: 3c 49 3e 63 6c 61 73 73 3c 2f 49 3e 29 0d 0a 54  <I>class</I>)..T
0600: 63 6c 5c 5f 43 6c 61 73 73 20 3c 42 3e 54 63 6c  cl\_Class <B>Tcl
0610: 5c 5f 47 65 74 4f 62 6a 65 63 74 41 73 43 6c 61  \_GetObjectAsCla
0620: 73 73 3c 2f 42 3e 28 3c 49 3e 6f 62 6a 65 63 74  ss</B>(<I>object
0630: 3c 2f 49 3e 29 0d 0a 54 63 6c 5c 5f 4f 62 6a 20  </I>)..Tcl\_Obj 
0640: 5c 2a 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a  \*<B>Tcl\_GetObj
0650: 65 63 74 4e 61 6d 65 3c 2f 42 3e 28 3c 49 3e 69  ectName</B>(<I>i
0660: 6e 74 65 72 70 2c 20 6f 62 6a 65 63 74 3c 2f 49  nterp, object</I
0670: 3e 29 0d 0a 54 63 6c 5c 5f 43 6f 6d 6d 61 6e 64  >)..Tcl\_Command
0680: 20 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a 65   <B>Tcl\_GetObje
0690: 63 74 43 6f 6d 6d 61 6e 64 3c 2f 42 3e 28 3c 49  ctCommand</B>(<I
06a0: 3e 6f 62 6a 65 63 74 3c 2f 49 3e 29 0d 0a 54 63  >object</I>)..Tc
06b0: 6c 5c 5f 4e 61 6d 65 73 70 61 63 65 20 5c 2a 3c  l\_Namespace \*<
06c0: 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a 65 63 74  B>Tcl\_GetObject
06d0: 4e 61 6d 65 73 70 61 63 65 3c 2f 42 3e 28 3c 49  Namespace</B>(<I
06e0: 3e 6f 62 6a 65 63 74 3c 2f 49 3e 29 0d 0a 54 63  >object</I>)..Tc
06f0: 6c 5c 5f 4f 62 6a 65 63 74 20 3c 42 3e 54 63 6c  l\_Object <B>Tcl
0700: 5c 5f 4e 65 77 4f 62 6a 65 63 74 49 6e 73 74 61  \_NewObjectInsta
0710: 6e 63 65 3c 2f 42 3e 28 3c 49 3e 69 6e 74 65 72  nce</B>(<I>inter
0720: 70 2c 20 63 6c 61 73 73 2c 20 6e 61 6d 65 2c 20  p, class, name, 
0730: 6e 73 4e 61 6d 65 2c 20 6f 62 6a 63 2c 20 6f 62  nsName, objc, ob
0740: 6a 76 2c 20 73 6b 69 70 3c 2f 49 3e 29 0d 0a 54  jv, skip</I>)..T
0750: 63 6c 5c 5f 4f 62 6a 65 63 74 20 3c 42 3e 54 63  cl\_Object <B>Tc
0760: 6c 5c 5f 43 6f 70 79 4f 62 6a 65 63 74 49 6e 73  l\_CopyObjectIns
0770: 74 61 6e 63 65 3c 2f 42 3e 28 3c 49 3e 69 6e 74  tance</B>(<I>int
0780: 65 72 70 2c 20 6f 62 6a 65 63 74 2c 20 6e 61 6d  erp, object, nam
0790: 65 2c 20 6e 73 4e 61 6d 65 3c 2f 49 3e 29 0d 0a  e, nsName</I>)..
07a0: 69 6e 74 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65  int <B>Tcl\_Obje
07b0: 63 74 44 65 6c 65 74 65 64 3c 2f 42 3e 28 3c 49  ctDeleted</B>(<I
07c0: 3e 6f 62 6a 65 63 74 3c 2f 49 3e 29 0d 0a 43 6c  >object</I>)..Cl
07d0: 69 65 6e 74 44 61 74 61 20 3c 42 3e 54 63 6c 5c  ientData <B>Tcl\
07e0: 5f 4f 62 6a 65 63 74 47 65 74 4d 65 74 61 64 61  _ObjectGetMetada
07f0: 74 61 3c 2f 42 3e 28 3c 49 3e 6f 62 6a 65 63 74  ta</B>(<I>object
0800: 2c 20 6d 65 74 61 54 79 70 65 50 74 72 3c 2f 49  , metaTypePtr</I
0810: 3e 29 0d 0a 76 6f 69 64 20 3c 42 3e 54 63 6c 5c  >)..void <B>Tcl\
0820: 5f 4f 62 6a 65 63 74 53 65 74 4d 65 74 61 64 61  _ObjectSetMetada
0830: 74 61 3c 2f 42 3e 28 3c 49 3e 6f 62 6a 65 63 74  ta</B>(<I>object
0840: 2c 20 6d 65 74 61 54 79 70 65 50 74 72 2c 20 6d  , metaTypePtr, m
0850: 65 74 61 64 61 74 61 3c 2f 49 3e 29 0d 0a 43 6c  etadata</I>)..Cl
0860: 69 65 6e 74 44 61 74 61 20 3c 42 3e 54 63 6c 5c  ientData <B>Tcl\
0870: 5f 43 6c 61 73 73 47 65 74 4d 65 74 61 64 61 74  _ClassGetMetadat
0880: 61 3c 2f 42 3e 28 3c 49 3e 63 6c 61 73 73 2c 20  a</B>(<I>class, 
0890: 6d 65 74 61 54 79 70 65 50 74 72 3c 2f 49 3e 29  metaTypePtr</I>)
08a0: 0d 0a 76 6f 69 64 20 3c 42 3e 54 63 6c 5c 5f 43  ..void <B>Tcl\_C
08b0: 6c 61 73 73 53 65 74 4d 65 74 61 64 61 74 61 3c  lassSetMetadata<
08c0: 2f 42 3e 28 3c 49 3e 63 6c 61 73 73 2c 20 6d 65  /B>(<I>class, me
08d0: 74 61 54 79 70 65 50 74 72 2c 20 6d 65 74 61 64  taTypePtr, metad
08e0: 61 74 61 3c 2f 49 3e 29 0d 0a 54 63 6c 5c 5f 4f  ata</I>)..Tcl\_O
08f0: 62 6a 65 63 74 4d 61 70 4d 65 74 68 6f 64 4e 61  bjectMapMethodNa
0900: 6d 65 50 72 6f 63 20 3c 42 3e 54 63 6c 5c 5f 4f  meProc <B>Tcl\_O
0910: 62 6a 65 63 74 47 65 74 4d 65 74 68 6f 64 4e 61  bjectGetMethodNa
0920: 6d 65 4d 61 70 70 65 72 3c 2f 42 3e 28 3c 49 3e  meMapper</B>(<I>
0930: 6f 62 6a 65 63 74 3c 2f 49 3e 29 0d 0a 76 6f 69  object</I>)..voi
0940: 64 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74  d <B>Tcl\_Object
0950: 53 65 74 4d 65 74 68 6f 64 4e 61 6d 65 4d 61 70  SetMethodNameMap
0960: 70 65 72 3c 2f 42 3e 28 3c 49 3e 6f 62 6a 65 63  per</B>(<I>objec
0970: 74 3c 2f 49 3e 2c 20 3c 49 3e 6d 65 74 68 6f 64  t</I>, <I>method
0980: 4e 61 6d 65 4d 61 70 70 65 72 3c 2f 49 3e 29 0d  NameMapper</I>).
0990: 0a 3c 2f 70 72 65 3e 0d 0a 3c 48 33 3e 3c 41 20  .</pre>..<H3><A 
09a0: 4e 41 4d 45 3d 22 4d 34 22 3e 41 52 47 55 4d 45  NAME="M4">ARGUME
09b0: 4e 54 53 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 3c 44  NTS</A></H3>..<D
09c0: 4c 20 63 6c 61 73 73 3d 22 61 72 67 75 6d 65 6e  L class="argumen
09d0: 74 73 22 3e 0d 0a 3c 44 54 3e 54 63 6c 5c 5f 49  ts">..<DT>Tcl\_I
09e0: 6e 74 65 72 70 20 3c 42 3e 5c 2a 69 6e 74 65 72  nterp <B>\*inter
09f0: 70 3c 2f 42 3e 20 28 69 6e 2f 6f 75 74 29 3c 44  p</B> (in/out)<D
0a00: 44 3e 0d 0a 49 6e 74 65 72 70 72 65 74 65 72 20  D>..Interpreter 
0a10: 70 72 6f 76 69 64 69 6e 67 20 74 68 65 20 63 6f  providing the co
0a20: 6e 74 65 78 74 20 66 6f 72 20 6c 6f 6f 6b 69 6e  ntext for lookin
0a30: 67 20 75 70 20 6f 72 20 63 72 65 61 74 69 6e 67  g up or creating
0a40: 20 61 6e 20 6f 62 6a 65 63 74 2c 20 61 6e 64 0d   an object, and.
0a50: 0a 69 6e 74 6f 20 77 68 6f 73 65 20 72 65 73 75  .into whose resu
0a60: 6c 74 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  lt error message
0a70: 73 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74 65  s will be writte
0a80: 6e 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 3c  n on failure...<
0a90: 50 3e 3c 44 54 3e 54 63 6c 5c 5f 4f 62 6a 20 3c  P><DT>Tcl\_Obj <
0aa0: 42 3e 5c 2a 6f 62 6a 50 74 72 3c 2f 42 3e 20 28  B>\*objPtr</B> (
0ab0: 69 6e 29 3c 44 44 3e 0d 0a 54 68 65 20 6e 61 6d  in)<DD>..The nam
0ac0: 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20  e of the object 
0ad0: 74 6f 20 6c 6f 6f 6b 20 75 70 2e 0d 0a 3c 50 3e  to look up...<P>
0ae0: 3c 44 54 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 20  <DT>Tcl\_Object 
0af0: 3c 42 3e 6f 62 6a 65 63 74 3c 2f 42 3e 20 28 69  <B>object</B> (i
0b00: 6e 29 3c 44 44 3e 0d 0a 52 65 66 65 72 65 6e 63  n)<DD>..Referenc
0b10: 65 20 74 6f 20 74 68 65 20 6f 62 6a 65 63 74 20  e to the object 
0b20: 74 6f 20 6f 70 65 72 61 74 65 20 75 70 6f 6e 2e  to operate upon.
0b30: 20 54 68 69 73 20 69 73 20 61 6e 20 6f 70 61 71   This is an opaq
0b40: 75 65 20 74 6f 6b 65 6e 2e 0d 0a 3c 50 3e 3c 44  ue token...<P><D
0b50: 54 3e 54 63 6c 5c 5f 43 6c 61 73 73 20 3c 42 3e  T>Tcl\_Class <B>
0b60: 63 6c 61 73 73 3c 2f 42 3e 20 28 69 6e 29 3c 44  class</B> (in)<D
0b70: 44 3e 0d 0a 52 65 66 65 72 65 6e 63 65 20 74 6f  D>..Reference to
0b80: 20 74 68 65 20 63 6c 61 73 73 20 74 6f 20 6f 70   the class to op
0b90: 65 72 61 74 65 20 75 70 6f 6e 2e 20 54 68 69 73  erate upon. This
0ba0: 20 69 73 20 61 6e 20 6f 70 61 71 75 65 20 74 6f   is an opaque to
0bb0: 6b 65 6e 2e 0d 0a 3c 50 3e 3c 44 54 3e 63 6f 6e  ken...<P><DT>con
0bc0: 73 74 20 63 68 61 72 20 3c 42 3e 5c 2a 6e 61 6d  st char <B>\*nam
0bd0: 65 3c 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a  e</B> (in)<DD>..
0be0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
0bf0: 6f 62 6a 65 63 74 20 74 6f 20 63 72 65 61 74 65  object to create
0c00: 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 20 61 20 6e  , or NULL if a n
0c10: 65 77 20 75 6e 75 73 65 64 20 6e 61 6d 65 20 69  ew unused name i
0c20: 73 20 74 6f 20 62 65 0d 0a 61 75 74 6f 6d 61 74  s to be..automat
0c30: 69 63 61 6c 6c 79 20 73 65 6c 65 63 74 65 64 2e  ically selected.
0c40: 0d 0a 3c 50 3e 3c 44 54 3e 63 6f 6e 73 74 20 63  ..<P><DT>const c
0c50: 68 61 72 20 3c 42 3e 5c 2a 6e 73 4e 61 6d 65 3c  har <B>\*nsName<
0c60: 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a 54 68  /B> (in)<DD>..Th
0c70: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
0c80: 6d 65 73 70 61 63 65 20 74 6f 20 63 72 65 61 74  mespace to creat
0c90: 65 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74  e for the object
0ca0: 27 73 20 70 72 69 76 61 74 65 20 75 73 65 2c 20  's private use, 
0cb0: 6f 72 20 4e 55 4c 4c 20 69 66 20 61 0d 0a 6e 65  or NULL if a..ne
0cc0: 77 20 75 6e 75 73 65 64 20 6e 61 6d 65 20 69 73  w unused name is
0cd0: 20 74 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63   to be automatic
0ce0: 61 6c 6c 79 20 73 65 6c 65 63 74 65 64 2e 20 54  ally selected. T
0cf0: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 6d 75 73  he namespace mus
0d00: 74 20 6e 6f 74 0d 0a 61 6c 72 65 61 64 79 20 65  t not..already e
0d10: 78 69 73 74 2e 0d 0a 3c 50 3e 3c 44 54 3e 69 6e  xist...<P><DT>in
0d20: 74 20 3c 42 3e 6f 62 6a 63 3c 2f 42 3e 20 28 69  t <B>objc</B> (i
0d30: 6e 29 3c 44 44 3e 0d 0a 54 68 65 20 6e 75 6d 62  n)<DD>..The numb
0d40: 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69  er of elements i
0d50: 6e 20 74 68 65 20 3c 49 3e 6f 62 6a 76 3c 2f 49  n the <I>objv</I
0d60: 3e 20 61 72 72 61 79 2e 0d 0a 3c 50 3e 3c 44 54  > array...<P><DT
0d70: 3e 54 63 6c 5c 5f 4f 62 6a 20 5c 2a 63 6f 6e 73  >Tcl\_Obj \*cons
0d80: 74 20 3c 42 3e 5c 2a 6f 62 6a 76 3c 2f 42 3e 20  t <B>\*objv</B> 
0d90: 28 69 6e 29 3c 44 44 3e 0d 0a 54 68 65 20 61 72  (in)<DD>..The ar
0da0: 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 63  guments to the c
0db0: 6f 6d 6d 61 6e 64 20 74 6f 20 63 72 65 61 74 65  ommand to create
0dc0: 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 6f 66   the instance of
0dd0: 20 74 68 65 20 63 6c 61 73 73 2e 0d 0a 3c 50 3e   the class...<P>
0de0: 3c 44 54 3e 69 6e 74 20 3c 42 3e 73 6b 69 70 3c  <DT>int <B>skip<
0df0: 2f 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a 54 68  /B> (in)<DD>..Th
0e00: 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  e number of argu
0e10: 6d 65 6e 74 73 20 61 74 20 74 68 65 20 73 74 61  ments at the sta
0e20: 72 74 20 6f 66 20 74 68 65 20 61 72 67 75 6d 65  rt of the argume
0e30: 6e 74 20 61 72 72 61 79 2c 20 3c 49 3e 6f 62 6a  nt array, <I>obj
0e40: 76 3c 2f 49 3e 2c 20 74 68 61 74 0d 0a 61 72 65  v</I>, that..are
0e50: 20 6e 6f 74 20 61 72 67 75 6d 65 6e 74 73 20 74   not arguments t
0e60: 6f 20 61 6e 79 20 63 6f 6e 73 74 72 75 63 74 6f  o any constructo
0e70: 72 73 2e 0d 0a 3c 50 3e 3c 44 54 3e 54 63 6c 5c  rs...<P><DT>Tcl\
0e80: 5f 4f 62 6a 65 63 74 4d 65 74 61 64 61 74 61 54  _ObjectMetadataT
0e90: 79 70 65 20 3c 42 3e 5c 2a 6d 65 74 61 54 79 70  ype <B>\*metaTyp
0ea0: 65 50 74 72 3c 2f 42 3e 20 28 69 6e 29 3c 44 44  ePtr</B> (in)<DD
0eb0: 3e 0d 0a 54 68 65 20 74 79 70 65 20 6f 66 20 3c  >..The type of <
0ec0: 49 3e 6d 65 74 61 64 61 74 61 3c 2f 49 3e 20 62  I>metadata</I> b
0ed0: 65 69 6e 67 20 73 65 74 20 77 69 74 68 20 3c 42  eing set with <B
0ee0: 3e 54 63 6c 5c 5f 43 6c 61 73 73 53 65 74 4d 65  >Tcl\_ClassSetMe
0ef0: 74 61 64 61 74 61 3c 2f 42 3e 20 6f 72 0d 0a 72  tadata</B> or..r
0f00: 65 74 72 69 65 76 65 64 20 77 69 74 68 20 3c 42  etrieved with <B
0f10: 3e 54 63 6c 5c 5f 43 6c 61 73 73 47 65 74 4d 65  >Tcl\_ClassGetMe
0f20: 74 61 64 61 74 61 3c 2f 42 3e 2e 0d 0a 3c 50 3e  tadata</B>...<P>
0f30: 3c 44 54 3e 43 6c 69 65 6e 74 44 61 74 61 20 3c  <DT>ClientData <
0f40: 42 3e 6d 65 74 61 64 61 74 61 3c 2f 42 3e 20 28  B>metadata</B> (
0f50: 69 6e 29 3c 44 44 3e 0d 0a 41 6e 20 69 74 65 6d  in)<DD>..An item
0f60: 20 6f 66 20 6d 65 74 61 64 61 74 61 20 74 6f 20   of metadata to 
0f70: 61 74 74 61 63 68 20 74 6f 20 74 68 65 20 63 6c  attach to the cl
0f80: 61 73 73 2c 20 6f 72 20 4e 55 4c 4c 20 74 6f 20  ass, or NULL to 
0f90: 72 65 6d 6f 76 65 20 74 68 65 20 6d 65 74 61 64  remove the metad
0fa0: 61 74 61 0d 0a 61 73 73 6f 63 69 61 74 65 64 20  ata..associated 
0fb0: 77 69 74 68 20 61 20 70 61 72 74 69 63 75 6c 61  with a particula
0fc0: 72 20 3c 49 3e 6d 65 74 61 54 79 70 65 50 74 72  r <I>metaTypePtr
0fd0: 3c 2f 49 3e 2e 0d 0a 3c 50 3e 3c 44 54 3e 54 63  </I>...<P><DT>Tc
0fe0: 6c 5c 5f 4f 62 6a 65 63 74 4d 61 70 4d 65 74 68  l\_ObjectMapMeth
0ff0: 6f 64 4e 61 6d 65 50 72 6f 63 20 3c 42 3e 6d 65  odNameProc <B>me
1000: 74 68 6f 64 4e 61 6d 65 4d 61 70 70 65 72 3c 2f  thodNameMapper</
1010: 42 3e 20 28 69 6e 29 3c 44 44 3e 0d 0a 41 20 70  B> (in)<DD>..A p
1020: 6f 69 6e 74 65 72 20 74 6f 20 61 20 66 75 6e 63  ointer to a func
1030: 74 69 6f 6e 20 74 6f 20 63 61 6c 6c 20 74 6f 20  tion to call to 
1040: 61 64 6a 75 73 74 20 74 68 65 20 6d 61 70 70 69  adjust the mappi
1050: 6e 67 20 6f 66 20 6f 62 6a 65 63 74 73 20 61 6e  ng of objects an
1060: 64 20 6d 65 74 68 6f 64 0d 0a 6e 61 6d 65 73 20  d method..names 
1070: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  to implementatio
1080: 6e 73 2c 20 6f 72 20 4e 55 4c 4c 20 77 68 65 6e  ns, or NULL when
1090: 20 6e 6f 20 73 75 63 68 20 6d 61 70 70 69 6e 67   no such mapping
10a0: 20 69 73 20 72 65 71 75 69 72 65 64 2e 0d 0a 3c   is required...<
10b0: 50 3e 3c 2f 44 4c 3e 0d 0a 3c 48 33 3e 3c 41 20  P></DL>..<H3><A 
10c0: 4e 41 4d 45 3d 22 4d 35 22 3e 44 45 53 43 52 49  NAME="M5">DESCRI
10d0: 50 54 49 4f 4e 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a  PTION</A></H3>..
10e0: 4f 62 6a 65 63 74 73 20 61 72 65 20 74 79 70 65  Objects are type
10f0: 64 20 65 6e 74 69 74 69 65 73 20 74 68 61 74 20  d entities that 
1100: 68 61 76 65 20 61 20 73 65 74 20 6f 66 20 6f 70  have a set of op
1110: 65 72 61 74 69 6f 6e 73 20 28 26 71 75 6f 74 3b  erations (&quot;
1120: 6d 65 74 68 6f 64 73 26 71 75 6f 74 3b 29 0d 0a  methods&quot;)..
1130: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
1140: 74 68 65 6d 2e 20 43 6c 61 73 73 65 73 20 61 72  them. Classes ar
1150: 65 20 6f 62 6a 65 63 74 73 20 74 68 61 74 20 63  e objects that c
1160: 61 6e 20 6d 61 6e 75 66 61 63 74 75 72 65 20 6f  an manufacture o
1170: 62 6a 65 63 74 73 2e 20 45 61 63 68 0d 0a 63 6c  bjects. Each..cl
1180: 61 73 73 20 63 61 6e 20 62 65 20 76 69 65 77 65  ass can be viewe
1190: 64 20 61 73 20 61 6e 20 6f 62 6a 65 63 74 20 69  d as an object i
11a0: 74 73 65 6c 66 3b 20 74 68 65 20 6f 62 6a 65 63  tself; the objec
11b0: 74 20 76 69 65 77 20 63 61 6e 20 62 65 20 72 65  t view can be re
11c0: 74 72 69 65 76 65 64 0d 0a 75 73 69 6e 67 20 3c  trieved..using <
11d0: 42 3e 54 63 6c 5c 5f 47 65 74 43 6c 61 73 73 41  B>Tcl\_GetClassA
11e0: 73 4f 62 6a 65 63 74 3c 2f 42 3e 20 77 68 69 63  sObject</B> whic
11f0: 68 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 73  h always returns
1200: 20 74 68 65 20 6f 62 6a 65 63 74 20 77 68 65 6e   the object when
1210: 20 61 70 70 6c 69 65 64 0d 0a 74 6f 20 61 20 6e   applied..to a n
1220: 6f 6e 2d 64 65 73 74 72 6f 79 65 64 20 63 6c 61  on-destroyed cla
1230: 73 73 2c 20 61 6e 64 20 61 6e 20 6f 62 6a 65 63  ss, and an objec
1240: 74 20 63 61 6e 20 62 65 20 76 69 65 77 65 64 20  t can be viewed 
1250: 61 73 20 61 20 63 6c 61 73 73 20 77 69 74 68 20  as a class with 
1260: 74 68 65 20 61 69 64 0d 0a 6f 66 20 74 68 65 20  the aid..of the 
1270: 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a 65 63  <B>Tcl\_GetObjec
1280: 74 41 73 43 6c 61 73 73 3c 2f 42 3e 20 28 77 68  tAsClass</B> (wh
1290: 69 63 68 20 65 69 74 68 65 72 20 72 65 74 75 72  ich either retur
12a0: 6e 73 20 74 68 65 20 63 6c 61 73 73 2c 20 6f 72  ns the class, or
12b0: 20 4e 55 4c 4c 20 69 66 0d 0a 74 68 65 20 6f 62   NULL if..the ob
12c0: 6a 65 63 74 20 69 73 20 6e 6f 74 20 61 20 63 6c  ject is not a cl
12d0: 61 73 73 29 2e 20 41 6e 20 6f 62 6a 65 63 74 20  ass). An object 
12e0: 6d 61 79 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70  may be looked up
12f0: 20 75 73 69 6e 67 20 74 68 65 0d 0a 3c 42 3e 54   using the..<B>T
1300: 63 6c 5c 5f 47 65 74 4f 62 6a 65 63 74 46 72 6f  cl\_GetObjectFro
1310: 6d 4f 62 6a 3c 2f 42 3e 20 66 75 6e 63 74 69 6f  mObj</B> functio
1320: 6e 2c 20 77 68 69 63 68 20 65 69 74 68 65 72 20  n, which either 
1330: 72 65 74 75 72 6e 73 20 61 6e 20 6f 62 6a 65 63  returns an objec
1340: 74 20 6f 72 20 4e 55 4c 4c 0d 0a 28 77 69 74 68  t or NULL..(with
1350: 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67   an error messag
1360: 65 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70 72  e in the interpr
1370: 65 74 65 72 20 72 65 73 75 6c 74 29 20 69 66 20  eter result) if 
1380: 74 68 65 20 6f 62 6a 65 63 74 20 63 61 6e 6e 6f  the object canno
1390: 74 20 62 65 0d 0a 66 6f 75 6e 64 2e 20 54 68 65  t be..found. The
13a0: 20 63 6f 72 72 65 63 74 20 77 61 79 20 74 6f 20   correct way to 
13b0: 6c 6f 6f 6b 20 75 70 20 61 20 63 6c 61 73 73 20  look up a class 
13c0: 62 79 20 6e 61 6d 65 20 69 73 20 74 6f 20 6c 6f  by name is to lo
13d0: 6f 6b 20 75 70 20 74 68 65 20 6f 62 6a 65 63 74  ok up the object
13e0: 0d 0a 77 69 74 68 20 74 68 61 74 20 6e 61 6d 65  ..with that name
13f0: 2c 20 61 6e 64 20 74 68 65 6e 20 74 6f 20 75 73  , and then to us
1400: 65 20 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a  e <B>Tcl\_GetObj
1410: 65 63 74 41 73 43 6c 61 73 73 3c 2f 42 3e 2e 0d  ectAsClass</B>..
1420: 0a 3c 50 3e 0d 0a 45 76 65 72 79 20 6f 62 6a 65  .<P>..Every obje
1430: 63 74 20 68 61 73 20 69 74 73 20 6f 77 6e 20 63  ct has its own c
1440: 6f 6d 6d 61 6e 64 20 61 6e 64 20 6e 61 6d 65 73  ommand and names
1450: 70 61 63 65 20 61 73 73 6f 63 69 61 74 65 64 20  pace associated 
1460: 77 69 74 68 20 69 74 2e 20 54 68 65 20 63 6f 6d  with it. The com
1470: 6d 61 6e 64 0d 0a 6d 61 79 20 62 65 20 72 65 74  mand..may be ret
1480: 72 69 65 76 65 64 20 75 73 69 6e 67 20 74 68 65  rieved using the
1490: 20 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a 65   <B>Tcl\_GetObje
14a0: 63 74 43 6f 6d 6d 61 6e 64 3c 2f 42 3e 20 66 75  ctCommand</B> fu
14b0: 6e 63 74 69 6f 6e 2c 20 74 68 65 20 6e 61 6d 65  nction, the name
14c0: 20 6f 66 0d 0a 74 68 65 20 6f 62 6a 65 63 74 20   of..the object 
14d0: 28 61 6e 64 20 68 65 6e 63 65 20 74 68 65 20 6e  (and hence the n
14e0: 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61  ame of the comma
14f0: 6e 64 29 20 77 69 74 68 20 3c 42 3e 54 63 6c 5c  nd) with <B>Tcl\
1500: 5f 47 65 74 4f 62 6a 65 63 74 4e 61 6d 65 3c 2f  _GetObjectName</
1510: 42 3e 2c 0d 0a 61 6e 64 20 74 68 65 20 6e 61 6d  B>,..and the nam
1520: 65 73 70 61 63 65 20 6d 61 79 20 62 65 20 72 65  espace may be re
1530: 74 72 69 65 76 65 64 20 75 73 69 6e 67 20 74 68  trieved using th
1540: 65 20 3c 42 3e 54 63 6c 5c 5f 47 65 74 4f 62 6a  e <B>Tcl\_GetObj
1550: 65 63 74 4e 61 6d 65 73 70 61 63 65 3c 2f 42 3e  ectNamespace</B>
1560: 0d 0a 66 75 6e 63 74 69 6f 6e 2e 20 4e 6f 74 65  ..function. Note
1570: 20 74 68 61 74 20 74 68 65 20 54 63 6c 5c 5f 4f   that the Tcl\_O
1580: 62 6a 20 72 65 66 65 72 65 6e 63 65 20 72 65 74  bj reference ret
1590: 75 72 6e 65 64 20 62 79 20 3c 42 3e 54 63 6c 5c  urned by <B>Tcl\
15a0: 5f 47 65 74 4f 62 6a 65 63 74 4e 61 6d 65 3c 2f  _GetObjectName</
15b0: 42 3e 0d 0a 69 73 20 61 20 73 68 61 72 65 64 20  B>..is a shared 
15c0: 72 65 66 65 72 65 6e 63 65 2e 0d 0a 3c 50 3e 0d  reference...<P>.
15d0: 0a 49 6e 73 74 61 6e 63 65 73 20 6f 66 20 63 6c  .Instances of cl
15e0: 61 73 73 65 73 20 61 72 65 20 63 72 65 61 74 65  asses are create
15f0: 64 20 75 73 69 6e 67 20 3c 42 3e 54 63 6c 5c 5f  d using <B>Tcl\_
1600: 4e 65 77 4f 62 6a 65 63 74 49 6e 73 74 61 6e 63  NewObjectInstanc
1610: 65 3c 2f 42 3e 2c 20 77 68 69 63 68 0d 0a 63 72  e</B>, which..cr
1620: 65 61 74 65 73 20 61 6e 20 6f 62 6a 65 63 74 20  eates an object 
1630: 66 72 6f 6d 20 61 6e 79 20 63 6c 61 73 73 20 28  from any class (
1640: 61 6e 64 20 77 68 69 63 68 20 69 73 20 69 6e 74  and which is int
1650: 65 72 6e 61 6c 6c 79 20 63 61 6c 6c 65 64 20 62  ernally called b
1660: 79 20 62 6f 74 68 0d 0a 74 68 65 20 3c 42 3e 63  y both..the <B>c
1670: 72 65 61 74 65 3c 2f 42 3e 20 61 6e 64 20 3c 42  reate</B> and <B
1680: 3e 6e 65 77 3c 2f 42 3e 20 6d 65 74 68 6f 64 73  >new</B> methods
1690: 20 6f 66 20 74 68 65 20 3c 42 3e 3c 41 20 48 52   of the <B><A HR
16a0: 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6f  EF="?name=Doc:+o
16b0: 6f 3a 3a 63 6c 61 73 73 22 3e 6f 6f 3a 3a 63 6c  o::class">oo::cl
16c0: 61 73 73 3c 2f 41 3e 3c 2f 42 3e 20 63 6c 61 73  ass</A></B> clas
16d0: 73 29 2e 20 49 74 20 74 61 6b 65 73 0d 0a 70 61  s). It takes..pa
16e0: 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 6f 70  rameters that op
16f0: 74 69 6f 6e 61 6c 6c 79 20 67 69 76 65 20 74 68  tionally give th
1700: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62  e name of the ob
1710: 6a 65 63 74 20 61 6e 64 20 6e 61 6d 65 73 70 61  ject and namespa
1720: 63 65 20 74 6f 0d 0a 63 72 65 61 74 65 2c 20 61  ce to..create, a
1730: 6e 64 20 77 68 69 63 68 20 64 65 73 63 72 69 62  nd which describ
1740: 65 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  e the arguments 
1750: 74 6f 20 70 61 73 73 20 74 6f 20 74 68 65 20 63  to pass to the c
1760: 6c 61 73 73 27 73 20 63 6f 6e 73 74 72 75 63 74  lass's construct
1770: 6f 72 0d 0a 28 69 66 20 61 6e 79 29 2e 20 54 68  or..(if any). Th
1780: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20  e result of the 
1790: 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
17a0: 20 65 69 74 68 65 72 20 61 20 72 65 66 65 72 65   either a refere
17b0: 6e 63 65 20 74 6f 20 74 68 65 20 6e 65 77 6c 79  nce to the newly
17c0: 0d 0a 63 72 65 61 74 65 64 20 6f 62 6a 65 63 74  ..created object
17d0: 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 65  , or NULL if the
17e0: 20 63 72 65 61 74 69 6f 6e 20 66 61 69 6c 65 64   creation failed
17f0: 20 28 77 68 65 6e 20 61 6e 20 65 72 72 6f 72 20   (when an error 
1800: 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62 65 0d  message will be.
1810: 0a 6c 65 66 74 20 69 6e 20 74 68 65 20 69 6e 74  .left in the int
1820: 65 72 70 72 65 74 65 72 20 72 65 73 75 6c 74 29  erpreter result)
1830: 2e 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 6f  . In addition, o
1840: 62 6a 65 63 74 73 20 6d 61 79 20 62 65 20 63 6f  bjects may be co
1850: 70 69 65 64 20 62 79 20 75 73 69 6e 67 0d 0a 3c  pied by using..<
1860: 42 3e 54 63 6c 5c 5f 43 6f 70 79 4f 62 6a 65 63  B>Tcl\_CopyObjec
1870: 74 49 6e 73 74 61 6e 63 65 3c 2f 42 3e 20 77 68  tInstance</B> wh
1880: 69 63 68 20 63 72 65 61 74 65 73 20 61 20 63 6f  ich creates a co
1890: 70 79 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20  py of an object 
18a0: 77 69 74 68 6f 75 74 20 72 75 6e 6e 69 6e 67 0d  without running.
18b0: 0a 61 6e 79 20 63 6f 6e 73 74 72 75 63 74 6f 72  .any constructor
18c0: 73 2e 0d 0a 3c 48 33 3e 3c 41 20 4e 41 4d 45 3d  s...<H3><A NAME=
18d0: 22 4d 36 22 3e 4f 42 4a 45 43 54 20 41 4e 44 20  "M6">OBJECT AND 
18e0: 43 4c 41 53 53 20 4d 45 54 41 44 41 54 41 3c 2f  CLASS METADATA</
18f0: 41 3e 3c 2f 48 33 3e 0d 0a 45 76 65 72 79 20 6f  A></H3>..Every o
1900: 62 6a 65 63 74 20 61 6e 64 20 65 76 65 72 79 20  bject and every 
1910: 63 6c 61 73 73 20 6d 61 79 20 68 61 76 65 20 61  class may have a
1920: 72 62 69 74 72 61 72 79 20 61 6d 6f 75 6e 74 73  rbitrary amounts
1930: 20 6f 66 20 6d 65 74 61 64 61 74 61 20 61 74 74   of metadata att
1940: 61 63 68 65 64 0d 0a 74 6f 20 69 74 2c 20 77 68  ached..to it, wh
1950: 69 63 68 20 74 68 65 20 6f 62 6a 65 63 74 20 6f  ich the object o
1960: 72 20 63 6c 61 73 73 20 61 74 74 61 63 68 65 73  r class attaches
1970: 20 6e 6f 20 6d 65 61 6e 69 6e 67 20 74 6f 20 62   no meaning to b
1980: 65 79 6f 6e 64 20 77 68 61 74 20 69 73 0d 0a 64  eyond what is..d
1990: 65 73 63 72 69 62 65 64 20 69 6e 20 61 20 54 63  escribed in a Tc
19a0: 6c 5c 5f 4f 62 6a 65 63 74 4d 65 74 61 64 61 74  l\_ObjectMetadat
19b0: 61 54 79 70 65 20 73 74 72 75 63 74 75 72 65 20  aType structure 
19c0: 69 6e 73 74 61 6e 63 65 2e 20 4d 65 74 61 64 61  instance. Metada
19d0: 74 61 20 74 6f 20 62 65 0d 0a 61 74 74 61 63 68  ta to be..attach
19e0: 65 64 20 69 73 20 64 65 73 63 72 69 62 65 64 20  ed is described 
19f0: 62 79 20 74 68 65 20 74 79 70 65 20 6f 66 20 74  by the type of t
1a00: 68 65 20 6d 65 74 61 64 61 74 61 20 28 67 69 76  he metadata (giv
1a10: 65 6e 20 69 6e 20 74 68 65 0d 0a 3c 49 3e 6d 65  en in the..<I>me
1a20: 74 61 54 79 70 65 50 74 72 3c 2f 49 3e 20 61 72  taTypePtr</I> ar
1a30: 67 75 6d 65 6e 74 29 20 61 6e 64 20 61 6e 20 61  gument) and an a
1a40: 72 62 69 74 72 61 72 79 20 70 6f 69 6e 74 65 72  rbitrary pointer
1a50: 20 28 74 68 65 20 3c 49 3e 6d 65 74 61 64 61 74   (the <I>metadat
1a60: 61 3c 2f 49 3e 0d 0a 61 72 67 75 6d 65 6e 74 29  a</I>..argument)
1a70: 20 74 68 61 74 20 61 72 65 20 67 69 76 65 6e 20   that are given 
1a80: 74 6f 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63  to <B>Tcl\_Objec
1a90: 74 53 65 74 4d 65 74 61 64 61 74 61 3c 2f 42 3e  tSetMetadata</B>
1aa0: 20 61 6e 64 0d 0a 3c 42 3e 54 63 6c 5c 5f 43 6c   and..<B>Tcl\_Cl
1ab0: 61 73 73 53 65 74 4d 65 74 61 64 61 74 61 3c 2f  assSetMetadata</
1ac0: 42 3e 2c 20 61 6e 64 20 61 20 70 61 72 74 69 63  B>, and a partic
1ad0: 75 6c 61 72 20 70 69 65 63 65 20 6f 66 20 6d 65  ular piece of me
1ae0: 74 61 64 61 74 61 20 63 61 6e 20 62 65 0d 0a 72  tadata can be..r
1af0: 65 74 72 69 65 76 65 64 20 67 69 76 65 6e 20 69  etrieved given i
1b00: 74 73 20 74 79 70 65 20 75 73 69 6e 67 20 3c 42  ts type using <B
1b10: 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 47 65 74 4d  >Tcl\_ObjectGetM
1b20: 65 74 61 64 61 74 61 3c 2f 42 3e 20 61 6e 64 0d  etadata</B> and.
1b30: 0a 3c 42 3e 54 63 6c 5c 5f 43 6c 61 73 73 47 65  .<B>Tcl\_ClassGe
1b40: 74 4d 65 74 61 64 61 74 61 3c 2f 42 3e 2e 20 49  tMetadata</B>. I
1b50: 66 20 74 68 65 20 3c 49 3e 6d 65 74 61 64 61 74  f the <I>metadat
1b60: 61 3c 2f 49 3e 20 70 61 72 61 6d 65 74 65 72 20  a</I> parameter 
1b70: 74 6f 20 65 69 74 68 65 72 0d 0a 3c 42 3e 54 63  to either..<B>Tc
1b80: 6c 5c 5f 4f 62 6a 65 63 74 53 65 74 4d 65 74 61  l\_ObjectSetMeta
1b90: 64 61 74 61 3c 2f 42 3e 20 6f 72 20 3c 42 3e 54  data</B> or <B>T
1ba0: 63 6c 5c 5f 43 6c 61 73 73 53 65 74 4d 65 74 61  cl\_ClassSetMeta
1bb0: 64 61 74 61 3c 2f 42 3e 20 69 73 20 4e 55 4c 4c  data</B> is NULL
1bc0: 2c 20 74 68 65 0d 0a 6d 65 74 61 64 61 74 61 20  , the..metadata 
1bd0: 69 73 20 72 65 6d 6f 76 65 64 20 69 66 20 69 74  is removed if it
1be0: 20 77 61 73 20 61 74 74 61 63 68 65 64 2c 20 61   was attached, a
1bf0: 6e 64 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  nd the results o
1c00: 66 0d 0a 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63  f..<B>Tcl\_Objec
1c10: 74 47 65 74 4d 65 74 61 64 61 74 61 3c 2f 42 3e  tGetMetadata</B>
1c20: 20 61 6e 64 20 3c 42 3e 54 63 6c 5c 5f 43 6c 61   and <B>Tcl\_Cla
1c30: 73 73 47 65 74 4d 65 74 61 64 61 74 61 3c 2f 42  ssGetMetadata</B
1c40: 3e 20 61 72 65 20 4e 55 4c 4c 20 69 66 20 74 68  > are NULL if th
1c50: 65 0d 0a 67 69 76 65 6e 20 74 79 70 65 20 6f 66  e..given type of
1c60: 20 6d 65 74 61 64 61 74 61 20 77 61 73 20 6e 6f   metadata was no
1c70: 74 20 61 74 74 61 63 68 65 64 2e 20 49 74 20 69  t attached. It i
1c80: 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20 74  s not an error t
1c90: 6f 20 72 65 71 75 65 73 74 20 6f 72 0d 0a 72 65  o request or..re
1ca0: 6d 6f 76 65 20 61 20 70 69 65 63 65 20 6f 66 20  move a piece of 
1cb0: 6d 65 74 61 64 61 74 61 20 74 68 61 74 20 77 61  metadata that wa
1cc0: 73 20 6e 6f 74 20 61 74 74 61 63 68 65 64 2e 0d  s not attached..
1cd0: 0a 3c 48 34 3e 3c 41 20 4e 41 4d 45 3d 22 4d 37  .<H4><A NAME="M7
1ce0: 22 3e 54 43 4c 5c 5f 4f 42 4a 45 43 54 4d 45 54  ">TCL\_OBJECTMET
1cf0: 41 44 41 54 41 54 59 50 45 20 53 54 52 55 43 54  ADATATYPE STRUCT
1d00: 55 52 45 3c 2f 41 3e 3c 2f 48 34 3e 0d 0a 54 68  URE</A></H4>..Th
1d10: 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68  e contents of th
1d20: 65 20 54 63 6c 5c 5f 4f 62 6a 65 63 74 4d 65 74  e Tcl\_ObjectMet
1d30: 61 64 61 74 61 54 79 70 65 20 73 74 72 75 63 74  adataType struct
1d40: 75 72 65 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f  ure are as follo
1d50: 77 73 3a 0d 0a 3c 50 3e 0d 0a 3c 50 52 45 3e 74  ws:..<P>..<PRE>t
1d60: 79 70 65 64 65 66 20 63 6f 6e 73 74 20 73 74 72  ypedef const str
1d70: 75 63 74 20 7b 0d 0a 20 20 20 20 69 6e 74 20 3c  uct {..    int <
1d80: 49 3e 76 65 72 73 69 6f 6e 3c 2f 49 3e 3b 0d 0a  I>version</I>;..
1d90: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 5c      const char \
1da0: 2a 3c 49 3e 6e 61 6d 65 3c 2f 49 3e 3b 0d 0a 20  *<I>name</I>;.. 
1db0: 20 20 20 54 63 6c 5c 5f 4f 62 6a 65 63 74 4d 65     Tcl\_ObjectMe
1dc0: 74 61 64 61 74 61 44 65 6c 65 74 65 50 72 6f 63  tadataDeleteProc
1dd0: 20 5c 2a 3c 49 3e 64 65 6c 65 74 65 50 72 6f 63   \*<I>deleteProc
1de0: 3c 2f 49 3e 3b 0d 0a 20 20 20 20 54 63 6c 5c 5f  </I>;..    Tcl\_
1df0: 43 6c 6f 6e 65 50 72 6f 63 20 5c 2a 3c 49 3e 63  CloneProc \*<I>c
1e00: 6c 6f 6e 65 50 72 6f 63 3c 2f 49 3e 3b 0d 0a 7d  loneProc</I>;..}
1e10: 20 3c 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 4d   <B>Tcl\_ObjectM
1e20: 65 74 61 64 61 74 61 54 79 70 65 3c 2f 42 3e 3b  etadataType</B>;
1e30: 3c 2f 50 52 45 3e 0d 0a 3c 50 3e 0d 0a 54 68 65  </PRE>..<P>..The
1e40: 20 3c 49 3e 76 65 72 73 69 6f 6e 3c 2f 49 3e 20   <I>version</I> 
1e50: 66 69 65 6c 64 20 61 6c 6c 6f 77 73 20 66 6f 72  field allows for
1e60: 20 66 75 74 75 72 65 20 65 78 70 61 6e 73 69 6f   future expansio
1e70: 6e 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75  n of the structu
1e80: 72 65 2c 20 61 6e 64 0d 0a 73 68 6f 75 6c 64 20  re, and..should 
1e90: 61 6c 77 61 79 73 20 62 65 20 64 65 63 6c 61 72  always be declar
1ea0: 65 64 20 65 71 75 61 6c 20 74 6f 20 54 43 4c 5c  ed equal to TCL\
1eb0: 5f 4f 4f 5c 5f 4d 45 54 41 44 41 54 41 5c 5f 56  _OO\_METADATA\_V
1ec0: 45 52 53 49 4f 4e 5c 5f 43 55 52 52 45 4e 54 2e  ERSION\_CURRENT.
1ed0: 20 54 68 65 0d 0a 3c 49 3e 6e 61 6d 65 3c 2f 49   The..<I>name</I
1ee0: 3e 20 66 69 65 6c 64 20 70 72 6f 76 69 64 65 73  > field provides
1ef0: 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c   a human-readabl
1f00: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 74  e name for the t
1f10: 79 70 65 2c 20 61 6e 64 20 69 73 20 72 65 73 65  ype, and is rese
1f20: 72 76 65 64 0d 0a 66 6f 72 20 64 65 62 75 67 67  rved..for debugg
1f30: 69 6e 67 2e 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c  ing...<P>..The <
1f40: 49 3e 64 65 6c 65 74 65 50 72 6f 63 3c 2f 49 3e  I>deleteProc</I>
1f50: 20 66 69 65 6c 64 20 67 69 76 65 73 20 61 20 66   field gives a f
1f60: 75 6e 63 74 69 6f 6e 20 6f 66 20 74 79 70 65 0d  unction of type.
1f70: 0a 54 63 6c 5c 5f 4f 62 6a 65 63 74 4d 65 74 61  .Tcl\_ObjectMeta
1f80: 64 61 74 61 44 65 6c 65 74 65 50 72 6f 63 20 74  dataDeleteProc t
1f90: 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 64  hat is used to d
1fa0: 65 6c 65 74 65 20 61 20 70 61 72 74 69 63 75 6c  elete a particul
1fb0: 61 72 20 70 69 65 63 65 20 6f 66 0d 0a 6d 65 74  ar piece of..met
1fc0: 61 64 61 74 61 2c 20 61 6e 64 20 69 73 20 63 61  adata, and is ca
1fd0: 6c 6c 65 64 20 77 68 65 6e 20 74 68 65 20 61 74  lled when the at
1fe0: 74 61 63 68 65 64 20 6d 65 74 61 64 61 74 61 20  tached metadata 
1ff0: 69 73 20 72 65 70 6c 61 63 65 64 20 6f 72 20 72  is replaced or r
2000: 65 6d 6f 76 65 64 3b 20 74 68 65 0d 0a 66 69 65  emoved; the..fie
2010: 6c 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 4e  ld must not be N
2020: 55 4c 4c 2e 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c  ULL...<P>..The <
2030: 49 3e 63 6c 6f 6e 65 50 72 6f 63 3c 2f 49 3e 20  I>cloneProc</I> 
2040: 66 69 65 6c 64 20 67 69 76 65 73 20 61 20 66 75  field gives a fu
2050: 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 75  nction that is u
2060: 73 65 64 20 74 6f 20 63 6f 70 79 20 61 20 70 69  sed to copy a pi
2070: 65 63 65 20 6f 66 0d 0a 6d 65 74 61 64 61 74 61  ece of..metadata
2080: 20 28 75 73 65 64 20 77 68 65 6e 20 61 20 63 6f   (used when a co
2090: 70 79 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20  py of an object 
20a0: 69 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  is created using
20b0: 0d 0a 3c 42 3e 54 63 6c 5c 5f 43 6f 70 79 4f 62  ..<B>Tcl\_CopyOb
20c0: 6a 65 63 74 49 6e 73 74 61 6e 63 65 3c 2f 42 3e  jectInstance</B>
20d0: 29 3b 20 69 66 20 4e 55 4c 4c 2c 20 74 68 65 20  ); if NULL, the 
20e0: 6d 65 74 61 64 61 74 61 20 77 69 6c 6c 20 62 65  metadata will be
20f0: 20 6a 75 73 74 20 64 69 72 65 63 74 6c 79 0d 0a   just directly..
2100: 63 6f 70 69 65 64 2e 0d 0a 3c 48 34 3e 3c 41 20  copied...<H4><A 
2110: 4e 41 4d 45 3d 22 4d 38 22 3e 54 43 4c 5c 5f 4f  NAME="M8">TCL\_O
2120: 42 4a 45 43 54 4d 45 54 41 44 41 54 41 44 45 4c  BJECTMETADATADEL
2130: 45 54 45 50 52 4f 43 20 46 55 4e 43 54 49 4f 4e  ETEPROC FUNCTION
2140: 20 53 49 47 4e 41 54 55 52 45 3c 2f 41 3e 3c 2f   SIGNATURE</A></
2150: 48 34 3e 0d 0a 46 75 6e 63 74 69 6f 6e 73 20 6d  H4>..Functions m
2160: 61 74 63 68 69 6e 67 20 74 68 69 73 20 73 69 67  atching this sig
2170: 6e 61 74 75 72 65 20 61 72 65 20 75 73 65 64 20  nature are used 
2180: 74 6f 20 64 65 6c 65 74 65 20 6d 65 74 61 64 61  to delete metada
2190: 74 61 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ta associated wi
21a0: 74 68 0d 0a 61 20 63 6c 61 73 73 20 6f 72 20 6f  th..a class or o
21b0: 62 6a 65 63 74 2e 0d 0a 3c 50 3e 0d 0a 3c 50 52  bject...<P>..<PR
21c0: 45 3e 74 79 70 65 64 65 66 20 76 6f 69 64 20 3c  E>typedef void <
21d0: 42 3e 54 63 6c 5c 5f 4f 62 6a 65 63 74 4d 65 74  B>Tcl\_ObjectMet
21e0: 61 64 61 74 61 44 65 6c 65 74 65 50 72 6f 63 3c  adataDeleteProc<
21f0: 2f 42 3e 28 0d 0a 20 20 20 20 20 20 20 20 43 6c  /B>(..        Cl
2200: 69 65 6e 74 44 61 74 61 20 3c 49 3e 6d 65 74 61  ientData <I>meta
2210: 64 61 74 61 3c 2f 49 3e 29 3b 3c 2f 50 52 45 3e  data</I>);</PRE>
2220: 0d 0a 3c 50 3e 0d 0a 54 68 65 20 3c 49 3e 6d 65  ..<P>..The <I>me
2230: 74 61 64 61 74 61 3c 2f 49 3e 20 61 72 67 75 6d  tadata</I> argum
2240: 65 6e 74 20 67 69 76 65 73 20 74 68 65 20 61 64  ent gives the ad
2250: 64 72 65 73 73 20 6f 66 20 74 68 65 20 6d 65 74  dress of the met
2260: 61 64 61 74 61 20 74 6f 20 62 65 0d 0a 64 65 6c  adata to be..del
2270: 65 74 65 64 2e 0d 0a 3c 48 34 3e 3c 41 20 4e 41  eted...<H4><A NA
2280: 4d 45 3d 22 4d 39 22 3e 54 43 4c 5c 5f 43 4c 4f  ME="M9">TCL\_CLO
2290: 4e 45 50 52 4f 43 20 46 55 4e 43 54 49 4f 4e 20  NEPROC FUNCTION 
22a0: 53 49 47 4e 41 54 55 52 45 3c 2f 41 3e 3c 2f 48  SIGNATURE</A></H
22b0: 34 3e 0d 0a 46 75 6e 63 74 69 6f 6e 73 20 6d 61  4>..Functions ma
22c0: 74 63 68 69 6e 67 20 74 68 69 73 20 73 69 67 6e  tching this sign
22d0: 61 74 75 72 65 20 61 72 65 20 75 73 65 64 20 74  ature are used t
22e0: 6f 20 63 72 65 61 74 65 20 63 6f 70 69 65 73 20  o create copies 
22f0: 6f 66 20 6d 65 74 61 64 61 74 61 0d 0a 61 73 73  of metadata..ass
2300: 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 63  ociated with a c
2310: 6c 61 73 73 20 6f 72 20 6f 62 6a 65 63 74 2e 0d  lass or object..
2320: 0a 3c 50 3e 0d 0a 3c 50 52 45 3e 74 79 70 65 64  .<P>..<PRE>typed
2330: 65 66 20 69 6e 74 20 3c 42 3e 54 63 6c 5c 5f 43  ef int <B>Tcl\_C
2340: 6c 6f 6e 65 50 72 6f 63 3c 2f 42 3e 28 0d 0a 20  loneProc</B>(.. 
2350: 20 20 20 20 20 20 20 54 63 6c 5c 5f 49 6e 74 65         Tcl\_Inte
2360: 72 70 20 5c 2a 3c 49 3e 69 6e 74 65 72 70 3c 2f  rp \*<I>interp</
2370: 49 3e 2c 0d 0a 20 20 20 20 20 20 20 20 43 6c 69  I>,..        Cli
2380: 65 6e 74 44 61 74 61 20 3c 49 3e 73 72 63 4d 65  entData <I>srcMe
2390: 74 61 64 61 74 61 3c 2f 49 3e 2c 0d 0a 20 20 20  tadata</I>,..   
23a0: 20 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20       ClientData 
23b0: 5c 2a 3c 49 3e 64 73 74 4d 65 74 61 64 61 74 61  \*<I>dstMetadata
23c0: 50 74 72 3c 2f 49 3e 29 3b 3c 2f 50 52 45 3e 0d  Ptr</I>);</PRE>.
23d0: 0a 3c 50 3e 0d 0a 54 68 65 20 3c 49 3e 69 6e 74  .<P>..The <I>int
23e0: 65 72 70 3c 2f 49 3e 20 61 72 67 75 6d 65 6e 74  erp</I> argument
23f0: 20 67 69 76 65 73 20 61 20 70 6c 61 63 65 20 74   gives a place t
2400: 6f 20 77 72 69 74 65 20 61 6e 20 65 72 72 6f 72  o write an error
2410: 20 6d 65 73 73 61 67 65 20 77 68 65 6e 20 74 68   message when th
2420: 65 0d 0a 61 74 74 65 6d 70 74 20 74 6f 20 63 6c  e..attempt to cl
2430: 6f 6e 65 20 74 68 65 20 6f 62 6a 65 63 74 20 69  one the object i
2440: 73 20 74 6f 20 66 61 69 6c 2c 20 69 6e 20 77 68  s to fail, in wh
2450: 69 63 68 20 63 61 73 65 20 74 68 65 20 63 6c 6f  ich case the clo
2460: 6e 65 20 70 72 6f 63 65 64 75 72 65 20 6d 75 73  ne procedure mus
2470: 74 0d 0a 61 6c 73 6f 20 72 65 74 75 72 6e 20 54  t..also return T
2480: 43 4c 5c 5f 45 52 52 4f 52 3b 20 69 74 20 73 68  CL\_ERROR; it sh
2490: 6f 75 6c 64 20 72 65 74 75 72 6e 20 54 43 4c 5c  ould return TCL\
24a0: 5f 4f 4b 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  _OK otherwise...
24b0: 54 68 65 20 3c 49 3e 73 72 63 4d 65 74 61 64 61  The <I>srcMetada
24c0: 74 61 3c 2f 49 3e 20 61 72 67 75 6d 65 6e 74 20  ta</I> argument 
24d0: 67 69 76 65 73 20 74 68 65 20 61 64 64 72 65 73  gives the addres
24e0: 73 20 6f 66 20 74 68 65 20 6d 65 74 61 64 61 74  s of the metadat
24f0: 61 20 74 6f 20 62 65 20 63 6c 6f 6e 65 64 2c 0d  a to be cloned,.
2500: 0a 61 6e 64 20 74 68 65 20 63 6c 6f 6e 65 64 20  .and the cloned 
2510: 6d 65 74 61 64 61 74 61 20 73 68 6f 75 6c 64 20  metadata should 
2520: 62 65 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20  be written into 
2530: 74 68 65 20 76 61 72 69 61 62 6c 65 20 70 6f 69  the variable poi
2540: 6e 74 65 64 20 74 6f 20 62 79 0d 0a 3c 49 3e 64  nted to by..<I>d
2550: 73 74 4d 65 74 61 64 61 74 61 50 74 72 3c 2f 49  stMetadataPtr</I
2560: 3e 3b 20 61 20 4e 55 4c 4c 20 73 68 6f 75 6c 64  >; a NULL should
2570: 20 62 65 20 77 72 69 74 74 65 6e 20 69 66 20 74   be written if t
2580: 68 65 20 6d 65 74 61 64 61 74 61 20 69 73 20 74  he metadata is t
2590: 6f 20 6e 6f 74 20 62 65 0d 0a 63 6c 6f 6e 65 64  o not be..cloned
25a0: 20 62 75 74 20 74 68 65 20 6f 76 65 72 61 6c 6c   but the overall
25b0: 20 6f 62 6a 65 63 74 20 63 6f 70 79 20 6f 70 65   object copy ope
25c0: 72 61 74 69 6f 6e 20 69 73 20 73 74 69 6c 6c 20  ration is still 
25d0: 74 6f 20 73 75 63 63 65 65 64 2e 0d 0a 3c 48 33  to succeed...<H3
25e0: 3e 3c 41 20 4e 41 4d 45 3d 22 4d 31 30 22 3e 4f  ><A NAME="M10">O
25f0: 42 4a 45 43 54 20 4d 45 54 48 4f 44 20 4e 41 4d  BJECT METHOD NAM
2600: 45 20 4d 41 50 50 49 4e 47 3c 2f 41 3e 3c 2f 48  E MAPPING</A></H
2610: 33 3e 0d 0a 49 74 20 69 73 20 70 6f 73 73 69 62  3>..It is possib
2620: 6c 65 20 74 6f 20 63 6f 6e 74 72 6f 6c 2c 20 6f  le to control, o
2630: 6e 20 61 20 70 65 72 2d 6f 62 6a 65 63 74 20 62  n a per-object b
2640: 61 73 69 73 2c 20 77 68 61 74 20 6d 65 74 68 6f  asis, what metho
2650: 64 73 20 61 72 65 20 69 6e 76 6f 6b 65 64 0d 0a  ds are invoked..
2660: 77 68 65 6e 20 61 20 70 61 72 74 69 63 75 6c 61  when a particula
2670: 72 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f  r method is invo
2680: 6b 65 64 2e 20 4e 6f 72 6d 61 6c 6c 79 20 74 68  ked. Normally th
2690: 69 73 20 69 73 20 64 6f 6e 65 20 62 79 20 6c 6f  is is done by lo
26a0: 6f 6b 69 6e 67 20 75 70 20 74 68 65 0d 0a 6d 65  oking up the..me
26b0: 74 68 6f 64 20 6e 61 6d 65 20 69 6e 20 74 68 65  thod name in the
26c0: 20 6f 62 6a 65 63 74 20 61 6e 64 20 74 68 65 6e   object and then
26d0: 20 69 6e 20 74 68 65 20 63 6c 61 73 73 20 68 69   in the class hi
26e0: 65 72 61 72 63 68 79 2c 20 62 75 74 20 66 69 6e  erarchy, but fin
26f0: 65 20 63 6f 6e 74 72 6f 6c 20 6f 66 0d 0a 65 78  e control of..ex
2700: 61 63 74 6c 79 20 77 68 61 74 20 74 68 65 20 76  actly what the v
2710: 61 6c 75 65 20 75 73 65 64 20 74 6f 20 70 65 72  alue used to per
2720: 66 6f 72 6d 20 74 68 65 20 6c 6f 6f 6b 20 75 70  form the look up
2730: 20 69 73 20 61 66 66 6f 72 64 65 64 20 74 68 72   is afforded thr
2740: 6f 75 67 68 20 74 68 65 0d 0a 61 62 69 6c 69 74  ough the..abilit
2750: 79 20 74 6f 20 73 65 74 20 61 20 6d 65 74 68 6f  y to set a metho
2760: 64 20 6e 61 6d 65 20 6d 61 70 70 65 72 20 63 61  d name mapper ca
2770: 6c 6c 62 61 63 6b 20 76 69 61 0d 0a 3c 42 3e 54  llback via..<B>T
2780: 63 6c 5c 5f 4f 62 6a 65 63 74 53 65 74 4d 65 74  cl\_ObjectSetMet
2790: 68 6f 64 4e 61 6d 65 4d 61 70 70 65 72 3c 2f 42  hodNameMapper</B
27a0: 3e 20 28 61 6e 64 20 69 74 73 20 69 6e 74 72 6f  > (and its intro
27b0: 73 70 65 63 74 69 6f 6e 20 63 6f 75 6e 74 65 72  spection counter
27c0: 70 61 72 74 2c 0d 0a 3c 42 3e 54 63 6c 5c 5f 4f  part,..<B>Tcl\_O
27d0: 62 6a 65 63 74 47 65 74 4d 65 74 68 6f 64 4e 61  bjectGetMethodNa
27e0: 6d 65 4d 61 70 70 65 72 3c 2f 42 3e 2c 20 77 68  meMapper</B>, wh
27f0: 69 63 68 20 72 65 74 75 72 6e 73 20 74 68 65 20  ich returns the 
2800: 63 75 72 72 65 6e 74 20 6d 61 70 70 65 72 29 2e  current mapper).
2810: 20 54 68 65 0d 0a 63 75 72 72 65 6e 74 20 6d 61   The..current ma
2820: 70 70 65 72 20 28 69 66 20 61 6e 79 29 20 69 73  pper (if any) is
2830: 20 69 6e 76 6f 6b 65 64 20 69 6d 6d 65 64 69 61   invoked immedia
2840: 74 65 6c 79 20 62 65 66 6f 72 65 20 6c 6f 6f 6b  tely before look
2850: 69 6e 67 20 75 70 20 77 68 61 74 20 63 68 61 69  ing up what chai
2860: 6e 20 6f 66 0d 0a 6d 65 74 68 6f 64 20 69 6d 70  n of..method imp
2870: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 69 73 20  lementations is 
2880: 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 3c 48 34  to be used...<H4
2890: 3e 3c 41 20 4e 41 4d 45 3d 22 4d 31 31 22 3e 54  ><A NAME="M11">T
28a0: 43 4c 5c 5f 4f 42 4a 45 43 54 4d 41 50 4d 45 54  CL\_OBJECTMAPMET
28b0: 48 4f 44 4e 41 4d 45 50 52 4f 43 20 46 55 4e 43  HODNAMEPROC FUNC
28c0: 54 49 4f 4e 20 53 49 47 4e 41 54 55 52 45 3c 2f  TION SIGNATURE</
28d0: 41 3e 3c 2f 48 34 3e 0d 0a 54 68 65 20 3c 49 3e  A></H4>..The <I>
28e0: 54 63 6c 5c 5f 4f 62 6a 65 63 74 4d 61 70 4d 65  Tcl\_ObjectMapMe
28f0: 74 68 6f 64 4e 61 6d 65 50 72 6f 63 3c 2f 49 3e  thodNameProc</I>
2900: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 64 65 66   callback is def
2910: 69 6e 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a  ined as follows:
2920: 0d 0a 3c 50 3e 0d 0a 3c 50 52 45 3e 74 79 70 65  ..<P>..<PRE>type
2930: 64 65 66 20 69 6e 74 20 3c 42 3e 54 63 6c 5c 5f  def int <B>Tcl\_
2940: 4f 62 6a 65 63 74 4d 61 70 4d 65 74 68 6f 64 4e  ObjectMapMethodN
2950: 61 6d 65 50 72 6f 63 3c 2f 42 3e 28 0d 0a 20 20  ameProc</B>(..  
2960: 20 20 20 20 20 20 54 63 6c 5c 5f 49 6e 74 65 72        Tcl\_Inter
2970: 70 20 5c 2a 3c 49 3e 69 6e 74 65 72 70 3c 2f 49  p \*<I>interp</I
2980: 3e 2c 0d 0a 20 20 20 20 20 20 20 20 54 63 6c 5c  >,..        Tcl\
2990: 5f 4f 62 6a 65 63 74 20 3c 49 3e 6f 62 6a 65 63  _Object <I>objec
29a0: 74 3c 2f 49 3e 2c 0d 0a 20 20 20 20 20 20 20 20  t</I>,..        
29b0: 54 63 6c 5c 5f 43 6c 61 73 73 20 5c 2a 3c 49 3e  Tcl\_Class \*<I>
29c0: 73 74 61 72 74 43 6c 73 50 74 72 3c 2f 49 3e 2c  startClsPtr</I>,
29d0: 0d 0a 20 20 20 20 20 20 20 20 54 63 6c 5c 5f 4f  ..        Tcl\_O
29e0: 62 6a 20 5c 2a 3c 49 3e 6d 65 74 68 6f 64 4e 61  bj \*<I>methodNa
29f0: 6d 65 4f 62 6a 3c 2f 49 3e 29 3b 3c 2f 50 52 45  meObj</I>);</PRE
2a00: 3e 0d 0a 3c 50 3e 0d 0a 49 66 20 74 68 65 20 72  >..<P>..If the r
2a10: 65 73 75 6c 74 20 69 73 20 54 43 4c 5c 5f 4f 4b  esult is TCL\_OK
2a20: 2c 20 74 68 65 20 72 65 6d 61 70 70 69 6e 67 20  , the remapping 
2a30: 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20 68 61  is assumed to ha
2a40: 76 65 20 62 65 65 6e 20 64 6f 6e 65 2e 20 49 66  ve been done. If
2a50: 20 74 68 65 0d 0a 72 65 73 75 6c 74 20 69 73 20   the..result is 
2a60: 54 43 4c 5c 5f 45 52 52 4f 52 2c 20 61 6e 20 65  TCL\_ERROR, an e
2a70: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77 69 6c  rror message wil
2a80: 6c 20 68 61 76 65 20 62 65 65 6e 20 6c 65 66 74  l have been left
2a90: 20 69 6e 20 3c 49 3e 69 6e 74 65 72 70 3c 2f 49   in <I>interp</I
2aa0: 3e 20 61 6e 64 0d 0a 74 68 65 20 6d 65 74 68 6f  > and..the metho
2ab0: 64 20 63 61 6c 6c 20 77 69 6c 6c 20 66 61 69 6c  d call will fail
2ac0: 2e 20 49 66 20 74 68 65 20 72 65 73 75 6c 74 20  . If the result 
2ad0: 69 73 20 54 43 4c 5c 5f 42 52 45 41 4b 2c 20 74  is TCL\_BREAK, t
2ae0: 68 65 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68  he standard meth
2af0: 6f 64 0d 0a 6e 61 6d 65 20 6c 6f 6f 6b 75 70 20  od..name lookup 
2b00: 72 75 6c 65 73 20 77 69 6c 6c 20 62 65 20 75 73  rules will be us
2b10: 65 64 3b 20 74 68 65 20 62 65 68 61 76 69 6f 72  ed; the behavior
2b20: 20 6f 66 20 6f 74 68 65 72 20 72 65 73 75 6c 74   of other result
2b30: 20 63 6f 64 65 73 20 69 73 0d 0a 63 75 72 72 65   codes is..curre
2b40: 6e 74 6c 79 20 75 6e 64 65 66 69 6e 65 64 2e 20  ntly undefined. 
2b50: 54 68 65 20 3c 49 3e 6f 62 6a 65 63 74 3c 2f 49  The <I>object</I
2b60: 3e 20 70 61 72 61 6d 65 74 65 72 20 73 61 79 73  > parameter says
2b70: 20 77 68 69 63 68 20 6f 62 6a 65 63 74 20 69 73   which object is
2b80: 20 62 65 69 6e 67 0d 0a 70 72 6f 63 65 73 73 65   being..processe
2b90: 64 2e 20 54 68 65 20 3c 49 3e 73 74 61 72 74 43  d. The <I>startC
2ba0: 6c 73 50 74 72 3c 2f 49 3e 20 70 61 72 61 6d 65  lsPtr</I> parame
2bb0: 74 65 72 20 70 6f 69 6e 74 73 20 74 6f 20 61 20  ter points to a 
2bc0: 76 61 72 69 61 62 6c 65 20 74 68 61 74 20 63 6f  variable that co
2bd0: 6e 74 61 69 6e 73 0d 0a 74 68 65 20 66 69 72 73  ntains..the firs
2be0: 74 20 63 6c 61 73 73 20 74 6f 20 70 72 6f 76 69  t class to provi
2bf0: 64 65 20 61 20 64 65 66 69 6e 69 74 69 6f 6e 20  de a definition 
2c00: 69 6e 20 74 68 65 20 6d 65 74 68 6f 64 20 63 68  in the method ch
2c10: 61 69 6e 20 74 6f 20 70 72 6f 63 65 73 73 2c 20  ain to process, 
2c20: 6f 72 0d 0a 4e 55 4c 4c 20 69 66 20 74 68 65 20  or..NULL if the 
2c30: 77 68 6f 6c 65 20 63 68 61 69 6e 20 69 73 20 74  whole chain is t
2c40: 6f 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 28  o be processed (
2c50: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 74 73  the argument its
2c60: 65 6c 66 20 69 73 20 6e 65 76 65 72 0d 0a 4e 55  elf is never..NU
2c70: 4c 4c 29 3b 20 74 68 69 73 20 76 61 72 69 61 62  LL); this variab
2c80: 6c 65 20 6d 61 79 20 62 65 20 75 70 64 61 74 65  le may be update
2c90: 64 20 62 79 20 74 68 65 20 63 61 6c 6c 62 61 63  d by the callbac
2ca0: 6b 2e 20 54 68 65 20 3c 49 3e 6d 65 74 68 6f 64  k. The <I>method
2cb0: 4e 61 6d 65 4f 62 6a 3c 2f 49 3e 0d 0a 70 61 72  NameObj</I>..par
2cc0: 61 6d 65 74 65 72 20 67 69 76 65 73 20 61 6e 20  ameter gives an 
2cd0: 75 6e 73 68 61 72 65 64 20 6f 62 6a 65 63 74 20  unshared object 
2ce0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
2cf0: 61 6d 65 20 6f 66 20 74 68 65 20 6d 65 74 68 6f  ame of the metho
2d00: 64 20 62 65 69 6e 67 0d 0a 69 6e 76 6f 6b 65 64  d being..invoked
2d10: 2c 20 61 73 20 70 72 6f 76 69 64 65 64 20 62 79  , as provided by
2d20: 20 74 68 65 20 75 73 65 72 3b 20 74 68 69 73 20   the user; this 
2d30: 6f 62 6a 65 63 74 20 6d 61 79 20 62 65 20 75 70  object may be up
2d40: 64 61 74 65 64 20 62 79 20 74 68 65 20 63 61 6c  dated by the cal
2d50: 6c 62 61 63 6b 2e 0d 0a 3c 48 33 3e 3c 41 20 4e  lback...<H3><A N
2d60: 41 4d 45 3d 22 4d 31 32 22 3e 53 45 45 20 41 4c  AME="M12">SEE AL
2d70: 53 4f 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 3c 42 3e  SO</A></H3>..<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 54 63 6c 5f 4d 65 74 68 6f 64 22 3e  oc:+Tcl_Method">
2da0: 54 63 6c 5c 5f 4d 65 74 68 6f 64 3c 2f 41 3e 3c  Tcl\_Method</A><
2db0: 2f 42 3e 2c 20 3c 42 3e 3c 41 20 48 52 45 46 3d  /B>, <B><A HREF=
2dc0: 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6f 6f 3a 3a  "?name=Doc:+oo::
2dd0: 63 6c 61 73 73 22 3e 6f 6f 3a 3a 63 6c 61 73 73  class">oo::class
2de0: 3c 2f 41 3e 3c 2f 42 3e 2c 20 3c 42 3e 3c 41 20  </A></B>, <B><A 
2df0: 48 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a  HREF="?name=Doc:
2e00: 2b 6f 6f 3a 3a 63 6f 70 79 22 3e 6f 6f 3a 3a 63  +oo::copy">oo::c
2e10: 6f 70 79 3c 2f 41 3e 3c 2f 42 3e 2c 20 3c 42 3e  opy</A></B>, <B>
2e20: 3c 41 20 48 52 45 46 3d 22 3f 6e 61 6d 65 3d 44  <A HREF="?name=D
2e30: 6f 63 3a 2b 6f 6f 3a 3a 64 65 66 69 6e 65 22 3e  oc:+oo::define">
2e40: 6f 6f 3a 3a 64 65 66 69 6e 65 3c 2f 41 3e 3c 2f  oo::define</A></
2e50: 42 3e 2c 20 3c 42 3e 3c 41 20 48 52 45 46 3d 22  B>, <B><A HREF="
2e60: 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6f 6f 3a 3a 6f  ?name=Doc:+oo::o
2e70: 62 6a 65 63 74 22 3e 6f 6f 3a 3a 6f 62 6a 65 63  bject">oo::objec
2e80: 74 3c 2f 41 3e 3c 2f 42 3e 0d 0a 3c 48 33 3e 3c  t</A></B>..<H3><
2e90: 41 20 4e 41 4d 45 3d 22 4d 31 33 22 3e 4b 45 59  A NAME="M13">KEY
2ea0: 57 4f 52 44 53 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a  WORDS</A></H3>..
2eb0: 63 6c 61 73 73 2c 20 63 6f 6e 73 74 72 75 63 74  class, construct
2ec0: 6f 72 2c 20 6f 62 6a 65 63 74 0a 5a 20 63 36 35  or, object.Z c65
2ed0: 32 31 38 34 36 35 31 37 62 32 64 65 38 63 36 38  21846517b2de8c68
2ee0: 61 63 62 62 35 65 66 61 61 33 35 65 38 0a        acbb5efaa35e8.