diff --git a/include/spdlog/common.h b/include/spdlog/common.h index 20dbca45..8ff31663 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -340,38 +340,6 @@ struct file_event_handlers { namespace details { -// to_string_view - -SPDLOG_CONSTEXPR_FUNC spdlog::string_view_t to_string_view(const memory_buf_t &buf) - SPDLOG_NOEXCEPT { - return spdlog::string_view_t{buf.data(), buf.size()}; -} - -SPDLOG_CONSTEXPR_FUNC spdlog::string_view_t to_string_view(spdlog::string_view_t str) - SPDLOG_NOEXCEPT { - return str; -} - -#if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) -SPDLOG_CONSTEXPR_FUNC spdlog::wstring_view_t to_string_view(const wmemory_buf_t &buf) - SPDLOG_NOEXCEPT { - return spdlog::wstring_view_t{buf.data(), buf.size()}; -} - -SPDLOG_CONSTEXPR_FUNC spdlog::wstring_view_t to_string_view(spdlog::wstring_view_t str) - SPDLOG_NOEXCEPT { - return str; -} -#endif - -#if defined(SPDLOG_USE_STD_FORMAT) && __cpp_lib_format >= 202207L -template -SPDLOG_CONSTEXPR_FUNC std::basic_string_view to_string_view( - std::basic_format_string fmt) SPDLOG_NOEXCEPT { - return fmt.get(); -} -#endif - // make_unique support for pre c++14 #if __cplusplus >= 201402L // C++14 and beyond using std::enable_if_t; diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index 566db0dc..9dab380e 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -77,12 +77,20 @@ public: template void log(source_loc loc, level::level_enum lvl, format_string_t fmt, Args &&...args) { - log_(loc, lvl, details::to_string_view(fmt), std::forward(args)...); +#ifdef SPDLOG_USE_STD_FORMAT + log_(loc, lvl, fmt.get(), std::forward(args)...); +#else + log_(loc, lvl, fmt.str, std::forward(args)...); +#endif } template void log(level::level_enum lvl, format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(source_loc{}, lvl, fmt, std::forward(args)...); +#else + log(source_loc{}, lvl, fmt.str, std::forward(args)...); +#endif } template @@ -127,43 +135,71 @@ public: template void trace(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::trace, fmt, std::forward(args)...); +#else + log(level::trace, fmt.str, std::forward(args)...); +#endif } template void debug(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::debug, fmt, std::forward(args)...); +#else + log(level::debug, fmt.str, std::forward(args)...); +#endif } template void info(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::info, fmt, std::forward(args)...); +#else + log(level::info, fmt.str, std::forward(args)...); +#endif } template void warn(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::warn, fmt, std::forward(args)...); +#else + log(level::warn, fmt.str, std::forward(args)...); +#endif } template void error(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::err, fmt, std::forward(args)...); +#else + log(level::err, fmt.str, std::forward(args)...); +#endif } template void critical(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::critical, fmt, std::forward(args)...); +#else + log(level::critical, fmt.str, std::forward(args)...); +#endif } #ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT template void log(source_loc loc, level::level_enum lvl, wformat_string_t fmt, Args &&...args) { - log_(loc, lvl, details::to_string_view(fmt), std::forward(args)...); + log_(loc, lvl, fmt.get(), std::forward(args)...); } template void log(level::level_enum lvl, wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(source_loc{}, lvl, fmt, std::forward(args)...); +#else + log(source_loc{}, lvl, fmt.get(), std::forward(args)...); +#endif } void log(log_clock::time_point log_time, @@ -199,32 +235,56 @@ public: template void trace(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::trace, fmt, std::forward(args)...); +#else + log(level::trace, fmt.get(), std::forward(args)...); +#endif } template void debug(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::debug, fmt, std::forward(args)...); +#else + log(level::debug, fmt.get(), std::forward(args)...); +#endif } template void info(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::info, fmt, std::forward(args)...); +#else + log(level::info, fmt.get(), std::forward(args)...); +#endif } template void warn(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::warn, fmt, std::forward(args)...); +#else + log(level::warn, fmt.get(), std::forward(args)...); +#endif } template void error(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::err, fmt, std::forward(args)...); +#else + log(level::err, fmt.get(), std::forward(args)...); +#endif } template void critical(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT log(level::critical, fmt, std::forward(args)...); +#else + log(level::critical, fmt.get(), std::forward(args)...); +#endif } #endif diff --git a/include/spdlog/spdlog.h b/include/spdlog/spdlog.h index 649318b2..5022c59b 100644 --- a/include/spdlog/spdlog.h +++ b/include/spdlog/spdlog.h @@ -150,42 +150,74 @@ inline void log(source_loc source, level::level_enum lvl, format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->log(source, lvl, fmt, std::forward(args)...); +#else + default_logger_raw()->log(source, lvl, fmt.str, std::forward(args)...); +#endif } template inline void log(level::level_enum lvl, format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->log(source_loc{}, lvl, fmt, std::forward(args)...); +#else + default_logger_raw()->log(source_loc{}, lvl, fmt.str, std::forward(args)...); +#endif } template inline void trace(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->trace(fmt, std::forward(args)...); +#else + default_logger_raw()->trace(fmt.str, std::forward(args)...); +#endif } template inline void debug(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->debug(fmt, std::forward(args)...); +#else + default_logger_raw()->debug(fmt.str, std::forward(args)...); +#endif } template inline void info(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->info(fmt, std::forward(args)...); +#else + default_logger_raw()->info(fmt.str, std::forward(args)...); +#endif } template inline void warn(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->warn(fmt, std::forward(args)...); +#else + default_logger_raw()->warn(fmt.str, std::forward(args)...); +#endif } template inline void error(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->error(fmt, std::forward(args)...); +#else + default_logger_raw()->error(fmt.str, std::forward(args)...); +#endif } template inline void critical(format_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->critical(fmt, std::forward(args)...); +#else + default_logger_raw()->critical(fmt.str, std::forward(args)...); +#endif } template @@ -204,42 +236,74 @@ inline void log(source_loc source, level::level_enum lvl, wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->log(source, lvl, fmt, std::forward(args)...); +#else + default_logger_raw()->log(source, lvl, fmt.get(), std::forward(args)...); +#endif } template inline void log(level::level_enum lvl, wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->log(source_loc{}, lvl, fmt, std::forward(args)...); +#else + default_logger_raw()->log(source_loc{}, lvl, fmt.get(), std::forward(args)...); +#endif } template inline void trace(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->trace(fmt, std::forward(args)...); +#else + default_logger_raw()->trace(fmt.get(), std::forward(args)...); +#endif } template inline void debug(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->debug(fmt, std::forward(args)...); +#else + default_logger_raw()->debug(fmt.get(), std::forward(args)...); +#endif } template inline void info(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->info(fmt, std::forward(args)...); +#else + default_logger_raw()->info(fmt.get(), std::forward(args)...); +#endif } template inline void warn(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->warn(fmt, std::forward(args)...); +#else + default_logger_raw()->warn(fmt.get(), std::forward(args)...); +#endif } template inline void error(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->error(fmt, std::forward(args)...); +#else + default_logger_raw()->error(fmt.get(), std::forward(args)...); +#endif } template inline void critical(wformat_string_t fmt, Args &&...args) { +#ifdef SPDLOG_USE_STD_FORMAT default_logger_raw()->critical(fmt, std::forward(args)...); +#else + default_logger_raw()->critical(fmt.get(), std::forward(args)...); +#endif } #endif diff --git a/tests/test_fmt_helper.cpp b/tests/test_fmt_helper.cpp index 31b93067..1f317750 100644 --- a/tests/test_fmt_helper.cpp +++ b/tests/test_fmt_helper.cpp @@ -2,7 +2,11 @@ #include "includes.h" using spdlog::memory_buf_t; -using spdlog::details::to_string_view; + +SPDLOG_CONSTEXPR_FUNC spdlog::string_view_t to_string_view(const memory_buf_t &buf) + SPDLOG_NOEXCEPT { + return spdlog::string_view_t{buf.data(), buf.size()}; +} void test_pad2(int n, const char *expected) { memory_buf_t buf; diff --git a/tests/test_pattern_formatter.cpp b/tests/test_pattern_formatter.cpp index cd0df811..905b2be9 100644 --- a/tests/test_pattern_formatter.cpp +++ b/tests/test_pattern_formatter.cpp @@ -4,7 +4,11 @@ #include using spdlog::memory_buf_t; -using spdlog::details::to_string_view; + +SPDLOG_CONSTEXPR_FUNC spdlog::string_view_t to_string_view(const memory_buf_t &buf) + SPDLOG_NOEXCEPT { + return spdlog::string_view_t{buf.data(), buf.size()}; +} // log to str and return it template