diff options
author | MÃ¥rten Nordheim <marten.nordheim@qt.io> | 2021-11-22 15:39:32 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2021-12-04 08:21:22 +0000 |
commit | cdc3de6c84383c77b93c6ae834f17a75f9092330 (patch) | |
tree | d733c0ee6839db8579fb5f9bd283b145d6ecb0ff | |
parent | 9909ec0bc63325fc115d9d84ab01c08333fd8c53 (diff) |
QStringBuilder: Add support for QByteArrayView
[ChangeLog][QtCore][QStringBuilder] Added support for QByteArrayView.
Change-Id: If2c23549d533dd31c320f3ee455fcd01ea5b460a
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
-rw-r--r-- | src/corelib/text/qstringbuilder.h | 21 | ||||
-rw-r--r-- | tests/auto/corelib/text/qstringbuilder/qstringbuilder1/stringbuilder.cpp | 4 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/corelib/text/qstringbuilder.h b/src/corelib/text/qstringbuilder.h index 8494459d63..f3cbba26dd 100644 --- a/src/corelib/text/qstringbuilder.h +++ b/src/corelib/text/qstringbuilder.h @@ -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; diff --git a/tests/auto/corelib/text/qstringbuilder/qstringbuilder1/stringbuilder.cpp b/tests/auto/corelib/text/qstringbuilder/qstringbuilder1/stringbuilder.cpp index 66dfe3ce58..4d7e452e6f 100644 --- a/tests/auto/corelib/text/qstringbuilder/qstringbuilder1/stringbuilder.cpp +++ b/tests/auto/corelib/text/qstringbuilder/qstringbuilder1/stringbuilder.cpp @@ -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 += |