From 02c2a58cdf0e4cb4989f14e751723b6573a7ebbc Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 3 Nov 2020 10:06:35 +0100 Subject: Avoid allocation on char16_t* comparisons Compare as QStringView Change-Id: I151d17ac20da30266776ca369ca8221017174f84 Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/text/qstring.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index 91edd77a17..46c2fd3f66 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -877,19 +877,19 @@ public: friend bool operator<=(std::nullptr_t, const QString &s2) noexcept { return s2 >= nullptr; } friend bool operator>=(std::nullptr_t, const QString &s2) noexcept { return s2 <= nullptr; } - friend bool operator==(const QString &s1, const char16_t *s2) { return s1 == QString::fromUtf16(s2); } - friend bool operator!=(const QString &s1, const char16_t *s2) { return s1 != QString::fromUtf16(s2); } - friend bool operator< (const QString &s1, const char16_t *s2) { return s1 < QString::fromUtf16(s2); } - friend bool operator> (const QString &s1, const char16_t *s2) { return s1 > QString::fromUtf16(s2); } - friend bool operator<=(const QString &s1, const char16_t *s2) { return s1 <= QString::fromUtf16(s2); } - friend bool operator>=(const QString &s1, const char16_t *s2) { return s1 >= QString::fromUtf16(s2); } - - friend bool operator==(const char16_t *s1, const QString &s2) { return s2 == s1; } - friend bool operator!=(const char16_t *s1, const QString &s2) { return s2 != s1; } - friend bool operator< (const char16_t *s1, const QString &s2) { return s2 > s1; } - friend bool operator> (const char16_t *s1, const QString &s2) { return s2 < s1; } - friend bool operator<=(const char16_t *s1, const QString &s2) { return s2 >= s1; } - friend bool operator>=(const char16_t *s1, const QString &s2) { return s2 <= s1; } + friend bool operator==(const QString &s1, const char16_t *s2) noexcept { return s1 == QStringView(s2); } + friend bool operator!=(const QString &s1, const char16_t *s2) noexcept { return s1 != QStringView(s2); } + friend bool operator< (const QString &s1, const char16_t *s2) noexcept { return s1 < QStringView(s2); } + friend bool operator> (const QString &s1, const char16_t *s2) noexcept { return s1 > QStringView(s2); } + friend bool operator<=(const QString &s1, const char16_t *s2) noexcept { return s1 <= QStringView(s2); } + friend bool operator>=(const QString &s1, const char16_t *s2) noexcept { return s1 >= QStringView(s2); } + + friend bool operator==(const char16_t *s1, const QString &s2) noexcept { return s2 == s1; } + friend bool operator!=(const char16_t *s1, const QString &s2) noexcept { return s2 != s1; } + friend bool operator< (const char16_t *s1, const QString &s2) noexcept { return s2 > s1; } + friend bool operator> (const char16_t *s1, const QString &s2) noexcept { return s2 < s1; } + friend bool operator<=(const char16_t *s1, const QString &s2) noexcept { return s2 >= s1; } + friend bool operator>=(const char16_t *s1, const QString &s2) noexcept { return s2 <= s1; } // QChar <> QString friend inline bool operator==(QChar lhs, const QString &rhs) noexcept -- cgit v1.2.3