QStringList: add contains(QStringView) overload

Change-Id: I953e4ef3167011d0348ea482890e29478bd6f761
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Albert Astals Cid 2018-07-30 14:47:17 +02:00
parent 64fe66e7be
commit 8b6100d512
3 changed files with 33 additions and 2 deletions

View File

@ -323,6 +323,7 @@ static bool stringList_contains(const QStringList &stringList, const T &str, Qt:
} }
#if QT_STRINGVIEW_LEVEL < 2
/*! /*!
\fn bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const \fn bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
@ -332,7 +333,18 @@ static bool stringList_contains(const QStringList &stringList, const T &str, Qt:
\sa indexOf(), lastIndexOf(), QString::contains() \sa indexOf(), lastIndexOf(), QString::contains()
*/ */
bool QtPrivate::QStringList_contains(const QStringList *that, const QString &str, #endif
/*!
\fn bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs) const
\overload
\since 5.12
Returns \c true if the list contains the string \a str; otherwise
returns \c false. The search is case insensitive if \a cs is
Qt::CaseInsensitive; the search is case sensitive by default.
*/
bool QtPrivate::QStringList_contains(const QStringList *that, QStringView str,
Qt::CaseSensitivity cs) Qt::CaseSensitivity cs)
{ {
return stringList_contains(*that, str, cs); return stringList_contains(*that, str, cs);

View File

@ -117,8 +117,11 @@ public:
{ QList<QString>::operator=(std::move(other)); return *this; } { QList<QString>::operator=(std::move(other)); return *this; }
#endif #endif
#if QT_STRINGVIEW_LEVEL < 2
inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
#endif
inline bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; inline bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
inline bool contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
inline QStringList operator+(const QStringList &other) const inline QStringList operator+(const QStringList &other) const
{ QStringList n = *this; n += other; return n; } { QStringList n = *this; n += other; return n; }
@ -161,7 +164,7 @@ namespace QtPrivate {
QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QString &str, QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QString &str,
Qt::CaseSensitivity cs); Qt::CaseSensitivity cs);
bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs); bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, QStringView str, Qt::CaseSensitivity cs);
bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, QLatin1String str, Qt::CaseSensitivity cs); bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, QLatin1String str, Qt::CaseSensitivity cs);
void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after, void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after,
Qt::CaseSensitivity cs); Qt::CaseSensitivity cs);
@ -213,16 +216,23 @@ inline QStringList QListSpecialMethods<QString>::filter(const QString &str, Qt::
return QtPrivate::QStringList_filter(self(), str, cs); return QtPrivate::QStringList_filter(self(), str, cs);
} }
#if QT_STRINGVIEW_LEVEL < 2
inline bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const inline bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
{ {
return QtPrivate::QStringList_contains(this, str, cs); return QtPrivate::QStringList_contains(this, str, cs);
} }
#endif
inline bool QStringList::contains(QLatin1String str, Qt::CaseSensitivity cs) const inline bool QStringList::contains(QLatin1String str, Qt::CaseSensitivity cs) const
{ {
return QtPrivate::QStringList_contains(this, str, cs); return QtPrivate::QStringList_contains(this, str, cs);
} }
inline bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs) const
{
return QtPrivate::QStringList_contains(this, str, cs);
}
inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
{ {
QtPrivate::QStringList_replaceInStrings(self(), before, after, cs); QtPrivate::QStringList_replaceInStrings(self(), before, after, cs);

View File

@ -273,6 +273,15 @@ void tst_QStringList::contains()
QVERIFY(list.contains(QLatin1String("ARTHUR"), Qt::CaseInsensitive)); QVERIFY(list.contains(QLatin1String("ARTHUR"), Qt::CaseInsensitive));
QVERIFY(list.contains(QLatin1String("dent"), Qt::CaseInsensitive)); QVERIFY(list.contains(QLatin1String("dent"), Qt::CaseInsensitive));
QVERIFY(!list.contains(QLatin1String("hans"), Qt::CaseInsensitive)); QVERIFY(!list.contains(QLatin1String("hans"), Qt::CaseInsensitive));
QVERIFY(list.contains(QStringView(QString("arthur"))));
QVERIFY(!list.contains(QStringView(QString("ArthuR"))));
QVERIFY(!list.contains(QStringView(QString("Hans"))));
QVERIFY(list.contains(QStringView(QString("arthur")), Qt::CaseInsensitive));
QVERIFY(list.contains(QStringView(QString("ArthuR")), Qt::CaseInsensitive));
QVERIFY(list.contains(QStringView(QString("ARTHUR")), Qt::CaseInsensitive));
QVERIFY(list.contains(QStringView(QString("dent")), Qt::CaseInsensitive));
QVERIFY(!list.contains(QStringView(QString("hans")), Qt::CaseInsensitive));
} }
void tst_QStringList::removeDuplicates_data() void tst_QStringList::removeDuplicates_data()