mirror of
https://github.com/fmtlib/fmt.git
synced 2025-02-06 12:40:07 +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(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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user