] 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 <
0570: 3b 74 63 6c 4f 4f 2e 68 26 67 74 3b 3c 2f 42 3e ;tclOO.h></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 ("
1120: 6d 65 74 68 6f 64 73 26 71 75 6f 74 3b 29 0d 0a methods")..
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.