diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-02-22 21:17:14 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-02-22 21:17:14 (GMT) |
| commit | 07448025782175253319b1330ea0a1ab3cb0b5d0 (patch) | |
| tree | a65b45bbea287fe45c91962dfd9e855ef5037f50 /generic/tclInt.h | |
| parent | cb2f9cccfbc8007a93a1010bbabe4614939b94a2 (diff) | |
| parent | f5bf130f05e3dcf636ef831f017d5672c594660a (diff) | |
| download | tcl-07448025782175253319b1330ea0a1ab3cb0b5d0.zip tcl-07448025782175253319b1330ea0a1ab3cb0b5d0.tar.gz tcl-07448025782175253319b1330ea0a1ab3cb0b5d0.tar.bz2 | |
merge trunk
Diffstat (limited to 'generic/tclInt.h')
| -rw-r--r-- | generic/tclInt.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h index d2bf8ab..8e84d31 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -2386,13 +2386,20 @@ typedef struct List { #define TCL_EACH_COLLECT 1 /* Collect iteration result like [lmap] */ /* - * Macros providing a faster path to integers: Tcl_GetLongFromObj, - * Tcl_GetIntFromObj and TclGetIntForIndex. + * Macros providing a faster path to booleans and integers: + * Tcl_GetBooleanFromObj, Tcl_GetLongFromObj, Tcl_GetIntFromObj + * and TclGetIntForIndex. * * WARNING: these macros eval their args more than once. */ -#if (LONG_MAX == LLONG_MAX) +#define TclGetBooleanFromObj(interp, objPtr, boolPtr) \ + (((objPtr)->typePtr == &tclIntType \ + || (objPtr)->typePtr == &tclBooleanType) \ + ? (*(boolPtr) = ((objPtr)->internalRep.wideValue!=0), TCL_OK) \ + : Tcl_GetBooleanFromObj((interp), (objPtr), (boolPtr))) + +#ifdef TCL_WIDE_INT_IS_LONG #define TclGetLongFromObj(interp, objPtr, longPtr) \ (((objPtr)->typePtr == &tclIntType) \ ? ((*(longPtr) = (objPtr)->internalRep.wideValue), TCL_OK) \ @@ -2410,13 +2417,13 @@ typedef struct List { (((objPtr)->typePtr == &tclIntType \ && (objPtr)->internalRep.wideValue >= -(Tcl_WideInt)(UINT_MAX) \ && (objPtr)->internalRep.wideValue <= (Tcl_WideInt)(UINT_MAX)) \ - ? ((*(intPtr) = (objPtr)->internalRep.wideValue), TCL_OK) \ + ? ((*(intPtr) = (int)(objPtr)->internalRep.wideValue), TCL_OK) \ : Tcl_GetIntFromObj((interp), (objPtr), (intPtr))) #define TclGetIntForIndexM(interp, objPtr, endValue, idxPtr) \ (((objPtr)->typePtr == &tclIntType \ && (objPtr)->internalRep.wideValue >= INT_MIN \ && (objPtr)->internalRep.wideValue <= INT_MAX) \ - ? ((*(idxPtr) = (objPtr)->internalRep.wideValue), TCL_OK) \ + ? ((*(idxPtr) = (int)(objPtr)->internalRep.wideValue), TCL_OK) \ : TclGetIntForIndex((interp), (objPtr), (endValue), (idxPtr))) /* |
