diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-09-18 08:33:51 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-09-18 08:33:51 (GMT) |
commit | f0ab6a724c11e0e8083b6152c3968a147507c8b5 (patch) | |
tree | 3d17171141c344a068d70df2f3c63bbbca4ca9d8 /generic/tclInt.h | |
parent | be275081a1ef4cf0490a07d2e253ca901d932fe8 (diff) | |
download | tcl-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.h | 29 |
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> */ |