11#if defined(__MINGW32__) || defined(__CYGWIN__)
13# undef __STRICT_ANSI__
23#if defined __APPLE__ || defined(__FreeBSD__)
30#if FMT_HAS_INCLUDE("winapifamily.h")
31# include <winapifamily.h>
33#if FMT_HAS_INCLUDE("fcntl.h") && \
34 (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
36# define FMT_USE_FCNTL 1
38# define FMT_USE_FCNTL 0
42# if defined(_WIN32) && !defined(__MINGW32__)
44# define FMT_POSIX(call) _##call
46# define FMT_POSIX(call) call
52# define FMT_POSIX_CALL(call) FMT_SYSTEM(call)
54# define FMT_SYSTEM(call) call
57# define FMT_POSIX_CALL(call) ::_##call
59# define FMT_POSIX_CALL(call) ::call
66# define FMT_RETRY_VAL(result, expression, error_result) \
68 (result) = (expression); \
69 } while ((result) == (error_result) && errno == EINTR)
71# define FMT_RETRY_VAL(result, expression, error_result) result = (expression)
74#define FMT_RETRY(result, expression) FMT_RETRY_VAL(result, expression, -1)
157 other.
file_ =
nullptr;
163 other.file_ =
nullptr;
181 fmt::vprint(
file_, format_str, args);
184 template <
typename... Args>
202 explicit file(
int fd) : fd_(fd) {}
219 file(
const file&) =
delete;
220 void operator=(
const file&) =
delete;
222 file(file&& other)
FMT_NOEXCEPT : fd_(other.fd_) { other.fd_ = -1; }
242 FMT_API long long size()
const;
245 FMT_API std::size_t read(
void* buffer, std::size_t count);
248 FMT_API std::size_t
write(
const void* buffer, std::size_t count);
252 FMT_API static file dup(
int fd);
264 FMT_API static void pipe(file& read_end, file& write_end);
280 using locale_t = _locale_t;
282 enum { LC_NUMERIC_MASK = LC_NUMERIC };
284 static locale_t newlocale(
int category_mask,
const char* locale, locale_t) {
285 return _create_locale(category_mask, locale);
288 static void freelocale(locale_t locale) { _free_locale(locale); }
290 static double strtod_l(
const char* nptr,
char** endptr, _locale_t locale) {
291 return _strtod_l(nptr, endptr, locale);
298 using type = locale_t;
299 Locale(
const Locale&) =
delete;
300 void operator=(
const Locale&) =
delete;
302 Locale() : locale_(newlocale(LC_NUMERIC_MASK,
"C", nullptr)) {
305 ~Locale() { freelocale(locale_); }
307 type get()
const {
return locale_; }
311 double strtod(
const char*& str)
const {
313 double result = strtod_l(str, &end, locale_);
const Char * c_str() const
basic_cstring_view(const Char *s)
basic_cstring_view(const std::basic_string< Char > &s)
FILE * get() const FMT_NOEXCEPT
void print(string_view format_str, const Args &... args)
FMT_API buffered_file(cstring_view filename, cstring_view mode)
void vprint(string_view format_str, format_args args)
void operator=(const buffered_file &)=delete
buffered_file & operator=(buffered_file &&other)
FMT_API int fileno() const
FMT_API ~buffered_file() FMT_NOEXCEPT
buffered_file(const buffered_file &)=delete
buffered_file() FMT_NOEXCEPT
int get() const FMT_NOEXCEPT
error_code(int value=0) FMT_NOEXCEPT
format_arg_store< Context, Args... > make_format_args(const Args &... args)
#define FMT_BEGIN_NAMESPACE
#define FMT_END_NAMESPACE
void write(std::basic_ostream< Char > &os, buffer< Char > &buf)