diff options
author | dgp <dgp@users.sourceforge.net> | 2018-02-06 20:07:13 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2018-02-06 20:07:13 (GMT) |
commit | 185cdc39c6ed70ecf07f8427be94091fffc05238 (patch) | |
tree | d9b203144a88e2acc7863909ab455bdff17ffcb2 /generic/tclStrToD.c | |
parent | 365ee5bb13790058832ec464d8a1239bbfd02fac (diff) | |
parent | 2eba1ce11e24976640d99ae78cec26cc67508f15 (diff) | |
download | tcl-185cdc39c6ed70ecf07f8427be94091fffc05238.zip tcl-185cdc39c6ed70ecf07f8427be94091fffc05238.tar.gz tcl-185cdc39c6ed70ecf07f8427be94091fffc05238.tar.bz2 |
TIP 484: Merge 'int' and 'wideInt' Obj-type to a single 'int'
Diffstat (limited to 'generic/tclStrToD.c')
-rw-r--r-- | generic/tclStrToD.c | 48 |
1 files changed, 10 insertions, 38 deletions
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index 630e498..ac2ca68 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -1268,32 +1268,18 @@ TclParseNumber( } } if (!octalSignificandOverflow) { - if (octalSignificandWide > - (Tcl_WideUInt)(((~(unsigned long)0) >> 1) + signum)) { -#ifndef TCL_WIDE_INT_IS_LONG - if (octalSignificandWide <= (MOST_BITS + signum)) { - objPtr->typePtr = &tclWideIntType; - if (signum) { - objPtr->internalRep.wideValue = - - (Tcl_WideInt) octalSignificandWide; - } else { - objPtr->internalRep.wideValue = - (Tcl_WideInt) octalSignificandWide; - } - break; - } -#endif + if (octalSignificandWide > (MOST_BITS + signum)) { TclInitBignumFromWideUInt(&octalSignificandBig, octalSignificandWide); octalSignificandOverflow = 1; } else { objPtr->typePtr = &tclIntType; if (signum) { - objPtr->internalRep.longValue = - - (long) octalSignificandWide; + objPtr->internalRep.wideValue = + - (Tcl_WideInt) octalSignificandWide; } else { - objPtr->internalRep.longValue = - (long) octalSignificandWide; + objPtr->internalRep.wideValue = + (Tcl_WideInt) octalSignificandWide; } } } @@ -1315,32 +1301,18 @@ TclParseNumber( } returnInteger: if (!significandOverflow) { - if (significandWide > - (Tcl_WideUInt)(((~(unsigned long)0) >> 1) + signum)) { -#ifndef TCL_WIDE_INT_IS_LONG - if (significandWide <= MOST_BITS+signum) { - objPtr->typePtr = &tclWideIntType; - if (signum) { - objPtr->internalRep.wideValue = - - (Tcl_WideInt) significandWide; - } else { - objPtr->internalRep.wideValue = - (Tcl_WideInt) significandWide; - } - break; - } -#endif + if (significandWide > MOST_BITS+signum) { TclInitBignumFromWideUInt(&significandBig, significandWide); significandOverflow = 1; } else { objPtr->typePtr = &tclIntType; if (signum) { - objPtr->internalRep.longValue = - - (long) significandWide; + objPtr->internalRep.wideValue = + - (Tcl_WideInt) significandWide; } else { - objPtr->internalRep.longValue = - (long) significandWide; + objPtr->internalRep.wideValue = + (Tcl_WideInt) significandWide; } } } |