Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ostream.cc « bundled « fmt « spdlog « include - github.com/gabime/spdlog.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2148f3c178d0950b76911d2e693f959af0571283 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
Formatting library for C++ - std::ostream support

Copyright (c) 2012 - 2016, Victor Zverovich
All rights reserved.

For the license information refer to format.h.
*/

#include "ostream.h"

namespace fmt {

	namespace internal {
		FMT_FUNC void write(std::ostream &os, Writer &w)
		{
			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);
		internal::write(os, w);
	}
}  // namespace fmt