Skip to content

Commit

Permalink
Cleanup locking/buffering
Browse files Browse the repository at this point in the history
  • Loading branch information
vitaut committed May 12, 2024
1 parent db1ee42 commit 1f436c6
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 16 deletions.
10 changes: 5 additions & 5 deletions include/fmt/base.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

/**
Expand All @@ -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);
}

/**
Expand All @@ -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);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions include/fmt/format-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
10 changes: 2 additions & 8 deletions include/fmt/os.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
};

Expand Down

0 comments on commit 1f436c6

Please sign in to comment.