QByteArrayList: optimize 32-bit builds of legacy join() helper
On 32-bit machines, qsizetype is int, so we don't actually need to QT_REMOVE_SINCE the QByteArrayList_join() helper, because it didn't change. Thanks to Thiago for showing me the QT_POINTER_SIZE trick in a similar change to QVersionNumber. Pick-to: 6.3 Change-Id: Iae6e315107e42da51fcb4e7325b6d40b9c3fe0bc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
parent
902087a090
commit
3ec587666f
@ -108,10 +108,12 @@ QUuid QUuid::fromRfc4122(const QByteArray &bytes)
|
||||
|
||||
#include "qbytearraylist.h"
|
||||
|
||||
# if QT_POINTER_SIZE != 4
|
||||
QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, const char *sep, int seplen)
|
||||
{
|
||||
return QByteArrayList_join(that, {sep, seplen});
|
||||
return QByteArrayList_join(that, sep, qsizetype(seplen));
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif // QT_REMOVED_SINCE(6, 3)
|
||||
|
||||
|
@ -138,15 +138,15 @@ static qsizetype QByteArrayList_joinedSize(const QByteArrayList *that, qsizetype
|
||||
return totalLength;
|
||||
}
|
||||
|
||||
QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, QByteArrayView sep)
|
||||
QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, const char *sep, qsizetype seplen)
|
||||
{
|
||||
QByteArray res;
|
||||
if (const qsizetype joinedSize = QByteArrayList_joinedSize(that, sep.size()))
|
||||
if (const qsizetype joinedSize = QByteArrayList_joinedSize(that, seplen))
|
||||
res.reserve(joinedSize); // don't call reserve(0) - it allocates one byte for the NUL
|
||||
const qsizetype size = that->size();
|
||||
for (qsizetype i = 0; i < size; ++i) {
|
||||
if (i)
|
||||
res.append(sep);
|
||||
res.append(sep, seplen);
|
||||
res += that->at(i);
|
||||
}
|
||||
return res;
|
||||
|
@ -58,10 +58,10 @@ typedef QMutableListIterator<QByteArray> QMutableByteArrayListIterator;
|
||||
#ifndef Q_CLANG_QDOC
|
||||
|
||||
namespace QtPrivate {
|
||||
#if QT_REMOVED_SINCE(6, 3)
|
||||
#if QT_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
|
||||
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength);
|
||||
#endif
|
||||
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, QByteArrayView separator);
|
||||
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *sep, qsizetype len);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -82,7 +82,7 @@ public:
|
||||
|
||||
QByteArray join(QByteArrayView sep = {}) const
|
||||
{
|
||||
return QtPrivate::QByteArrayList_join(self(), sep);
|
||||
return QtPrivate::QByteArrayList_join(self(), sep.data(), sep.size());
|
||||
}
|
||||
Q_WEAK_OVERLOAD
|
||||
inline QByteArray join(const QByteArray &sep) const
|
||||
|
Loading…
x
Reference in New Issue
Block a user