diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-01-19 15:53:16 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-01-23 15:51:55 +0100 |
commit | 01ef951c6570afcebc73c363be039a4d62e07679 (patch) | |
tree | 10e95bf1cc14e4e4e438e7592d84e55d1fb34624 /src/corelib/text/qstring.h | |
parent | 11891ae9c9fcf7cb911648675eca83f3189ccbed (diff) |
QString: port toUcs4_helper() to char16_t/char32_t
This gets rid of 50% of the casts required to call the function, and
removes the last QtCore QStringView(ushort*) user.
As a drive-by, replace an (allowed, but) fishy &str[0] with
str.data(), the mutable overload of which has been available since
C++17.
Task-number: QTBUG-110403
Change-Id: Iad494025b61c53d991e59cc73198bb014a422a93
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/text/qstring.h')
-rw-r--r-- | src/corelib/text/qstring.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index b1ab89ec72..1da4fada9c 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -859,7 +859,10 @@ private: static QByteArray toLatin1_helper_inplace(QString &); static QByteArray toUtf8_helper(const QString &); static QByteArray toLocal8Bit_helper(const QChar *data, qsizetype size); - static qsizetype toUcs4_helper(const ushort *uc, qsizetype length, uint *out); // ### Qt 7 char16_t +#if QT_CORE_REMOVED_SINCE(6, 6) + static qsizetype toUcs4_helper(const ushort *uc, qsizetype length, uint *out); +#endif + static qsizetype toUcs4_helper(const char16_t *uc, qsizetype length, char32_t *out); static qlonglong toIntegral_helper(QStringView string, bool *ok, int base); static qulonglong toIntegral_helper(QStringView string, bool *ok, uint base); void replace_helper(size_t *indices, qsizetype nIndices, qsizetype blen, const QChar *after, qsizetype alen); @@ -1031,8 +1034,7 @@ qsizetype QStringView::toWCharArray(wchar_t *array) const memcpy(array, src, sizeof(QChar) * size()); return size(); } else { - return QString::toUcs4_helper(reinterpret_cast<const ushort *>(data()), size(), - reinterpret_cast<uint *>(array)); + return QString::toUcs4_helper(utf16(), size(), reinterpret_cast<char32_t *>(array)); } } @@ -1228,8 +1230,8 @@ inline QString QString::fromStdU32String(const std::u32string &s) inline std::u32string QString::toStdU32String() const { std::u32string u32str(size(), char32_t(0)); - qsizetype len = toUcs4_helper(reinterpret_cast<const ushort *>(constData()), - size(), reinterpret_cast<uint*>(&u32str[0])); + const qsizetype len = toUcs4_helper(reinterpret_cast<const char16_t *>(data()), + size(), u32str.data()); u32str.resize(len); return u32str; } |