diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2021-07-29 16:28:32 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2021-08-02 09:39:45 +0200 |
commit | e3f10a2760e6823df655549802bea39c251e5284 (patch) | |
tree | 68c10b011315d5bb1425404781fd1d74521a65ae /src/corelib/text/qbytearray.cpp | |
parent | 50f53b90220707664947f3d1f9468c466398ec31 (diff) |
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>
Diffstat (limited to 'src/corelib/text/qbytearray.cpp')
-rw-r--r-- | src/corelib/text/qbytearray.cpp | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index d8deb5e8cc..03e3f0611a 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -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(); } /*! |