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 <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
bb10
Mårten Nordheim 2020-11-09 15:49:28 +01:00
parent 059ca16aa0
commit bbadd1b5c1
3 changed files with 34 additions and 0 deletions

View File

@ -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

View File

@ -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)); }

View File

@ -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()