diff options
| -rw-r--r-- | generic/tclDecls.h | 24 | ||||
| -rw-r--r-- | generic/tclFCmd.c | 2 | ||||
| -rw-r--r-- | generic/tclTest.c | 27 | ||||
| -rw-r--r-- | generic/tclTestObj.c | 2 | ||||
| -rw-r--r-- | generic/tclThreadTest.c | 3 | ||||
| -rw-r--r-- | generic/tclTrace.c | 3 | ||||
| -rw-r--r-- | win/rules.vc | 16 | ||||
| -rw-r--r-- | win/tclWinDde.c | 3 | ||||
| -rw-r--r-- | win/tclWinReg.c | 2 |
9 files changed, 53 insertions, 29 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h index caf3ce6..dad9c05 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -4020,26 +4020,23 @@ extern const TclStubs *tclStubsPtr; Tcl_GetStringFromObj(objPtr, (Tcl_Size *)NULL) #define Tcl_GetUnicode(objPtr) \ Tcl_GetUnicodeFromObj(objPtr, (Tcl_Size *)NULL) -#if defined(TCL_8_API) +#if defined(TCL_8_API) || TCL_MAJOR_VERSION == 8 # undef Tcl_GetBytesFromObj -# undef Tcl_GetIndexFromObjStruct # undef Tcl_GetStringFromObj # undef Tcl_GetUnicodeFromObj #endif +#undef Tcl_GetIndexFromObjStruct #undef TclGetByteArrayFromObj #undef Tcl_GetByteArrayFromObj #undef Tcl_GetBooleanFromObj #undef Tcl_GetBoolean #if defined(USE_TCL_STUBS) -# if defined(TCL_8_API) +# if defined(TCL_8_API) || TCL_MAJOR_VERSION == 8 # define Tcl_GetBytesFromObj(interp, objPtr, sizePtr) \ (sizeof(*(sizePtr)) <= sizeof(int) ? \ tclStubsPtr->tclGetBytesFromObj(interp, objPtr, (int *)(void *)(sizePtr)) : \ tclStubsPtr->tcl_GetBytesFromObj(interp, objPtr, (size_t *)(void *)(sizePtr))) -# define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \ - (tclStubsPtr->tcl_GetIndexFromObjStruct((interp), (objPtr), (tablePtr), (offset), (msg), \ - (flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr))) # define Tcl_GetStringFromObj(objPtr, sizePtr) \ (sizeof(*(sizePtr)) <= sizeof(int) ? \ tclStubsPtr->tclGetStringFromObj(objPtr, (int *)(void *)(sizePtr)) : \ @@ -4068,6 +4065,9 @@ extern const TclStubs *tclStubsPtr; tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (size_t *)(void *)(sizePtr)) # endif /* TCL_MAJOR_VERSION > 8 */ # endif +# define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \ + (tclStubsPtr->tcl_GetIndexFromObjStruct((interp), (objPtr), (tablePtr), (offset), (msg), \ + (flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr))) # define Tcl_GetBooleanFromObj(interp, objPtr, boolPtr) \ ((sizeof(*(boolPtr)) == sizeof(int) && (TCL_MAJOR_VERSION == 8)) ? tclStubsPtr->tcl_GetBooleanFromObj(interp, objPtr, (int *)(boolPtr)) : \ Tcl_GetBoolFromObj(interp, objPtr, (TCL_NULL_OK-2)&(int)sizeof((*(boolPtr))), (char *)(boolPtr))) @@ -4075,14 +4075,11 @@ extern const TclStubs *tclStubsPtr; ((sizeof(*(boolPtr)) == sizeof(int) && (TCL_MAJOR_VERSION == 8)) ? tclStubsPtr->tcl_GetBoolean(interp, src, (int *)(boolPtr)) : \ Tcl_GetBool(interp, src, (TCL_NULL_OK-2)&(int)sizeof((*(boolPtr))), (char *)(boolPtr))) #else -# if defined(TCL_8_API) +# if defined(TCL_8_API) || TCL_MAJOR_VERSION == 8 # define Tcl_GetBytesFromObj(interp, objPtr, sizePtr) \ (sizeof(*(sizePtr)) <= sizeof(int) ? \ TclGetBytesFromObj(interp, objPtr, (int *)(void *)(sizePtr)) : \ (Tcl_GetBytesFromObj)(interp, objPtr, (size_t *)(void *)(sizePtr))) -# define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \ - ((Tcl_GetIndexFromObjStruct)((interp), (objPtr), (tablePtr), (offset), (msg), \ - (flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr))) # define Tcl_GetStringFromObj(objPtr, sizePtr) \ (sizeof(*(sizePtr)) <= sizeof(int) ? \ TclGetStringFromObj(objPtr, (int *)(void *)(sizePtr)) : \ @@ -4099,6 +4096,9 @@ extern const TclStubs *tclStubsPtr; # define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \ Tcl_GetBytesFromObj(NULL, objPtr, (size_t *)(void *)(sizePtr)) # endif /* TCL_8_API */ +# define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \ + ((Tcl_GetIndexFromObjStruct)((interp), (objPtr), (tablePtr), (offset), (msg), \ + (flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr))) # define Tcl_GetBooleanFromObj(interp, objPtr, boolPtr) \ ((sizeof(*(boolPtr)) == sizeof(int) && (TCL_MAJOR_VERSION == 8)) ? Tcl_GetBooleanFromObj(interp, objPtr, (int *)(boolPtr)) : \ Tcl_GetBoolFromObj(interp, objPtr, (TCL_NULL_OK-2)&(int)sizeof((*(boolPtr))), (char *)(boolPtr))) @@ -4176,7 +4176,7 @@ extern const TclStubs *tclStubsPtr; # define Tcl_WCharLen (sizeof(wchar_t) != sizeof(short) \ ? (Tcl_Size (*)(wchar_t *))tclStubsPtr->tcl_UniCharLen \ : (Tcl_Size (*)(wchar_t *))Tcl_Char16Len) -#if defined(TCL_8_API) +#if defined(TCL_8_API) || TCL_MAJOR_VERSION == 8 # undef Tcl_ListObjGetElements # define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*(objcPtr)) == sizeof(int) \ ? tclStubsPtr->tclListObjGetElements((interp), (listPtr), (int *)(void *)(objcPtr), (objvPtr)) \ @@ -4220,7 +4220,7 @@ extern const TclStubs *tclStubsPtr; ? (Tcl_Size (*)(wchar_t *))Tcl_UniCharLen \ : (Tcl_Size (*)(wchar_t *))Tcl_Char16Len) #if !defined(BUILD_tcl) -#if defined(TCL_8_API) +#if defined(TCL_8_API) || TCL_MAJOR_VERSION == 8 # define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*(objcPtr)) == sizeof(int) \ ? TclListObjGetElements((interp), (listPtr), (int *)(void *)(objcPtr), (objvPtr)) \ : (Tcl_ListObjGetElements)((interp), (listPtr), (size_t *)(void *)(objcPtr), (objvPtr))) diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c index a34e80a..d26eb9c 100644 --- a/generic/tclFCmd.c +++ b/generic/tclFCmd.c @@ -1533,7 +1533,7 @@ TclFileTempDirCmd( } if (objc > 1) { - int length; + Tcl_Size length; Tcl_Obj *templateObj = objv[1]; const char *string = Tcl_GetStringFromObj(templateObj, &length); const int onWindows = (tclPlatform == TCL_PLATFORM_WINDOWS); diff --git a/generic/tclTest.c b/generic/tclTest.c index e42d5e6..d829640 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -2028,7 +2028,7 @@ static int UtfExtWrapper( int result; int flags; Tcl_Obj **flagObjs; - int nflags; + Tcl_Size nflags; static const struct { const char *flagKey; int flag; @@ -2043,7 +2043,7 @@ static int UtfExtWrapper( {"profilereplace", TCL_ENCODING_PROFILE_REPLACE}, {NULL, 0} }; - int i; + Tcl_Size i; Tcl_WideInt wide; if (objc < 7 || objc > 10) { @@ -2418,7 +2418,8 @@ TestevalexObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - int length, flags; + int flags; + Tcl_Size length; const char *script; flags = 0; @@ -3656,7 +3657,8 @@ TestlinkarrayCmd( TCL_LINK_FLOAT, TCL_LINK_DOUBLE, TCL_LINK_STRING, TCL_LINK_CHARS, TCL_LINK_BINARY }; - int typeIndex, readonly, i, size, length; + int typeIndex, readonly, i, size; + Tcl_Size length; char *name, *arg; Tcl_WideInt addr; @@ -4001,7 +4003,8 @@ TestparserObjCmd( Tcl_Obj *const objv[]) /* The argument objects. */ { const char *script; - int length, dummy; + Tcl_Size dummy; + int length; Tcl_Parse parse; if (objc != 3) { @@ -4057,7 +4060,8 @@ TestexprparserObjCmd( Tcl_Obj *const objv[]) /* The argument objects. */ { const char *script; - int length, dummy; + Tcl_Size dummy; + int length; Tcl_Parse parse; if (objc != 3) { @@ -4246,7 +4250,8 @@ TestparsevarnameObjCmd( Tcl_Obj *const objv[]) /* The argument objects. */ { const char *script; - int append, length, dummy; + int length, append; + Tcl_Size dummy; Tcl_Parse parse; if (objc != 4) { @@ -4379,8 +4384,8 @@ TestregexpObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - int i, indices, stringLength, match, about; - Tcl_Size ii; + int i, indices, match, about; + Tcl_Size stringLength, ii; int hasxflags, cflags, eflags; Tcl_RegExp regExpr; const char *string; @@ -5533,7 +5538,7 @@ TeststringbytesObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* The argument objects. */ { - int n; + Tcl_Size n; const unsigned char *p; if (objc != 2) { @@ -7269,7 +7274,7 @@ static Tcl_Obj * SimpleRedirect( Tcl_Obj *pathPtr) /* Name of file to copy. */ { - int len; + Tcl_Size len; const char *str; Tcl_Obj *origPtr; diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index b24c639..26d33ce 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -899,7 +899,7 @@ TestlistobjCmd( Tcl_Size first; /* First index in the list */ Tcl_Size count; /* Count of elements in a list */ Tcl_Obj **varPtr; - int i, len; + Tcl_Size i, len; if (objc < 3) { Tcl_WrongNumArgs(interp, 1, objv, "option arg ?arg...?"); diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c index a5b079a..484c4e4 100644 --- a/generic/tclThreadTest.c +++ b/generic/tclThreadTest.c @@ -272,7 +272,8 @@ ThreadObjCmd( } case THREAD_CREATE: { const char *script; - int joinable, len; + int joinable; + Tcl_Size len; if (objc == 2) { /* diff --git a/generic/tclTrace.c b/generic/tclTrace.c index daeb424..4403562 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -269,7 +269,8 @@ Tcl_TraceObjCmd( case TRACE_OLD_VDELETE: { Tcl_Obj *copyObjv[6]; Tcl_Obj *opsList; - int code, numFlags; + int code; + Tcl_Size numFlags; if (objc != 5) { Tcl_WrongNumArgs(interp, 2, objv, "name ops command"); diff --git a/win/rules.vc b/win/rules.vc index 0dd6ef2..4ab549d 100644 --- a/win/rules.vc +++ b/win/rules.vc @@ -817,11 +817,14 @@ DOTSEPARATED=$(DOTSEPARATED:b=.) # _USE_64BIT_TIME_T - forces a build using 64-bit time_t for 32-bit build
# (CRT library should support this, not needed for Tcl 9.x)
# TCL_UTF_MAX=3 - forces a build using UTF-16 internally (not recommended).
+# TCL_8_API - 0 -> Tcl 8 compatible API is disabled
+# 1 -> Tcl 8 API enabled (default)
# Further, LINKERFLAGS are modified based on above.
# Default values for all the above
STATIC_BUILD = 0
TCL_THREADS = 1
+TCL_8_API = 1
DEBUG = 0
SYMBOLS = 0
PROFILE = 0
@@ -877,10 +880,19 @@ TCL_THREADS = 0 USE_THREAD_ALLOC= 0
!endif
+!if [nmakehlp -f $(OPTS) "notcl8api"]
+!message *** Disable Tcl 8 API compatibility macros
+TCL_8_API = 0
+!endif
+
+# NOTE: THIS MUST COME AFTER THE notcl8api CHECK ABOVE because the "-f" option
+# does *substring* checks, not exact checks so "tcl8" will match "notcl8api" as well.
+!if $(TCL_8_API)
!if [nmakehlp -f $(OPTS) "tcl8"]
!message *** Build for Tcl8
TCL_BUILD_FOR = 8
!endif
+!endif
!if $(TCL_MAJOR_VERSION) == 8
!if [nmakehlp -f $(OPTS) "time64bit"]
@@ -1451,12 +1463,16 @@ OPTDEFINES = $(OPTDEFINES) /D_USE_64BIT_TIME_T=1 # _ATL_XP_TARGETING - Newer SDK's need this to build for XP
COMPILERFLAGS = /D_ATL_XP_TARGETING
!endif
+
!if "$(TCL_UTF_MAX)" == "3"
OPTDEFINES = $(OPTDEFINES) /DTCL_UTF_MAX=3
!endif
!if "$(TCL_BUILD_FOR)" == "8"
OPTDEFINES = $(OPTDEFINES) /DTCL_MAJOR_VERSION=8
!endif
+!if $(TCL_8_API)
+OPTDEFINES = $(OPTDEFINES) /DTCL_8_API=1
+!endif
# Like the TEA system only set this non empty for non-Tk extensions
# Note: some extensions use PACKAGE_NAME and others use PACKAGE_TCLNAME
diff --git a/win/tclWinDde.c b/win/tclWinDde.c index fb2be99..457f20d 100644 --- a/win/tclWinDde.c +++ b/win/tclWinDde.c @@ -318,7 +318,8 @@ DdeSetServerName( Tcl_DString dString; const WCHAR *actualName; Tcl_Obj *srvListPtr = NULL, **srvPtrPtr = NULL; - int n, srvCount = 0, lastSuffix, r = TCL_OK; + Tcl_Size n, srvCount = 0; + int lastSuffix, r = TCL_OK; ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); /* diff --git a/win/tclWinReg.c b/win/tclWinReg.c index becc6f5..efd5b7c 100644 --- a/win/tclWinReg.c +++ b/win/tclWinReg.c @@ -1329,7 +1329,7 @@ SetValue( (DWORD) type, (BYTE *) &value, sizeof(DWORD)); } else if (type == REG_MULTI_SZ) { Tcl_DString data, buf; - int objc, i; + Tcl_Size objc, i; Tcl_Obj **objv; if (Tcl_ListObjGetElements(interp, dataObj, &objc, &objv) != TCL_OK) { |
