fmtlegacy/fmt/ostream.cc

36 lines
893 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 "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);
}
}
FMT_FUNC void print(std::ostream &os, CStringRef format_str, ArgList args) {
MemoryWriter w;
w.write(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