// // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail 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) // // Official repository: https://github.com/boostorg/beast // #ifndef BOOST_BEAST_WRITE_OSTREAM_HPP #define BOOST_BEAST_WRITE_OSTREAM_HPP #include #include #include #include #include #ifdef BOOST_BEAST_ALLOW_DEPRECATED #include #endif namespace boost { namespace beast { /** Return an output stream that formats values into a DynamicBuffer. This function wraps the caller provided DynamicBuffer into a `std::ostream` derived class, to allow `operator<<` stream style formatting operations. @par Example @code ostream(buffer) << "Hello, world!" << std::endl; @endcode @note Calling members of the underlying buffer before the output stream is destroyed results in undefined behavior. @param buffer An object meeting the requirements of DynamicBuffer into which the formatted output will be placed. @return An object derived from `std::ostream` which redirects output The wrapped dynamic buffer is not modified, a copy is made instead. Ownership of the underlying memory is not transferred, the application is still responsible for managing its lifetime. The caller is responsible for ensuring the dynamic buffer is not destroyed for the lifetime of the output stream. */ template #if BOOST_BEAST_DOXYGEN __implementation_defined__ #else detail::ostream_helper< DynamicBuffer, char, std::char_traits, detail::basic_streambuf_movable::value> #endif ostream(DynamicBuffer& buffer) { static_assert( net::is_dynamic_buffer::value, "DynamicBuffer type requirements not met"); return detail::ostream_helper< DynamicBuffer, char, std::char_traits, detail::basic_streambuf_movable::value>{buffer}; } //------------------------------------------------------------------------------ #ifdef BOOST_BEAST_ALLOW_DEPRECATED template detail::make_printable_adaptor buffers(T const& t) { return make_printable(t); } #else template void buffers(T const&) { static_assert(sizeof(T) == 0, "The function buffers() is deprecated, use make_printable() instead, " "or define BOOST_BEAST_ALLOW_DEPRECATED to silence this error."); } #endif } // beast } // boost #endif