Chris@16: // Chris@16: // ip/impl/address_v4.hpp Chris@16: // ~~~~~~~~~~~~~~~~~~~~~~ Chris@16: // Chris@101: // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: Chris@16: #ifndef BOOST_ASIO_IP_IMPL_ADDRESS_V4_HPP Chris@16: #define BOOST_ASIO_IP_IMPL_ADDRESS_V4_HPP Chris@16: Chris@16: #if defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: # pragma once Chris@16: #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: Chris@16: #if !defined(BOOST_ASIO_NO_IOSTREAM) Chris@16: Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace asio { Chris@16: namespace ip { Chris@16: Chris@16: template Chris@16: std::basic_ostream& operator<<( Chris@16: std::basic_ostream& os, const address_v4& addr) Chris@16: { Chris@16: boost::system::error_code ec; Chris@16: std::string s = addr.to_string(ec); Chris@16: if (ec) Chris@16: { Chris@16: if (os.exceptions() & std::basic_ostream::failbit) Chris@16: boost::asio::detail::throw_error(ec); Chris@16: else Chris@16: os.setstate(std::basic_ostream::failbit); Chris@16: } Chris@16: else Chris@16: for (std::string::iterator i = s.begin(); i != s.end(); ++i) Chris@16: os << os.widen(*i); Chris@16: return os; Chris@16: } Chris@16: Chris@16: } // namespace ip Chris@16: } // namespace asio Chris@16: } // namespace boost Chris@16: Chris@16: #include Chris@16: Chris@16: #endif // !defined(BOOST_ASIO_NO_IOSTREAM) Chris@16: Chris@16: #endif // BOOST_ASIO_IP_IMPL_ADDRESS_V4_HPP