Add println for compiled format string
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
This commit is contained in:
parent
4bbe317bef
commit
fedf3ca24e
@ -585,12 +585,29 @@ void print(std::FILE* f, const S& format_str, const Args&... args) {
|
|||||||
detail::print(f, {buffer.data(), buffer.size()});
|
detail::print(f, {buffer.data(), buffer.size()});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename S, typename... Args,
|
||||||
|
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
|
||||||
|
void println(std::FILE* f, const S& format_str, const Args&... args) {
|
||||||
|
memory_buffer buffer;
|
||||||
|
using Char = typename S::char_type;
|
||||||
|
Char suffix[] = {Char('\n'), 0};
|
||||||
|
fmt::format_to(std::back_inserter(buffer), format_str, args...);
|
||||||
|
buffer.append(suffix, suffix + 1);
|
||||||
|
detail::print(f, {buffer.data(), buffer.size()});
|
||||||
|
}
|
||||||
|
|
||||||
template <typename S, typename... Args,
|
template <typename S, typename... Args,
|
||||||
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
|
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
|
||||||
void print(const S& format_str, const Args&... args) {
|
void print(const S& format_str, const Args&... args) {
|
||||||
print(stdout, format_str, args...);
|
print(stdout, format_str, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename S, typename... Args,
|
||||||
|
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
|
||||||
|
void println(const S& format_str, const Args&... args) {
|
||||||
|
println(stdout, format_str, args...);
|
||||||
|
}
|
||||||
|
|
||||||
#if FMT_USE_NONTYPE_TEMPLATE_ARGS
|
#if FMT_USE_NONTYPE_TEMPLATE_ARGS
|
||||||
inline namespace literals {
|
inline namespace literals {
|
||||||
template <detail_exported::fixed_string Str> constexpr auto operator""_cf() {
|
template <detail_exported::fixed_string Str> constexpr auto operator""_cf() {
|
||||||
|
|||||||
@ -284,8 +284,12 @@ TEST(compile_test, to_string_and_formatter) {
|
|||||||
TEST(compile_test, print) {
|
TEST(compile_test, print) {
|
||||||
EXPECT_WRITE(stdout, fmt::print(FMT_COMPILE("Don't {}!"), "panic"),
|
EXPECT_WRITE(stdout, fmt::print(FMT_COMPILE("Don't {}!"), "panic"),
|
||||||
"Don't panic!");
|
"Don't panic!");
|
||||||
|
EXPECT_WRITE(stdout, fmt::print(FMT_COMPILE("Don't {}!\n"), "panic"),
|
||||||
|
"Don't panic!\n");
|
||||||
EXPECT_WRITE(stderr, fmt::print(stderr, FMT_COMPILE("Don't {}!"), "panic"),
|
EXPECT_WRITE(stderr, fmt::print(stderr, FMT_COMPILE("Don't {}!"), "panic"),
|
||||||
"Don't panic!");
|
"Don't panic!");
|
||||||
|
EXPECT_WRITE(stderr, fmt::print(stderr, FMT_COMPILE("Don't {}!\n"), "panic"),
|
||||||
|
"Don't panic!\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user