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>
This commit is contained in:
Thiago Macieira 2012-03-28 18:11:12 -03:00 committed by Qt by Nokia
parent 66df11f4d1
commit 83526a9bdc
2 changed files with 22 additions and 5 deletions

View File

@ -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.

View File

@ -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)