QByteArray::number/setNum(double): Reverse dependency

Currently number(double) creates a QByteArray-instance and calls
setNum(double).
setNum(double) creates a QByteArray-instance and copy-assigns it to
itself.

By making setNum(double) call number(double) we can cut one creation
from numbers(double)'s path, and making setNum no worse than it was.

The other pairs of setNum/number are left alone as they don't have this
issue.

Change-Id: Ib611ebc78db64f74244a56cb8e384e42bc7d1758
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Mårten Nordheim 2021-07-29 16:28:32 +02:00
parent 50f53b9022
commit e3f10a2760

View File

@ -4002,33 +4002,7 @@ QByteArray &QByteArray::setNum(qulonglong n, int base)
QByteArray &QByteArray::setNum(double n, char f, int prec)
{
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
uint flags = QLocaleData::ZeroPadExponent;
char lower = asciiLower(uchar(f));
if (f != lower)
flags |= QLocaleData::CapitalEorX;
f = lower;
switch (f) {
case 'f':
form = QLocaleData::DFDecimal;
break;
case 'e':
form = QLocaleData::DFExponent;
break;
case 'g':
form = QLocaleData::DFSignificantDigits;
break;
default:
#if defined(QT_CHECK_RANGE)
qWarning("QByteArray::setNum: Invalid format char '%c'", f);
#endif
break;
}
*this = QLocaleData::c()->doubleToString(n, prec, form, -1, flags).toUtf8();
return *this;
return *this = QByteArray::number(n, f, prec);
}
/*!
@ -4159,9 +4133,32 @@ QByteArray QByteArray::number(qulonglong n, int base)
*/
QByteArray QByteArray::number(double n, char f, int prec)
{
QByteArray s;
s.setNum(n, f, prec);
return s;
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
uint flags = QLocaleData::ZeroPadExponent;
char lower = asciiLower(uchar(f));
if (f != lower)
flags |= QLocaleData::CapitalEorX;
f = lower;
switch (f) {
case 'f':
form = QLocaleData::DFDecimal;
break;
case 'e':
form = QLocaleData::DFExponent;
break;
case 'g':
form = QLocaleData::DFSignificantDigits;
break;
default:
#if defined(QT_CHECK_RANGE)
qWarning("QByteArray::setNum: Invalid format char '%c'", f);
#endif
break;
}
return QLocaleData::c()->doubleToString(n, prec, form, -1, flags).toUtf8();
}
/*!