QStringView: add mid(), left(), right()

Change-Id: If1d2cf175d51b3c02881e21937b0a2d33b78aadd
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
Marc Mutz 2017-01-31 00:36:54 +01:00
parent 54dd87ca0f
commit 0b9fb15b1a
3 changed files with 61 additions and 0 deletions

View File

@ -548,4 +548,50 @@ QT_BEGIN_NAMESPACE
\sa back(), front(), first()
*/
/*!
\fn QStringView QStringView::mid(size_type start) const
Returns the substring starting at position \a start in this object,
and extending to the end of the string.
\note The behavior is undefined when \a start < 0 or \a start > size().
\sa left(), right()
*/
/*!
\fn QStringView QStringView::mid(size_type start, size_type length) const
\overload
Returns the substring of length \a length starting at position
\a start in this object.
\note The behavior is undefined when \a start < 0, \a length < 0,
or \a start + \a length > size().
\sa left(), right()
*/
/*!
\fn QStringView QStringView::left(size_type length) const
Returns the substring of length \a length starting at position
0 in this object.
\note The behavior is undefined when \a length < 0 or \a length > size().
\sa mid(), right()
*/
/*!
\fn QStringView QStringView::right(size_type length) const
Returns the substring of length \a length starting at position
size() - \a length in this object.
\note The behavior is undefined when \a length < 0 or \a length > size().
\sa mid(), left()
*/
QT_END_NAMESPACE

View File

@ -183,6 +183,15 @@ public:
Q_DECL_CONSTEXPR QChar at(size_type n) const { return (*this)[n]; }
Q_DECL_CONSTEXPR QStringView mid(size_type pos) const
{ return Q_ASSERT(pos >= 0), Q_ASSERT(pos <= size()), QStringView(m_data + pos, m_size - pos); }
Q_DECL_CONSTEXPR QStringView mid(size_type pos, size_type n) const
{ return Q_ASSERT(pos >= 0), Q_ASSERT(n >= 0), Q_ASSERT(pos + n <= size()), QStringView(m_data + pos, n); }
Q_DECL_CONSTEXPR QStringView left(size_type n) const
{ return Q_ASSERT(n >= 0), Q_ASSERT(n <= size()), QStringView(m_data, n); }
Q_DECL_CONSTEXPR QStringView right(size_type n) const
{ return Q_ASSERT(n >= 0), Q_ASSERT(n <= size()), QStringView(m_data + m_size - n, n); }
//
// STL compatibility API:
//

View File

@ -197,6 +197,8 @@ private Q_SLOTS:
void mid_QString() { mid_impl<QString>(); }
void mid_QStringRef_data() { mid_data(); }
void mid_QStringRef() { mid_impl<QStringRef>(); }
void mid_QStringView_data() { mid_data(); }
void mid_QStringView() { mid_impl<QStringView>(); }
void mid_QLatin1String_data() { mid_data(); }
void mid_QLatin1String() { mid_impl<QLatin1String>(); }
void mid_QByteArray_data() { mid_data(); }
@ -206,6 +208,8 @@ private Q_SLOTS:
void left_QString() { left_impl<QString>(); }
void left_QStringRef_data() { left_data(); }
void left_QStringRef() { left_impl<QStringRef>(); }
void left_QStringView_data() { left_data(); }
void left_QStringView() { left_impl<QStringView>(); }
void left_QLatin1String_data() { left_data(); }
void left_QLatin1String() { left_impl<QLatin1String>(); }
void left_QByteArray_data() { left_data(); }
@ -215,6 +219,8 @@ private Q_SLOTS:
void right_QString() { right_impl<QString>(); }
void right_QStringRef_data() { right_data(); }
void right_QStringRef() { right_impl<QStringRef>(); }
void right_QStringView_data() { right_data(); }
void right_QStringView() { right_impl<QStringView>(); }
void right_QLatin1String_data() { right_data(); }
void right_QLatin1String() { right_impl<QLatin1String>(); }
void right_QByteArray_data() { right_data(); }