diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2012-03-28 18:11:12 -0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-30 01:19:59 +0200 |
commit | 83526a9bdc4133e0bc574e0f9223234ea5afe40c (patch) | |
tree | 40a8dfbf6c05c6f6a9ec3da5ce9ecc3f4ea136e1 | |
parent | 66df11f4d109ca3d97fed8985d6bbc6dcf90733d (diff) |
De-inline qHash(const QUrl&) and improve
Make it a friend and access the internals to have better performance.
Change-Id: I3bbf0b0faa5363278b7b3871d6b6fb5f2225a5f4
Reviewed-by: Giuseppe D'Angelo <dangelog@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
-rw-r--r-- | src/corelib/io/qurl.cpp | 21 | ||||
-rw-r--r-- | src/corelib/io/qurl.h | 6 |
2 files changed, 22 insertions, 5 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index a716369594..0e897c7cdd 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -2567,6 +2567,27 @@ QString QUrl::errorString() const \internal */ +/*! \fn uint qHash(const QUrl &url) + \relates QHash + + Returns the hash value for the \a url. +*/ +uint qHash(const QUrl &url) +{ + if (!url.d) + return qHash(-1); // the hash of an unset port (-1) + + return qHash(url.d->scheme) ^ + qHash(url.d->userName) ^ + qHash(url.d->password) ^ + qHash(url.d->host) ^ + qHash(url.d->port) ^ + qHash(url.d->path) ^ + qHash(url.d->query) ^ + qHash(url.d->fragment); +} + + // The following code has the following copyright: /* Copyright (C) Research In Motion Limited 2009. All rights reserved. diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index a118a9d468..5fcbbf0c0c 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -304,6 +304,7 @@ public: static QByteArray toAce(const QString &); static QStringList idnWhitelist(); static void setIdnWhitelist(const QStringList &); + friend Q_CORE_EXPORT uint qHash(const QUrl &url); private: QUrlPrivate *d; @@ -314,11 +315,6 @@ public: inline DataPtr &data_ptr() { return d; } }; -inline uint qHash(const QUrl &url) -{ - return qHash(url.toString()); -} - Q_DECLARE_TYPEINFO(QUrl, Q_MOVABLE_TYPE); Q_DECLARE_SHARED(QUrl) Q_DECLARE_OPERATORS_FOR_FLAGS(QUrl::ComponentFormattingOptions) |