Cleanup locking/buffering

This commit is contained in:
Victor Zverovich 2024-05-12 09:34:17 -07:00
parent db1ee420e0
commit 1f436c646e
3 changed files with 10 additions and 16 deletions

View File

@ -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(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);
/**
@ -3027,8 +3027,8 @@ template <typename... T>
FMT_INLINE void print(format_string<T...> fmt, T&&... args) {
const auto& vargs = fmt::make_format_args(args...);
if (!detail::use_utf8()) return detail::vprint_mojibake(stdout, fmt, vargs);
return detail::is_locking<T...>() ? vprint(fmt, vargs)
: vprint_locked(stdout, fmt, vargs);
return detail::is_locking<T...>() ? vprint_buffered(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) {
const auto& vargs = fmt::make_format_args(args...);
if (!detail::use_utf8()) return detail::vprint_mojibake(f, fmt, vargs);
return detail::is_locking<T...>() ? vprint(f, fmt, vargs)
: vprint_locked(f, fmt, vargs);
return detail::is_locking<T...>() ? vprint_buffered(f, fmt, vargs)
: vprint(f, fmt, vargs);
}
/**

View File

@ -1678,14 +1678,14 @@ FMT_FUNC void print(std::FILE* f, string_view text) {
}
} // 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();
detail::vformat_to(buffer, fmt, args);
detail::print(f, {buffer.data(), buffer.size()});
}
FMT_FUNC void vprint_locked(std::FILE* f, string_view fmt, format_args args) {
if (!detail::file_ref(f).is_buffered()) return vprint(f, fmt, args);
FMT_FUNC void vprint(std::FILE* f, string_view fmt, format_args args) {
if (!detail::file_ref(f).is_buffered()) return vprint_buffered(f, fmt, args);
auto&& buffer = detail::file_print_buffer(f);
return detail::vformat_to(buffer, fmt, args);
}

View File

@ -229,17 +229,11 @@ class buffered_file {
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>
inline void print(string_view fmt, const T&... 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);
}
};