diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2024-02-01 21:22:08 +0100 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2024-02-16 14:29:18 +0100 |
commit | cfaed64873809b94f18f3291fa29817ee74bfedc (patch) | |
tree | 3e65b62e89f98895a05aa65edcbb0412858d2dcb | |
parent | 73bf1c1a9bcc2615370d6a199420da0c6f380a44 (diff) |
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>
-rw-r--r-- | src/corelib/text/qbytearray.cpp | 15 | ||||
-rw-r--r-- | src/corelib/text/qbytearray.h | 1 | ||||
-rw-r--r-- | src/corelib/text/qstring.cpp | 18 | ||||
-rw-r--r-- | src/corelib/text/qstring.h | 1 |
4 files changed, 35 insertions, 0 deletions
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index 1eb5c5b2d2..3df77f179c 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -1897,6 +1897,21 @@ void QByteArray::resize(qsizetype newSize, char c) } /*! + \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. diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h index ad4264036b..f057fa0bb7 100644 --- a/src/corelib/text/qbytearray.h +++ b/src/corelib/text/qbytearray.h @@ -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); diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 95dfd09abd..b95c7d22b7 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -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 diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index 218a773005..8216cd5174 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -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); |