diff options
author | dkavolis <12998363+dkavolis@users.noreply.github.com> | 2021-07-22 18:19:48 +0300 |
---|---|---|
committer | dkavolis <12998363+dkavolis@users.noreply.github.com> | 2021-07-22 18:23:56 +0300 |
commit | d8f13cbd5bea70f20da22d984bdba93766998a0f (patch) | |
tree | 333b7ffc0dfeb8a0282a68bc1cf077dd6b259476 /include | |
parent | 0f39da5490959a9374b33ca11557ea61e203f071 (diff) |
replace FormatString template argument with fmt::basic_format_string
Diffstat (limited to 'include')
-rw-r--r-- | include/spdlog/common.h | 11 | ||||
-rw-r--r-- | include/spdlog/logger.h | 100 | ||||
-rw-r--r-- | include/spdlog/spdlog.h | 82 |
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) { |