Edit: /usr/include/boost/io/ostream_put.hpp (1497B)
/*
Copyright 2019 Glen Joseph Fernandes
(glenjofe@gmail.com)
Distributed under the Boost Software License, Version 1.0.
(http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_IO_OSTREAM_PUT_HPP
#define BOOST_IO_OSTREAM_PUT_HPP
#include
#include
namespace boost {
namespace io {
template
inline std::basic_ostream&
ostream_put(std::basic_ostream& os, const charT* data,
std::size_t size)
{
typedef std::basic_ostream stream;
detail::ostream_guard guard(os);
typename stream::sentry entry(os);
if (entry) {
std::basic_streambuf& buf = *os.rdbuf();
std::size_t width = static_cast(os.width());
if (width <= size) {
if (static_cast(buf.sputn(data, size)) != size) {
return os;
}
} else if ((os.flags() & stream::adjustfield) == stream::left) {
if (static_cast(buf.sputn(data, size)) != size ||
!detail::buffer_fill(buf, os.fill(), width - size)) {
return os;
}
} else if (!detail::buffer_fill(buf, os.fill(), width - size) ||
static_cast(buf.sputn(data, size)) != size) {
return os;
}
os.width(0);
}
guard.release();
return os;
}
} /* io */
} /* boost */
#endif