mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-09 21:00:06 +00:00
Fix core version of vformat_to
This commit is contained in:
parent
ea4010d704
commit
61e6d2e38c
@ -16,7 +16,7 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
// The fmt library version in the form major * 10000 + minor * 100 + patch.
|
// The fmt library version in the form major * 10000 + minor * 100 + patch.
|
||||||
#define FMT_VERSION 50201
|
#define FMT_VERSION 50202
|
||||||
|
|
||||||
#ifdef __has_feature
|
#ifdef __has_feature
|
||||||
# define FMT_HAS_FEATURE(x) __has_feature(x)
|
# define FMT_HAS_FEATURE(x) __has_feature(x)
|
||||||
@ -1350,6 +1350,11 @@ template <typename Char>
|
|||||||
std::basic_string<Char> vformat(
|
std::basic_string<Char> vformat(
|
||||||
basic_string_view<Char> format_str,
|
basic_string_view<Char> format_str,
|
||||||
basic_format_args<typename buffer_context<Char>::type> args);
|
basic_format_args<typename buffer_context<Char>::type> args);
|
||||||
|
|
||||||
|
template <typename Char>
|
||||||
|
typename buffer_context<Char>::type::iterator vformat_to(
|
||||||
|
internal::basic_buffer<Char> &buf, basic_string_view<Char> format_str,
|
||||||
|
basic_format_args<typename buffer_context<Char>::type> args);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1371,16 +1376,10 @@ inline internal::named_arg<T, wchar_t> arg(wstring_view name, const T &arg) {
|
|||||||
return {name, arg};
|
return {name, arg};
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function template is deleted intentionally to disable nested named
|
// Disable nested named arguments, e.g. ``arg("a", arg("b", 42))``.
|
||||||
// arguments as in ``format("{}", arg("a", arg("b", 42)))``.
|
|
||||||
template <typename S, typename T, typename Char>
|
template <typename S, typename T, typename Char>
|
||||||
void arg(S, internal::named_arg<T, Char>) = delete;
|
void arg(S, internal::named_arg<T, Char>) = delete;
|
||||||
|
|
||||||
template <typename S>
|
|
||||||
typename buffer_context<FMT_CHAR(S)>::type::iterator vformat_to(
|
|
||||||
internal::basic_buffer<FMT_CHAR(S)> &buf, const S &format_str,
|
|
||||||
basic_format_args<buffer_context<FMT_CHAR(S)> > args);
|
|
||||||
|
|
||||||
template <typename Container>
|
template <typename Container>
|
||||||
struct is_contiguous: std::false_type {};
|
struct is_contiguous: std::false_type {};
|
||||||
|
|
||||||
|
@ -3365,15 +3365,22 @@ std::basic_string<Char> to_string(const basic_memory_buffer<Char, SIZE> &buf) {
|
|||||||
return std::basic_string<Char>(buf.data(), buf.size());
|
return std::basic_string<Char>(buf.data(), buf.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename String, typename Char = FMT_CHAR(String)>
|
template <typename Char>
|
||||||
inline typename buffer_context<FMT_CHAR(String)>::type::iterator vformat_to(
|
typename buffer_context<Char>::type::iterator internal::vformat_to(
|
||||||
internal::basic_buffer<Char> &buf, const String &format_str,
|
internal::basic_buffer<Char> &buf, basic_string_view<Char> format_str,
|
||||||
basic_format_args<typename buffer_context<Char>::type> args) {
|
basic_format_args<typename buffer_context<Char>::type> args) {
|
||||||
typedef back_insert_range<internal::basic_buffer<FMT_CHAR(String)> > range;
|
typedef back_insert_range<internal::basic_buffer<Char> > range;
|
||||||
return vformat_to<arg_formatter<range>>(
|
return vformat_to<arg_formatter<range>>(
|
||||||
buf, to_string_view(format_str), args);
|
buf, to_string_view(format_str), args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename S, typename Char = FMT_CHAR(S)>
|
||||||
|
inline typename buffer_context<Char>::type::iterator vformat_to(
|
||||||
|
internal::basic_buffer<Char> &buf, const S &format_str,
|
||||||
|
basic_format_args<typename buffer_context<Char>::type> args) {
|
||||||
|
return vformat_to(buf, to_string_view(format_str), args);
|
||||||
|
}
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename S, typename... Args,
|
typename S, typename... Args,
|
||||||
std::size_t SIZE = inline_buffer_size,
|
std::size_t SIZE = inline_buffer_size,
|
||||||
|
@ -28,6 +28,9 @@ template FMT_API int internal::char_traits<char>::format_float(
|
|||||||
template FMT_API std::string internal::vformat<char>(
|
template FMT_API std::string internal::vformat<char>(
|
||||||
string_view, basic_format_args<format_context>);
|
string_view, basic_format_args<format_context>);
|
||||||
|
|
||||||
|
template format_context::iterator internal::vformat_to(
|
||||||
|
internal::buffer &, string_view, basic_format_args<format_context>);
|
||||||
|
|
||||||
template FMT_API void internal::sprintf_format(
|
template FMT_API void internal::sprintf_format(
|
||||||
double, internal::buffer &, core_format_specs);
|
double, internal::buffer &, core_format_specs);
|
||||||
template FMT_API void internal::sprintf_format(
|
template FMT_API void internal::sprintf_format(
|
||||||
|
@ -532,6 +532,16 @@ TEST(CoreTest, Format) {
|
|||||||
EXPECT_EQ(fmt::format("{}", 42), "42");
|
EXPECT_EQ(fmt::format("{}", 42), "42");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(CoreTest, FormatTo) {
|
||||||
|
// This should work without including fmt/format.h.
|
||||||
|
#ifdef FMT_FORMAT_H_
|
||||||
|
# error fmt/format.h must not be included in the core test
|
||||||
|
#endif
|
||||||
|
std::string s;
|
||||||
|
fmt::format_to(std::back_inserter(s), "{}", 42);
|
||||||
|
EXPECT_EQ(s, "42");
|
||||||
|
}
|
||||||
|
|
||||||
TEST(CoreTest, ToStringViewForeignStrings) {
|
TEST(CoreTest, ToStringViewForeignStrings) {
|
||||||
using namespace my_ns;
|
using namespace my_ns;
|
||||||
using namespace FakeQt;
|
using namespace FakeQt;
|
||||||
|
Loading…
Reference in New Issue
Block a user