diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/tools/qstringview.cpp | 15 | ||||
-rw-r--r-- | src/corelib/tools/qstringview.h | 6 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/corelib/tools/qstringview.cpp b/src/corelib/tools/qstringview.cpp index 1dc01e321b..3b36ed9bf8 100644 --- a/src/corelib/tools/qstringview.cpp +++ b/src/corelib/tools/qstringview.cpp @@ -704,4 +704,19 @@ QT_BEGIN_NAMESPACE \sa toUtf8(), toLatin1(), toLocal8Bit(), QTextCodec */ +/*! + \fn qToStringViewIgnoringNull(const QStringLike &s); + \since 5.10 + \internal + + Convert \a s to a QStringView ignoring \c{s.isNull()}. + + Returns a string-view that references \a{s}' data, but is never null. + + This is a faster way to convert a QString or QStringRef to a QStringView, + if null QStrings can legitimately be treated as empty ones. + + \sa QString::isNull(), QStringRef::isNull(), QStringView +*/ + QT_END_NAMESPACE diff --git a/src/corelib/tools/qstringview.h b/src/corelib/tools/qstringview.h index 7aef056dee..54d054baaa 100644 --- a/src/corelib/tools/qstringview.h +++ b/src/corelib/tools/qstringview.h @@ -272,6 +272,12 @@ private: }; Q_DECLARE_TYPEINFO(QStringView, Q_MOVABLE_TYPE); +template <typename QStringLike, typename std::enable_if< + std::is_same<QStringLike, QString>::value || std::is_same<QStringLike, QStringRef>::value, + bool>::type = true> +inline QStringView qToStringViewIgnoringNull(const QStringLike &s) Q_DECL_NOTHROW +{ return QStringView(s.data(), s.size()); } + QT_END_NAMESPACE #endif /* QSTRINGVIEW_H */ |