0000: 23 20 74 63 6c 4f 4f 2e 64 65 63 6c 73 20 2d 2d # tclOO.decls --
0010: 0a 23 0a 23 09 54 68 69 73 20 66 69 6c 65 20 63 .#.#.This file c
0020: 6f 6e 74 61 69 6e 73 20 74 68 65 20 64 65 63 6c ontains the decl
0030: 61 72 61 74 69 6f 6e 73 20 66 6f 72 20 61 6c 6c arations for all
0040: 20 73 75 70 70 6f 72 74 65 64 20 70 75 62 6c 69 supported publi
0050: 63 20 66 75 6e 63 74 69 6f 6e 73 0a 23 09 74 68 c functions.#.th
0060: 61 74 20 61 72 65 20 65 78 70 6f 72 74 65 64 20 at are exported
0070: 62 79 20 74 68 65 20 54 63 6c 4f 4f 20 70 61 63 by the TclOO pac
0080: 6b 61 67 65 20 74 68 61 74 20 69 73 20 65 6d 62 kage that is emb
0090: 65 64 64 65 64 20 77 69 74 68 69 6e 20 74 68 65 edded within the
00a0: 20 54 63 6c 0a 23 09 6c 69 62 72 61 72 79 20 76 Tcl.#.library v
00b0: 69 61 20 74 68 65 20 73 74 75 62 73 20 74 61 62 ia the stubs tab
00c0: 6c 65 2e 20 20 54 68 69 73 20 66 69 6c 65 20 69 le. This file i
00d0: 73 20 75 73 65 64 20 74 6f 20 67 65 6e 65 72 61 s used to genera
00e0: 74 65 20 74 68 65 0a 23 09 74 63 6c 4f 4f 44 65 te the.#.tclOODe
00f0: 63 6c 73 2e 68 2c 20 74 63 6c 4f 4f 49 6e 74 44 cls.h, tclOOIntD
0100: 65 63 6c 73 2e 68 20 61 6e 64 20 74 63 6c 4f 4f ecls.h and tclOO
0110: 53 74 75 62 49 6e 69 74 2e 63 20 66 69 6c 65 73 StubInit.c files
0120: 2e 0a 23 0a 23 20 43 6f 70 79 72 69 67 68 74 20 ..#.# Copyright
0130: c2 a9 20 32 30 30 38 2d 32 30 31 33 20 44 6f 6e © 2008-2013 Don
0140: 61 6c 20 4b 2e 20 46 65 6c 6c 6f 77 73 2e 0a 23 al K. Fellows..#
0150: 0a 23 20 53 65 65 20 74 68 65 20 66 69 6c 65 20 .# See the file
0160: 22 6c 69 63 65 6e 73 65 2e 74 65 72 6d 73 22 20 "license.terms"
0170: 66 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 for information
0180: 6f 6e 20 75 73 61 67 65 20 61 6e 64 20 72 65 64 on usage and red
0190: 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 66 0a 23 istribution of.#
01a0: 20 74 68 69 73 20 66 69 6c 65 2c 20 61 6e 64 20 this file, and
01b0: 66 6f 72 20 61 20 44 49 53 43 4c 41 49 4d 45 52 for a DISCLAIMER
01c0: 20 4f 46 20 41 4c 4c 20 57 41 52 52 41 4e 54 49 OF ALL WARRANTI
01d0: 45 53 2e 0a 0a 6c 69 62 72 61 72 79 20 74 63 6c ES...library tcl
01e0: 4f 4f 0a 0c 0a 23 23 23 23 23 23 23 23 23 23 23 OO...###########
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0220: 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 75 ###########.# Pu
0230: 62 6c 69 63 20 41 50 49 2c 20 65 78 70 6f 73 65 blic API, expose
0240: 64 20 66 6f 72 20 67 65 6e 65 72 61 6c 20 75 73 d for general us
0250: 65 72 73 20 6f 66 20 54 63 6c 4f 4f 2e 0a 23 0a ers of TclOO..#.
0260: 0a 69 6e 74 65 72 66 61 63 65 20 74 63 6c 4f 4f .interface tclOO
0270: 0a 68 6f 6f 6b 73 20 74 63 6c 4f 4f 49 6e 74 0a .hooks tclOOInt.
0280: 73 63 73 70 65 63 20 54 43 4c 41 50 49 0a 0a 64 scspec TCLAPI..d
0290: 65 63 6c 61 72 65 20 30 20 7b 0a 20 20 20 20 54 eclare 0 {. T
02a0: 63 6c 5f 4f 62 6a 65 63 74 20 54 63 6c 5f 43 6f cl_Object Tcl_Co
02b0: 70 79 4f 62 6a 65 63 74 49 6e 73 74 61 6e 63 65 pyObjectInstance
02c0: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 (Tcl_Interp *int
02d0: 65 72 70 2c 0a 09 20 20 20 20 54 63 6c 5f 4f 62 erp,.. Tcl_Ob
02e0: 6a 65 63 74 20 73 6f 75 72 63 65 4f 62 6a 65 63 ject sourceObjec
02f0: 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 74 t, const char *t
0300: 61 72 67 65 74 4e 61 6d 65 2c 0a 09 20 20 20 20 argetName,..
0310: 63 6f 6e 73 74 20 63 68 61 72 20 2a 74 61 72 67 const char *targ
0320: 65 74 4e 61 6d 65 73 70 61 63 65 4e 61 6d 65 29 etNamespaceName)
0330: 0a 7d 0a 64 65 63 6c 61 72 65 20 31 20 7b 0a 20 .}.declare 1 {.
0340: 20 20 20 54 63 6c 5f 4f 62 6a 65 63 74 20 54 63 Tcl_Object Tc
0350: 6c 5f 47 65 74 43 6c 61 73 73 41 73 4f 62 6a 65 l_GetClassAsObje
0360: 63 74 28 54 63 6c 5f 43 6c 61 73 73 20 63 6c 61 ct(Tcl_Class cla
0370: 7a 7a 29 0a 7d 0a 64 65 63 6c 61 72 65 20 32 20 zz).}.declare 2
0380: 7b 0a 20 20 20 20 54 63 6c 5f 43 6c 61 73 73 20 {. Tcl_Class
0390: 54 63 6c 5f 47 65 74 4f 62 6a 65 63 74 41 73 43 Tcl_GetObjectAsC
03a0: 6c 61 73 73 28 54 63 6c 5f 4f 62 6a 65 63 74 20 lass(Tcl_Object
03b0: 6f 62 6a 65 63 74 29 0a 7d 0a 64 65 63 6c 61 72 object).}.declar
03c0: 65 20 33 20 7b 0a 20 20 20 20 54 63 6c 5f 43 6f e 3 {. Tcl_Co
03d0: 6d 6d 61 6e 64 20 54 63 6c 5f 47 65 74 4f 62 6a mmand Tcl_GetObj
03e0: 65 63 74 43 6f 6d 6d 61 6e 64 28 54 63 6c 5f 4f ectCommand(Tcl_O
03f0: 62 6a 65 63 74 20 6f 62 6a 65 63 74 29 0a 7d 0a bject object).}.
0400: 64 65 63 6c 61 72 65 20 34 20 7b 0a 20 20 20 20 declare 4 {.
0410: 54 63 6c 5f 4f 62 6a 65 63 74 20 54 63 6c 5f 47 Tcl_Object Tcl_G
0420: 65 74 4f 62 6a 65 63 74 46 72 6f 6d 4f 62 6a 28 etObjectFromObj(
0430: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
0440: 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a rp, Tcl_Obj *obj
0450: 50 74 72 29 0a 7d 0a 64 65 63 6c 61 72 65 20 35 Ptr).}.declare 5
0460: 20 7b 0a 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 {. Tcl_Names
0470: 70 61 63 65 20 2a 54 63 6c 5f 47 65 74 4f 62 6a pace *Tcl_GetObj
0480: 65 63 74 4e 61 6d 65 73 70 61 63 65 28 54 63 6c ectNamespace(Tcl
0490: 5f 4f 62 6a 65 63 74 20 6f 62 6a 65 63 74 29 0a _Object object).
04a0: 7d 0a 64 65 63 6c 61 72 65 20 36 20 7b 0a 20 20 }.declare 6 {.
04b0: 20 20 54 63 6c 5f 43 6c 61 73 73 20 54 63 6c 5f Tcl_Class Tcl_
04c0: 4d 65 74 68 6f 64 44 65 63 6c 61 72 65 72 43 6c MethodDeclarerCl
04d0: 61 73 73 28 54 63 6c 5f 4d 65 74 68 6f 64 20 6d ass(Tcl_Method m
04e0: 65 74 68 6f 64 29 0a 7d 0a 64 65 63 6c 61 72 65 ethod).}.declare
04f0: 20 37 20 7b 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 7 {. Tcl_Obj
0500: 65 63 74 20 54 63 6c 5f 4d 65 74 68 6f 64 44 65 ect Tcl_MethodDe
0510: 63 6c 61 72 65 72 4f 62 6a 65 63 74 28 54 63 6c clarerObject(Tcl
0520: 5f 4d 65 74 68 6f 64 20 6d 65 74 68 6f 64 29 0a _Method method).
0530: 7d 0a 64 65 63 6c 61 72 65 20 38 20 7b 0a 20 20 }.declare 8 {.
0540: 20 20 69 6e 74 20 54 63 6c 5f 4d 65 74 68 6f 64 int Tcl_Method
0550: 49 73 50 75 62 6c 69 63 28 54 63 6c 5f 4d 65 74 IsPublic(Tcl_Met
0560: 68 6f 64 20 6d 65 74 68 6f 64 29 0a 7d 0a 64 65 hod method).}.de
0570: 63 6c 61 72 65 20 39 20 7b 0a 20 20 20 20 69 6e clare 9 {. in
0580: 74 20 54 63 6c 5f 4d 65 74 68 6f 64 49 73 54 79 t Tcl_MethodIsTy
0590: 70 65 28 54 63 6c 5f 4d 65 74 68 6f 64 20 6d 65 pe(Tcl_Method me
05a0: 74 68 6f 64 2c 20 63 6f 6e 73 74 20 54 63 6c 5f thod, const Tcl_
05b0: 4d 65 74 68 6f 64 54 79 70 65 20 2a 74 79 70 65 MethodType *type
05c0: 50 74 72 2c 0a 09 20 20 20 20 76 6f 69 64 20 2a Ptr,.. void *
05d0: 2a 63 6c 69 65 6e 74 44 61 74 61 50 74 72 29 0a *clientDataPtr).
05e0: 7d 0a 64 65 63 6c 61 72 65 20 31 30 20 7b 0a 20 }.declare 10 {.
05f0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 54 63 6c 5f Tcl_Obj *Tcl_
0600: 4d 65 74 68 6f 64 4e 61 6d 65 28 54 63 6c 5f 4d MethodName(Tcl_M
0610: 65 74 68 6f 64 20 6d 65 74 68 6f 64 29 0a 7d 0a ethod method).}.
0620: 64 65 63 6c 61 72 65 20 31 31 20 7b 0a 20 20 20 declare 11 {.
0630: 20 54 63 6c 5f 4d 65 74 68 6f 64 20 54 63 6c 5f Tcl_Method Tcl_
0640: 4e 65 77 49 6e 73 74 61 6e 63 65 4d 65 74 68 6f NewInstanceMetho
0650: 64 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e d(Tcl_Interp *in
0660: 74 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 65 63 74 terp, Tcl_Object
0670: 20 6f 62 6a 65 63 74 2c 0a 09 20 20 20 20 54 63 object,.. Tc
0680: 6c 5f 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c 20 l_Obj *nameObj,
0690: 69 6e 74 20 66 6c 61 67 73 2c 20 63 6f 6e 73 74 int flags, const
06a0: 20 54 63 6c 5f 4d 65 74 68 6f 64 54 79 70 65 20 Tcl_MethodType
06b0: 2a 74 79 70 65 50 74 72 2c 0a 09 20 20 20 20 76 *typePtr,.. v
06c0: 6f 69 64 20 2a 63 6c 69 65 6e 74 44 61 74 61 29 oid *clientData)
06d0: 0a 7d 0a 64 65 63 6c 61 72 65 20 31 32 20 7b 0a .}.declare 12 {.
06e0: 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f 64 20 54 Tcl_Method T
06f0: 63 6c 5f 4e 65 77 4d 65 74 68 6f 64 28 54 63 6c cl_NewMethod(Tcl
0700: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
0710: 20 54 63 6c 5f 43 6c 61 73 73 20 63 6c 73 2c 0a Tcl_Class cls,.
0720: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 61 . Tcl_Obj *na
0730: 6d 65 4f 62 6a 2c 20 69 6e 74 20 66 6c 61 67 73 meObj, int flags
0740: 2c 20 63 6f 6e 73 74 20 54 63 6c 5f 4d 65 74 68 , const Tcl_Meth
0750: 6f 64 54 79 70 65 20 2a 74 79 70 65 50 74 72 2c odType *typePtr,
0760: 0a 09 20 20 20 20 76 6f 69 64 20 2a 63 6c 69 65 .. void *clie
0770: 6e 74 44 61 74 61 29 0a 7d 0a 64 65 63 6c 61 72 ntData).}.declar
0780: 65 20 31 33 20 7b 0a 20 20 20 20 54 63 6c 5f 4f e 13 {. Tcl_O
0790: 62 6a 65 63 74 20 54 63 6c 5f 4e 65 77 4f 62 6a bject Tcl_NewObj
07a0: 65 63 74 49 6e 73 74 61 6e 63 65 28 54 63 6c 5f ectInstance(Tcl_
07b0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
07c0: 54 63 6c 5f 43 6c 61 73 73 20 63 6c 73 2c 0a 09 Tcl_Class cls,..
07d0: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a const char *
07e0: 6e 61 6d 65 53 74 72 2c 20 63 6f 6e 73 74 20 63 nameStr, const c
07f0: 68 61 72 20 2a 6e 73 4e 61 6d 65 53 74 72 2c 20 har *nsNameStr,
0800: 54 63 6c 5f 53 69 7a 65 20 6f 62 6a 63 2c 0a 09 Tcl_Size objc,..
0810: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e Tcl_Obj *con
0820: 73 74 20 2a 6f 62 6a 76 2c 20 54 63 6c 5f 53 69 st *objv, Tcl_Si
0830: 7a 65 20 73 6b 69 70 29 0a 7d 0a 64 65 63 6c 61 ze skip).}.decla
0840: 72 65 20 31 34 20 7b 0a 20 20 20 20 69 6e 74 20 re 14 {. int
0850: 54 63 6c 5f 4f 62 6a 65 63 74 44 65 6c 65 74 65 Tcl_ObjectDelete
0860: 64 28 54 63 6c 5f 4f 62 6a 65 63 74 20 6f 62 6a d(Tcl_Object obj
0870: 65 63 74 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 ect).}.declare 1
0880: 35 20 7b 0a 20 20 20 20 69 6e 74 20 54 63 6c 5f 5 {. int Tcl_
0890: 4f 62 6a 65 63 74 43 6f 6e 74 65 78 74 49 73 46 ObjectContextIsF
08a0: 69 6c 74 65 72 69 6e 67 28 54 63 6c 5f 4f 62 6a iltering(Tcl_Obj
08b0: 65 63 74 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 ectContext conte
08c0: 78 74 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 36 xt).}.declare 16
08d0: 20 7b 0a 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f {. Tcl_Metho
08e0: 64 20 54 63 6c 5f 4f 62 6a 65 63 74 43 6f 6e 74 d Tcl_ObjectCont
08f0: 65 78 74 4d 65 74 68 6f 64 28 54 63 6c 5f 4f 62 extMethod(Tcl_Ob
0900: 6a 65 63 74 43 6f 6e 74 65 78 74 20 63 6f 6e 74 jectContext cont
0910: 65 78 74 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 ext).}.declare 1
0920: 37 20 7b 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 65 7 {. Tcl_Obje
0930: 63 74 20 54 63 6c 5f 4f 62 6a 65 63 74 43 6f 6e ct Tcl_ObjectCon
0940: 74 65 78 74 4f 62 6a 65 63 74 28 54 63 6c 5f 4f textObject(Tcl_O
0950: 62 6a 65 63 74 43 6f 6e 74 65 78 74 20 63 6f 6e bjectContext con
0960: 74 65 78 74 29 0a 7d 0a 64 65 63 6c 61 72 65 20 text).}.declare
0970: 31 38 20 7b 0a 20 20 20 20 54 63 6c 5f 53 69 7a 18 {. Tcl_Siz
0980: 65 20 54 63 6c 5f 4f 62 6a 65 63 74 43 6f 6e 74 e Tcl_ObjectCont
0990: 65 78 74 53 6b 69 70 70 65 64 41 72 67 73 28 54 extSkippedArgs(T
09a0: 63 6c 5f 4f 62 6a 65 63 74 43 6f 6e 74 65 78 74 cl_ObjectContext
09b0: 20 63 6f 6e 74 65 78 74 29 0a 7d 0a 64 65 63 6c context).}.decl
09c0: 61 72 65 20 31 39 20 7b 0a 20 20 20 20 76 6f 69 are 19 {. voi
09d0: 64 20 2a 54 63 6c 5f 43 6c 61 73 73 47 65 74 4d d *Tcl_ClassGetM
09e0: 65 74 61 64 61 74 61 28 54 63 6c 5f 43 6c 61 73 etadata(Tcl_Clas
09f0: 73 20 63 6c 61 7a 7a 2c 0a 09 20 20 20 20 63 6f s clazz,.. co
0a00: 6e 73 74 20 54 63 6c 5f 4f 62 6a 65 63 74 4d 65 nst Tcl_ObjectMe
0a10: 74 61 64 61 74 61 54 79 70 65 20 2a 74 79 70 65 tadataType *type
0a20: 50 74 72 29 0a 7d 0a 64 65 63 6c 61 72 65 20 32 Ptr).}.declare 2
0a30: 30 20 7b 0a 20 20 20 20 76 6f 69 64 20 54 63 6c 0 {. void Tcl
0a40: 5f 43 6c 61 73 73 53 65 74 4d 65 74 61 64 61 74 _ClassSetMetadat
0a50: 61 28 54 63 6c 5f 43 6c 61 73 73 20 63 6c 61 7a a(Tcl_Class claz
0a60: 7a 2c 0a 09 20 20 20 20 63 6f 6e 73 74 20 54 63 z,.. const Tc
0a70: 6c 5f 4f 62 6a 65 63 74 4d 65 74 61 64 61 74 61 l_ObjectMetadata
0a80: 54 79 70 65 20 2a 74 79 70 65 50 74 72 2c 20 76 Type *typePtr, v
0a90: 6f 69 64 20 2a 6d 65 74 61 64 61 74 61 29 0a 7d oid *metadata).}
0aa0: 0a 64 65 63 6c 61 72 65 20 32 31 20 7b 0a 20 20 .declare 21 {.
0ab0: 20 20 76 6f 69 64 20 2a 54 63 6c 5f 4f 62 6a 65 void *Tcl_Obje
0ac0: 63 74 47 65 74 4d 65 74 61 64 61 74 61 28 54 63 ctGetMetadata(Tc
0ad0: 6c 5f 4f 62 6a 65 63 74 20 6f 62 6a 65 63 74 2c l_Object object,
0ae0: 0a 09 20 20 20 20 63 6f 6e 73 74 20 54 63 6c 5f .. const Tcl_
0af0: 4f 62 6a 65 63 74 4d 65 74 61 64 61 74 61 54 79 ObjectMetadataTy
0b00: 70 65 20 2a 74 79 70 65 50 74 72 29 0a 7d 0a 64 pe *typePtr).}.d
0b10: 65 63 6c 61 72 65 20 32 32 20 7b 0a 20 20 20 20 eclare 22 {.
0b20: 76 6f 69 64 20 54 63 6c 5f 4f 62 6a 65 63 74 53 void Tcl_ObjectS
0b30: 65 74 4d 65 74 61 64 61 74 61 28 54 63 6c 5f 4f etMetadata(Tcl_O
0b40: 62 6a 65 63 74 20 6f 62 6a 65 63 74 2c 0a 09 20 bject object,..
0b50: 20 20 20 63 6f 6e 73 74 20 54 63 6c 5f 4f 62 6a const Tcl_Obj
0b60: 65 63 74 4d 65 74 61 64 61 74 61 54 79 70 65 20 ectMetadataType
0b70: 2a 74 79 70 65 50 74 72 2c 20 76 6f 69 64 20 2a *typePtr, void *
0b80: 6d 65 74 61 64 61 74 61 29 0a 7d 0a 64 65 63 6c metadata).}.decl
0b90: 61 72 65 20 32 33 20 7b 0a 20 20 20 20 69 6e 74 are 23 {. int
0ba0: 20 54 63 6c 5f 4f 62 6a 65 63 74 43 6f 6e 74 65 Tcl_ObjectConte
0bb0: 78 74 49 6e 76 6f 6b 65 4e 65 78 74 28 54 63 6c xtInvokeNext(Tcl
0bc0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
0bd0: 0a 09 20 20 20 20 54 63 6c 5f 4f 62 6a 65 63 74 .. Tcl_Object
0be0: 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c Context context,
0bf0: 20 54 63 6c 5f 53 69 7a 65 20 6f 62 6a 63 2c 20 Tcl_Size objc,
0c00: 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 2a Tcl_Obj *const *
0c10: 6f 62 6a 76 2c 0a 09 20 20 20 20 54 63 6c 5f 53 objv,.. Tcl_S
0c20: 69 7a 65 20 73 6b 69 70 29 0a 7d 0a 64 65 63 6c ize skip).}.decl
0c30: 61 72 65 20 32 34 20 7b 0a 20 20 20 20 54 63 6c are 24 {. Tcl
0c40: 5f 4f 62 6a 65 63 74 4d 61 70 4d 65 74 68 6f 64 _ObjectMapMethod
0c50: 4e 61 6d 65 50 72 6f 63 20 2a 54 63 6c 5f 4f 62 NameProc *Tcl_Ob
0c60: 6a 65 63 74 47 65 74 4d 65 74 68 6f 64 4e 61 6d jectGetMethodNam
0c70: 65 4d 61 70 70 65 72 28 0a 09 20 20 20 20 54 63 eMapper(.. Tc
0c80: 6c 5f 4f 62 6a 65 63 74 20 6f 62 6a 65 63 74 29 l_Object object)
0c90: 0a 7d 0a 64 65 63 6c 61 72 65 20 32 35 20 7b 0a .}.declare 25 {.
0ca0: 20 20 20 20 76 6f 69 64 20 54 63 6c 5f 4f 62 6a void Tcl_Obj
0cb0: 65 63 74 53 65 74 4d 65 74 68 6f 64 4e 61 6d 65 ectSetMethodName
0cc0: 4d 61 70 70 65 72 28 54 63 6c 5f 4f 62 6a 65 63 Mapper(Tcl_Objec
0cd0: 74 20 6f 62 6a 65 63 74 2c 0a 09 20 20 20 20 54 t object,.. T
0ce0: 63 6c 5f 4f 62 6a 65 63 74 4d 61 70 4d 65 74 68 cl_ObjectMapMeth
0cf0: 6f 64 4e 61 6d 65 50 72 6f 63 20 2a 6d 61 70 4d odNameProc *mapM
0d00: 65 74 68 6f 64 4e 61 6d 65 50 72 6f 63 29 0a 7d ethodNameProc).}
0d10: 0a 64 65 63 6c 61 72 65 20 32 36 20 7b 0a 20 20 .declare 26 {.
0d20: 20 20 76 6f 69 64 20 54 63 6c 5f 43 6c 61 73 73 void Tcl_Class
0d30: 53 65 74 43 6f 6e 73 74 72 75 63 74 6f 72 28 54 SetConstructor(T
0d40: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
0d50: 70 2c 20 54 63 6c 5f 43 6c 61 73 73 20 63 6c 61 p, Tcl_Class cla
0d60: 7a 7a 2c 0a 09 20 20 20 20 54 63 6c 5f 4d 65 74 zz,.. Tcl_Met
0d70: 68 6f 64 20 6d 65 74 68 6f 64 29 0a 7d 0a 64 65 hod method).}.de
0d80: 63 6c 61 72 65 20 32 37 20 7b 0a 20 20 20 20 76 clare 27 {. v
0d90: 6f 69 64 20 54 63 6c 5f 43 6c 61 73 73 53 65 74 oid Tcl_ClassSet
0da0: 44 65 73 74 72 75 63 74 6f 72 28 54 63 6c 5f 49 Destructor(Tcl_I
0db0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 54 nterp *interp, T
0dc0: 63 6c 5f 43 6c 61 73 73 20 63 6c 61 7a 7a 2c 0a cl_Class clazz,.
0dd0: 09 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f 64 20 . Tcl_Method
0de0: 6d 65 74 68 6f 64 29 0a 7d 0a 64 65 63 6c 61 72 method).}.declar
0df0: 65 20 32 38 20 7b 0a 20 20 20 20 54 63 6c 5f 4f e 28 {. Tcl_O
0e00: 62 6a 20 2a 54 63 6c 5f 47 65 74 4f 62 6a 65 63 bj *Tcl_GetObjec
0e10: 74 4e 61 6d 65 28 54 63 6c 5f 49 6e 74 65 72 70 tName(Tcl_Interp
0e20: 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4f 62 *interp, Tcl_Ob
0e30: 6a 65 63 74 20 6f 62 6a 65 63 74 29 0a 7d 0a 64 ject object).}.d
0e40: 65 63 6c 61 72 65 20 32 39 20 7b 0a 20 20 20 20 eclare 29 {.
0e50: 69 6e 74 20 54 63 6c 5f 4d 65 74 68 6f 64 49 73 int Tcl_MethodIs
0e60: 50 72 69 76 61 74 65 28 54 63 6c 5f 4d 65 74 68 Private(Tcl_Meth
0e70: 6f 64 20 6d 65 74 68 6f 64 29 0a 7d 0a 64 65 63 od method).}.dec
0e80: 6c 61 72 65 20 33 30 20 7b 0a 20 20 20 20 54 63 lare 30 {. Tc
0e90: 6c 5f 43 6c 61 73 73 20 54 63 6c 5f 47 65 74 43 l_Class Tcl_GetC
0ea0: 6c 61 73 73 4f 66 4f 62 6a 65 63 74 28 54 63 6c lassOfObject(Tcl
0eb0: 5f 4f 62 6a 65 63 74 20 6f 62 6a 65 63 74 29 0a _Object object).
0ec0: 7d 0a 64 65 63 6c 61 72 65 20 33 31 20 7b 0a 20 }.declare 31 {.
0ed0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 54 63 6c 5f Tcl_Obj *Tcl_
0ee0: 47 65 74 4f 62 6a 65 63 74 43 6c 61 73 73 4e 61 GetObjectClassNa
0ef0: 6d 65 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 me(Tcl_Interp *i
0f00: 6e 74 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 65 63 nterp, Tcl_Objec
0f10: 74 20 6f 62 6a 65 63 74 29 0a 7d 0a 64 65 63 6c t object).}.decl
0f20: 61 72 65 20 33 32 20 7b 0a 20 20 20 20 69 6e 74 are 32 {. int
0f30: 20 54 63 6c 5f 4d 65 74 68 6f 64 49 73 54 79 70 Tcl_MethodIsTyp
0f40: 65 32 28 54 63 6c 5f 4d 65 74 68 6f 64 20 6d 65 e2(Tcl_Method me
0f50: 74 68 6f 64 2c 20 63 6f 6e 73 74 20 54 63 6c 5f thod, const Tcl_
0f60: 4d 65 74 68 6f 64 54 79 70 65 32 20 2a 74 79 70 MethodType2 *typ
0f70: 65 50 74 72 2c 0a 09 20 20 20 20 76 6f 69 64 20 ePtr,.. void
0f80: 2a 2a 63 6c 69 65 6e 74 44 61 74 61 50 74 72 29 **clientDataPtr)
0f90: 0a 7d 0a 64 65 63 6c 61 72 65 20 33 33 20 7b 0a .}.declare 33 {.
0fa0: 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f 64 20 54 Tcl_Method T
0fb0: 63 6c 5f 4e 65 77 49 6e 73 74 61 6e 63 65 4d 65 cl_NewInstanceMe
0fc0: 74 68 6f 64 32 28 54 63 6c 5f 49 6e 74 65 72 70 thod2(Tcl_Interp
0fd0: 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4f 62 *interp, Tcl_Ob
0fe0: 6a 65 63 74 20 6f 62 6a 65 63 74 2c 0a 09 20 20 ject object,..
0ff0: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 61 6d 65 4f Tcl_Obj *nameO
1000: 62 6a 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 63 bj, int flags, c
1010: 6f 6e 73 74 20 54 63 6c 5f 4d 65 74 68 6f 64 54 onst Tcl_MethodT
1020: 79 70 65 32 20 2a 74 79 70 65 50 74 72 2c 0a 09 ype2 *typePtr,..
1030: 20 20 20 20 76 6f 69 64 20 2a 63 6c 69 65 6e 74 void *client
1040: 44 61 74 61 29 0a 7d 0a 64 65 63 6c 61 72 65 20 Data).}.declare
1050: 33 34 20 7b 0a 20 20 20 20 54 63 6c 5f 4d 65 74 34 {. Tcl_Met
1060: 68 6f 64 20 54 63 6c 5f 4e 65 77 4d 65 74 68 6f hod Tcl_NewMetho
1070: 64 32 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 d2(Tcl_Interp *i
1080: 6e 74 65 72 70 2c 20 54 63 6c 5f 43 6c 61 73 73 nterp, Tcl_Class
1090: 20 63 6c 73 2c 0a 09 20 20 20 20 54 63 6c 5f 4f cls,.. Tcl_O
10a0: 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c 20 69 6e 74 bj *nameObj, int
10b0: 20 66 6c 61 67 73 2c 20 63 6f 6e 73 74 20 54 63 flags, const Tc
10c0: 6c 5f 4d 65 74 68 6f 64 54 79 70 65 32 20 2a 74 l_MethodType2 *t
10d0: 79 70 65 50 74 72 2c 0a 09 20 20 20 20 76 6f 69 ypePtr,.. voi
10e0: 64 20 2a 63 6c 69 65 6e 74 44 61 74 61 29 0a 7d d *clientData).}
10f0: 0a 0c 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 ...#############
1100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1130: 23 23 23 23 23 23 23 23 23 0a 23 20 50 72 69 76 #########.# Priv
1140: 61 74 65 20 41 50 49 2c 20 65 78 70 6f 73 65 64 ate API, exposed
1150: 20 74 6f 20 73 75 70 70 6f 72 74 20 61 64 76 61 to support adva
1160: 6e 63 65 64 20 4f 4f 20 73 79 73 74 65 6d 73 20 nced OO systems
1170: 74 68 61 74 20 70 6c 75 67 20 69 6e 20 6f 6e 20 that plug in on
1180: 74 6f 70 20 6f 66 0a 23 20 54 63 6c 4f 4f 3b 20 top of.# TclOO;
1190: 6e 6f 74 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 not intended for
11a0: 20 67 65 6e 65 72 61 6c 20 75 73 65 20 61 6e 64 general use and
11b0: 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61 does not have a
11c0: 6e 79 20 63 6f 6d 6d 69 74 6d 65 6e 74 20 74 6f ny commitment to
11d0: 0a 23 20 6c 6f 6e 67 2d 74 65 72 6d 20 73 75 70 .# long-term sup
11e0: 70 6f 72 74 2e 0a 23 0a 0a 69 6e 74 65 72 66 61 port..#..interfa
11f0: 63 65 20 74 63 6c 4f 4f 49 6e 74 0a 0a 64 65 63 ce tclOOInt..dec
1200: 6c 61 72 65 20 30 20 7b 0a 20 20 20 20 54 63 6c lare 0 {. Tcl
1210: 5f 4f 62 6a 65 63 74 20 54 63 6c 4f 4f 47 65 74 _Object TclOOGet
1220: 44 65 66 69 6e 65 43 6d 64 43 6f 6e 74 65 78 74 DefineCmdContext
1230: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 (Tcl_Interp *int
1240: 65 72 70 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 erp).}.declare 1
1250: 20 7b 0a 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f {. Tcl_Metho
1260: 64 20 54 63 6c 4f 4f 4d 61 6b 65 50 72 6f 63 49 d TclOOMakeProcI
1270: 6e 73 74 61 6e 63 65 4d 65 74 68 6f 64 28 54 63 nstanceMethod(Tc
1280: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 l_Interp *interp
1290: 2c 20 4f 62 6a 65 63 74 20 2a 6f 50 74 72 2c 0a , Object *oPtr,.
12a0: 09 20 20 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 . int flags,
12b0: 54 63 6c 5f 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a Tcl_Obj *nameObj
12c0: 2c 20 54 63 6c 5f 4f 62 6a 20 2a 61 72 67 73 4f , Tcl_Obj *argsO
12d0: 62 6a 2c 20 54 63 6c 5f 4f 62 6a 20 2a 62 6f 64 bj, Tcl_Obj *bod
12e0: 79 4f 62 6a 2c 0a 09 20 20 20 20 63 6f 6e 73 74 yObj,.. const
12f0: 20 54 63 6c 5f 4d 65 74 68 6f 64 54 79 70 65 20 Tcl_MethodType
1300: 2a 74 79 70 65 50 74 72 2c 20 76 6f 69 64 20 2a *typePtr, void *
1310: 63 6c 69 65 6e 74 44 61 74 61 2c 0a 09 20 20 20 clientData,..
1320: 20 50 72 6f 63 20 2a 2a 70 72 6f 63 50 74 72 50 Proc **procPtrP
1330: 74 72 29 0a 7d 0a 64 65 63 6c 61 72 65 20 32 20 tr).}.declare 2
1340: 7b 0a 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f 64 {. Tcl_Method
1350: 20 54 63 6c 4f 4f 4d 61 6b 65 50 72 6f 63 4d 65 TclOOMakeProcMe
1360: 74 68 6f 64 28 54 63 6c 5f 49 6e 74 65 72 70 20 thod(Tcl_Interp
1370: 2a 69 6e 74 65 72 70 2c 20 43 6c 61 73 73 20 2a *interp, Class *
1380: 63 6c 73 50 74 72 2c 0a 09 20 20 20 20 69 6e 74 clsPtr,.. int
1390: 20 66 6c 61 67 73 2c 20 54 63 6c 5f 4f 62 6a 20 flags, Tcl_Obj
13a0: 2a 6e 61 6d 65 4f 62 6a 2c 20 63 6f 6e 73 74 20 *nameObj, const
13b0: 63 68 61 72 20 2a 6e 61 6d 65 50 74 72 2c 0a 09 char *namePtr,..
13c0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 61 72 67 Tcl_Obj *arg
13d0: 73 4f 62 6a 2c 20 54 63 6c 5f 4f 62 6a 20 2a 62 sObj, Tcl_Obj *b
13e0: 6f 64 79 4f 62 6a 2c 20 63 6f 6e 73 74 20 54 63 odyObj, const Tc
13f0: 6c 5f 4d 65 74 68 6f 64 54 79 70 65 20 2a 74 79 l_MethodType *ty
1400: 70 65 50 74 72 2c 0a 09 20 20 20 20 76 6f 69 64 pePtr,.. void
1410: 20 2a 63 6c 69 65 6e 74 44 61 74 61 2c 20 50 72 *clientData, Pr
1420: 6f 63 20 2a 2a 70 72 6f 63 50 74 72 50 74 72 29 oc **procPtrPtr)
1430: 0a 7d 0a 64 65 63 6c 61 72 65 20 33 20 7b 0a 20 .}.declare 3 {.
1440: 20 20 20 4d 65 74 68 6f 64 20 2a 54 63 6c 4f 4f Method *TclOO
1450: 4e 65 77 50 72 6f 63 49 6e 73 74 61 6e 63 65 4d NewProcInstanceM
1460: 65 74 68 6f 64 28 54 63 6c 5f 49 6e 74 65 72 70 ethod(Tcl_Interp
1470: 20 2a 69 6e 74 65 72 70 2c 20 4f 62 6a 65 63 74 *interp, Object
1480: 20 2a 6f 50 74 72 2c 0a 09 20 20 20 20 69 6e 74 *oPtr,.. int
1490: 20 66 6c 61 67 73 2c 20 54 63 6c 5f 4f 62 6a 20 flags, Tcl_Obj
14a0: 2a 6e 61 6d 65 4f 62 6a 2c 20 54 63 6c 5f 4f 62 *nameObj, Tcl_Ob
14b0: 6a 20 2a 61 72 67 73 4f 62 6a 2c 20 54 63 6c 5f j *argsObj, Tcl_
14c0: 4f 62 6a 20 2a 62 6f 64 79 4f 62 6a 2c 0a 09 20 Obj *bodyObj,..
14d0: 20 20 20 50 72 6f 63 65 64 75 72 65 4d 65 74 68 ProcedureMeth
14e0: 6f 64 20 2a 2a 70 6d 50 74 72 50 74 72 29 0a 7d od **pmPtrPtr).}
14f0: 0a 64 65 63 6c 61 72 65 20 34 20 7b 0a 20 20 20 .declare 4 {.
1500: 20 4d 65 74 68 6f 64 20 2a 54 63 6c 4f 4f 4e 65 Method *TclOONe
1510: 77 50 72 6f 63 4d 65 74 68 6f 64 28 54 63 6c 5f wProcMethod(Tcl_
1520: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
1530: 43 6c 61 73 73 20 2a 63 6c 73 50 74 72 2c 0a 09 Class *clsPtr,..
1540: 20 20 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 54 int flags, T
1550: 63 6c 5f 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c cl_Obj *nameObj,
1560: 20 54 63 6c 5f 4f 62 6a 20 2a 61 72 67 73 4f 62 Tcl_Obj *argsOb
1570: 6a 2c 20 54 63 6c 5f 4f 62 6a 20 2a 62 6f 64 79 j, Tcl_Obj *body
1580: 4f 62 6a 2c 0a 09 20 20 20 20 50 72 6f 63 65 64 Obj,.. Proced
1590: 75 72 65 4d 65 74 68 6f 64 20 2a 2a 70 6d 50 74 ureMethod **pmPt
15a0: 72 50 74 72 29 0a 7d 0a 64 65 63 6c 61 72 65 20 rPtr).}.declare
15b0: 35 20 7b 0a 20 20 20 20 69 6e 74 20 54 63 6c 4f 5 {. int TclO
15c0: 4f 4f 62 6a 65 63 74 43 6d 64 43 6f 72 65 28 4f OObjectCmdCore(O
15d0: 62 6a 65 63 74 20 2a 6f 50 74 72 2c 20 54 63 6c bject *oPtr, Tcl
15e0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
15f0: 20 54 63 6c 5f 53 69 7a 65 20 6f 62 6a 63 2c 0a Tcl_Size objc,.
1600: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f . Tcl_Obj *co
1610: 6e 73 74 20 2a 6f 62 6a 76 2c 20 69 6e 74 20 70 nst *objv, int p
1620: 75 62 6c 69 63 4f 6e 6c 79 2c 20 43 6c 61 73 73 ublicOnly, Class
1630: 20 2a 73 74 61 72 74 43 6c 73 29 0a 7d 0a 64 65 *startCls).}.de
1640: 63 6c 61 72 65 20 36 20 7b 0a 20 20 20 20 69 6e clare 6 {. in
1650: 74 20 54 63 6c 4f 4f 49 73 52 65 61 63 68 61 62 t TclOOIsReachab
1660: 6c 65 28 43 6c 61 73 73 20 2a 74 61 72 67 65 74 le(Class *target
1670: 50 74 72 2c 20 43 6c 61 73 73 20 2a 73 74 61 72 Ptr, Class *star
1680: 74 50 74 72 29 0a 7d 0a 64 65 63 6c 61 72 65 20 tPtr).}.declare
1690: 37 20 7b 0a 20 20 20 20 4d 65 74 68 6f 64 20 2a 7 {. Method *
16a0: 54 63 6c 4f 4f 4e 65 77 46 6f 72 77 61 72 64 4d TclOONewForwardM
16b0: 65 74 68 6f 64 28 54 63 6c 5f 49 6e 74 65 72 70 ethod(Tcl_Interp
16c0: 20 2a 69 6e 74 65 72 70 2c 20 43 6c 61 73 73 20 *interp, Class
16d0: 2a 63 6c 73 50 74 72 2c 0a 09 20 20 20 20 69 6e *clsPtr,.. in
16e0: 74 20 69 73 50 75 62 6c 69 63 2c 20 54 63 6c 5f t isPublic, Tcl_
16f0: 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c 20 54 63 Obj *nameObj, Tc
1700: 6c 5f 4f 62 6a 20 2a 70 72 65 66 69 78 4f 62 6a l_Obj *prefixObj
1710: 29 0a 7d 0a 64 65 63 6c 61 72 65 20 38 20 7b 0a ).}.declare 8 {.
1720: 20 20 20 20 4d 65 74 68 6f 64 20 2a 54 63 6c 4f Method *TclO
1730: 4f 4e 65 77 46 6f 72 77 61 72 64 49 6e 73 74 61 ONewForwardInsta
1740: 6e 63 65 4d 65 74 68 6f 64 28 54 63 6c 5f 49 6e nceMethod(Tcl_In
1750: 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 4f 62 terp *interp, Ob
1760: 6a 65 63 74 20 2a 6f 50 74 72 2c 0a 09 20 20 20 ject *oPtr,..
1770: 20 69 6e 74 20 69 73 50 75 62 6c 69 63 2c 20 54 int isPublic, T
1780: 63 6c 5f 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c cl_Obj *nameObj,
1790: 20 54 63 6c 5f 4f 62 6a 20 2a 70 72 65 66 69 78 Tcl_Obj *prefix
17a0: 4f 62 6a 29 0a 7d 0a 64 65 63 6c 61 72 65 20 39 Obj).}.declare 9
17b0: 20 7b 0a 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f {. Tcl_Metho
17c0: 64 20 54 63 6c 4f 4f 4e 65 77 50 72 6f 63 49 6e d TclOONewProcIn
17d0: 73 74 61 6e 63 65 4d 65 74 68 6f 64 45 78 28 54 stanceMethodEx(T
17e0: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
17f0: 70 2c 0a 09 20 20 20 20 54 63 6c 5f 4f 62 6a 65 p,.. Tcl_Obje
1800: 63 74 20 6f 50 74 72 2c 20 54 63 6c 4f 4f 5f 50 ct oPtr, TclOO_P
1810: 72 65 43 61 6c 6c 50 72 6f 63 20 2a 70 72 65 43 reCallProc *preC
1820: 61 6c 6c 50 74 72 2c 0a 09 20 20 20 20 54 63 6c allPtr,.. Tcl
1830: 4f 4f 5f 50 6f 73 74 43 61 6c 6c 50 72 6f 63 20 OO_PostCallProc
1840: 2a 70 6f 73 74 43 61 6c 6c 50 74 72 2c 20 50 72 *postCallPtr, Pr
1850: 6f 63 45 72 72 6f 72 50 72 6f 63 20 2a 65 72 72 ocErrorProc *err
1860: 50 72 6f 63 2c 0a 09 20 20 20 20 76 6f 69 64 20 Proc,.. void
1870: 2a 63 6c 69 65 6e 74 44 61 74 61 2c 20 54 63 6c *clientData, Tcl
1880: 5f 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c 20 54 _Obj *nameObj, T
1890: 63 6c 5f 4f 62 6a 20 2a 61 72 67 73 4f 62 6a 2c cl_Obj *argsObj,
18a0: 0a 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 62 .. Tcl_Obj *b
18b0: 6f 64 79 4f 62 6a 2c 20 69 6e 74 20 66 6c 61 67 odyObj, int flag
18c0: 73 2c 20 76 6f 69 64 20 2a 2a 69 6e 74 65 72 6e s, void **intern
18d0: 61 6c 54 6f 6b 65 6e 50 74 72 29 0a 7d 0a 64 65 alTokenPtr).}.de
18e0: 63 6c 61 72 65 20 31 30 20 7b 0a 20 20 20 20 54 clare 10 {. T
18f0: 63 6c 5f 4d 65 74 68 6f 64 20 54 63 6c 4f 4f 4e cl_Method TclOON
1900: 65 77 50 72 6f 63 4d 65 74 68 6f 64 45 78 28 54 ewProcMethodEx(T
1910: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
1920: 70 2c 20 54 63 6c 5f 43 6c 61 73 73 20 63 6c 73 p, Tcl_Class cls
1930: 50 74 72 2c 0a 09 20 20 20 20 54 63 6c 4f 4f 5f Ptr,.. TclOO_
1940: 50 72 65 43 61 6c 6c 50 72 6f 63 20 2a 70 72 65 PreCallProc *pre
1950: 43 61 6c 6c 50 74 72 2c 20 54 63 6c 4f 4f 5f 50 CallPtr, TclOO_P
1960: 6f 73 74 43 61 6c 6c 50 72 6f 63 20 2a 70 6f 73 ostCallProc *pos
1970: 74 43 61 6c 6c 50 74 72 2c 0a 09 20 20 20 20 50 tCallPtr,.. P
1980: 72 6f 63 45 72 72 6f 72 50 72 6f 63 20 2a 65 72 rocErrorProc *er
1990: 72 50 72 6f 63 2c 20 76 6f 69 64 20 2a 63 6c 69 rProc, void *cli
19a0: 65 6e 74 44 61 74 61 2c 20 54 63 6c 5f 4f 62 6a entData, Tcl_Obj
19b0: 20 2a 6e 61 6d 65 4f 62 6a 2c 0a 09 20 20 20 20 *nameObj,..
19c0: 54 63 6c 5f 4f 62 6a 20 2a 61 72 67 73 4f 62 6a Tcl_Obj *argsObj
19d0: 2c 20 54 63 6c 5f 4f 62 6a 20 2a 62 6f 64 79 4f , Tcl_Obj *bodyO
19e0: 62 6a 2c 20 69 6e 74 20 66 6c 61 67 73 2c 0a 09 bj, int flags,..
19f0: 20 20 20 20 76 6f 69 64 20 2a 2a 69 6e 74 65 72 void **inter
1a00: 6e 61 6c 54 6f 6b 65 6e 50 74 72 29 0a 7d 0a 64 nalTokenPtr).}.d
1a10: 65 63 6c 61 72 65 20 31 31 20 7b 0a 20 20 20 20 eclare 11 {.
1a20: 69 6e 74 20 54 63 6c 4f 4f 49 6e 76 6f 6b 65 4f int TclOOInvokeO
1a30: 62 6a 65 63 74 28 54 63 6c 5f 49 6e 74 65 72 70 bject(Tcl_Interp
1a40: 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4f 62 *interp, Tcl_Ob
1a50: 6a 65 63 74 20 6f 62 6a 65 63 74 2c 0a 09 20 20 ject object,..
1a60: 20 20 54 63 6c 5f 43 6c 61 73 73 20 73 74 61 72 Tcl_Class star
1a70: 74 43 6c 73 2c 20 69 6e 74 20 70 75 62 6c 69 63 tCls, int public
1a80: 50 72 69 76 61 74 65 2c 20 54 63 6c 5f 53 69 7a Private, Tcl_Siz
1a90: 65 20 6f 62 6a 63 2c 0a 09 20 20 20 20 54 63 6c e objc,.. Tcl
1aa0: 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 2a 6f 62 6a _Obj *const *obj
1ab0: 76 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 32 20 v).}.declare 12
1ac0: 7b 0a 20 20 20 20 76 6f 69 64 20 54 63 6c 4f 4f {. void TclOO
1ad0: 4f 62 6a 65 63 74 53 65 74 46 69 6c 74 65 72 73 ObjectSetFilters
1ae0: 28 4f 62 6a 65 63 74 20 2a 6f 50 74 72 2c 20 54 (Object *oPtr, T
1af0: 63 6c 5f 53 69 7a 65 20 6e 75 6d 46 69 6c 74 65 cl_Size numFilte
1b00: 72 73 2c 0a 09 20 20 20 20 54 63 6c 5f 4f 62 6a rs,.. Tcl_Obj
1b10: 20 2a 63 6f 6e 73 74 20 2a 66 69 6c 74 65 72 73 *const *filters
1b20: 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 33 20 7b ).}.declare 13 {
1b30: 0a 20 20 20 20 76 6f 69 64 20 54 63 6c 4f 4f 43 . void TclOOC
1b40: 6c 61 73 73 53 65 74 46 69 6c 74 65 72 73 28 54 lassSetFilters(T
1b50: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
1b60: 70 2c 20 43 6c 61 73 73 20 2a 63 6c 61 73 73 50 p, Class *classP
1b70: 74 72 2c 0a 09 20 20 20 20 54 63 6c 5f 53 69 7a tr,.. Tcl_Siz
1b80: 65 20 6e 75 6d 46 69 6c 74 65 72 73 2c 20 54 63 e numFilters, Tc
1b90: 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 2a 66 69 l_Obj *const *fi
1ba0: 6c 74 65 72 73 29 0a 7d 0a 64 65 63 6c 61 72 65 lters).}.declare
1bb0: 20 31 34 20 7b 0a 20 20 20 20 76 6f 69 64 20 54 14 {. void T
1bc0: 63 6c 4f 4f 4f 62 6a 65 63 74 53 65 74 4d 69 78 clOOObjectSetMix
1bd0: 69 6e 73 28 4f 62 6a 65 63 74 20 2a 6f 50 74 72 ins(Object *oPtr
1be0: 2c 20 54 63 6c 5f 53 69 7a 65 20 6e 75 6d 4d 69 , Tcl_Size numMi
1bf0: 78 69 6e 73 2c 0a 09 20 20 20 20 43 6c 61 73 73 xins,.. Class
1c00: 20 2a 63 6f 6e 73 74 20 2a 6d 69 78 69 6e 73 29 *const *mixins)
1c10: 0a 7d 0a 64 65 63 6c 61 72 65 20 31 35 20 7b 0a .}.declare 15 {.
1c20: 20 20 20 20 76 6f 69 64 20 54 63 6c 4f 4f 43 6c void TclOOCl
1c30: 61 73 73 53 65 74 4d 69 78 69 6e 73 28 54 63 6c assSetMixins(Tcl
1c40: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
1c50: 20 43 6c 61 73 73 20 2a 63 6c 61 73 73 50 74 72 Class *classPtr
1c60: 2c 0a 09 20 20 20 20 54 63 6c 5f 53 69 7a 65 20 ,.. Tcl_Size
1c70: 6e 75 6d 4d 69 78 69 6e 73 2c 20 43 6c 61 73 73 numMixins, Class
1c80: 20 2a 63 6f 6e 73 74 20 2a 6d 69 78 69 6e 73 29 *const *mixins)
1c90: 0a 7d 0a 64 65 63 6c 61 72 65 20 31 36 20 7b 0a .}.declare 16 {.
1ca0: 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f 64 20 54 Tcl_Method T
1cb0: 63 6c 4f 4f 4d 61 6b 65 50 72 6f 63 49 6e 73 74 clOOMakeProcInst
1cc0: 61 6e 63 65 4d 65 74 68 6f 64 32 28 54 63 6c 5f anceMethod2(Tcl_
1cd0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
1ce0: 4f 62 6a 65 63 74 20 2a 6f 50 74 72 2c 0a 09 20 Object *oPtr,..
1cf0: 20 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 54 63 int flags, Tc
1d00: 6c 5f 4f 62 6a 20 2a 6e 61 6d 65 4f 62 6a 2c 20 l_Obj *nameObj,
1d10: 54 63 6c 5f 4f 62 6a 20 2a 61 72 67 73 4f 62 6a Tcl_Obj *argsObj
1d20: 2c 20 54 63 6c 5f 4f 62 6a 20 2a 62 6f 64 79 4f , Tcl_Obj *bodyO
1d30: 62 6a 2c 0a 09 20 20 20 20 63 6f 6e 73 74 20 54 bj,.. const T
1d40: 63 6c 5f 4d 65 74 68 6f 64 54 79 70 65 32 20 2a cl_MethodType2 *
1d50: 74 79 70 65 50 74 72 2c 20 76 6f 69 64 20 2a 63 typePtr, void *c
1d60: 6c 69 65 6e 74 44 61 74 61 2c 0a 09 20 20 20 20 lientData,..
1d70: 50 72 6f 63 20 2a 2a 70 72 6f 63 50 74 72 50 74 Proc **procPtrPt
1d80: 72 29 0a 7d 0a 64 65 63 6c 61 72 65 20 31 37 20 r).}.declare 17
1d90: 7b 0a 20 20 20 20 54 63 6c 5f 4d 65 74 68 6f 64 {. Tcl_Method
1da0: 20 54 63 6c 4f 4f 4d 61 6b 65 50 72 6f 63 4d 65 TclOOMakeProcMe
1db0: 74 68 6f 64 32 28 54 63 6c 5f 49 6e 74 65 72 70 thod2(Tcl_Interp
1dc0: 20 2a 69 6e 74 65 72 70 2c 20 43 6c 61 73 73 20 *interp, Class
1dd0: 2a 63 6c 73 50 74 72 2c 0a 09 20 20 20 20 69 6e *clsPtr,.. in
1de0: 74 20 66 6c 61 67 73 2c 20 54 63 6c 5f 4f 62 6a t flags, Tcl_Obj
1df0: 20 2a 6e 61 6d 65 4f 62 6a 2c 20 63 6f 6e 73 74 *nameObj, const
1e00: 20 63 68 61 72 20 2a 6e 61 6d 65 50 74 72 2c 0a char *namePtr,.
1e10: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 61 72 . Tcl_Obj *ar
1e20: 67 73 4f 62 6a 2c 20 54 63 6c 5f 4f 62 6a 20 2a gsObj, Tcl_Obj *
1e30: 62 6f 64 79 4f 62 6a 2c 20 63 6f 6e 73 74 20 54 bodyObj, const T
1e40: 63 6c 5f 4d 65 74 68 6f 64 54 79 70 65 32 20 2a cl_MethodType2 *
1e50: 74 79 70 65 50 74 72 2c 0a 09 20 20 20 20 76 6f typePtr,.. vo
1e60: 69 64 20 2a 63 6c 69 65 6e 74 44 61 74 61 2c 20 id *clientData,
1e70: 50 72 6f 63 20 2a 2a 70 72 6f 63 50 74 72 50 74 Proc **procPtrPt
1e80: 72 29 0a 7d 0a 0c 0a 72 65 74 75 72 6e 0a 0a 23 r).}...return..#
1e90: 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 Local Variables
1ea0: 3a 0a 23 20 6d 6f 64 65 3a 20 74 63 6c 0a 23 20 :.# mode: tcl.#
1eb0: 45 6e 64 3a 0a End:.