fmtlegacy/include/fmt/ostream.cc

37 lines
948 B
C++
Raw Normal View History

2016-05-06 14:37:20 +00:00
/*
Formatting library for C++ - std::ostream support
Copyright (c) 2012 - 2016, Victor Zverovich
All rights reserved.
2016-06-22 13:33:56 +00:00
For the license information refer to format.h.
2016-05-06 14:37:20 +00:00
*/
#include "fmt/ostream.h"
2016-05-06 14:37:20 +00:00
namespace fmt {
2016-08-03 15:52:05 +00:00
namespace internal {
FMT_FUNC void write(std::ostream &os, buffer &buf) {
const char *data = buf.data();
typedef std::make_unsigned<std::streamsize>::type UnsignedStreamSize;
UnsignedStreamSize size = buf.size();
2016-05-06 14:37:20 +00:00
UnsignedStreamSize max_size =
internal::to_unsigned((std::numeric_limits<std::streamsize>::max)());
do {
UnsignedStreamSize n = size <= max_size ? size : max_size;
os.write(data, static_cast<std::streamsize>(n));
data += n;
size -= n;
} while (size != 0);
}
}
2017-12-03 15:32:04 +00:00
FMT_FUNC void vprint(std::ostream &os, string_view format_str,
format_args args) {
memory_buffer buffer;
vformat_to(buffer, format_str, args);
internal::write(os, buffer);
2016-05-06 14:37:20 +00:00
}
} // namespace fmt