summaryrefslogtreecommitdiffstats
path: root/generic/tclInt.h
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-18 08:33:51 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-18 08:33:51 (GMT)
commitf0ab6a724c11e0e8083b6152c3968a147507c8b5 (patch)
tree3d17171141c344a068d70df2f3c63bbbca4ca9d8 /generic/tclInt.h
parentbe275081a1ef4cf0490a07d2e253ca901d932fe8 (diff)
downloadtcl-f0ab6a724c11e0e8083b6152c3968a147507c8b5.zip
tcl-f0ab6a724c11e0e8083b6152c3968a147507c8b5.tar.gz
tcl-f0ab6a724c11e0e8083b6152c3968a147507c8b5.tar.bz2
New macro TclNewIndexObj() which does the same as TclNewWideIntObjFromSize() but optimized the same way as TclNewIntObj().
Diffstat (limited to 'generic/tclInt.h')
-rw-r--r--generic/tclInt.h29
1 files changed, 14 insertions, 15 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 839c4a5..04a1866 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -4810,6 +4810,17 @@ MODULE_SCOPE Tcl_PackageInitProc Procbodytest_SafeInit;
TCL_DTRACE_OBJ_CREATE(objPtr); \
} while (0)
+#define TclNewIndexObj(objPtr, w) \
+ do { \
+ TclIncrObjsAllocated(); \
+ TclAllocObjStorage(objPtr); \
+ (objPtr)->refCount = 0; \
+ (objPtr)->bytes = NULL; \
+ (objPtr)->internalRep.wideValue = (Tcl_WideInt)((w) + 1) - 1; \
+ (objPtr)->typePtr = &tclIntType; \
+ TCL_DTRACE_OBJ_CREATE(objPtr); \
+ } while (0)
+
#define TclNewDoubleObj(objPtr, d) \
do { \
TclIncrObjsAllocated(); \
@@ -4835,6 +4846,9 @@ MODULE_SCOPE Tcl_PackageInitProc Procbodytest_SafeInit;
#define TclNewIntObj(objPtr, w) \
(objPtr) = Tcl_NewWideIntObj(w)
+#define TclNewIndexObj(objPtr, w) \
+ (objPtr) = Tcl_NewWideIntObj((Tcl_WideInt)((w) + 1) - 1)
+
#define TclNewDoubleObj(objPtr, d) \
(objPtr) = Tcl_NewDoubleObj(d)
@@ -5022,21 +5036,6 @@ MODULE_SCOPE Tcl_PackageInitProc Procbodytest_SafeInit;
#endif /* TCL_MEM_DEBUG */
/*
- * Macros to convert size_t to wide-int (and wide-int object) considering
- * platform-related negative value ((size_t)-1), if wide-int and size_t
- * have different dimensions (e. g. 32-bit platform).
- */
-
-#if (!defined(TCL_WIDE_INT_IS_LONG) || (LONG_MAX > UINT_MAX)) && (SIZE_MAX <= UINT_MAX)
-# define TclWideIntFromSize(value) (((Tcl_WideInt)(((size_t)(value))+1))-1)
-# define TclNewWideIntObjFromSize(value) \
- Tcl_NewWideIntObj(TclWideIntFromSize(value))
-#else
-# define TclWideIntFromSize(value) ((Tcl_WideInt)(value))
-# define TclNewWideIntObjFromSize Tcl_NewWideIntObj
-#endif
-
-/*
* Support for Clang Static Analyzer <http://clang-analyzer.llvm.org>
*/