Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gabime/spdlog.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordkavolis <12998363+dkavolis@users.noreply.github.com>2021-07-22 18:19:48 +0300
committerdkavolis <12998363+dkavolis@users.noreply.github.com>2021-07-22 18:23:56 +0300
commitd8f13cbd5bea70f20da22d984bdba93766998a0f (patch)
tree333b7ffc0dfeb8a0282a68bc1cf077dd6b259476 /include
parent0f39da5490959a9374b33ca11557ea61e203f071 (diff)
replace FormatString template argument with fmt::basic_format_string
Diffstat (limited to 'include')
-rw-r--r--include/spdlog/common.h11
-rw-r--r--include/spdlog/logger.h100
-rw-r--r--include/spdlog/spdlog.h82
3 files changed, 150 insertions, 43 deletions
diff --git a/include/spdlog/common.h b/include/spdlog/common.h
index d6434893..7636df4d 100644
--- a/include/spdlog/common.h
+++ b/include/spdlog/common.h
@@ -123,13 +123,24 @@ using wmemory_buf_t = fmt::basic_memory_buffer<wchar_t, 250>;
template<typename T>
struct is_convertible_to_wstring_view : std::is_convertible<T, wstring_view_t>
{};
+template<class T>
+struct is_convertible_to_wformat_string : std::is_convertible<T, fmt::wformat_string<>>
+{};
# endif // _WIN32
#else
template<typename>
struct is_convertible_to_wstring_view : std::false_type
{};
+template<class>
+struct is_convertible_to_wformat_string : std::false_type
+{};
#endif // SPDLOG_WCHAR_TO_UTF8_SUPPORT
+template<class T>
+struct is_convertible_to_basic_format_string
+ : std::integral_constant<bool, std::is_convertible<const T &, fmt::format_string<>>::value || is_convertible_to_wformat_string<T>::value>
+{};
+
#if defined(SPDLOG_NO_ATOMIC_LEVELS)
using level_t = details::null_atomic_int;
#else
diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h
index befe7321..6cbcdf6f 100644
--- a/include/spdlog/logger.h
+++ b/include/spdlog/logger.h
@@ -77,14 +77,14 @@ public:
logger &operator=(logger other) SPDLOG_NOEXCEPT;
void swap(spdlog::logger &other) SPDLOG_NOEXCEPT;
- template<typename FormatString, typename... Args>
- void log(source_loc loc, level::level_enum lvl, const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void log(source_loc loc, level::level_enum lvl, fmt::format_string<Args...> fmt, Args &&...args)
{
log_(loc, lvl, fmt, std::forward<Args>(args)...);
}
- template<typename FormatString, typename... Args>
- void log(level::level_enum lvl, const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void log(level::level_enum lvl, fmt::format_string<Args...> fmt, Args &&...args)
{
log(source_loc{}, lvl, fmt, std::forward<Args>(args)...);
}
@@ -134,50 +134,98 @@ public:
}
// T cannot be statically converted to string_view or wstring_view
- template<class T, typename std::enable_if<!std::is_convertible<const T &, spdlog::string_view_t>::value &&
- !is_convertible_to_wstring_view<const T &>::value,
- int>::type = 0>
+ template<class T, typename std::enable_if<!is_convertible_to_basic_format_string<T>::value, int>::type = 0>
void log(source_loc loc, level::level_enum lvl, const T &msg)
{
log(loc, lvl, "{}", msg);
}
- template<typename FormatString, typename... Args>
- void trace(const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void trace(fmt::format_string<Args...> fmt, Args &&...args)
{
log(level::trace, fmt, std::forward<Args>(args)...);
}
- template<typename FormatString, typename... Args>
- void debug(const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void debug(fmt::format_string<Args...> fmt, Args &&...args)
{
log(level::debug, fmt, std::forward<Args>(args)...);
}
- template<typename FormatString, typename... Args>
- void info(const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void info(fmt::format_string<Args...> fmt, Args &&...args)
{
log(level::info, fmt, std::forward<Args>(args)...);
}
- template<typename FormatString, typename... Args>
- void warn(const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void warn(fmt::format_string<Args...> fmt, Args &&...args)
{
log(level::warn, fmt, std::forward<Args>(args)...);
}
- template<typename FormatString, typename... Args>
- void error(const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void error(fmt::format_string<Args...> fmt, Args &&...args)
{
log(level::err, fmt, std::forward<Args>(args)...);
}
- template<typename FormatString, typename... Args>
- void critical(const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void critical(fmt::format_string<Args...> fmt, Args &&...args)
{
log(level::critical, fmt, std::forward<Args>(args)...);
}
+#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
+ template<typename... Args>
+ void log(level::level_enum lvl, fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(source_loc{}, lvl, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void log(source_loc loc, level::level_enum lvl, fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log_(loc, lvl, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void trace(fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(level::trace, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void debug(fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(level::debug, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void info(fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(level::info, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void warn(fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(level::warn, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void error(fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(level::err, fmt, std::forward<Args>(args)...);
+ }
+
+ template<typename... Args>
+ void critical(fmt::wformat_string<Args...> fmt, Args &&...args)
+ {
+ log(level::critical, fmt, std::forward<Args>(args)...);
+ }
+#endif
+
template<typename T>
void trace(const T &msg)
{
@@ -269,9 +317,8 @@ protected:
details::backtracer tracer_;
// common implementation for after templated public api has been resolved
- template<typename FormatString, typename... Args, typename Char = fmt::char_t<FormatString>,
- typename std::enable_if<!std::is_same<Char, wchar_t>::value, Char>::type * = nullptr>
- void log_(source_loc loc, level::level_enum lvl, const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void log_(source_loc loc, level::level_enum lvl, string_view_t fmt, Args &&...args)
{
bool log_enabled = should_log(lvl);
bool traceback_enabled = tracer_.enabled();
@@ -282,7 +329,7 @@ protected:
SPDLOG_TRY
{
memory_buf_t buf;
- fmt::detail::vformat_to(buf, fmt::to_string_view(fmt), fmt::make_args_checked<Args...>(fmt, args...));
+ fmt::detail::vformat_to(buf, fmt, fmt::make_format_args(args...));
details::log_msg log_msg(loc, name_, lvl, string_view_t(buf.data(), buf.size()));
log_it_(log_msg, log_enabled, traceback_enabled);
}
@@ -290,9 +337,8 @@ protected:
}
#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
- template<typename FormatString, typename... Args, typename Char = fmt::char_t<FormatString>,
- typename std::enable_if<std::is_same<Char, wchar_t>::value, Char>::type * = nullptr>
- void log_(source_loc loc, level::level_enum lvl, const FormatString &fmt, Args &&...args)
+ template<typename... Args>
+ void log_(source_loc loc, level::level_enum lvl, wstring_view_t fmt, Args &&...args)
{
bool log_enabled = should_log(lvl);
bool traceback_enabled = tracer_.enabled();
@@ -304,7 +350,7 @@ protected:
{
// format to wmemory_buffer and convert to utf8
fmt::wmemory_buffer wbuf;
- fmt::detail::vformat_to(wbuf, fmt::wstring_view(fmt), fmt::make_args_checked<Args...>(fmt, args...));
+ fmt::detail::vformat_to(wbuf, fmt, fmt::make_format_args<fmt::wformat_context>(args...));
memory_buf_t buf;
details::os::wstr_to_utf8buf(wstring_view_t(wbuf.data(), wbuf.size()), buf);
details::log_msg log_msg(loc, name_, lvl, string_view_t(buf.data(), buf.size()));
diff --git a/include/spdlog/spdlog.h b/include/spdlog/spdlog.h
index 41c6bbb8..812896da 100644
--- a/include/spdlog/spdlog.h
+++ b/include/spdlog/spdlog.h
@@ -127,50 +127,50 @@ SPDLOG_API spdlog::logger *default_logger_raw();
SPDLOG_API void set_default_logger(std::shared_ptr<spdlog::logger> default_logger);
-template<typename FormatString, typename... Args>
-inline void log(source_loc source, level::level_enum lvl, const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void log(source_loc source, level::level_enum lvl, fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->log(source, lvl, fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void log(level::level_enum lvl, const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void log(level::level_enum lvl, fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->log(source_loc{}, lvl, fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void trace(const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void trace(fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->trace(fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void debug(const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void debug(fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->debug(fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void info(const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void info(fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->info(fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void warn(const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void warn(fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->warn(fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void error(const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void error(fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->error(fmt, std::forward<Args>(args)...);
}
-template<typename FormatString, typename... Args>
-inline void critical(const FormatString &fmt, Args &&...args)
+template<typename... Args>
+inline void critical(fmt::format_string<Args...> fmt, Args &&...args)
{
default_logger_raw()->critical(fmt, std::forward<Args>(args)...);
}
@@ -187,6 +187,56 @@ inline void log(level::level_enum lvl, const T &msg)
default_logger_raw()->log(lvl, msg);
}
+#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
+template<typename... Args>
+inline void log(source_loc source, level::level_enum lvl, fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->log(source, lvl, fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void log(level::level_enum lvl, fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->log(source_loc{}, lvl, fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void trace(fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->trace(fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void debug(fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->debug(fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void info(fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->info(fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void warn(fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->warn(fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void error(fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->error(fmt, std::forward<Args>(args)...);
+}
+
+template<typename... Args>
+inline void critical(fmt::wformat_string<Args...> fmt, Args &&...args)
+{
+ default_logger_raw()->critical(fmt, std::forward<Args>(args)...);
+}
+#endif
+
template<typename T>
inline void trace(const T &msg)
{