Add string_view overloads for the make_address*() functions.
This commit is contained in:
parent
9c3c09ab68
commit
41cf38be81
@ -18,6 +18,7 @@
|
||||
#include "asio/detail/config.hpp"
|
||||
#include <string>
|
||||
#include "asio/detail/throw_exception.hpp"
|
||||
#include "asio/detail/string_view.hpp"
|
||||
#include "asio/detail/type_traits.hpp"
|
||||
#include "asio/error_code.hpp"
|
||||
#include "asio/ip/address_v4.hpp"
|
||||
@ -205,6 +206,27 @@ ASIO_DECL address make_address(const std::string& str);
|
||||
ASIO_DECL address make_address(
|
||||
const std::string& str, asio::error_code& ec);
|
||||
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW) \
|
||||
|| defined(GENERATING_DOCUMENTATION)
|
||||
|
||||
/// Create an address from an IPv4 address string in dotted decimal form,
|
||||
/// or from an IPv6 address in hexadecimal notation.
|
||||
/**
|
||||
* @relates address
|
||||
*/
|
||||
ASIO_DECL address make_address(string_view str);
|
||||
|
||||
/// Create an address from an IPv4 address string in dotted decimal form,
|
||||
/// or from an IPv6 address in hexadecimal notation.
|
||||
/**
|
||||
* @relates address
|
||||
*/
|
||||
ASIO_DECL address make_address(
|
||||
string_view str, asio::error_code& ec);
|
||||
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
// || defined(GENERATING_DOCUMENTATION)
|
||||
|
||||
#if !defined(ASIO_NO_IOSTREAM)
|
||||
|
||||
/// Output an address as a string.
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "asio/detail/array.hpp"
|
||||
#include "asio/detail/cstdint.hpp"
|
||||
#include "asio/detail/socket_types.hpp"
|
||||
#include "asio/detail/string_view.hpp"
|
||||
#include "asio/detail/winsock_init.hpp"
|
||||
#include "asio/error_code.hpp"
|
||||
|
||||
@ -276,6 +277,25 @@ ASIO_DECL address_v4 make_address_v4(const std::string& str);
|
||||
ASIO_DECL address_v4 make_address_v4(
|
||||
const std::string& str, asio::error_code& ec);
|
||||
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW) \
|
||||
|| defined(GENERATING_DOCUMENTATION)
|
||||
|
||||
/// Create an IPv4 address from an IP address string in dotted decimal form.
|
||||
/**
|
||||
* @relates address_v4
|
||||
*/
|
||||
ASIO_DECL address_v4 make_address_v4(string_view str);
|
||||
|
||||
/// Create an IPv4 address from an IP address string in dotted decimal form.
|
||||
/**
|
||||
* @relates address_v4
|
||||
*/
|
||||
ASIO_DECL address_v4 make_address_v4(
|
||||
string_view str, asio::error_code& ec);
|
||||
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
// || defined(GENERATING_DOCUMENTATION)
|
||||
|
||||
#if !defined(ASIO_NO_IOSTREAM)
|
||||
|
||||
/// Output an address as a string.
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <string>
|
||||
#include "asio/detail/array.hpp"
|
||||
#include "asio/detail/socket_types.hpp"
|
||||
#include "asio/detail/string_view.hpp"
|
||||
#include "asio/detail/winsock_init.hpp"
|
||||
#include "asio/error_code.hpp"
|
||||
#include "asio/ip/address_v4.hpp"
|
||||
@ -265,6 +266,25 @@ ASIO_DECL address_v6 make_address_v6(const std::string& str);
|
||||
ASIO_DECL address_v6 make_address_v6(
|
||||
const std::string& str, asio::error_code& ec);
|
||||
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW) \
|
||||
|| defined(GENERATING_DOCUMENTATION)
|
||||
|
||||
/// Create an IPv6 address from an IP address string.
|
||||
/**
|
||||
* @relates address_v6
|
||||
*/
|
||||
ASIO_DECL address_v6 make_address_v6(string_view str);
|
||||
|
||||
/// Create an IPv6 address from an IP address string.
|
||||
/**
|
||||
* @relates address_v6
|
||||
*/
|
||||
ASIO_DECL address_v6 make_address_v6(
|
||||
string_view str, asio::error_code& ec);
|
||||
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
// || defined(GENERATING_DOCUMENTATION)
|
||||
|
||||
/// Tag type used for distinguishing overloads that deal in IPv4-mapped IPv6
|
||||
/// addresses.
|
||||
enum v4_mapped_t { v4_mapped };
|
||||
|
@ -134,6 +134,21 @@ address make_address(const std::string& str,
|
||||
return make_address(str.c_str(), ec);
|
||||
}
|
||||
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
address make_address(string_view str)
|
||||
{
|
||||
return make_address(static_cast<std::string>(str));
|
||||
}
|
||||
|
||||
address make_address(string_view str,
|
||||
asio::error_code& ec)
|
||||
{
|
||||
return make_address(static_cast<std::string>(str), ec);
|
||||
}
|
||||
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
asio::ip::address_v4 address::to_v4() const
|
||||
{
|
||||
if (type_ != ipv4)
|
||||
|
@ -187,6 +187,21 @@ address_v4 make_address_v4(
|
||||
return make_address_v4(str.c_str(), ec);
|
||||
}
|
||||
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
address_v4 make_address_v4(string_view str)
|
||||
{
|
||||
return make_address_v4(static_cast<std::string>(str));
|
||||
}
|
||||
|
||||
address_v4 make_address_v4(string_view str,
|
||||
asio::error_code& ec)
|
||||
{
|
||||
return make_address_v4(static_cast<std::string>(str), ec);
|
||||
}
|
||||
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
} // namespace ip
|
||||
} // namespace asio
|
||||
|
||||
|
@ -303,6 +303,21 @@ address_v6 make_address_v6(
|
||||
return make_address_v6(str.c_str(), ec);
|
||||
}
|
||||
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
address_v6 make_address_v6(string_view str)
|
||||
{
|
||||
return make_address_v6(static_cast<std::string>(str));
|
||||
}
|
||||
|
||||
address_v6 make_address_v6(string_view str,
|
||||
asio::error_code& ec)
|
||||
{
|
||||
return make_address_v6(static_cast<std::string>(str), ec);
|
||||
}
|
||||
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
address_v4 make_address_v4(
|
||||
v4_mapped_t, const address_v6& v6_addr)
|
||||
{
|
||||
|
@ -108,6 +108,15 @@ void test()
|
||||
addr1 = ip::make_address("127.0.0.1", ec);
|
||||
addr1 = ip::make_address(string_value);
|
||||
addr1 = ip::make_address(string_value, ec);
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
std::experimental::string_view string_view_value("127.0.0.1");
|
||||
# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
std::string_view string_view_value("127.0.0.1");
|
||||
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
addr1 = ip::make_address(string_view_value);
|
||||
addr1 = ip::make_address(string_view_value, ec);
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
// address I/O.
|
||||
|
||||
|
@ -132,6 +132,15 @@ void test()
|
||||
addr1 = ip::make_address_v4("127.0.0.1", ec);
|
||||
addr1 = ip::make_address_v4(string_value);
|
||||
addr1 = ip::make_address_v4(string_value, ec);
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
std::experimental::string_view string_view_value("127.0.0.1");
|
||||
# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
std::string_view string_view_value("127.0.0.1");
|
||||
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
addr1 = ip::make_address_v4(string_view_value);
|
||||
addr1 = ip::make_address_v4(string_view_value, ec);
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
// address_v4 I/O.
|
||||
|
||||
|
@ -144,6 +144,15 @@ void test()
|
||||
addr1 = ip::make_address_v6("0::0", ec);
|
||||
addr1 = ip::make_address_v6(string_value);
|
||||
addr1 = ip::make_address_v6(string_value, ec);
|
||||
#if defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
std::experimental::string_view string_view_value("0::0");
|
||||
# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
std::string_view string_view_value("0::0");
|
||||
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
|
||||
addr1 = ip::make_address_v6(string_view_value);
|
||||
addr1 = ip::make_address_v6(string_view_value, ec);
|
||||
#endif // defined(ASIO_HAS_STD_STRING_VIEW)
|
||||
|
||||
// address_v6 IPv4-mapped conversion.
|
||||
#if defined(ASIO_NO_DEPRECATED)
|
||||
|
Loading…
Reference in New Issue
Block a user