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>
\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.
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;
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)