fmtlegacy/fmt/ostream.cc

37 lines
924 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, Writer &w) {
2016-05-06 14:37:20 +00:00
const char *data = w.data();
typedef internal::MakeUnsigned<std::streamsize>::Type UnsignedStreamSize;
UnsignedStreamSize size = w.size();
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);
}
}
2016-08-27 00:23:13 +00:00
FMT_FUNC void vprint(std::ostream &os, CStringRef format_str,
format_args args) {
2016-05-06 14:37:20 +00:00
MemoryWriter w;
2016-08-27 15:16:49 +00:00
w.vwrite(format_str, args);
2016-08-03 15:52:05 +00:00
internal::write(os, w);
2016-05-06 14:37:20 +00:00
}
} // namespace fmt