Bootstrap: remove qnumeric.cpp by using qnumeric_p.h

That is, use the inline functions that refer to <numeric_limits> and
<cmath> directly, instead of the out-of-line wrappers. Someone should
verify if the hacks for QNX's <math.h> are still required.

Change-Id: I01ec3c774d9943adb903fffd17b7ee560b4b71b9
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
bb10
Thiago Macieira 2024-02-27 21:03:56 -08:00
parent d637bc0a5a
commit 6508902d89
6 changed files with 19 additions and 23 deletions

View File

@ -108,7 +108,7 @@ static void valueToJson(const QCborValue &v, QByteArray &json, int indent, bool
break;
case QCborValue::Double: {
const double d = v.toDouble();
if (qIsFinite(d))
if (qt_is_finite(d))
json += QByteArray::number(d, 'g', QLocale::FloatingPointShortest);
else
json += "null"; // +INF || -INF || NaN (see RFC4627#section2.4)

View File

@ -196,6 +196,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384;
#include "qnumeric.h"
#include "qvarlengtharray.h"
#include <private/qdebug_p.h>
#include <private/qnumeric_p.h>
#include <private/qtools_p.h>
#include <locale.h>
@ -1911,13 +1912,13 @@ bool QTextStreamPrivate::getReal(double *f)
// nan/+inf/-inf, so here we also check for uppercase and mixed
// case versions.
if (!qstricmp(buf, "nan") || !qstricmp(buf, "+nan") || !qstricmp(buf, "-nan")) {
*f = qQNaN();
*f = qt_qnan();
return true;
} else if (!qstricmp(buf, "+inf") || !qstricmp(buf, "inf")) {
*f = qInf();
*f = qt_inf();
return true;
} else if (!qstricmp(buf, "-inf")) {
*f = -qInf();
*f = -qt_inf();
return true;
}
bool ok;

View File

@ -3710,7 +3710,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
qsizetype bufSize = 1;
if (precision == QLocale::FloatingPointShortest)
bufSize += std::numeric_limits<double>::max_digits10;
else if (form == DFDecimal && qIsFinite(d))
else if (form == DFDecimal && qt_is_finite(d))
bufSize += wholePartSpace(qAbs(d)) + precision;
else // Add extra digit due to different interpretations of precision.
bufSize += qMax(2, precision) + 1; // Must also be big enough for "nan" or "inf"

View File

@ -310,8 +310,8 @@ QSimpleParsedNumber<double> qt_asciiToDouble(const char *num, qsizetype numLen,
d = conv.StringToDouble(num, int(numLen), &processed);
}
if (!qIsFinite(d)) {
if (qIsNaN(d)) {
if (!qt_is_finite(d)) {
if (qt_is_nan(d)) {
// Garbage found. We don't accept it and return 0.
return {};
} else {
@ -329,12 +329,12 @@ QSimpleParsedNumber<double> qt_asciiToDouble(const char *num, qsizetype numLen,
if (qDoubleSscanf(num, QT_CLOCALE, fmt, &d, &processed) < 1)
processed = 0;
if ((strayCharMode == TrailingJunkProhibited && processed != numLen) || qIsNaN(d)) {
if ((strayCharMode == TrailingJunkProhibited && processed != numLen) || qt_is_nan(d)) {
// Implementation defined nan symbol or garbage found. We don't accept it.
return {};
}
if (!qIsFinite(d)) {
if (!qt_is_finite(d)) {
// Overflow. Check for implementation-defined infinity symbols and reject them.
// We assume that any infinity symbol has to contain a character that cannot be part of a
// "normal" number (that is 0-9, ., -, +, e).
@ -651,7 +651,7 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
int bufSize = 1;
if (precision == QLocale::FloatingPointShortest)
bufSize += D::max_digits10;
else if (form == QLocaleData::DFDecimal && qIsFinite(d))
else if (form == QLocaleData::DFDecimal && qt_is_finite(d))
bufSize += wholePartSpace(qAbs(d)) + precision;
else // Add extra digit due to different interpretations of precision.
bufSize += qMax(2, precision) + 1; // Must also be big enough for "nan" or "inf"
@ -666,7 +666,7 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
QLatin1StringView view(buffer.data(), length);
const bool succinct = form == QLocaleData::DFSignificantDigits;
qsizetype total = (negative ? 1 : 0) + length;
if (qIsFinite(d)) {
if (qt_is_finite(d)) {
if (succinct)
form = resolveFormat(precision, decpt, view.size());
@ -708,7 +708,7 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
if (negative && !isZero(d)) // We don't return "-0"
result.append(Char('-'));
if (!qIsFinite(d)) {
if (!qt_is_finite(d)) {
result.append(view);
if (uppercase)
result = std::move(result).toUpper();

View File

@ -8883,8 +8883,7 @@ QString QString::arg(qlonglong a, int fieldWidth, int base, QChar fillChar) cons
QString arg;
if (d.occurrences > d.locale_occurrences) {
arg = QLocaleData::c()->longLongToString(a, -1, base, fieldWidth, flags);
Q_ASSERT(fillChar != u'0' || !qIsFinite(a)
|| fieldWidth <= arg.size());
Q_ASSERT(fillChar != u'0' || fieldWidth <= arg.size());
}
QString localeArg;
@ -8893,8 +8892,7 @@ QString QString::arg(qlonglong a, int fieldWidth, int base, QChar fillChar) cons
if (!(locale.numberOptions() & QLocale::OmitGroupSeparator))
flags |= QLocaleData::GroupDigits;
localeArg = locale.d->m_data->longLongToString(a, -1, base, fieldWidth, flags);
Q_ASSERT(fillChar != u'0' || !qIsFinite(a)
|| fieldWidth <= localeArg.size());
Q_ASSERT(fillChar != u'0' || fieldWidth <= localeArg.size());
}
return replaceArgEscapes(*this, d, fieldWidth, arg, localeArg, fillChar);
@ -8931,8 +8929,7 @@ QString QString::arg(qulonglong a, int fieldWidth, int base, QChar fillChar) con
QString arg;
if (d.occurrences > d.locale_occurrences) {
arg = QLocaleData::c()->unsLongLongToString(a, -1, base, fieldWidth, flags);
Q_ASSERT(fillChar != u'0' || !qIsFinite(a)
|| fieldWidth <= arg.size());
Q_ASSERT(fillChar != u'0' || fieldWidth <= arg.size());
}
QString localeArg;
@ -8941,8 +8938,7 @@ QString QString::arg(qulonglong a, int fieldWidth, int base, QChar fillChar) con
if (!(locale.numberOptions() & QLocale::OmitGroupSeparator))
flags |= QLocaleData::GroupDigits;
localeArg = locale.d->m_data->unsLongLongToString(a, -1, base, fieldWidth, flags);
Q_ASSERT(fillChar != u'0' || !qIsFinite(a)
|| fieldWidth <= localeArg.size());
Q_ASSERT(fillChar != u'0' || fieldWidth <= localeArg.size());
}
return replaceArgEscapes(*this, d, fieldWidth, arg, localeArg, fillChar);
@ -9053,7 +9049,7 @@ QString QString::arg(double a, int fieldWidth, char format, int precision, QChar
if (d.occurrences > d.locale_occurrences) {
arg = QLocaleData::c()->doubleToString(a, precision, form, fieldWidth,
flags | QLocaleData::ZeroPadExponent);
Q_ASSERT(fillChar != u'0' || !qIsFinite(a)
Q_ASSERT(fillChar != u'0' || !qt_is_finite(a)
|| fieldWidth <= arg.size());
}
@ -9069,7 +9065,7 @@ QString QString::arg(double a, int fieldWidth, char format, int precision, QChar
if (numberOptions & QLocale::IncludeTrailingZeroesAfterDot)
flags |= QLocaleData::AddTrailingZeroes;
localeArg = locale.d->m_data->doubleToString(a, precision, form, fieldWidth, flags);
Q_ASSERT(fillChar != u'0' || !qIsFinite(a)
Q_ASSERT(fillChar != u'0' || !qt_is_finite(a)
|| fieldWidth <= localeArg.size());
}

View File

@ -18,7 +18,6 @@ qt_internal_extend_target(Bootstrap
../../corelib/global/qfloat16.cpp
../../corelib/global/qlogging.cpp
../../corelib/global/qmalloc.cpp
../../corelib/global/qnumeric.cpp
../../corelib/global/qoperatingsystemversion.cpp
../../corelib/global/qtenvironmentvariables.cpp
../../corelib/io/qabstractfileengine.cpp