QStringBuilder: Add support for QByteArrayView

[ChangeLog][QtCore][QStringBuilder] Added support for QByteArrayView.

Change-Id: If2c23549d533dd31c320f3ee455fcd01ea5b460a
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This commit is contained in:
Mårten Nordheim 2021-11-22 15:39:32 +01:00 committed by Marc Mutz
parent 9909ec0bc6
commit cdc3de6c84
2 changed files with 25 additions and 0 deletions

View File

@ -187,6 +187,27 @@ template <> struct QConcatenable<char> : private QAbstractConcatenable
{ *out++ = c; }
};
template <> struct QConcatenable<QByteArrayView> : private QAbstractConcatenable
{
typedef QByteArrayView type;
typedef QByteArray ConvertTo;
enum { ExactSize = true };
static qsizetype size(QByteArrayView bav) { return bav.size(); }
#ifndef QT_NO_CAST_FROM_ASCII
QT_ASCII_CAST_WARN static inline void appendTo(QByteArrayView bav, QChar *&out)
{
QAbstractConcatenable::convertFromUtf8(bav, out);
}
#endif
static inline void appendTo(QByteArrayView bav, char *&out)
{
qsizetype n = bav.size();
if (n)
memcpy(out, bav.data(), n);
out += n;
}
};
template <> struct QConcatenable<char16_t> : private QAbstractConcatenable
{
typedef char16_t type;

View File

@ -305,6 +305,10 @@ void runScenario()
QCOMPARE(r, ba);
r = zero P ba;
QCOMPARE(r, ba);
QByteArrayView qbav = LITERAL;
superba = qbav P qbav P LITERAL;
QCOMPARE(superba, QByteArray(LITERAL LITERAL LITERAL));
}
//operator QString +=