Tcl Source Code

Hex Artifact Content
Login

Artifact d3a08357634893c31a455676a43ae8667ea9515ee120c4b4ffba0deb143f6eaa:


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