diff options
Diffstat (limited to '3rdparty/asio/include/asio/ip/address.hpp')
-rw-r--r-- | 3rdparty/asio/include/asio/ip/address.hpp | 87 |
1 files changed, 54 insertions, 33 deletions
diff --git a/3rdparty/asio/include/asio/ip/address.hpp b/3rdparty/asio/include/asio/ip/address.hpp index 351a815cfcd..337abe7fd69 100644 --- a/3rdparty/asio/include/asio/ip/address.hpp +++ b/3rdparty/asio/include/asio/ip/address.hpp @@ -2,7 +2,7 @@ // ip/address.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,7 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include "asio/detail/config.hpp" +#include <functional> #include <string> #include "asio/detail/throw_exception.hpp" #include "asio/detail/string_view.hpp" @@ -47,46 +48,44 @@ class address { public: /// Default constructor. - ASIO_DECL address(); + ASIO_DECL address() noexcept; /// Construct an address from an IPv4 address. - ASIO_DECL address(const asio::ip::address_v4& ipv4_address); + ASIO_DECL address( + const asio::ip::address_v4& ipv4_address) noexcept; /// Construct an address from an IPv6 address. - ASIO_DECL address(const asio::ip::address_v6& ipv6_address); + ASIO_DECL address( + const asio::ip::address_v6& ipv6_address) noexcept; /// Copy constructor. - ASIO_DECL address(const address& other); + ASIO_DECL address(const address& other) noexcept; -#if defined(ASIO_HAS_MOVE) /// Move constructor. - ASIO_DECL address(address&& other); -#endif // defined(ASIO_HAS_MOVE) + ASIO_DECL address(address&& other) noexcept; /// Assign from another address. - ASIO_DECL address& operator=(const address& other); + ASIO_DECL address& operator=(const address& other) noexcept; -#if defined(ASIO_HAS_MOVE) /// Move-assign from another address. - ASIO_DECL address& operator=(address&& other); -#endif // defined(ASIO_HAS_MOVE) + ASIO_DECL address& operator=(address&& other) noexcept; /// Assign from an IPv4 address. ASIO_DECL address& operator=( - const asio::ip::address_v4& ipv4_address); + const asio::ip::address_v4& ipv4_address) noexcept; /// Assign from an IPv6 address. ASIO_DECL address& operator=( - const asio::ip::address_v6& ipv6_address); + const asio::ip::address_v6& ipv6_address) noexcept; /// Get whether the address is an IP version 4 address. - bool is_v4() const + bool is_v4() const noexcept { return type_ == ipv4; } /// Get whether the address is an IP version 6 address. - bool is_v6() const + bool is_v6() const noexcept { return type_ == ipv6; } @@ -127,40 +126,46 @@ public: #endif // !defined(ASIO_NO_DEPRECATED) /// Determine whether the address is a loopback address. - ASIO_DECL bool is_loopback() const; + ASIO_DECL bool is_loopback() const noexcept; /// Determine whether the address is unspecified. - ASIO_DECL bool is_unspecified() const; + ASIO_DECL bool is_unspecified() const noexcept; /// Determine whether the address is a multicast address. - ASIO_DECL bool is_multicast() const; + ASIO_DECL bool is_multicast() const noexcept; /// Compare two addresses for equality. - ASIO_DECL friend bool operator==(const address& a1, const address& a2); + ASIO_DECL friend bool operator==(const address& a1, + const address& a2) noexcept; /// Compare two addresses for inequality. - friend bool operator!=(const address& a1, const address& a2) + friend bool operator!=(const address& a1, + const address& a2) noexcept { return !(a1 == a2); } /// Compare addresses for ordering. - ASIO_DECL friend bool operator<(const address& a1, const address& a2); + ASIO_DECL friend bool operator<(const address& a1, + const address& a2) noexcept; /// Compare addresses for ordering. - friend bool operator>(const address& a1, const address& a2) + friend bool operator>(const address& a1, + const address& a2) noexcept { return a2 < a1; } /// Compare addresses for ordering. - friend bool operator<=(const address& a1, const address& a2) + friend bool operator<=(const address& a1, + const address& a2) noexcept { return !(a2 < a1); } /// Compare addresses for ordering. - friend bool operator>=(const address& a1, const address& a2) + friend bool operator>=(const address& a1, + const address& a2) noexcept { return !(a1 < a2); } @@ -188,8 +193,8 @@ ASIO_DECL address make_address(const char* str); /** * @relates address */ -ASIO_DECL address make_address( - const char* str, asio::error_code& ec); +ASIO_DECL address make_address(const char* str, + asio::error_code& ec) noexcept; /// Create an address from an IPv4 address string in dotted decimal form, /// or from an IPv6 address in hexadecimal notation. @@ -203,10 +208,10 @@ ASIO_DECL address make_address(const std::string& str); /** * @relates address */ -ASIO_DECL address make_address( - const std::string& str, asio::error_code& ec); +ASIO_DECL address make_address(const std::string& str, + asio::error_code& ec) noexcept; -#if defined(ASIO_HAS_STD_STRING_VIEW) \ +#if defined(ASIO_HAS_STRING_VIEW) \ || defined(GENERATING_DOCUMENTATION) /// Create an address from an IPv4 address string in dotted decimal form, @@ -221,10 +226,10 @@ ASIO_DECL address make_address(string_view str); /** * @relates address */ -ASIO_DECL address make_address( - string_view str, asio::error_code& ec); +ASIO_DECL address make_address(string_view str, + asio::error_code& ec) noexcept; -#endif // defined(ASIO_HAS_STD_STRING_VIEW) +#endif // defined(ASIO_HAS_STRING_VIEW) // || defined(GENERATING_DOCUMENTATION) #if !defined(ASIO_NO_IOSTREAM) @@ -250,6 +255,22 @@ std::basic_ostream<Elem, Traits>& operator<<( } // namespace ip } // namespace asio +namespace std { + +template <> +struct hash<asio::ip::address> +{ + std::size_t operator()(const asio::ip::address& addr) + const noexcept + { + return addr.is_v4() + ? std::hash<asio::ip::address_v4>()(addr.to_v4()) + : std::hash<asio::ip::address_v6>()(addr.to_v6()); + } +}; + +} // namespace std + #include "asio/detail/pop_options.hpp" #include "asio/ip/impl/address.hpp" |