summaryrefslogtreecommitdiffstats
path: root/generic/tclStubInit.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclStubInit.c')
-rw-r--r--generic/tclStubInit.c841
1 files changed, 364 insertions, 477 deletions
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 3483074..3b39416 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -1,4 +1,4 @@
-/*
+/*
* tclStubInit.c --
*
* This file contains the initializers for the Tcl stub vectors.
@@ -10,13 +10,7 @@
*/
#include "tclInt.h"
-#include "tommath.h"
-
-#ifdef __GNUC__
-#pragma GCC dependency "tcl.decls"
-#pragma GCC dependency "tclInt.decls"
-#pragma GCC dependency "tclTomMath.decls"
-#endif
+#include "tclPort.h"
/*
* Remove macros that will interfere with the definitions below.
@@ -37,19 +31,41 @@
#undef Tcl_ValidateAllMemory
#undef Tcl_FindHashEntry
#undef Tcl_CreateHashEntry
-#undef Tcl_Panic
-#undef Tcl_FindExecutable
#undef TclpGetPid
#undef TclSockMinimumBuffers
+/*
+ * Keep a record of the original Notifier procedures, created in the
+ * same compilation unit as the stub tables so we can later do reliable,
+ * portable comparisons to see whether a Tcl_SetNotifier() call swapped
+ * new routines into the stub table.
+ */
+
+Tcl_NotifierProcs tclOriginalNotifier = {
+ Tcl_SetTimer,
+ Tcl_WaitForEvent,
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ Tcl_CreateFileHandler,
+ Tcl_DeleteFileHandler,
+#else
+ NULL,
+ NULL,
+#endif
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
/* See bug 510001: TclSockMinimumBuffers needs plat imp */
#ifdef _WIN64
# define TclSockMinimumBuffersOld 0
#else
-#define TclSockMinimumBuffersOld sockMinimumBuffersOld
-static int TclSockMinimumBuffersOld(int sock, int size)
+int TclSockMinimumBuffersOld(sock, size)
+ int sock;
+ int size;
{
- return TclSockMinimumBuffers(INT2PTR(sock), size);
+ return TclSockMinimumBuffers((void *) (size_t) sock, size);
}
#endif
@@ -147,7 +163,7 @@ doNothing(void)
static char *
Tcl_WinUtfToTChar(string, len, dsPtr)
- const char *string;
+ CONST char *string;
int len;
Tcl_DString *dsPtr;
{
@@ -160,7 +176,7 @@ Tcl_WinUtfToTChar(string, len, dsPtr)
static char *
Tcl_WinTCharToUtf(
- const char *string,
+ CONST char *string,
int len,
Tcl_DString *dsPtr)
{
@@ -171,28 +187,27 @@ Tcl_WinTCharToUtf(
string, len, dsPtr);
}
-#define Tcl_MacOSXOpenBundleResources (int (*) ( \
- Tcl_Interp *, const char *, int, int, char *)) Tcl_WinUtfToTChar
-#define Tcl_MacOSXOpenVersionedBundleResources (int (*) ( \
- Tcl_Interp *, const char *, const char *, int, int, char *)) Tcl_WinTCharToUtf
-#define TclMacOSXGetFileAttribute (int (*) (Tcl_Interp *, \
- int, Tcl_Obj *, Tcl_Obj **)) TclpCreateProcess
-#define TclMacOSXMatchType (int (*) (Tcl_Interp *, const char *, \
- const char *, Tcl_StatBuf *, Tcl_GlobTypeData *)) TclpMakeFile
-#define TclMacOSXNotifierAddRunLoopMode (void (*) (const void *)) TclpOpenFile
-#define TclpLocaltime_unix (struct tm *(*) (const time_t *)) TclGetAndDetachPids
-#define TclpGmtime_unix (struct tm *(*) (const time_t *)) TclpCloseFile
+#define Tcl_MacOSXOpenBundleResources (int (*) _ANSI_ARGS_(( \
+ Tcl_Interp *, CONST char *, int, int, char *))) Tcl_WinUtfToTChar
+#define Tcl_MacOSXOpenVersionedBundleResources (int (*) _ANSI_ARGS_(( \
+ Tcl_Interp *, CONST char *, CONST char *, int, int, char *))) Tcl_WinTCharToUtf
+#define TclMacOSXGetFileAttribute (int (*) _ANSI_ARGS_((Tcl_Interp *, \
+ int, Tcl_Obj *, Tcl_Obj **))) TclpCreateProcess
+#define TclMacOSXMatchType (int (*) _ANSI_ARGS_((Tcl_Interp *, CONST char *, \
+ CONST char *, Tcl_StatBuf *, Tcl_GlobTypeData *))) TclpMakeFile
+#define TclMacOSXNotifierAddRunLoopMode (void (*) _ANSI_ARGS_((CONST void *))) TclpOpenFile
+#define TclpLocaltime_unix (struct tm *(*) _ANSI_ARGS_((TclpTime_t_CONST))) TclGetAndDetachPids
+#define TclpGmtime_unix (struct tm *(*) _ANSI_ARGS_((TclpTime_t_CONST))) TclpCloseFile
#elif !defined(__WIN32__) /* UNIX and MAC */
-# define TclWinConvertError (void (*) (unsigned int)) TclGetAndDetachPids
-# undef TclWinConvertWSAError
-# define TclWinConvertWSAError (void (*) (unsigned int)) TclpCloseFile
+# define TclWinConvertError (void (*) _ANSI_ARGS_((unsigned int))) TclGetAndDetachPids
+# define TclWinConvertWSAError (void (*) _ANSI_ARGS_((unsigned int))) TclpCloseFile
# define TclWinGetPlatformId (int (*)()) TclpCreateTempFile
# define TclWinGetTclInstance (void *(*)()) TclpCreateProcess
# define TclWinNToHS (unsigned short (*) _ANSI_ARGS_((unsigned short ns))) TclpMakeFile
-# define TclWinSetSockOpt (int (*) (void *, int, int, const char *, int)) TclpOpenFile
-# define TclWinGetSockOpt (int (*) (void *, int, int, char *, int *)) TclpCreatePipe
-# define TclWinGetServByName (struct servent *(*) (const char *nm, const char *proto)) TclpCreateCommandChannel
+# define TclWinSetSockOpt (int (*) _ANSI_ARGS_((void *, int, int, CONST char *, int))) TclpOpenFile
+# define TclWinGetSockOpt (int (*) _ANSI_ARGS_((void *, int, int, char *, int *))) TclpCreatePipe
+# define TclWinGetServByName (struct servent *(*) _ANSI_ARGS_((const char *nm, const char *proto))) TclpCreateCommandChannel
# define TclIntPlatReserved13 (void (*) ()) TclpInetNtoa
# define TclWinAddProcess 0
# define TclWinNoBackslash 0
@@ -200,10 +215,10 @@ Tcl_WinTCharToUtf(
# define TclWinFlushDirtyChannels 0
# define TclWinResetInterfaces 0
# define TclpGetPid 0
+# define TclMacOSXGetFileAttribute 0 /* Only implemented in Tcl >= 8.5 */
+# define TclMacOSXMatchType 0 /* Only implemented in Tcl >= 8.5 */
+# define TclMacOSXNotifierAddRunLoopMode 0 /* Only implemented in Tcl >= 8.5 */
# ifndef MAC_OSX_TCL
-# define TclMacOSXMatchType 0
-# define TclMacOSXNotifierAddRunLoopMode 0
-# define TclMacOSXGetFileAttribute 0
# define Tcl_MacOSXOpenBundleResources 0
# define Tcl_MacOSXOpenVersionedBundleResources 0
# endif
@@ -217,125 +232,154 @@ Tcl_WinTCharToUtf(
* below should be made in the generic/tcl.decls script.
*/
-MODULE_SCOPE const TclStubs tclStubs;
-MODULE_SCOPE const TclTomMathStubs tclTomMathStubs;
-
/* !BEGIN!: Do not edit below this line. */
-static const TclIntStubs tclIntStubs = {
+TclIntStubs tclIntStubs = {
TCL_STUB_MAGIC,
- 0,
- 0, /* 0 */
- 0, /* 1 */
- 0, /* 2 */
+ NULL,
+ NULL, /* 0 */
+ TclAccessDeleteProc, /* 1 */
+ TclAccessInsertProc, /* 2 */
TclAllocateFreeObjects, /* 3 */
- 0, /* 4 */
+ NULL, /* 4 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ TclCleanupChildren, /* 5 */
+#endif /* UNIX */
+#ifdef __WIN32__
TclCleanupChildren, /* 5 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 5 */
+#endif /* MAC_TCL */
TclCleanupCommand, /* 6 */
TclCopyAndCollapse, /* 7 */
- TclCopyChannelOld, /* 8 */
+ TclCopyChannel, /* 8 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
TclCreatePipeline, /* 9 */
+#endif /* UNIX */
+#ifdef __WIN32__
+ TclCreatePipeline, /* 9 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 9 */
+#endif /* MAC_TCL */
TclCreateProc, /* 10 */
TclDeleteCompiledLocalVars, /* 11 */
TclDeleteVars, /* 12 */
- 0, /* 13 */
+ TclDoGlob, /* 13 */
TclDumpMemoryInfo, /* 14 */
- 0, /* 15 */
+ NULL, /* 15 */
TclExprFloatError, /* 16 */
- 0, /* 17 */
- 0, /* 18 */
- 0, /* 19 */
- 0, /* 20 */
- 0, /* 21 */
+ NULL, /* 17 */
+ NULL, /* 18 */
+ NULL, /* 19 */
+ NULL, /* 20 */
+ NULL, /* 21 */
TclFindElement, /* 22 */
TclFindProc, /* 23 */
TclFormatInt, /* 24 */
TclFreePackageInfo, /* 25 */
- 0, /* 26 */
- 0, /* 27 */
+ NULL, /* 26 */
+ TclGetDate, /* 27 */
TclpGetDefaultStdChannel, /* 28 */
- 0, /* 29 */
- 0, /* 30 */
+ NULL, /* 29 */
+ NULL, /* 30 */
TclGetExtension, /* 31 */
TclGetFrame, /* 32 */
- 0, /* 33 */
+ TclGetInterpProc, /* 33 */
TclGetIntForIndex, /* 34 */
- 0, /* 35 */
- 0, /* 36 */
+ NULL, /* 35 */
+ TclGetLong, /* 36 */
TclGetLoadedPackages, /* 37 */
TclGetNamespaceForQualName, /* 38 */
TclGetObjInterpProc, /* 39 */
TclGetOpenMode, /* 40 */
TclGetOriginalCommand, /* 41 */
TclpGetUserHome, /* 42 */
- 0, /* 43 */
+ TclGlobalInvoke, /* 43 */
TclGuessPackageName, /* 44 */
TclHideUnsafeCommands, /* 45 */
TclInExit, /* 46 */
- 0, /* 47 */
- 0, /* 48 */
- 0, /* 49 */
+ NULL, /* 47 */
+ NULL, /* 48 */
+ TclIncrVar2, /* 49 */
TclInitCompiledLocals, /* 50 */
TclInterpInit, /* 51 */
- 0, /* 52 */
+ TclInvoke, /* 52 */
TclInvokeObjectCommand, /* 53 */
TclInvokeStringCommand, /* 54 */
TclIsProc, /* 55 */
- 0, /* 56 */
- 0, /* 57 */
+ NULL, /* 56 */
+ NULL, /* 57 */
TclLookupVar, /* 58 */
- 0, /* 59 */
+ NULL, /* 59 */
TclNeedSpace, /* 60 */
TclNewProcBodyObj, /* 61 */
TclObjCommandComplete, /* 62 */
TclObjInterpProc, /* 63 */
TclObjInvoke, /* 64 */
- 0, /* 65 */
- 0, /* 66 */
- 0, /* 67 */
- 0, /* 68 */
+ TclObjInvokeGlobal, /* 65 */
+ TclOpenFileChannelDeleteProc, /* 66 */
+ TclOpenFileChannelInsertProc, /* 67 */
+ NULL, /* 68 */
TclpAlloc, /* 69 */
- 0, /* 70 */
- 0, /* 71 */
- 0, /* 72 */
- 0, /* 73 */
+ NULL, /* 70 */
+ NULL, /* 71 */
+ NULL, /* 72 */
+ NULL, /* 73 */
TclpFree, /* 74 */
TclpGetClicks, /* 75 */
TclpGetSeconds, /* 76 */
TclpGetTime, /* 77 */
- 0, /* 78 */
- 0, /* 79 */
- 0, /* 80 */
+ TclpGetTimeZone, /* 78 */
+ NULL, /* 79 */
+ NULL, /* 80 */
TclpRealloc, /* 81 */
- 0, /* 82 */
- 0, /* 83 */
- 0, /* 84 */
- 0, /* 85 */
- 0, /* 86 */
- 0, /* 87 */
+ NULL, /* 82 */
+ NULL, /* 83 */
+ NULL, /* 84 */
+ NULL, /* 85 */
+ NULL, /* 86 */
+ NULL, /* 87 */
TclPrecTraceProc, /* 88 */
TclPreventAliasLoop, /* 89 */
- 0, /* 90 */
+ NULL, /* 90 */
TclProcCleanupProc, /* 91 */
TclProcCompileProc, /* 92 */
TclProcDeleteProc, /* 93 */
- 0, /* 94 */
- 0, /* 95 */
+ TclProcInterpProc, /* 94 */
+ NULL, /* 95 */
TclRenameCommand, /* 96 */
TclResetShadowedCmdRefs, /* 97 */
TclServiceIdle, /* 98 */
- 0, /* 99 */
- 0, /* 100 */
+ NULL, /* 99 */
+ NULL, /* 100 */
TclSetPreInitScript, /* 101 */
TclSetupEnv, /* 102 */
TclSockGetPort, /* 103 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ TclSockMinimumBuffersOld, /* 104 */
+#endif /* UNIX */
+#ifdef __WIN32__
TclSockMinimumBuffersOld, /* 104 */
- 0, /* 105 */
- 0, /* 106 */
- 0, /* 107 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 104 */
+#endif /* MAC_TCL */
+ NULL, /* 105 */
+ TclStatDeleteProc, /* 106 */
+ TclStatInsertProc, /* 107 */
TclTeardownNamespace, /* 108 */
TclUpdateReturnInfo, /* 109 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
TclSockMinimumBuffers, /* 110 */
+#endif /* UNIX */
+#ifdef __WIN32__
+ TclSockMinimumBuffers, /* 110 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 110 */
+#endif /* MAC_TCL */
Tcl_AddInterpResolvers, /* 111 */
Tcl_AppendExportList, /* 112 */
Tcl_CreateNamespace, /* 113 */
@@ -359,13 +403,13 @@ static const TclIntStubs tclIntStubs = {
Tcl_SetNamespaceResolvers, /* 131 */
TclpHasSockets, /* 132 */
TclpGetDate, /* 133 */
- 0, /* 134 */
- 0, /* 135 */
- 0, /* 136 */
- 0, /* 137 */
+ TclpStrftime, /* 134 */
+ TclpCheckStackSpace, /* 135 */
+ NULL, /* 136 */
+ NULL, /* 137 */
TclGetEnv, /* 138 */
- 0, /* 139 */
- 0, /* 140 */
+ NULL, /* 139 */
+ TclLooksLikeInt, /* 140 */
TclpGetCwd, /* 141 */
TclSetByteCodeFromAny, /* 142 */
TclAddLiteralObj, /* 143 */
@@ -379,115 +423,64 @@ static const TclIntStubs tclIntStubs = {
TclRegExpRangeUniChar, /* 151 */
TclSetLibraryPath, /* 152 */
TclGetLibraryPath, /* 153 */
- 0, /* 154 */
- 0, /* 155 */
+ NULL, /* 154 */
+ NULL, /* 155 */
TclRegError, /* 156 */
TclVarTraceExists, /* 157 */
- 0, /* 158 */
- 0, /* 159 */
- 0, /* 160 */
+ TclSetStartupScriptFileName, /* 158 */
+ TclGetStartupScriptFileName, /* 159 */
+ NULL, /* 160 */
TclChannelTransform, /* 161 */
TclChannelEventScriptInvoker, /* 162 */
TclGetInstructionTable, /* 163 */
TclExpandCodeArray, /* 164 */
TclpSetInitialEncodings, /* 165 */
TclListObjSetElement, /* 166 */
- 0, /* 167 */
- 0, /* 168 */
+ TclSetStartupScriptPath, /* 167 */
+ TclGetStartupScriptPath, /* 168 */
TclpUtfNcmp2, /* 169 */
TclCheckInterpTraces, /* 170 */
TclCheckExecutionTraces, /* 171 */
TclInThreadExit, /* 172 */
TclUniCharMatch, /* 173 */
- 0, /* 174 */
- TclCallVarTraces, /* 175 */
- TclCleanupVar, /* 176 */
- TclVarErrMsg, /* 177 */
- 0, /* 178 */
- 0, /* 179 */
- 0, /* 180 */
- 0, /* 181 */
+ NULL, /* 174 */
+ NULL, /* 175 */
+ NULL, /* 176 */
+ NULL, /* 177 */
+ NULL, /* 178 */
+ NULL, /* 179 */
+ NULL, /* 180 */
+ NULL, /* 181 */
TclpLocaltime, /* 182 */
TclpGmtime, /* 183 */
- 0, /* 184 */
- 0, /* 185 */
- 0, /* 186 */
- 0, /* 187 */
- 0, /* 188 */
- 0, /* 189 */
- 0, /* 190 */
- 0, /* 191 */
- 0, /* 192 */
- 0, /* 193 */
- 0, /* 194 */
- 0, /* 195 */
- 0, /* 196 */
- 0, /* 197 */
- TclObjGetFrame, /* 198 */
- 0, /* 199 */
- TclpObjRemoveDirectory, /* 200 */
- TclpObjCopyDirectory, /* 201 */
- TclpObjCreateDirectory, /* 202 */
- TclpObjDeleteFile, /* 203 */
- TclpObjCopyFile, /* 204 */
- TclpObjRenameFile, /* 205 */
- TclpObjStat, /* 206 */
- TclpObjAccess, /* 207 */
- TclpOpenFileChannel, /* 208 */
- 0, /* 209 */
- 0, /* 210 */
- 0, /* 211 */
- TclpFindExecutable, /* 212 */
- TclGetObjNameOfExecutable, /* 213 */
- TclSetObjNameOfExecutable, /* 214 */
- TclStackAlloc, /* 215 */
- TclStackFree, /* 216 */
- TclPushStackFrame, /* 217 */
- TclPopStackFrame, /* 218 */
- 0, /* 219 */
- 0, /* 220 */
- 0, /* 221 */
- 0, /* 222 */
- 0, /* 223 */
- TclGetPlatform, /* 224 */
- TclTraceDictPath, /* 225 */
- TclObjBeingDeleted, /* 226 */
- TclSetNsPath, /* 227 */
- 0, /* 228 */
- TclPtrMakeUpvar, /* 229 */
- TclObjLookupVar, /* 230 */
- TclGetNamespaceFromObj, /* 231 */
- TclEvalObjEx, /* 232 */
- TclGetSrcInfoForPc, /* 233 */
- TclVarHashCreateVar, /* 234 */
- TclInitVarHashTable, /* 235 */
- 0, /* 236 */
- TclResetCancellation, /* 237 */
- TclNRInterpProc, /* 238 */
- TclNRInterpProcCore, /* 239 */
- TclNRRunCallbacks, /* 240 */
- TclNREvalObjEx, /* 241 */
- TclNREvalObjv, /* 242 */
- TclDbDumpActiveObjects, /* 243 */
- TclGetNamespaceChildTable, /* 244 */
- TclGetNamespaceCommandTable, /* 245 */
- TclInitRewriteEnsemble, /* 246 */
- TclResetRewriteEnsemble, /* 247 */
- TclCopyChannel, /* 248 */
- TclDoubleDigits, /* 249 */
- TclSetSlaveCancelFlags, /* 250 */
+ NULL, /* 184 */
+ NULL, /* 185 */
+ NULL, /* 186 */
+ NULL, /* 187 */
+ NULL, /* 188 */
+ NULL, /* 189 */
+ NULL, /* 190 */
+ NULL, /* 191 */
+ NULL, /* 192 */
+ NULL, /* 193 */
+ NULL, /* 194 */
+ NULL, /* 195 */
+ NULL, /* 196 */
+ NULL, /* 197 */
+ NULL, /* 198 */
+ TclMatchIsTrivial, /* 199 */
};
-static const TclIntPlatStubs tclIntPlatStubs = {
+TclIntPlatStubs tclIntPlatStubs = {
TCL_STUB_MAGIC,
- 0,
-#if !defined(__WIN32__) && !defined(MAC_OSX_TCL) /* UNIX */
+ NULL,
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
TclWinConvertError, /* 0 */
TclWinConvertWSAError, /* 1 */
TclWinGetServByName, /* 2 */
TclWinGetSockOpt, /* 3 */
TclWinGetTclInstance, /* 4 */
- 0, /* 5 */
+ NULL, /* 5 */
TclWinNToHS, /* 6 */
TclWinSetSockOpt, /* 7 */
TclpGetPid, /* 8 */
@@ -496,18 +489,18 @@ static const TclIntPlatStubs tclIntPlatStubs = {
TclpLocaltime_unix, /* 11 */
TclpGmtime_unix, /* 12 */
TclIntPlatReserved13, /* 13 */
- TclUnixCopyFile, /* 14 */
+ NULL, /* 14 */
TclMacOSXGetFileAttribute, /* 15 */
- 0, /* 16 */
- 0, /* 17 */
+ NULL, /* 16 */
+ NULL, /* 17 */
TclMacOSXMatchType, /* 18 */
TclMacOSXNotifierAddRunLoopMode, /* 19 */
TclWinAddProcess, /* 20 */
- 0, /* 21 */
+ NULL, /* 21 */
TclpCreateTempFile, /* 22 */
- 0, /* 23 */
+ NULL, /* 23 */
TclWinNoBackslash, /* 24 */
- 0, /* 25 */
+ NULL, /* 25 */
TclWinSetInterfaces, /* 26 */
TclWinFlushDirtyChannels, /* 27 */
TclWinResetInterfaces, /* 28 */
@@ -522,174 +515,100 @@ static const TclIntPlatStubs tclIntPlatStubs = {
TclpOpenFile, /* 37 */
TclUnixWaitForFile, /* 38 */
#endif /* UNIX */
-#ifdef __WIN32__ /* WIN */
+#ifdef __WIN32__
TclWinConvertError, /* 0 */
TclWinConvertWSAError, /* 1 */
TclWinGetServByName, /* 2 */
TclWinGetSockOpt, /* 3 */
TclWinGetTclInstance, /* 4 */
- 0, /* 5 */
+ NULL, /* 5 */
TclWinNToHS, /* 6 */
TclWinSetSockOpt, /* 7 */
TclpGetPid, /* 8 */
TclWinGetPlatformId, /* 9 */
- 0, /* 10 */
+ NULL, /* 10 */
TclGetAndDetachPids, /* 11 */
TclpCloseFile, /* 12 */
TclpCreateCommandChannel, /* 13 */
TclpCreatePipe, /* 14 */
TclpCreateProcess, /* 15 */
- 0, /* 16 */
- 0, /* 17 */
+ NULL, /* 16 */
+ NULL, /* 17 */
TclpMakeFile, /* 18 */
TclpOpenFile, /* 19 */
TclWinAddProcess, /* 20 */
- 0, /* 21 */
+ NULL, /* 21 */
TclpCreateTempFile, /* 22 */
- 0, /* 23 */
+ TclpGetTZName, /* 23 */
TclWinNoBackslash, /* 24 */
- 0, /* 25 */
+ TclWinGetPlatform, /* 25 */
TclWinSetInterfaces, /* 26 */
TclWinFlushDirtyChannels, /* 27 */
TclWinResetInterfaces, /* 28 */
TclWinCPUID, /* 29 */
-#endif /* WIN */
-#ifdef MAC_OSX_TCL /* MACOSX */
- TclWinConvertError, /* 0 */
- TclWinConvertWSAError, /* 1 */
- TclWinGetServByName, /* 2 */
- TclWinGetSockOpt, /* 3 */
- TclWinGetTclInstance, /* 4 */
- 0, /* 5 */
- TclWinNToHS, /* 6 */
- TclWinSetSockOpt, /* 7 */
- TclpGetPid, /* 8 */
- TclWinGetPlatformId, /* 9 */
- TclpReaddir, /* 10 */
- TclpLocaltime_unix, /* 11 */
- TclpGmtime_unix, /* 12 */
- TclIntPlatReserved13, /* 13 */
- TclUnixCopyFile, /* 14 */
- TclMacOSXGetFileAttribute, /* 15 */
- TclMacOSXSetFileAttribute, /* 16 */
- TclMacOSXCopyFileAttributes, /* 17 */
- TclMacOSXMatchType, /* 18 */
- TclMacOSXNotifierAddRunLoopMode, /* 19 */
- TclWinAddProcess, /* 20 */
- 0, /* 21 */
- TclpCreateTempFile, /* 22 */
- 0, /* 23 */
- TclWinNoBackslash, /* 24 */
- 0, /* 25 */
- TclWinSetInterfaces, /* 26 */
- TclWinFlushDirtyChannels, /* 27 */
- TclWinResetInterfaces, /* 28 */
- TclWinCPUID, /* 29 */
- TclGetAndDetachPids, /* 30 */
- TclpCloseFile, /* 31 */
- TclpCreateCommandChannel, /* 32 */
- TclpCreatePipe, /* 33 */
- TclpCreateProcess, /* 34 */
- TclpInetNtoa, /* 35 */
- TclpMakeFile, /* 36 */
- TclpOpenFile, /* 37 */
- TclUnixWaitForFile, /* 38 */
-#endif /* MACOSX */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ TclpSysAlloc, /* 0 */
+ TclpSysFree, /* 1 */
+ TclpSysRealloc, /* 2 */
+ TclpExit, /* 3 */
+ FSpGetDefaultDir, /* 4 */
+ FSpSetDefaultDir, /* 5 */
+ FSpFindFolder, /* 6 */
+ GetGlobalMouseTcl, /* 7 */
+ FSpGetDirectoryIDTcl, /* 8 */
+ FSpOpenResFileCompatTcl, /* 9 */
+ FSpCreateResFileCompatTcl, /* 10 */
+ FSpLocationFromPath, /* 11 */
+ FSpPathFromLocation, /* 12 */
+ TclMacExitHandler, /* 13 */
+ TclMacInitExitToShell, /* 14 */
+ TclMacInstallExitToShellPatch, /* 15 */
+ TclMacOSErrorToPosixError, /* 16 */
+ TclMacRemoveTimer, /* 17 */
+ TclMacStartTimer, /* 18 */
+ TclMacTimerExpired, /* 19 */
+ TclMacRegisterResourceFork, /* 20 */
+ TclMacUnRegisterResourceFork, /* 21 */
+ TclMacCreateEnv, /* 22 */
+ TclMacFOpenHack, /* 23 */
+ TclpGetTZName, /* 24 */
+ TclMacChmod, /* 25 */
+ FSpLLocationFromPath, /* 26 */
+#endif /* MAC_TCL */
};
-static const TclPlatStubs tclPlatStubs = {
+TclPlatStubs tclPlatStubs = {
TCL_STUB_MAGIC,
- 0,
-#if !defined(__WIN32__) && !defined(MAC_OSX_TCL) /* UNIX */
+ NULL,
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
Tcl_MacOSXOpenBundleResources, /* 0 */
Tcl_MacOSXOpenVersionedBundleResources, /* 1 */
#endif /* UNIX */
-#ifdef __WIN32__ /* WIN */
+#ifdef __WIN32__
Tcl_WinUtfToTChar, /* 0 */
Tcl_WinTCharToUtf, /* 1 */
-#endif /* WIN */
-#ifdef MAC_OSX_TCL /* MACOSX */
- Tcl_MacOSXOpenBundleResources, /* 0 */
- Tcl_MacOSXOpenVersionedBundleResources, /* 1 */
-#endif /* MACOSX */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ Tcl_MacSetEventProc, /* 0 */
+ Tcl_MacConvertTextResource, /* 1 */
+ Tcl_MacEvalResource, /* 2 */
+ Tcl_MacFindResource, /* 3 */
+ Tcl_GetOSTypeFromObj, /* 4 */
+ Tcl_SetOSTypeObj, /* 5 */
+ Tcl_NewOSTypeObj, /* 6 */
+ strncasecmp, /* 7 */
+ strcasecmp, /* 8 */
+#endif /* MAC_TCL */
};
-const TclTomMathStubs tclTomMathStubs = {
- TCL_STUB_MAGIC,
- 0,
- TclBN_epoch, /* 0 */
- TclBN_revision, /* 1 */
- TclBN_mp_add, /* 2 */
- TclBN_mp_add_d, /* 3 */
- TclBN_mp_and, /* 4 */
- TclBN_mp_clamp, /* 5 */
- TclBN_mp_clear, /* 6 */
- TclBN_mp_clear_multi, /* 7 */
- TclBN_mp_cmp, /* 8 */
- TclBN_mp_cmp_d, /* 9 */
- TclBN_mp_cmp_mag, /* 10 */
- TclBN_mp_copy, /* 11 */
- TclBN_mp_count_bits, /* 12 */
- TclBN_mp_div, /* 13 */
- TclBN_mp_div_d, /* 14 */
- TclBN_mp_div_2, /* 15 */
- TclBN_mp_div_2d, /* 16 */
- TclBN_mp_div_3, /* 17 */
- TclBN_mp_exch, /* 18 */
- TclBN_mp_expt_d, /* 19 */
- TclBN_mp_grow, /* 20 */
- TclBN_mp_init, /* 21 */
- TclBN_mp_init_copy, /* 22 */
- TclBN_mp_init_multi, /* 23 */
- TclBN_mp_init_set, /* 24 */
- TclBN_mp_init_size, /* 25 */
- TclBN_mp_lshd, /* 26 */
- TclBN_mp_mod, /* 27 */
- TclBN_mp_mod_2d, /* 28 */
- TclBN_mp_mul, /* 29 */
- TclBN_mp_mul_d, /* 30 */
- TclBN_mp_mul_2, /* 31 */
- TclBN_mp_mul_2d, /* 32 */
- TclBN_mp_neg, /* 33 */
- TclBN_mp_or, /* 34 */
- TclBN_mp_radix_size, /* 35 */
- TclBN_mp_read_radix, /* 36 */
- TclBN_mp_rshd, /* 37 */
- TclBN_mp_shrink, /* 38 */
- TclBN_mp_set, /* 39 */
- TclBN_mp_sqr, /* 40 */
- TclBN_mp_sqrt, /* 41 */
- TclBN_mp_sub, /* 42 */
- TclBN_mp_sub_d, /* 43 */
- TclBN_mp_to_unsigned_bin, /* 44 */
- TclBN_mp_to_unsigned_bin_n, /* 45 */
- TclBN_mp_toradix_n, /* 46 */
- TclBN_mp_unsigned_bin_size, /* 47 */
- TclBN_mp_xor, /* 48 */
- TclBN_mp_zero, /* 49 */
- TclBN_reverse, /* 50 */
- TclBN_fast_s_mp_mul_digs, /* 51 */
- TclBN_fast_s_mp_sqr, /* 52 */
- TclBN_mp_karatsuba_mul, /* 53 */
- TclBN_mp_karatsuba_sqr, /* 54 */
- TclBN_mp_toom_mul, /* 55 */
- TclBN_mp_toom_sqr, /* 56 */
- TclBN_s_mp_add, /* 57 */
- TclBN_s_mp_mul_digs, /* 58 */
- TclBN_s_mp_sqr, /* 59 */
- TclBN_s_mp_sub, /* 60 */
- TclBN_mp_init_set_int, /* 61 */
- TclBN_mp_set_int, /* 62 */
- TclBN_mp_cnt_lsb, /* 63 */
-};
-
-static const TclStubHooks tclStubHooks = {
+static TclStubHooks tclStubHooks = {
&tclPlatStubs,
&tclIntStubs,
&tclIntPlatStubs
};
-const TclStubs tclStubs = {
+TclStubs tclStubs = {
TCL_STUB_MAGIC,
&tclStubHooks,
Tcl_PkgProvideEx, /* 0 */
@@ -701,24 +620,24 @@ const TclStubs tclStubs = {
Tcl_DbCkalloc, /* 6 */
Tcl_DbCkfree, /* 7 */
Tcl_DbCkrealloc, /* 8 */
-#if !defined(__WIN32__) && !defined(MAC_OSX_TCL) /* UNIX */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
Tcl_CreateFileHandler, /* 9 */
#endif /* UNIX */
-#ifdef __WIN32__ /* WIN */
- 0, /* 9 */
-#endif /* WIN */
-#ifdef MAC_OSX_TCL /* MACOSX */
- Tcl_CreateFileHandler, /* 9 */
-#endif /* MACOSX */
-#if !defined(__WIN32__) && !defined(MAC_OSX_TCL) /* UNIX */
+#ifdef __WIN32__
+ NULL, /* 9 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 9 */
+#endif /* MAC_TCL */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
Tcl_DeleteFileHandler, /* 10 */
#endif /* UNIX */
-#ifdef __WIN32__ /* WIN */
- 0, /* 10 */
-#endif /* WIN */
-#ifdef MAC_OSX_TCL /* MACOSX */
- Tcl_DeleteFileHandler, /* 10 */
-#endif /* MACOSX */
+#ifdef __WIN32__
+ NULL, /* 10 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 10 */
+#endif /* MAC_TCL */
Tcl_SetTimer, /* 11 */
Tcl_Sleep, /* 12 */
Tcl_WaitForEvent, /* 13 */
@@ -819,7 +738,15 @@ const TclStubs tclStubs = {
Tcl_DeleteHashEntry, /* 108 */
Tcl_DeleteHashTable, /* 109 */
Tcl_DeleteInterp, /* 110 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ Tcl_DetachPids, /* 111 */
+#endif /* UNIX */
+#ifdef __WIN32__
Tcl_DetachPids, /* 111 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 111 */
+#endif /* MAC_TCL */
Tcl_DeleteTimerHandler, /* 112 */
Tcl_DeleteTrace, /* 113 */
Tcl_DontCallWhenDeleted, /* 114 */
@@ -875,15 +802,15 @@ const TclStubs tclStubs = {
Tcl_GetMaster, /* 164 */
Tcl_GetNameOfExecutable, /* 165 */
Tcl_GetObjResult, /* 166 */
-#if !defined(__WIN32__) && !defined(MAC_OSX_TCL) /* UNIX */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
Tcl_GetOpenFile, /* 167 */
#endif /* UNIX */
-#ifdef __WIN32__ /* WIN */
- 0, /* 167 */
-#endif /* WIN */
-#ifdef MAC_OSX_TCL /* MACOSX */
- Tcl_GetOpenFile, /* 167 */
-#endif /* MACOSX */
+#ifdef __WIN32__
+ NULL, /* 167 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 167 */
+#endif /* MAC_TCL */
Tcl_GetPathType, /* 168 */
Tcl_Gets, /* 169 */
Tcl_GetsObj, /* 170 */
@@ -904,7 +831,7 @@ const TclStubs tclStubs = {
Tcl_IsSafe, /* 185 */
Tcl_JoinPath, /* 186 */
Tcl_LinkVar, /* 187 */
- 0, /* 188 */
+ NULL, /* 188 */
Tcl_MakeFileChannel, /* 189 */
Tcl_MakeSafe, /* 190 */
Tcl_MakeTcpClientChannel, /* 191 */
@@ -913,7 +840,15 @@ const TclStubs tclStubs = {
Tcl_NotifyChannel, /* 194 */
Tcl_ObjGetVar2, /* 195 */
Tcl_ObjSetVar2, /* 196 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
Tcl_OpenCommandChannel, /* 197 */
+#endif /* UNIX */
+#ifdef __WIN32__
+ Tcl_OpenCommandChannel, /* 197 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 197 */
+#endif /* MAC_TCL */
Tcl_OpenFileChannel, /* 198 */
Tcl_OpenTcpClient, /* 199 */
Tcl_OpenTcpServer, /* 200 */
@@ -923,7 +858,15 @@ const TclStubs tclStubs = {
Tcl_PosixError, /* 204 */
Tcl_QueueEvent, /* 205 */
Tcl_Read, /* 206 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ Tcl_ReapDetachedProcs, /* 207 */
+#endif /* UNIX */
+#ifdef __WIN32__
Tcl_ReapDetachedProcs, /* 207 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
+ NULL, /* 207 */
+#endif /* MAC_TCL */
Tcl_RecordAndEval, /* 208 */
Tcl_RecordAndEvalObj, /* 209 */
Tcl_RegisterChannel, /* 210 */
@@ -1001,7 +944,7 @@ const TclStubs tclStubs = {
Tcl_UnstackChannel, /* 282 */
Tcl_GetStackedChannel, /* 283 */
Tcl_SetMainLoop, /* 284 */
- 0, /* 285 */
+ NULL, /* 285 */
Tcl_AppendObjToObj, /* 286 */
Tcl_CreateEncoding, /* 287 */
Tcl_CreateThreadExitHandler, /* 288 */
@@ -1210,142 +1153,86 @@ const TclStubs tclStubs = {
Tcl_Seek, /* 491 */
Tcl_Tell, /* 492 */
Tcl_ChannelWideSeekProc, /* 493 */
- Tcl_DictObjPut, /* 494 */
- Tcl_DictObjGet, /* 495 */
- Tcl_DictObjRemove, /* 496 */
- Tcl_DictObjSize, /* 497 */
- Tcl_DictObjFirst, /* 498 */
- Tcl_DictObjNext, /* 499 */
- Tcl_DictObjDone, /* 500 */
- Tcl_DictObjPutKeyList, /* 501 */
- Tcl_DictObjRemoveKeyList, /* 502 */
- Tcl_NewDictObj, /* 503 */
- Tcl_DbNewDictObj, /* 504 */
- Tcl_RegisterConfig, /* 505 */
- Tcl_CreateNamespace, /* 506 */
- Tcl_DeleteNamespace, /* 507 */
- Tcl_AppendExportList, /* 508 */
- Tcl_Export, /* 509 */
- Tcl_Import, /* 510 */
- Tcl_ForgetImport, /* 511 */
- Tcl_GetCurrentNamespace, /* 512 */
- Tcl_GetGlobalNamespace, /* 513 */
- Tcl_FindNamespace, /* 514 */
- Tcl_FindCommand, /* 515 */
- Tcl_GetCommandFromObj, /* 516 */
- Tcl_GetCommandFullName, /* 517 */
- Tcl_FSEvalFileEx, /* 518 */
- Tcl_SetExitProc, /* 519 */
- Tcl_LimitAddHandler, /* 520 */
- Tcl_LimitRemoveHandler, /* 521 */
- Tcl_LimitReady, /* 522 */
- Tcl_LimitCheck, /* 523 */
- Tcl_LimitExceeded, /* 524 */
- Tcl_LimitSetCommands, /* 525 */
- Tcl_LimitSetTime, /* 526 */
- Tcl_LimitSetGranularity, /* 527 */
- Tcl_LimitTypeEnabled, /* 528 */
- Tcl_LimitTypeExceeded, /* 529 */
- Tcl_LimitTypeSet, /* 530 */
- Tcl_LimitTypeReset, /* 531 */
- Tcl_LimitGetCommands, /* 532 */
- Tcl_LimitGetTime, /* 533 */
- Tcl_LimitGetGranularity, /* 534 */
- Tcl_SaveInterpState, /* 535 */
- Tcl_RestoreInterpState, /* 536 */
- Tcl_DiscardInterpState, /* 537 */
- Tcl_SetReturnOptions, /* 538 */
- Tcl_GetReturnOptions, /* 539 */
- Tcl_IsEnsemble, /* 540 */
- Tcl_CreateEnsemble, /* 541 */
- Tcl_FindEnsemble, /* 542 */
- Tcl_SetEnsembleSubcommandList, /* 543 */
- Tcl_SetEnsembleMappingDict, /* 544 */
- Tcl_SetEnsembleUnknownHandler, /* 545 */
- Tcl_SetEnsembleFlags, /* 546 */
- Tcl_GetEnsembleSubcommandList, /* 547 */
- Tcl_GetEnsembleMappingDict, /* 548 */
- Tcl_GetEnsembleUnknownHandler, /* 549 */
- Tcl_GetEnsembleFlags, /* 550 */
- Tcl_GetEnsembleNamespace, /* 551 */
- Tcl_SetTimeProc, /* 552 */
- Tcl_QueryTimeProc, /* 553 */
+ NULL, /* 494 */
+ NULL, /* 495 */
+ NULL, /* 496 */
+ NULL, /* 497 */
+ NULL, /* 498 */
+ NULL, /* 499 */
+ NULL, /* 500 */
+ NULL, /* 501 */
+ NULL, /* 502 */
+ NULL, /* 503 */
+ NULL, /* 504 */
+ NULL, /* 505 */
+ NULL, /* 506 */
+ NULL, /* 507 */
+ NULL, /* 508 */
+ NULL, /* 509 */
+ NULL, /* 510 */
+ NULL, /* 511 */
+ NULL, /* 512 */
+ NULL, /* 513 */
+ NULL, /* 514 */
+ NULL, /* 515 */
+ NULL, /* 516 */
+ NULL, /* 517 */
+ NULL, /* 518 */
+ NULL, /* 519 */
+ NULL, /* 520 */
+ NULL, /* 521 */
+ NULL, /* 522 */
+ NULL, /* 523 */
+ NULL, /* 524 */
+ NULL, /* 525 */
+ NULL, /* 526 */
+ NULL, /* 527 */
+ NULL, /* 528 */
+ NULL, /* 529 */
+ NULL, /* 530 */
+ NULL, /* 531 */
+ NULL, /* 532 */
+ NULL, /* 533 */
+ NULL, /* 534 */
+ NULL, /* 535 */
+ NULL, /* 536 */
+ NULL, /* 537 */
+ NULL, /* 538 */
+ NULL, /* 539 */
+ NULL, /* 540 */
+ NULL, /* 541 */
+ NULL, /* 542 */
+ NULL, /* 543 */
+ NULL, /* 544 */
+ NULL, /* 545 */
+ NULL, /* 546 */
+ NULL, /* 547 */
+ NULL, /* 548 */
+ NULL, /* 549 */
+ NULL, /* 550 */
+ NULL, /* 551 */
+ NULL, /* 552 */
+ NULL, /* 553 */
Tcl_ChannelThreadActionProc, /* 554 */
- Tcl_NewBignumObj, /* 555 */
- Tcl_DbNewBignumObj, /* 556 */
- Tcl_SetBignumObj, /* 557 */
- Tcl_GetBignumFromObj, /* 558 */
- Tcl_TakeBignumFromObj, /* 559 */
- Tcl_TruncateChannel, /* 560 */
- Tcl_ChannelTruncateProc, /* 561 */
- Tcl_SetChannelErrorInterp, /* 562 */
- Tcl_GetChannelErrorInterp, /* 563 */
- Tcl_SetChannelError, /* 564 */
- Tcl_GetChannelError, /* 565 */
- Tcl_InitBignumFromDouble, /* 566 */
- Tcl_GetNamespaceUnknownHandler, /* 567 */
- Tcl_SetNamespaceUnknownHandler, /* 568 */
- Tcl_GetEncodingFromObj, /* 569 */
- Tcl_GetEncodingSearchPath, /* 570 */
- Tcl_SetEncodingSearchPath, /* 571 */
- Tcl_GetEncodingNameFromEnvironment, /* 572 */
+ NULL, /* 555 */
+ NULL, /* 556 */
+ NULL, /* 557 */
+ NULL, /* 558 */
+ NULL, /* 559 */
+ NULL, /* 560 */
+ NULL, /* 561 */
+ NULL, /* 562 */
+ NULL, /* 563 */
+ NULL, /* 564 */
+ NULL, /* 565 */
+ NULL, /* 566 */
+ NULL, /* 567 */
+ NULL, /* 568 */
+ NULL, /* 569 */
+ NULL, /* 570 */
+ NULL, /* 571 */
+ NULL, /* 572 */
Tcl_PkgRequireProc, /* 573 */
- Tcl_AppendObjToErrorInfo, /* 574 */
- Tcl_AppendLimitedToObj, /* 575 */
- Tcl_Format, /* 576 */
- Tcl_AppendFormatToObj, /* 577 */
- Tcl_ObjPrintf, /* 578 */
- Tcl_AppendPrintfToObj, /* 579 */
- Tcl_CancelEval, /* 580 */
- Tcl_Canceled, /* 581 */
- Tcl_CreatePipe, /* 582 */
- Tcl_NRCreateCommand, /* 583 */
- Tcl_NREvalObj, /* 584 */
- Tcl_NREvalObjv, /* 585 */
- Tcl_NRCmdSwap, /* 586 */
- Tcl_NRAddCallback, /* 587 */
- Tcl_NRCallObjProc, /* 588 */
- Tcl_GetFSDeviceFromStat, /* 589 */
- Tcl_GetFSInodeFromStat, /* 590 */
- Tcl_GetModeFromStat, /* 591 */
- Tcl_GetLinkCountFromStat, /* 592 */
- Tcl_GetUserIdFromStat, /* 593 */
- Tcl_GetGroupIdFromStat, /* 594 */
- Tcl_GetDeviceTypeFromStat, /* 595 */
- Tcl_GetAccessTimeFromStat, /* 596 */
- Tcl_GetModificationTimeFromStat, /* 597 */
- Tcl_GetChangeTimeFromStat, /* 598 */
- Tcl_GetSizeFromStat, /* 599 */
- Tcl_GetBlocksFromStat, /* 600 */
- Tcl_GetBlockSizeFromStat, /* 601 */
- Tcl_SetEnsembleParameterList, /* 602 */
- Tcl_GetEnsembleParameterList, /* 603 */
- Tcl_ParseArgsObjv, /* 604 */
- Tcl_GetErrorLine, /* 605 */
- Tcl_SetErrorLine, /* 606 */
- Tcl_TransferResult, /* 607 */
- Tcl_InterpActive, /* 608 */
- Tcl_BackgroundException, /* 609 */
- Tcl_ZlibDeflate, /* 610 */
- Tcl_ZlibInflate, /* 611 */
- Tcl_ZlibCRC32, /* 612 */
- Tcl_ZlibAdler32, /* 613 */
- Tcl_ZlibStreamInit, /* 614 */
- Tcl_ZlibStreamGetCommandName, /* 615 */
- Tcl_ZlibStreamEof, /* 616 */
- Tcl_ZlibStreamChecksum, /* 617 */
- Tcl_ZlibStreamPut, /* 618 */
- Tcl_ZlibStreamGet, /* 619 */
- Tcl_ZlibStreamClose, /* 620 */
- Tcl_ZlibStreamReset, /* 621 */
- Tcl_SetStartupScript, /* 622 */
- Tcl_GetStartupScript, /* 623 */
- Tcl_CloseEx, /* 624 */
- Tcl_NRExprObj, /* 625 */
- Tcl_NRSubstObj, /* 626 */
- Tcl_LoadFile, /* 627 */
- Tcl_FindSymbol, /* 628 */
- Tcl_FSUnloadFile, /* 629 */
};
/* !END!: Do not edit above this line. */