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
|
|
|
*/
|
|
|
|
|
2016-05-22 23:07:50 +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 {
|
2017-02-14 21:29:47 +00:00
|
|
|
FMT_FUNC void write(std::ostream &os, buffer &buf) {
|
|
|
|
const char *data = buf.data();
|
2017-09-04 18:41:15 +00:00
|
|
|
typedef std::make_unsigned<std::streamsize>::type UnsignedStreamSize;
|
2017-02-14 21:29:47 +00:00
|
|
|
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) {
|
2017-02-18 17:13:12 +00:00
|
|
|
memory_buffer buffer;
|
2017-02-14 21:29:47 +00:00
|
|
|
vformat_to(buffer, format_str, args);
|
|
|
|
internal::write(os, buffer);
|
2016-05-06 14:37:20 +00:00
|
|
|
}
|
|
|
|
} // namespace fmt
|