Commit 0db4b04a authored by gabime's avatar gabime

Bump bundled fmt to version 6.1.0

parent 1aa9ea92
This diff is collapsed.
...@@ -299,15 +299,15 @@ class text_style { ...@@ -299,15 +299,15 @@ class text_style {
return static_cast<uint8_t>(ems) != 0; return static_cast<uint8_t>(ems) != 0;
} }
FMT_CONSTEXPR internal::color_type get_foreground() const FMT_NOEXCEPT { FMT_CONSTEXPR internal::color_type get_foreground() const FMT_NOEXCEPT {
assert(has_foreground() && "no foreground specified for this style"); FMT_ASSERT(has_foreground(), "no foreground specified for this style");
return foreground_color; return foreground_color;
} }
FMT_CONSTEXPR internal::color_type get_background() const FMT_NOEXCEPT { FMT_CONSTEXPR internal::color_type get_background() const FMT_NOEXCEPT {
assert(has_background() && "no background specified for this style"); FMT_ASSERT(has_background(), "no background specified for this style");
return background_color; return background_color;
} }
FMT_CONSTEXPR emphasis get_emphasis() const FMT_NOEXCEPT { FMT_CONSTEXPR emphasis get_emphasis() const FMT_NOEXCEPT {
assert(has_emphasis() && "no emphasis specified for this style"); FMT_ASSERT(has_emphasis(), "no emphasis specified for this style");
return ems; return ems;
} }
...@@ -470,58 +470,41 @@ inline void reset_color(basic_memory_buffer<Char>& buffer) FMT_NOEXCEPT { ...@@ -470,58 +470,41 @@ inline void reset_color(basic_memory_buffer<Char>& buffer) FMT_NOEXCEPT {
} }
template <typename Char> template <typename Char>
std::basic_string<Char> vformat(const text_style& ts, void vformat_to(basic_memory_buffer<Char>& buf, const text_style& ts,
basic_string_view<Char> format_str, basic_string_view<Char> format_str,
basic_format_args<buffer_context<Char> > args) { basic_format_args<buffer_context<Char>> args) {
basic_memory_buffer<Char> buffer;
bool has_style = false; bool has_style = false;
if (ts.has_emphasis()) { if (ts.has_emphasis()) {
has_style = true; has_style = true;
ansi_color_escape<Char> escape = make_emphasis<Char>(ts.get_emphasis()); auto emphasis = internal::make_emphasis<Char>(ts.get_emphasis());
buffer.append(escape.begin(), escape.end()); buf.append(emphasis.begin(), emphasis.end());
} }
if (ts.has_foreground()) { if (ts.has_foreground()) {
has_style = true; has_style = true;
ansi_color_escape<Char> escape = auto foreground =
make_foreground_color<Char>(ts.get_foreground()); internal::make_foreground_color<Char>(ts.get_foreground());
buffer.append(escape.begin(), escape.end()); buf.append(foreground.begin(), foreground.end());
} }
if (ts.has_background()) { if (ts.has_background()) {
has_style = true; has_style = true;
ansi_color_escape<Char> escape = auto background =
make_background_color<Char>(ts.get_background()); internal::make_background_color<Char>(ts.get_background());
buffer.append(escape.begin(), escape.end()); buf.append(background.begin(), background.end());
} }
internal::vformat_to(buffer, format_str, args); vformat_to(buf, format_str, args);
if (has_style) { if (has_style) {
reset_color<Char>(buffer); internal::reset_color<Char>(buf);
} }
return fmt::to_string(buffer);
} }
} // namespace internal } // namespace internal
template <typename S, typename Char = char_t<S> > template <typename S, typename Char = char_t<S>>
void vprint(std::FILE* f, const text_style& ts, const S& format, void vprint(std::FILE* f, const text_style& ts, const S& format,
basic_format_args<buffer_context<Char> > args) { basic_format_args<buffer_context<Char>> args) {
bool has_style = false; basic_memory_buffer<Char> buf;
if (ts.has_emphasis()) { internal::vformat_to(buf, ts, to_string_view(format), args);
has_style = true; buf.push_back(Char(0));
internal::fputs<Char>(internal::make_emphasis<Char>(ts.get_emphasis()), f); internal::fputs(buf.data(), f);
}
if (ts.has_foreground()) {
has_style = true;
internal::fputs<Char>(
internal::make_foreground_color<Char>(ts.get_foreground()), f);
}
if (ts.has_background()) {
has_style = true;
internal::fputs<Char>(
internal::make_background_color<Char>(ts.get_background()), f);
}
vprint(f, format, args);
if (has_style) {
internal::reset_color<Char>(f);
}
} }
/** /**
...@@ -536,7 +519,7 @@ template <typename S, typename... Args, ...@@ -536,7 +519,7 @@ template <typename S, typename... Args,
void print(std::FILE* f, const text_style& ts, const S& format_str, void print(std::FILE* f, const text_style& ts, const S& format_str,
const Args&... args) { const Args&... args) {
internal::check_format_string<Args...>(format_str); internal::check_format_string<Args...>(format_str);
using context = buffer_context<char_t<S> >; using context = buffer_context<char_t<S>>;
format_arg_store<context, Args...> as{args...}; format_arg_store<context, Args...> as{args...};
vprint(f, ts, format_str, basic_format_args<context>(as)); vprint(f, ts, format_str, basic_format_args<context>(as));
} }
...@@ -554,11 +537,13 @@ void print(const text_style& ts, const S& format_str, const Args&... args) { ...@@ -554,11 +537,13 @@ void print(const text_style& ts, const S& format_str, const Args&... args) {
return print(stdout, ts, format_str, args...); return print(stdout, ts, format_str, args...);
} }
template <typename S, typename Char = char_t<S> > template <typename S, typename Char = char_t<S>>
inline std::basic_string<Char> vformat( inline std::basic_string<Char> vformat(
const text_style& ts, const S& format_str, const text_style& ts, const S& format_str,
basic_format_args<buffer_context<Char> > args) { basic_format_args<buffer_context<Char>> args) {
return internal::vformat(ts, to_string_view(format_str), args); basic_memory_buffer<Char> buf;
internal::vformat_to(buf, ts, to_string_view(format_str), args);
return fmt::to_string(buf);
} }
/** /**
...@@ -573,11 +558,11 @@ inline std::basic_string<Char> vformat( ...@@ -573,11 +558,11 @@ inline std::basic_string<Char> vformat(
"The answer is {}", 42); "The answer is {}", 42);
\endrst \endrst
*/ */
template <typename S, typename... Args, typename Char = char_t<S> > template <typename S, typename... Args, typename Char = char_t<S>>
inline std::basic_string<Char> format(const text_style& ts, const S& format_str, inline std::basic_string<Char> format(const text_style& ts, const S& format_str,
const Args&... args) { const Args&... args) {
return internal::vformat(ts, to_string_view(format_str), return vformat(ts, to_string_view(format_str),
{internal::make_args_checked(format_str, args...)}); {internal::make_args_checked<Args...>(format_str, args...)});
} }
FMT_END_NAMESPACE FMT_END_NAMESPACE
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment