File indexing completed on 2024-05-18 08:30:22
0001
0002
0003
0004
0005 #ifndef _TCLOOINTDECLS
0006 #define _TCLOOINTDECLS
0007
0008
0009
0010 #ifdef __cplusplus
0011 extern "C" {
0012 #endif
0013
0014
0015
0016
0017
0018
0019 TCLAPI Tcl_Object TclOOGetDefineCmdContext(Tcl_Interp *interp);
0020
0021 TCLAPI Tcl_Method TclOOMakeProcInstanceMethod(Tcl_Interp *interp,
0022 Object *oPtr, int flags, Tcl_Obj *nameObj,
0023 Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
0024 const Tcl_MethodType *typePtr,
0025 ClientData clientData, Proc **procPtrPtr);
0026
0027 TCLAPI Tcl_Method TclOOMakeProcMethod(Tcl_Interp *interp,
0028 Class *clsPtr, int flags, Tcl_Obj *nameObj,
0029 const char *namePtr, Tcl_Obj *argsObj,
0030 Tcl_Obj *bodyObj,
0031 const Tcl_MethodType *typePtr,
0032 ClientData clientData, Proc **procPtrPtr);
0033
0034 TCLAPI Method * TclOONewProcInstanceMethod(Tcl_Interp *interp,
0035 Object *oPtr, int flags, Tcl_Obj *nameObj,
0036 Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
0037 ProcedureMethod **pmPtrPtr);
0038
0039 TCLAPI Method * TclOONewProcMethod(Tcl_Interp *interp, Class *clsPtr,
0040 int flags, Tcl_Obj *nameObj,
0041 Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
0042 ProcedureMethod **pmPtrPtr);
0043
0044 TCLAPI int TclOOObjectCmdCore(Object *oPtr, Tcl_Interp *interp,
0045 int objc, Tcl_Obj *const *objv,
0046 int publicOnly, Class *startCls);
0047
0048 TCLAPI int TclOOIsReachable(Class *targetPtr, Class *startPtr);
0049
0050 TCLAPI Method * TclOONewForwardMethod(Tcl_Interp *interp,
0051 Class *clsPtr, int isPublic,
0052 Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
0053
0054 TCLAPI Method * TclOONewForwardInstanceMethod(Tcl_Interp *interp,
0055 Object *oPtr, int isPublic, Tcl_Obj *nameObj,
0056 Tcl_Obj *prefixObj);
0057
0058 TCLAPI Tcl_Method TclOONewProcInstanceMethodEx(Tcl_Interp *interp,
0059 Tcl_Object oPtr,
0060 TclOO_PreCallProc *preCallPtr,
0061 TclOO_PostCallProc *postCallPtr,
0062 ProcErrorProc *errProc,
0063 ClientData clientData, Tcl_Obj *nameObj,
0064 Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
0065 int flags, void **internalTokenPtr);
0066
0067 TCLAPI Tcl_Method TclOONewProcMethodEx(Tcl_Interp *interp,
0068 Tcl_Class clsPtr,
0069 TclOO_PreCallProc *preCallPtr,
0070 TclOO_PostCallProc *postCallPtr,
0071 ProcErrorProc *errProc,
0072 ClientData clientData, Tcl_Obj *nameObj,
0073 Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
0074 int flags, void **internalTokenPtr);
0075
0076 TCLAPI int TclOOInvokeObject(Tcl_Interp *interp,
0077 Tcl_Object object, Tcl_Class startCls,
0078 int publicPrivate, int objc,
0079 Tcl_Obj *const *objv);
0080
0081 TCLAPI void TclOOObjectSetFilters(Object *oPtr, int numFilters,
0082 Tcl_Obj *const *filters);
0083
0084 TCLAPI void TclOOClassSetFilters(Tcl_Interp *interp,
0085 Class *classPtr, int numFilters,
0086 Tcl_Obj *const *filters);
0087
0088 TCLAPI void TclOOObjectSetMixins(Object *oPtr, int numMixins,
0089 Class *const *mixins);
0090
0091 TCLAPI void TclOOClassSetMixins(Tcl_Interp *interp,
0092 Class *classPtr, int numMixins,
0093 Class *const *mixins);
0094
0095 typedef struct TclOOIntStubs {
0096 int magic;
0097 void *hooks;
0098
0099 Tcl_Object (*tclOOGetDefineCmdContext) (Tcl_Interp *interp);
0100 Tcl_Method (*tclOOMakeProcInstanceMethod) (Tcl_Interp *interp, Object *oPtr, int flags, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, const Tcl_MethodType *typePtr, ClientData clientData, Proc **procPtrPtr);
0101 Tcl_Method (*tclOOMakeProcMethod) (Tcl_Interp *interp, Class *clsPtr, int flags, Tcl_Obj *nameObj, const char *namePtr, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, const Tcl_MethodType *typePtr, ClientData clientData, Proc **procPtrPtr);
0102 Method * (*tclOONewProcInstanceMethod) (Tcl_Interp *interp, Object *oPtr, int flags, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, ProcedureMethod **pmPtrPtr);
0103 Method * (*tclOONewProcMethod) (Tcl_Interp *interp, Class *clsPtr, int flags, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, ProcedureMethod **pmPtrPtr);
0104 int (*tclOOObjectCmdCore) (Object *oPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const *objv, int publicOnly, Class *startCls);
0105 int (*tclOOIsReachable) (Class *targetPtr, Class *startPtr);
0106 Method * (*tclOONewForwardMethod) (Tcl_Interp *interp, Class *clsPtr, int isPublic, Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
0107 Method * (*tclOONewForwardInstanceMethod) (Tcl_Interp *interp, Object *oPtr, int isPublic, Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
0108 Tcl_Method (*tclOONewProcInstanceMethodEx) (Tcl_Interp *interp, Tcl_Object oPtr, TclOO_PreCallProc *preCallPtr, TclOO_PostCallProc *postCallPtr, ProcErrorProc *errProc, ClientData clientData, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, int flags, void **internalTokenPtr);
0109 Tcl_Method (*tclOONewProcMethodEx) (Tcl_Interp *interp, Tcl_Class clsPtr, TclOO_PreCallProc *preCallPtr, TclOO_PostCallProc *postCallPtr, ProcErrorProc *errProc, ClientData clientData, Tcl_Obj *nameObj, Tcl_Obj *argsObj, Tcl_Obj *bodyObj, int flags, void **internalTokenPtr);
0110 int (*tclOOInvokeObject) (Tcl_Interp *interp, Tcl_Object object, Tcl_Class startCls, int publicPrivate, int objc, Tcl_Obj *const *objv);
0111 void (*tclOOObjectSetFilters) (Object *oPtr, int numFilters, Tcl_Obj *const *filters);
0112 void (*tclOOClassSetFilters) (Tcl_Interp *interp, Class *classPtr, int numFilters, Tcl_Obj *const *filters);
0113 void (*tclOOObjectSetMixins) (Object *oPtr, int numMixins, Class *const *mixins);
0114 void (*tclOOClassSetMixins) (Tcl_Interp *interp, Class *classPtr, int numMixins, Class *const *mixins);
0115 } TclOOIntStubs;
0116
0117 extern const TclOOIntStubs *tclOOIntStubsPtr;
0118
0119 #ifdef __cplusplus
0120 }
0121 #endif
0122
0123 #if defined(USE_TCLOO_STUBS)
0124
0125
0126
0127
0128
0129 #define TclOOGetDefineCmdContext \
0130 (tclOOIntStubsPtr->tclOOGetDefineCmdContext)
0131 #define TclOOMakeProcInstanceMethod \
0132 (tclOOIntStubsPtr->tclOOMakeProcInstanceMethod)
0133 #define TclOOMakeProcMethod \
0134 (tclOOIntStubsPtr->tclOOMakeProcMethod)
0135 #define TclOONewProcInstanceMethod \
0136 (tclOOIntStubsPtr->tclOONewProcInstanceMethod)
0137 #define TclOONewProcMethod \
0138 (tclOOIntStubsPtr->tclOONewProcMethod)
0139 #define TclOOObjectCmdCore \
0140 (tclOOIntStubsPtr->tclOOObjectCmdCore)
0141 #define TclOOIsReachable \
0142 (tclOOIntStubsPtr->tclOOIsReachable)
0143 #define TclOONewForwardMethod \
0144 (tclOOIntStubsPtr->tclOONewForwardMethod)
0145 #define TclOONewForwardInstanceMethod \
0146 (tclOOIntStubsPtr->tclOONewForwardInstanceMethod)
0147 #define TclOONewProcInstanceMethodEx \
0148 (tclOOIntStubsPtr->tclOONewProcInstanceMethodEx)
0149 #define TclOONewProcMethodEx \
0150 (tclOOIntStubsPtr->tclOONewProcMethodEx)
0151 #define TclOOInvokeObject \
0152 (tclOOIntStubsPtr->tclOOInvokeObject)
0153 #define TclOOObjectSetFilters \
0154 (tclOOIntStubsPtr->tclOOObjectSetFilters)
0155 #define TclOOClassSetFilters \
0156 (tclOOIntStubsPtr->tclOOClassSetFilters)
0157 #define TclOOObjectSetMixins \
0158 (tclOOIntStubsPtr->tclOOObjectSetMixins)
0159 #define TclOOClassSetMixins \
0160 (tclOOIntStubsPtr->tclOOClassSetMixins)
0161
0162 #endif
0163
0164
0165
0166 #endif