11d2049b53e3ae38807ac763df2212b29008549f2alabuzhev/*
21d2049b53e3ae38807ac763df2212b29008549f2alabuzhev Formatting library for C++
31d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
41d2049b53e3ae38807ac763df2212b29008549f2alabuzhev Copyright (c) 2012 - 2016, Victor Zverovich
51d2049b53e3ae38807ac763df2212b29008549f2alabuzhev All rights reserved.
61d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
71d2049b53e3ae38807ac763df2212b29008549f2alabuzhev For the license information refer to format.h.
81d2049b53e3ae38807ac763df2212b29008549f2alabuzhev */
91d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
101d2049b53e3ae38807ac763df2212b29008549f2alabuzhev#include "format.h"
111d2049b53e3ae38807ac763df2212b29008549f2alabuzhev#include "printf.h"
121d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
131d2049b53e3ae38807ac763df2212b29008549f2alabuzhevnamespace fmt {
141d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
151d2049b53e3ae38807ac763df2212b29008549f2alabuzhevtemplate <typename Char>
161d2049b53e3ae38807ac763df2212b29008549f2alabuzhevvoid printf(BasicWriter<Char> &w, BasicCStringRef<Char> format, ArgList args);
171d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
181d2049b53e3ae38807ac763df2212b29008549f2alabuzhevFMT_FUNC int fprintf(std::FILE *f, CStringRef format, ArgList args) {
191d2049b53e3ae38807ac763df2212b29008549f2alabuzhev  MemoryWriter w;
201d2049b53e3ae38807ac763df2212b29008549f2alabuzhev  printf(w, format, args);
211d2049b53e3ae38807ac763df2212b29008549f2alabuzhev  std::size_t size = w.size();
221d2049b53e3ae38807ac763df2212b29008549f2alabuzhev  return std::fwrite(w.data(), 1, size, f) < size ? -1 : static_cast<int>(size);
231d2049b53e3ae38807ac763df2212b29008549f2alabuzhev}
241d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
251d2049b53e3ae38807ac763df2212b29008549f2alabuzhev#ifndef FMT_HEADER_ONLY
261d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
271d2049b53e3ae38807ac763df2212b29008549f2alabuzhevtemplate void PrintfFormatter<char>::format(CStringRef format);
281d2049b53e3ae38807ac763df2212b29008549f2alabuzhevtemplate void PrintfFormatter<wchar_t>::format(WCStringRef format);
291d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
301d2049b53e3ae38807ac763df2212b29008549f2alabuzhev#endif  // FMT_HEADER_ONLY
311d2049b53e3ae38807ac763df2212b29008549f2alabuzhev
321d2049b53e3ae38807ac763df2212b29008549f2alabuzhev}  // namespace fmt
33