QByteArrayView: add compare
There was previously no way to compare QByteArrayView to with another QByteArrayView case-insensitively without allocating memory. [ChangeLog][QtCore][QByteArrayView] Added compare(), enabling case sensitive and insensitive comparison with other QByteArrayViews. Change-Id: I7582cc414563ddbde26da35a568421edcc649f93 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
e8297ba176
commit
a5dc381b4c
@ -270,6 +270,8 @@ public:
|
||||
[[nodiscard]] qsizetype count(char ch) const noexcept
|
||||
{ return QtPrivate::count(*this, QByteArrayView(&ch, 1)); }
|
||||
|
||||
inline int compare(QByteArrayView a, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
|
||||
|
||||
//
|
||||
// STL compatibility API:
|
||||
//
|
||||
@ -320,6 +322,12 @@ template<typename QByteArrayLike,
|
||||
[[nodiscard]] inline QByteArrayView qToByteArrayViewIgnoringNull(const QByteArrayLike &b) noexcept
|
||||
{ return QByteArrayView(b.data(), b.size()); }
|
||||
|
||||
inline int QByteArrayView::compare(QByteArrayView a, Qt::CaseSensitivity cs) const noexcept
|
||||
{
|
||||
return cs == Qt::CaseSensitive ? QtPrivate::compareMemory(*this, a) :
|
||||
qstrnicmp(data(), size(), a.data(), a.size());
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(6, 0)
|
||||
QT_DEPRECATED_VERSION_X_6_0("Use the QByteArrayView overload.")
|
||||
inline quint16 qChecksum(const char *s, qsizetype len,
|
||||
|
@ -353,6 +353,18 @@
|
||||
\sa data(), begin(), end()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn int QByteArrayView::compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
|
||||
\since 6.2
|
||||
|
||||
Returns an integer less than, equal to, or greater than zero depending on
|
||||
whether this QByteArrayView sorts before, at the same position as, or after
|
||||
the QByteArrayView \a bv. The comparison is performed according to case
|
||||
sensitivity \a cs.
|
||||
|
||||
\sa operator==()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QByteArrayView::const_iterator QByteArrayView::begin() const
|
||||
|
||||
|
@ -193,6 +193,7 @@ private slots:
|
||||
}
|
||||
|
||||
void comparison() const;
|
||||
void compare() const;
|
||||
|
||||
private:
|
||||
template <typename Data>
|
||||
@ -635,5 +636,19 @@ void tst_QByteArrayView::comparison() const
|
||||
QVERIFY(bb > aa);
|
||||
}
|
||||
|
||||
void tst_QByteArrayView::compare() const
|
||||
{
|
||||
QByteArrayView alpha = "original";
|
||||
|
||||
QVERIFY(alpha.compare("original", Qt::CaseSensitive) == 0);
|
||||
QVERIFY(alpha.compare("Original", Qt::CaseSensitive) > 0);
|
||||
QVERIFY(alpha.compare("Original", Qt::CaseInsensitive) == 0);
|
||||
QByteArrayView beta = "unoriginal";
|
||||
QVERIFY(alpha.compare(beta, Qt::CaseInsensitive) < 0);
|
||||
beta = "Unoriginal";
|
||||
QVERIFY(alpha.compare(beta, Qt::CaseInsensitive) < 0);
|
||||
QVERIFY(alpha.compare(beta, Qt::CaseSensitive) > 0);
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QByteArrayView)
|
||||
#include "tst_qbytearrayview.moc"
|
||||
|
Loading…
Reference in New Issue
Block a user