summaryrefslogtreecommitdiff
path: root/boost/asio/ip/impl/address.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/asio/ip/impl/address.ipp')
-rw-r--r--boost/asio/ip/impl/address.ipp100
1 files changed, 54 insertions, 46 deletions
diff --git a/boost/asio/ip/impl/address.ipp b/boost/asio/ip/impl/address.ipp
index 5eda3e9ecf..6c615592e5 100644
--- a/boost/asio/ip/impl/address.ipp
+++ b/boost/asio/ip/impl/address.ipp
@@ -21,6 +21,7 @@
#include <boost/asio/detail/throw_exception.hpp>
#include <boost/asio/error.hpp>
#include <boost/asio/ip/address.hpp>
+#include <boost/asio/ip/bad_address_cast.hpp>
#include <boost/system/system_error.hpp>
#include <boost/asio/detail/push_options.hpp>
@@ -100,11 +101,60 @@ address& address::operator=(const boost::asio::ip::address_v6& ipv6_address)
return *this;
}
+address make_address(const char* str)
+{
+ boost::system::error_code ec;
+ address addr = make_address(str, ec);
+ boost::asio::detail::throw_error(ec);
+ return addr;
+}
+
+address make_address(const char* str, boost::system::error_code& ec)
+{
+ boost::asio::ip::address_v6 ipv6_address =
+ boost::asio::ip::make_address_v6(str, ec);
+ if (!ec)
+ return address(ipv6_address);
+
+ boost::asio::ip::address_v4 ipv4_address =
+ boost::asio::ip::make_address_v4(str, ec);
+ if (!ec)
+ return address(ipv4_address);
+
+ return address();
+}
+
+address make_address(const std::string& str)
+{
+ return make_address(str.c_str());
+}
+
+address make_address(const std::string& str,
+ boost::system::error_code& ec)
+{
+ return make_address(str.c_str(), ec);
+}
+
+#if defined(BOOST_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,
+ boost::system::error_code& ec)
+{
+ return make_address(static_cast<std::string>(str), ec);
+}
+
+#endif // defined(BOOST_ASIO_HAS_STD_STRING_VIEW)
+
boost::asio::ip::address_v4 address::to_v4() const
{
if (type_ != ipv4)
{
- std::bad_cast ex;
+ bad_address_cast ex;
boost::asio::detail::throw_exception(ex);
}
return ipv4_address_;
@@ -114,7 +164,7 @@ boost::asio::ip::address_v6 address::to_v6() const
{
if (type_ != ipv6)
{
- std::bad_cast ex;
+ bad_address_cast ex;
boost::asio::detail::throw_exception(ex);
}
return ipv6_address_;
@@ -127,56 +177,14 @@ std::string address::to_string() const
return ipv4_address_.to_string();
}
+#if !defined(BOOST_ASIO_NO_DEPRECATED)
std::string address::to_string(boost::system::error_code& ec) const
{
if (type_ == ipv6)
return ipv6_address_.to_string(ec);
return ipv4_address_.to_string(ec);
}
-
-address address::from_string(const char* str)
-{
- boost::system::error_code ec;
- address addr = from_string(str, ec);
- boost::asio::detail::throw_error(ec);
- return addr;
-}
-
-address address::from_string(const char* str, boost::system::error_code& ec)
-{
- boost::asio::ip::address_v6 ipv6_address =
- boost::asio::ip::address_v6::from_string(str, ec);
- if (!ec)
- {
- address tmp;
- tmp.type_ = ipv6;
- tmp.ipv6_address_ = ipv6_address;
- return tmp;
- }
-
- boost::asio::ip::address_v4 ipv4_address =
- boost::asio::ip::address_v4::from_string(str, ec);
- if (!ec)
- {
- address tmp;
- tmp.type_ = ipv4;
- tmp.ipv4_address_ = ipv4_address;
- return tmp;
- }
-
- return address();
-}
-
-address address::from_string(const std::string& str)
-{
- return from_string(str.c_str());
-}
-
-address address::from_string(const std::string& str,
- boost::system::error_code& ec)
-{
- return from_string(str.c_str(), ec);
-}
+#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
bool address::is_loopback() const
{