Add QStringView::toWCharArray() to match QString
QCollator needs it to add support for QStringView. In any case, it extends the mirror of QString's API. Naturally, we can reimplement QString's version using it. Change-Id: I5a23a3f2a98c7d59597b5e935542a93764b5e350 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
parent
01a5434252
commit
e89fbd8c3a
@ -2086,7 +2086,7 @@ int QString::toUcs4_helper(const ushort *uc, int length, uint *out)
|
|||||||
|
|
||||||
\note This function does not append a null character to the array.
|
\note This function does not append a null character to the array.
|
||||||
|
|
||||||
\sa utf16(), toUcs4(), toLatin1(), toUtf8(), toLocal8Bit(), toStdWString()
|
\sa utf16(), toUcs4(), toLatin1(), toUtf8(), toLocal8Bit(), toStdWString(), QStringView::toWCharArray()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \fn QString::QString(const QString &other)
|
/*! \fn QString::QString(const QString &other)
|
||||||
|
@ -1021,12 +1021,7 @@ QT_WARNING_DISABLE_INTEL(111) // "statement is unreachable"
|
|||||||
|
|
||||||
inline int QString::toWCharArray(wchar_t *array) const
|
inline int QString::toWCharArray(wchar_t *array) const
|
||||||
{
|
{
|
||||||
if (sizeof(wchar_t) == sizeof(QChar)) {
|
return QStringView(*this).toWCharArray(array);
|
||||||
memcpy(array, d->data(), sizeof(QChar) * size());
|
|
||||||
return size();
|
|
||||||
} else {
|
|
||||||
return toUcs4_helper(d->data(), size(), reinterpret_cast<uint *>(array));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "qstringview.h"
|
#include "qstringview.h"
|
||||||
|
#include "qstring.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
@ -794,4 +795,34 @@ QT_BEGIN_NAMESPACE
|
|||||||
\sa QString::isRightToLeft()
|
\sa QString::isRightToLeft()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\since 5.14
|
||||||
|
|
||||||
|
Transcribes this string into the given \a array.
|
||||||
|
|
||||||
|
Caller is responsible for ensuring \a array is large enough to hold the \t
|
||||||
|
wchar_t encoding of this string (allocating the array with the same length
|
||||||
|
as the string is always sufficient). The array is encoded in UTF-16 on
|
||||||
|
platforms where \t wchar_t is 2 bytes wide (e.g. Windows); otherwise (Unix
|
||||||
|
systems), \t wchar_t is assumed to be 4 bytes wide and the data is written
|
||||||
|
in UCS-4.
|
||||||
|
|
||||||
|
\note This function writes no null terminator to the end of \a array.
|
||||||
|
|
||||||
|
Returns the number of \t wchar_t entries written to \a array.
|
||||||
|
|
||||||
|
\sa QString::toWCharArray()
|
||||||
|
*/
|
||||||
|
|
||||||
|
int QStringView::toWCharArray(wchar_t *array) const
|
||||||
|
{
|
||||||
|
if (sizeof(wchar_t) == sizeof(QChar)) {
|
||||||
|
memcpy(array, data(), sizeof(QChar) * size());
|
||||||
|
return size();
|
||||||
|
} else {
|
||||||
|
return QString::toUcs4_helper(reinterpret_cast<const ushort *>(data()), int(size()),
|
||||||
|
reinterpret_cast<uint *>(array));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -272,6 +272,8 @@ public:
|
|||||||
Q_REQUIRED_RESULT bool isRightToLeft() const Q_DECL_NOTHROW
|
Q_REQUIRED_RESULT bool isRightToLeft() const Q_DECL_NOTHROW
|
||||||
{ return QtPrivate::isRightToLeft(*this); }
|
{ return QtPrivate::isRightToLeft(*this); }
|
||||||
|
|
||||||
|
Q_REQUIRED_RESULT Q_CORE_EXPORT int toWCharArray(wchar_t *array) const;
|
||||||
|
|
||||||
//
|
//
|
||||||
// STL compatibility API:
|
// STL compatibility API:
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user