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 { 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 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