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:
parent
50f53b9022
commit
e3f10a2760
@ -4002,33 +4002,7 @@ QByteArray &QByteArray::setNum(qulonglong n, int base)
|
|||||||
|
|
||||||
QByteArray &QByteArray::setNum(double n, char f, int prec)
|
QByteArray &QByteArray::setNum(double n, char f, int prec)
|
||||||
{
|
{
|
||||||
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
|
return *this = QByteArray::number(n, f, prec);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -4159,9 +4133,32 @@ QByteArray QByteArray::number(qulonglong n, int base)
|
|||||||
*/
|
*/
|
||||||
QByteArray QByteArray::number(double n, char f, int prec)
|
QByteArray QByteArray::number(double n, char f, int prec)
|
||||||
{
|
{
|
||||||
QByteArray s;
|
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
|
||||||
s.setNum(n, f, prec);
|
uint flags = QLocaleData::ZeroPadExponent;
|
||||||
return s;
|
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Loading…
x
Reference in New Issue
Block a user