From bbadd1b5c1c7000bf4004ba34b3194864e688982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Mon, 9 Nov 2020 15:49:28 +0100 Subject: [PATCH] Add QByteArray::insert(qsizetype, const QByteArray &) For consistency with append and prepend we should have an overload for insert() as well. This also enables insert() to be used with QStringBuilder, i.e. qba.insert(2, qba2 + "abc"). Because simply adding a const QByteArray & overload causes ambiguity with QByteArrayView we also add a const char * overload. Add some extra test-cases. Two for QByteArrayView since it's not directly tested anymore. One for inserting self directly. Change-Id: Ieb43a6a7d1afbb498bc89c690908d7f0faa94687 Reviewed-by: Volker Hilsheimer Reviewed-by: Lars Knoll --- src/corelib/text/qbytearray.cpp | 18 ++++++++++++++++++ src/corelib/text/qbytearray.h | 4 ++++ .../corelib/text/qbytearray/tst_qbytearray.cpp | 12 ++++++++++++ 3 files changed, 34 insertions(+) diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index f4ade684a0..14789c8a2c 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -1954,6 +1954,24 @@ QByteArray &QByteArray::insert(qsizetype i, QByteArrayView data) return *this; } +/*! + \fn QByteArray &QByteArray::insert(qsizetype i, const QByteArray &data) + Inserts \a data at index position \a i and returns a + reference to this byte array. + + \sa append(), prepend(), replace(), remove() +*/ + +/*! + \fn QByteArray &QByteArray::insert(qsizetype i, const char *s) + Inserts \a s at index position \a i and returns a + reference to this byte array. + + The function is equivalent to \c{insert(i, QByteArrayView(s))} + + \sa append(), prepend(), replace(), remove() +*/ + /*! \fn QByteArray &QByteArray::insert(qsizetype i, const char *data, qsizetype len) \overload diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h index 95b607e9dc..9f646aaa62 100644 --- a/src/corelib/text/qbytearray.h +++ b/src/corelib/text/qbytearray.h @@ -298,6 +298,10 @@ public: { return insert(size(), a); } QByteArray &insert(qsizetype i, QByteArrayView data); + inline QByteArray &insert(qsizetype i, const char *s) + { return insert(i, QByteArrayView(s)); } + inline QByteArray &insert(qsizetype i, const QByteArray &data) + { return insert(i, QByteArrayView(data)); } QByteArray &insert(qsizetype i, qsizetype count, char c); QByteArray &insert(qsizetype i, char c) { return insert(i, QByteArrayView(&c, 1)); } diff --git a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp index cf70a7bbaa..7f9bff844f 100644 --- a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp +++ b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp @@ -946,6 +946,18 @@ void tst_QByteArray::insert() ba = "ab"; QCOMPARE(ba.insert(1, "\0X\0", 3), QByteArray::fromRawData("a\0X\0b", 5)); QCOMPARE(ba.size(), 5); + + ba = "Hello World"; + QCOMPARE(ba.insert(5, QByteArrayView(",")), QByteArray("Hello, World")); + QCOMPARE(ba.size(), 12); + + ba = "one"; + QCOMPARE(ba.insert(1, ba), QByteArray("oonene")); + QCOMPARE(ba.size(), 6); + + ba = "one"; + QCOMPARE(ba.insert(1, QByteArrayView(ba)), QByteArray("oonene")); + QCOMPARE(ba.size(), 6); } void tst_QByteArray::insertExtended_data()