summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/include/asio/ip/address.hpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/include/asio/ip/address.hpp')
-rw-r--r--3rdparty/asio/include/asio/ip/address.hpp88
1 files changed, 59 insertions, 29 deletions
diff --git a/3rdparty/asio/include/asio/ip/address.hpp b/3rdparty/asio/include/asio/ip/address.hpp
index 351a815cfcd..1b26c384df5 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-2021 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)
@@ -25,6 +25,10 @@
#include "asio/ip/address_v6.hpp"
#include "asio/ip/bad_address_cast.hpp"
+#if defined(ASIO_HAS_STD_HASH)
+# include <functional>
+#endif // defined(ASIO_HAS_STD_HASH)
+
#if !defined(ASIO_NO_IOSTREAM)
# include <iosfwd>
#endif // !defined(ASIO_NO_IOSTREAM)
@@ -47,46 +51,48 @@ class address
{
public:
/// Default constructor.
- ASIO_DECL address();
+ ASIO_DECL address() ASIO_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) ASIO_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) ASIO_NOEXCEPT;
/// Copy constructor.
- ASIO_DECL address(const address& other);
+ ASIO_DECL address(const address& other) ASIO_NOEXCEPT;
#if defined(ASIO_HAS_MOVE)
/// Move constructor.
- ASIO_DECL address(address&& other);
+ ASIO_DECL address(address&& other) ASIO_NOEXCEPT;
#endif // defined(ASIO_HAS_MOVE)
/// Assign from another address.
- ASIO_DECL address& operator=(const address& other);
+ ASIO_DECL address& operator=(const address& other) ASIO_NOEXCEPT;
#if defined(ASIO_HAS_MOVE)
/// Move-assign from another address.
- ASIO_DECL address& operator=(address&& other);
+ ASIO_DECL address& operator=(address&& other) ASIO_NOEXCEPT;
#endif // defined(ASIO_HAS_MOVE)
/// Assign from an IPv4 address.
ASIO_DECL address& operator=(
- const asio::ip::address_v4& ipv4_address);
+ const asio::ip::address_v4& ipv4_address) ASIO_NOEXCEPT;
/// Assign from an IPv6 address.
ASIO_DECL address& operator=(
- const asio::ip::address_v6& ipv6_address);
+ const asio::ip::address_v6& ipv6_address) ASIO_NOEXCEPT;
/// Get whether the address is an IP version 4 address.
- bool is_v4() const
+ bool is_v4() const ASIO_NOEXCEPT
{
return type_ == ipv4;
}
/// Get whether the address is an IP version 6 address.
- bool is_v6() const
+ bool is_v6() const ASIO_NOEXCEPT
{
return type_ == ipv6;
}
@@ -127,40 +133,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 ASIO_NOEXCEPT;
/// Determine whether the address is unspecified.
- ASIO_DECL bool is_unspecified() const;
+ ASIO_DECL bool is_unspecified() const ASIO_NOEXCEPT;
/// Determine whether the address is a multicast address.
- ASIO_DECL bool is_multicast() const;
+ ASIO_DECL bool is_multicast() const ASIO_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) ASIO_NOEXCEPT;
/// Compare two addresses for inequality.
- friend bool operator!=(const address& a1, const address& a2)
+ friend bool operator!=(const address& a1,
+ const address& a2) ASIO_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) ASIO_NOEXCEPT;
/// Compare addresses for ordering.
- friend bool operator>(const address& a1, const address& a2)
+ friend bool operator>(const address& a1,
+ const address& a2) ASIO_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) ASIO_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) ASIO_NOEXCEPT
{
return !(a1 < a2);
}
@@ -188,8 +200,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) ASIO_NOEXCEPT;
/// Create an address from an IPv4 address string in dotted decimal form,
/// or from an IPv6 address in hexadecimal notation.
@@ -203,10 +215,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) ASIO_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 +233,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) ASIO_NOEXCEPT;
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_HAS_STRING_VIEW)
// || defined(GENERATING_DOCUMENTATION)
#if !defined(ASIO_NO_IOSTREAM)
@@ -250,6 +262,24 @@ std::basic_ostream<Elem, Traits>& operator<<(
} // namespace ip
} // namespace asio
+#if defined(ASIO_HAS_STD_HASH)
+namespace std {
+
+template <>
+struct hash<asio::ip::address>
+{
+ std::size_t operator()(const asio::ip::address& addr)
+ const ASIO_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
+#endif // defined(ASIO_HAS_STD_HASH)
+
#include "asio/detail/pop_options.hpp"
#include "asio/ip/impl/address.hpp"