diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2011-10-17 13:46:44 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-23 19:43:00 +0100 |
commit | bd384427c437f8e57a6543e7612c9b70ec908ff7 (patch) | |
tree | 1b887b0cd2de52cf4d370e09e648ee8e128b7784 /src/network/kernel | |
parent | 1882cf1c9d68e0c325c89f0bdf368b47206f19e0 (diff) |
Optimise QHostAddress a little
In QHostAddress::setAddress(SpecialAddress), avoid parsing strings.
Change-Id: Icb756b4c8b06c21dbc231f8c7f0b0dac29ed97c3
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
Diffstat (limited to 'src/network/kernel')
-rw-r--r-- | src/network/kernel/qhostaddress.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index 230abb86aa..92404344b9 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -107,13 +107,14 @@ public: bool parse(); void clear(); + QString ipString; + QString scopeId; + quint32 a; // IPv4 address Q_IPV6ADDR a6; // IPv6 address QAbstractSocket::NetworkLayerProtocol protocol; - QString ipString; bool isParsed; - QString scopeId; friend class QHostAddress; }; @@ -556,23 +557,27 @@ QHostAddress::QHostAddress(const QHostAddress &address) QHostAddress::QHostAddress(SpecialAddress address) : d(new QHostAddressPrivate) { + Q_IPV6ADDR ip6; + memset(&ip6, 0, sizeof ip6); + switch (address) { case Null: break; case Broadcast: - setAddress(QLatin1String("255.255.255.255")); + d->setAddress(quint32(-1)); break; case LocalHost: - setAddress(QLatin1String("127.0.0.1")); + d->setAddress(0x7f000001); break; case LocalHostIPv6: - setAddress(QLatin1String("::1")); + ip6[15] = 1; + d->setAddress(ip6); break; case AnyIPv4: - setAddress(QLatin1String("0.0.0.0")); + setAddress(0u); break; case AnyIPv6: - setAddress(QLatin1String("::")); + d->setAddress(ip6); break; case Any: d->clear(); |