mirror of
https://github.com/fmtlib/fmt.git
synced 2025-02-06 21:40:54 +00:00
Cleanup locking/buffering
This commit is contained in:
parent
db1ee420e0
commit
1f436c646e
@ -3010,7 +3010,7 @@ FMT_NODISCARD FMT_INLINE auto formatted_size(format_string<T...> fmt,
|
|||||||
|
|
||||||
FMT_API void vprint(string_view fmt, format_args args);
|
FMT_API void vprint(string_view fmt, format_args args);
|
||||||
FMT_API void vprint(FILE* f, string_view fmt, format_args args);
|
FMT_API void vprint(FILE* f, string_view fmt, format_args args);
|
||||||
FMT_API void vprint_locked(FILE* f, string_view fmt, format_args args);
|
FMT_API void vprint_buffered(FILE* f, string_view fmt, format_args args);
|
||||||
FMT_API void vprintln(FILE* f, string_view fmt, format_args args);
|
FMT_API void vprintln(FILE* f, string_view fmt, format_args args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3027,8 +3027,8 @@ template <typename... T>
|
|||||||
FMT_INLINE void print(format_string<T...> fmt, T&&... args) {
|
FMT_INLINE void print(format_string<T...> fmt, T&&... args) {
|
||||||
const auto& vargs = fmt::make_format_args(args...);
|
const auto& vargs = fmt::make_format_args(args...);
|
||||||
if (!detail::use_utf8()) return detail::vprint_mojibake(stdout, fmt, vargs);
|
if (!detail::use_utf8()) return detail::vprint_mojibake(stdout, fmt, vargs);
|
||||||
return detail::is_locking<T...>() ? vprint(fmt, vargs)
|
return detail::is_locking<T...>() ? vprint_buffered(stdout, fmt, vargs)
|
||||||
: vprint_locked(stdout, fmt, vargs);
|
: vprint(fmt, vargs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3045,8 +3045,8 @@ template <typename... T>
|
|||||||
FMT_INLINE void print(FILE* f, format_string<T...> fmt, T&&... args) {
|
FMT_INLINE void print(FILE* f, format_string<T...> fmt, T&&... args) {
|
||||||
const auto& vargs = fmt::make_format_args(args...);
|
const auto& vargs = fmt::make_format_args(args...);
|
||||||
if (!detail::use_utf8()) return detail::vprint_mojibake(f, fmt, vargs);
|
if (!detail::use_utf8()) return detail::vprint_mojibake(f, fmt, vargs);
|
||||||
return detail::is_locking<T...>() ? vprint(f, fmt, vargs)
|
return detail::is_locking<T...>() ? vprint_buffered(f, fmt, vargs)
|
||||||
: vprint_locked(f, fmt, vargs);
|
: vprint(f, fmt, vargs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1678,14 +1678,14 @@ FMT_FUNC void print(std::FILE* f, string_view text) {
|
|||||||
}
|
}
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
FMT_FUNC void vprint(std::FILE* f, string_view fmt, format_args args) {
|
FMT_FUNC void vprint_buffered(std::FILE* f, string_view fmt, format_args args) {
|
||||||
auto buffer = memory_buffer();
|
auto buffer = memory_buffer();
|
||||||
detail::vformat_to(buffer, fmt, args);
|
detail::vformat_to(buffer, fmt, args);
|
||||||
detail::print(f, {buffer.data(), buffer.size()});
|
detail::print(f, {buffer.data(), buffer.size()});
|
||||||
}
|
}
|
||||||
|
|
||||||
FMT_FUNC void vprint_locked(std::FILE* f, string_view fmt, format_args args) {
|
FMT_FUNC void vprint(std::FILE* f, string_view fmt, format_args args) {
|
||||||
if (!detail::file_ref(f).is_buffered()) return vprint(f, fmt, args);
|
if (!detail::file_ref(f).is_buffered()) return vprint_buffered(f, fmt, args);
|
||||||
auto&& buffer = detail::file_print_buffer(f);
|
auto&& buffer = detail::file_print_buffer(f);
|
||||||
return detail::vformat_to(buffer, fmt, args);
|
return detail::vformat_to(buffer, fmt, args);
|
||||||
}
|
}
|
||||||
|
@ -229,17 +229,11 @@ class buffered_file {
|
|||||||
|
|
||||||
FMT_API auto descriptor() const -> int;
|
FMT_API auto descriptor() const -> int;
|
||||||
|
|
||||||
void vprint(string_view fmt, format_args args) {
|
|
||||||
fmt::vprint(file_, fmt, args);
|
|
||||||
}
|
|
||||||
void vprint_locked(string_view fmt, format_args args) {
|
|
||||||
fmt::vprint_locked(file_, fmt, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
inline void print(string_view fmt, const T&... args) {
|
inline void print(string_view fmt, const T&... args) {
|
||||||
const auto& vargs = fmt::make_format_args(args...);
|
const auto& vargs = fmt::make_format_args(args...);
|
||||||
detail::is_locking<T...>() ? vprint(fmt, vargs) : vprint_locked(fmt, vargs);
|
detail::is_locking<T...>() ? fmt::vprint_buffered(file_, fmt, vargs)
|
||||||
|
: fmt::vprint(file_, fmt, vargs);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user