• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  Formatting library for C++ - std::ostream support
3 
4  Copyright (c) 2012 - 2016, Victor Zverovich
5  All rights reserved.
6 
7  For the license information refer to format.h.
8  */
9 
10 #include "ostream.h"
11 
12 namespace fmt {
13 
14 namespace internal {
write(std::ostream & os,Writer & w)15 FMT_FUNC void write(std::ostream &os, Writer &w) {
16   const char *data = w.data();
17   typedef internal::MakeUnsigned<std::streamsize>::Type UnsignedStreamSize;
18   UnsignedStreamSize size = w.size();
19   UnsignedStreamSize max_size =
20       internal::to_unsigned((std::numeric_limits<std::streamsize>::max)());
21   do {
22     UnsignedStreamSize n = size <= max_size ? size : max_size;
23     os.write(data, static_cast<std::streamsize>(n));
24     data += n;
25     size -= n;
26   } while (size != 0);
27 }
28 }
29 
print(std::ostream & os,CStringRef format_str,ArgList args)30 FMT_FUNC void print(std::ostream &os, CStringRef format_str, ArgList args) {
31   MemoryWriter w;
32   w.write(format_str, args);
33   internal::write(os, w);
34 }
35 }  // namespace fmt
36