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;
174 FILE*
get()
const FMT_NOEXCEPT {
return file_; }
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; }
235 int descriptor()
const FMT_NOEXCEPT {
return fd_; }
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);
273 #endif // FMT_USE_FCNTL 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_);
321 #endif // FMT_POSIX_H_ #define FMT_BEGIN_NAMESPACE
void print(string_view format_str, const Args &... args)
buffered_file() FMT_NOEXCEPT
basic_cstring_view(const std::basic_string< Char > &s)
const Char * c_str() const
#define FMT_END_NAMESPACE
format_arg_store< Context, Args... > make_format_args(const Args &... args)
void vprint(std::FILE *f, const text_style &ts, const S &format, basic_format_args< buffer_context< Char >> args)
void vprint(string_view format_str, format_args args)
basic_cstring_view(const Char *s)
error_code(int value=0) FMT_NOEXCEPT
void write(std::basic_ostream< Char > &os, buffer< Char > &buf)
buffered_file & operator=(buffered_file &&other)
buffered_file(buffered_file &&other) FMT_NOEXCEPT