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(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);
} }
/** /**

View File

@ -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);
} }

View File

@ -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);
} }
}; };