From be6c14211e93da4b59c4c25aa8e85b860ccb8666 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Thu, 21 Apr 2016 22:35:32 +0300 Subject: qTopLevelDomain: use QStringRef more qIsEffectiveTLD() and containsTLDEntry() now have overloaded versions with QStringRef arg. Change-Id: Ic2b7fd56c8ea1579d3e4bdf4ed0e10405515d417 Reviewed-by: Marc Mutz --- src/corelib/io/qtldurl.cpp | 13 +++++++++---- src/corelib/io/qtldurl_p.h | 6 +++++- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'src/corelib') diff --git a/src/corelib/io/qtldurl.cpp b/src/corelib/io/qtldurl.cpp index 3971d55750..dd0ee6068d 100644 --- a/src/corelib/io/qtldurl.cpp +++ b/src/corelib/io/qtldurl.cpp @@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE -static bool containsTLDEntry(const QString &entry) +static bool containsTLDEntry(const QStringRef &entry) { int index = qt_hash(entry) % tldCount; @@ -69,6 +69,11 @@ static bool containsTLDEntry(const QString &entry) return false; } +static inline bool containsTLDEntry(const QString &entry) +{ + return containsTLDEntry(QStringRef(&entry)); +} + /*! \internal @@ -86,7 +91,7 @@ Q_CORE_EXPORT QString qTopLevelDomain(const QString &domain) QString level, tld; for (int j = sections.count() - 1; j >= 0; --j) { level.prepend(QLatin1Char('.') + sections.at(j)); - if (qIsEffectiveTLD(level.right(level.size() - 1))) + if (qIsEffectiveTLD(level.rightRef(level.size() - 1))) tld = level; } return tld; @@ -98,7 +103,7 @@ Q_CORE_EXPORT QString qTopLevelDomain(const QString &domain) Return true if \a domain is a top-level-domain per Qt's copy of the Mozilla public suffix list. */ -Q_CORE_EXPORT bool qIsEffectiveTLD(const QString &domain) +Q_CORE_EXPORT bool qIsEffectiveTLD(const QStringRef &domain) { // for domain 'foo.bar.com': // 1. return if TLD table contains 'foo.bar.com' @@ -108,7 +113,7 @@ Q_CORE_EXPORT bool qIsEffectiveTLD(const QString &domain) const int dot = domain.indexOf(QLatin1Char('.')); if (dot >= 0) { int count = domain.size() - dot; - QString wildCardDomain = QLatin1Char('*') + domain.rightRef(count); + QString wildCardDomain = QLatin1Char('*') + domain.right(count); // 2. if table contains '*.bar.com', // test if table contains '!foo.bar.com' if (containsTLDEntry(wildCardDomain)) { diff --git a/src/corelib/io/qtldurl_p.h b/src/corelib/io/qtldurl_p.h index 35a61797cf..b1fde0c700 100644 --- a/src/corelib/io/qtldurl_p.h +++ b/src/corelib/io/qtldurl_p.h @@ -57,7 +57,11 @@ QT_BEGIN_NAMESPACE Q_CORE_EXPORT QString qTopLevelDomain(const QString &domain); -Q_CORE_EXPORT bool qIsEffectiveTLD(const QString &domain); +Q_CORE_EXPORT bool qIsEffectiveTLD(const QStringRef &domain); +inline bool qIsEffectiveTLD(const QString &domain) +{ + return qIsEffectiveTLD(QStringRef(&domain)); +} QT_END_NAMESPACE -- cgit v1.2.3