summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qbytearray.cpp
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2021-07-29 16:28:32 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2021-08-02 09:39:45 +0200
commite3f10a2760e6823df655549802bea39c251e5284 (patch)
tree68c10b011315d5bb1425404781fd1d74521a65ae /src/corelib/text/qbytearray.cpp
parent50f53b90220707664947f3d1f9468c466398ec31 (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.cpp57
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();
}
/*!