summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qstring.h
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-01-19 15:53:16 +0100
committerMarc Mutz <marc.mutz@qt.io>2023-01-23 15:51:55 +0100
commit01ef951c6570afcebc73c363be039a4d62e07679 (patch)
tree10e95bf1cc14e4e4e438e7592d84e55d1fb34624 /src/corelib/text/qstring.h
parent11891ae9c9fcf7cb911648675eca83f3189ccbed (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.h12
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;
}