QByteArray/QString: add resizeForOverwrite

For these classes it's not really a new feature, but exposing
the current resize() behavior (which does uninitialized resizes)
under a proper name.

Changing the existing behavior for resize() is a behavioral
break that we can only likely afford in Qt 7.

[ChangeLog][QtCore][QString] Added resizeForOverwrite().
[ChangeLog][QtCore][QByteArray] Added resizeForOverwrite().

Change-Id: I15b3104aee2bc29d23e91d97b0e64f87612d0099
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Giuseppe D'Angelo 2024-02-01 21:22:08 +01:00
parent 73bf1c1a9b
commit cfaed64873
4 changed files with 35 additions and 0 deletions

View File

@ -1896,6 +1896,21 @@ void QByteArray::resize(qsizetype newSize, char c)
memset(d.data() + old, c, d.size - old);
}
/*!
\since 6.8
Resizes the byte array to \a size bytes. If the size of the
byte array grows, the new bytes are uninitialized.
The behavior is identical to \c{resize(size)}.
\sa resize()
*/
void QByteArray::resizeForOverwrite(qsizetype size)
{
resize(size);
}
/*!
Sets every byte in the byte array to \a ch. If \a size is different from -1
(the default), the byte array is resized to size \a size beforehand.

View File

@ -105,6 +105,7 @@ public:
bool isEmpty() const noexcept { return size() == 0; }
void resize(qsizetype size);
void resize(qsizetype size, char c);
void resizeForOverwrite(qsizetype size);
QByteArray &fill(char c, qsizetype size = -1);

View File

@ -2680,6 +2680,24 @@ void QString::resize(qsizetype newSize, QChar fillChar)
std::fill_n(d.data() + oldSize, difference, fillChar.unicode());
}
/*!
\since 6.8
Sets the size of the string to \a size characters. If the size of
the string grows, the new characters are uninitialized.
The behavior is identical to \c{resize(size)}.
\sa resize()
*/
void QString::resizeForOverwrite(qsizetype size)
{
resize(size);
}
/*! \fn qsizetype QString::capacity() const
Returns the maximum number of characters that can be stored in

View File

@ -190,6 +190,7 @@ public:
inline bool isEmpty() const noexcept { return d.size == 0; }
void resize(qsizetype size);
void resize(qsizetype size, QChar fillChar);
void resizeForOverwrite(qsizetype size);
QString &fill(QChar c, qsizetype size = -1);
void truncate(qsizetype pos);