File indexing completed on 2026-01-03 10:27:24
0001
0002
0003
0004
0005 #ifndef _TCLOODECLS
0006 #define _TCLOODECLS
0007
0008 #ifndef TCLAPI
0009 # ifdef BUILD_tcl
0010 # define TCLAPI extern DLLEXPORT
0011 # else
0012 # define TCLAPI extern DLLIMPORT
0013 # endif
0014 #endif
0015
0016 #ifdef USE_TCL_STUBS
0017 # undef USE_TCLOO_STUBS
0018 # define USE_TCLOO_STUBS
0019 #endif
0020
0021
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028
0029
0030
0031
0032 TCLAPI Tcl_Object Tcl_CopyObjectInstance(Tcl_Interp *interp,
0033 Tcl_Object sourceObject,
0034 const char *targetName,
0035 const char *targetNamespaceName);
0036
0037 TCLAPI Tcl_Object Tcl_GetClassAsObject(Tcl_Class clazz);
0038
0039 TCLAPI Tcl_Class Tcl_GetObjectAsClass(Tcl_Object object);
0040
0041 TCLAPI Tcl_Command Tcl_GetObjectCommand(Tcl_Object object);
0042
0043 TCLAPI Tcl_Object Tcl_GetObjectFromObj(Tcl_Interp *interp,
0044 Tcl_Obj *objPtr);
0045
0046 TCLAPI Tcl_Namespace * Tcl_GetObjectNamespace(Tcl_Object object);
0047
0048 TCLAPI Tcl_Class Tcl_MethodDeclarerClass(Tcl_Method method);
0049
0050 TCLAPI Tcl_Object Tcl_MethodDeclarerObject(Tcl_Method method);
0051
0052 TCLAPI int Tcl_MethodIsPublic(Tcl_Method method);
0053
0054 TCLAPI int Tcl_MethodIsType(Tcl_Method method,
0055 const Tcl_MethodType *typePtr,
0056 void **clientDataPtr);
0057
0058 TCLAPI Tcl_Obj * Tcl_MethodName(Tcl_Method method);
0059
0060 TCLAPI Tcl_Method Tcl_NewInstanceMethod(Tcl_Interp *interp,
0061 Tcl_Object object, Tcl_Obj *nameObj,
0062 int isPublic, const Tcl_MethodType *typePtr,
0063 void *clientData);
0064
0065 TCLAPI Tcl_Method Tcl_NewMethod(Tcl_Interp *interp, Tcl_Class cls,
0066 Tcl_Obj *nameObj, int isPublic,
0067 const Tcl_MethodType *typePtr,
0068 void *clientData);
0069
0070 TCLAPI Tcl_Object Tcl_NewObjectInstance(Tcl_Interp *interp,
0071 Tcl_Class cls, const char *nameStr,
0072 const char *nsNameStr, int objc,
0073 Tcl_Obj *const *objv, int skip);
0074
0075 TCLAPI int Tcl_ObjectDeleted(Tcl_Object object);
0076
0077 TCLAPI int Tcl_ObjectContextIsFiltering(
0078 Tcl_ObjectContext context);
0079
0080 TCLAPI Tcl_Method Tcl_ObjectContextMethod(Tcl_ObjectContext context);
0081
0082 TCLAPI Tcl_Object Tcl_ObjectContextObject(Tcl_ObjectContext context);
0083
0084 TCLAPI int Tcl_ObjectContextSkippedArgs(
0085 Tcl_ObjectContext context);
0086
0087 TCLAPI void * Tcl_ClassGetMetadata(Tcl_Class clazz,
0088 const Tcl_ObjectMetadataType *typePtr);
0089
0090 TCLAPI void Tcl_ClassSetMetadata(Tcl_Class clazz,
0091 const Tcl_ObjectMetadataType *typePtr,
0092 void *metadata);
0093
0094 TCLAPI void * Tcl_ObjectGetMetadata(Tcl_Object object,
0095 const Tcl_ObjectMetadataType *typePtr);
0096
0097 TCLAPI void Tcl_ObjectSetMetadata(Tcl_Object object,
0098 const Tcl_ObjectMetadataType *typePtr,
0099 void *metadata);
0100
0101 TCLAPI int Tcl_ObjectContextInvokeNext(Tcl_Interp *interp,
0102 Tcl_ObjectContext context, int objc,
0103 Tcl_Obj *const *objv, int skip);
0104
0105 TCLAPI Tcl_ObjectMapMethodNameProc * Tcl_ObjectGetMethodNameMapper(
0106 Tcl_Object object);
0107
0108 TCLAPI void Tcl_ObjectSetMethodNameMapper(Tcl_Object object,
0109 Tcl_ObjectMapMethodNameProc *mapMethodNameProc);
0110
0111 TCLAPI void Tcl_ClassSetConstructor(Tcl_Interp *interp,
0112 Tcl_Class clazz, Tcl_Method method);
0113
0114 TCLAPI void Tcl_ClassSetDestructor(Tcl_Interp *interp,
0115 Tcl_Class clazz, Tcl_Method method);
0116
0117 TCLAPI Tcl_Obj * Tcl_GetObjectName(Tcl_Interp *interp,
0118 Tcl_Object object);
0119
0120
0121
0122
0123
0124
0125 TCLAPI void TclOOUnusedStubEntry(void);
0126
0127 typedef struct {
0128 const struct TclOOIntStubs *tclOOIntStubs;
0129 } TclOOStubHooks;
0130
0131 typedef struct TclOOStubs {
0132 int magic;
0133 const TclOOStubHooks *hooks;
0134
0135 Tcl_Object (*tcl_CopyObjectInstance) (Tcl_Interp *interp, Tcl_Object sourceObject, const char *targetName, const char *targetNamespaceName);
0136 Tcl_Object (*tcl_GetClassAsObject) (Tcl_Class clazz);
0137 Tcl_Class (*tcl_GetObjectAsClass) (Tcl_Object object);
0138 Tcl_Command (*tcl_GetObjectCommand) (Tcl_Object object);
0139 Tcl_Object (*tcl_GetObjectFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr);
0140 Tcl_Namespace * (*tcl_GetObjectNamespace) (Tcl_Object object);
0141 Tcl_Class (*tcl_MethodDeclarerClass) (Tcl_Method method);
0142 Tcl_Object (*tcl_MethodDeclarerObject) (Tcl_Method method);
0143 int (*tcl_MethodIsPublic) (Tcl_Method method);
0144 int (*tcl_MethodIsType) (Tcl_Method method, const Tcl_MethodType *typePtr, void **clientDataPtr);
0145 Tcl_Obj * (*tcl_MethodName) (Tcl_Method method);
0146 Tcl_Method (*tcl_NewInstanceMethod) (Tcl_Interp *interp, Tcl_Object object, Tcl_Obj *nameObj, int isPublic, const Tcl_MethodType *typePtr, void *clientData);
0147 Tcl_Method (*tcl_NewMethod) (Tcl_Interp *interp, Tcl_Class cls, Tcl_Obj *nameObj, int isPublic, const Tcl_MethodType *typePtr, void *clientData);
0148 Tcl_Object (*tcl_NewObjectInstance) (Tcl_Interp *interp, Tcl_Class cls, const char *nameStr, const char *nsNameStr, int objc, Tcl_Obj *const *objv, int skip);
0149 int (*tcl_ObjectDeleted) (Tcl_Object object);
0150 int (*tcl_ObjectContextIsFiltering) (Tcl_ObjectContext context);
0151 Tcl_Method (*tcl_ObjectContextMethod) (Tcl_ObjectContext context);
0152 Tcl_Object (*tcl_ObjectContextObject) (Tcl_ObjectContext context);
0153 int (*tcl_ObjectContextSkippedArgs) (Tcl_ObjectContext context);
0154 void * (*tcl_ClassGetMetadata) (Tcl_Class clazz, const Tcl_ObjectMetadataType *typePtr);
0155 void (*tcl_ClassSetMetadata) (Tcl_Class clazz, const Tcl_ObjectMetadataType *typePtr, void *metadata);
0156 void * (*tcl_ObjectGetMetadata) (Tcl_Object object, const Tcl_ObjectMetadataType *typePtr);
0157 void (*tcl_ObjectSetMetadata) (Tcl_Object object, const Tcl_ObjectMetadataType *typePtr, void *metadata);
0158 int (*tcl_ObjectContextInvokeNext) (Tcl_Interp *interp, Tcl_ObjectContext context, int objc, Tcl_Obj *const *objv, int skip);
0159 Tcl_ObjectMapMethodNameProc * (*tcl_ObjectGetMethodNameMapper) (Tcl_Object object);
0160 void (*tcl_ObjectSetMethodNameMapper) (Tcl_Object object, Tcl_ObjectMapMethodNameProc *mapMethodNameProc);
0161 void (*tcl_ClassSetConstructor) (Tcl_Interp *interp, Tcl_Class clazz, Tcl_Method method);
0162 void (*tcl_ClassSetDestructor) (Tcl_Interp *interp, Tcl_Class clazz, Tcl_Method method);
0163 Tcl_Obj * (*tcl_GetObjectName) (Tcl_Interp *interp, Tcl_Object object);
0164 void (*reserved29)(void);
0165 void (*reserved30)(void);
0166 void (*reserved31)(void);
0167 void (*reserved32)(void);
0168 void (*reserved33)(void);
0169 void (*tclOOUnusedStubEntry) (void);
0170 } TclOOStubs;
0171
0172 extern const TclOOStubs *tclOOStubsPtr;
0173
0174 #ifdef __cplusplus
0175 }
0176 #endif
0177
0178 #if defined(USE_TCLOO_STUBS)
0179
0180
0181
0182
0183
0184 #define Tcl_CopyObjectInstance \
0185 (tclOOStubsPtr->tcl_CopyObjectInstance)
0186 #define Tcl_GetClassAsObject \
0187 (tclOOStubsPtr->tcl_GetClassAsObject)
0188 #define Tcl_GetObjectAsClass \
0189 (tclOOStubsPtr->tcl_GetObjectAsClass)
0190 #define Tcl_GetObjectCommand \
0191 (tclOOStubsPtr->tcl_GetObjectCommand)
0192 #define Tcl_GetObjectFromObj \
0193 (tclOOStubsPtr->tcl_GetObjectFromObj)
0194 #define Tcl_GetObjectNamespace \
0195 (tclOOStubsPtr->tcl_GetObjectNamespace)
0196 #define Tcl_MethodDeclarerClass \
0197 (tclOOStubsPtr->tcl_MethodDeclarerClass)
0198 #define Tcl_MethodDeclarerObject \
0199 (tclOOStubsPtr->tcl_MethodDeclarerObject)
0200 #define Tcl_MethodIsPublic \
0201 (tclOOStubsPtr->tcl_MethodIsPublic)
0202 #define Tcl_MethodIsType \
0203 (tclOOStubsPtr->tcl_MethodIsType)
0204 #define Tcl_MethodName \
0205 (tclOOStubsPtr->tcl_MethodName)
0206 #define Tcl_NewInstanceMethod \
0207 (tclOOStubsPtr->tcl_NewInstanceMethod)
0208 #define Tcl_NewMethod \
0209 (tclOOStubsPtr->tcl_NewMethod)
0210 #define Tcl_NewObjectInstance \
0211 (tclOOStubsPtr->tcl_NewObjectInstance)
0212 #define Tcl_ObjectDeleted \
0213 (tclOOStubsPtr->tcl_ObjectDeleted)
0214 #define Tcl_ObjectContextIsFiltering \
0215 (tclOOStubsPtr->tcl_ObjectContextIsFiltering)
0216 #define Tcl_ObjectContextMethod \
0217 (tclOOStubsPtr->tcl_ObjectContextMethod)
0218 #define Tcl_ObjectContextObject \
0219 (tclOOStubsPtr->tcl_ObjectContextObject)
0220 #define Tcl_ObjectContextSkippedArgs \
0221 (tclOOStubsPtr->tcl_ObjectContextSkippedArgs)
0222 #define Tcl_ClassGetMetadata \
0223 (tclOOStubsPtr->tcl_ClassGetMetadata)
0224 #define Tcl_ClassSetMetadata \
0225 (tclOOStubsPtr->tcl_ClassSetMetadata)
0226 #define Tcl_ObjectGetMetadata \
0227 (tclOOStubsPtr->tcl_ObjectGetMetadata)
0228 #define Tcl_ObjectSetMetadata \
0229 (tclOOStubsPtr->tcl_ObjectSetMetadata)
0230 #define Tcl_ObjectContextInvokeNext \
0231 (tclOOStubsPtr->tcl_ObjectContextInvokeNext)
0232 #define Tcl_ObjectGetMethodNameMapper \
0233 (tclOOStubsPtr->tcl_ObjectGetMethodNameMapper)
0234 #define Tcl_ObjectSetMethodNameMapper \
0235 (tclOOStubsPtr->tcl_ObjectSetMethodNameMapper)
0236 #define Tcl_ClassSetConstructor \
0237 (tclOOStubsPtr->tcl_ClassSetConstructor)
0238 #define Tcl_ClassSetDestructor \
0239 (tclOOStubsPtr->tcl_ClassSetDestructor)
0240 #define Tcl_GetObjectName \
0241 (tclOOStubsPtr->tcl_GetObjectName)
0242
0243
0244
0245
0246
0247 #define TclOOUnusedStubEntry \
0248 (tclOOStubsPtr->tclOOUnusedStubEntry)
0249
0250 #endif
0251
0252
0253
0254 #undef TclOOUnusedStubEntry
0255
0256 #endif