mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-25 15:21:54 +00:00
Fix MSVC build. FormatError -> FormatMessage to avoid ambiguity.
This commit is contained in:
parent
5aa36285b1
commit
4f4e6c965f
13
format.h
13
format.h
@ -2184,7 +2184,8 @@ inline void FormatDec(char *&buffer, T value) {
|
|||||||
#define FMT_RSEQ_N() 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
|
#define FMT_RSEQ_N() 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
|
||||||
|
|
||||||
#define FMT_CONCAT(a, b) a##b
|
#define FMT_CONCAT(a, b) a##b
|
||||||
#define FMT_FOR_EACH_(N, f, ...) FMT_CONCAT(FMT_FOR_EACH, N)(f, __VA_ARGS__)
|
#define FMT_FOR_EACH_(N, f, ...) \
|
||||||
|
FMT_EXPAND(FMT_CONCAT(FMT_FOR_EACH, N)(f, __VA_ARGS__))
|
||||||
#define FMT_FOR_EACH(f, ...) \
|
#define FMT_FOR_EACH(f, ...) \
|
||||||
FMT_EXPAND(FMT_FOR_EACH_(FMT_NARG(__VA_ARGS__), f, __VA_ARGS__))
|
FMT_EXPAND(FMT_FOR_EACH_(FMT_NARG(__VA_ARGS__), f, __VA_ARGS__))
|
||||||
|
|
||||||
@ -2194,26 +2195,26 @@ inline void FormatDec(char *&buffer, T value) {
|
|||||||
|
|
||||||
// Defines a wrapper for a function taking __VA_ARGS__ arguments
|
// Defines a wrapper for a function taking __VA_ARGS__ arguments
|
||||||
// and n additional arguments of arbitrary types.
|
// and n additional arguments of arbitrary types.
|
||||||
# define FMT_WRAP(return_type, func, n, ...) FMT_EXPAND( \
|
# define FMT_WRAP(return_type, func, n, ...) \
|
||||||
template <FMT_GEN(n, FMT_MAKE_TEMPLATE_ARG)> \
|
template <FMT_GEN(n, FMT_MAKE_TEMPLATE_ARG)> \
|
||||||
inline return_type func(FMT_FOR_EACH(FMT_ADD_ARG_NAME, __VA_ARGS__), \
|
inline return_type func(FMT_FOR_EACH(FMT_ADD_ARG_NAME, __VA_ARGS__), \
|
||||||
FMT_GEN(n, FMT_MAKE_ARG)) { \
|
FMT_GEN(n, FMT_MAKE_ARG)) { \
|
||||||
const fmt::internal::ArgInfo args[] = {FMT_GEN(n, FMT_MAKE_REF)}; \
|
const fmt::internal::ArgInfo args[] = {FMT_GEN(n, FMT_MAKE_REF)}; \
|
||||||
return func(FMT_FOR_EACH(FMT_GET_ARG_NAME, __VA_ARGS__), \
|
return func(FMT_FOR_EACH(FMT_GET_ARG_NAME, __VA_ARGS__), \
|
||||||
fmt::ArgList(args, sizeof(args) / sizeof(*args))); \
|
fmt::ArgList(args, sizeof(args) / sizeof(*args))); \
|
||||||
})
|
}
|
||||||
|
|
||||||
// Defines a variadic function with the specified return type and argument
|
// Defines a variadic function with the specified return type and argument
|
||||||
// types passed as variable arguments.
|
// types passed as variable arguments.
|
||||||
// Example:
|
// Example:
|
||||||
// std::string FormatError(int error_code, const char *format,
|
// std::string FormatMessage(const char *format, int id,
|
||||||
// const fmt::ArgList &args) {
|
// const fmt::ArgList &args) {
|
||||||
// fmt::Writer w;
|
// fmt::Writer w;
|
||||||
// w.format("Error {}: ", error_code);
|
// w.format("[{}] ", id);
|
||||||
// w.format(format, args);
|
// w.format(format, args);
|
||||||
// return w.str();
|
// return w.str();
|
||||||
// }
|
// }
|
||||||
// FMT_VARIADIC(std::string, FormatError, int, const char *)
|
// FMT_VARIADIC(std::string, FormatMessage, int, const char *)
|
||||||
#define FMT_VARIADIC(return_type, func, ...) \
|
#define FMT_VARIADIC(return_type, func, ...) \
|
||||||
inline return_type func(FMT_FOR_EACH(FMT_ADD_ARG_NAME, __VA_ARGS__)) { \
|
inline return_type func(FMT_FOR_EACH(FMT_ADD_ARG_NAME, __VA_ARGS__)) { \
|
||||||
return func(FMT_FOR_EACH(FMT_GET_ARG_NAME, __VA_ARGS__), \
|
return func(FMT_FOR_EACH(FMT_GET_ARG_NAME, __VA_ARGS__), \
|
||||||
|
@ -1677,17 +1677,17 @@ TEST(FormatTest, VariadicMacro) {
|
|||||||
EXPECT_EQ("42 abc 1.2", test(42, " {} {}", "abc", 1.2));
|
EXPECT_EQ("42 abc 1.2", test(42, " {} {}", "abc", 1.2));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string FormatError(int error_code, const char *format,
|
std::string FormatMessage(const char *format, int id,
|
||||||
const fmt::ArgList &args) {
|
const fmt::ArgList &args) {
|
||||||
fmt::Writer w;
|
fmt::Writer w;
|
||||||
w.format("Error {}: ", error_code);
|
w.format("[{}] ", id);
|
||||||
w.format(format, args);
|
w.format(format, args);
|
||||||
return w.str();
|
return w.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
FMT_VARIADIC(std::string, FormatError, int, const char *)
|
FMT_VARIADIC(std::string, FormatMessage, int, const char *)
|
||||||
|
|
||||||
TEST(FormatTest, FormatError) {
|
TEST(FormatTest, FormatMessageExample) {
|
||||||
EXPECT_EQ("Error 42: something happened",
|
EXPECT_EQ("[42] something happened",
|
||||||
FormatError(42, "{} happened", "something"));
|
MyFormatError(42, "{} happened", "something"));
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user