Better support for string_view

This commit is contained in:
gabime 2018-10-21 12:46:58 +03:00
parent 2ad191aeba
commit 894438d5fb
5 changed files with 15 additions and 7 deletions

View File

@ -56,6 +56,13 @@ using sink_ptr = std::shared_ptr<sinks::sink>;
using sinks_init_list = std::initializer_list<sink_ptr>; using sinks_init_list = std::initializer_list<sink_ptr>;
using log_err_handler = std::function<void(const std::string &err_msg)>; using log_err_handler = std::function<void(const std::string &err_msg)>;
// string_view type - either std::string_view or fmt::string_view (pre c++17)
#if defined(FMT_USE_STD_STRING_VIEW)
using string_view_type = std::string_view;
#else
using string_view_type = fmt::string_view;
#endif
#if defined(SPDLOG_NO_ATOMIC_LEVELS) #if defined(SPDLOG_NO_ATOMIC_LEVELS)
using level_t = details::null_atomic_int; using level_t = details::null_atomic_int;
#else #else

View File

@ -14,9 +14,9 @@ namespace details {
namespace fmt_helper { namespace fmt_helper {
template<size_t Buffer_Size> template<size_t Buffer_Size>
inline fmt::string_view to_string_view(const fmt::basic_memory_buffer<char, Buffer_Size> &buf) SPDLOG_NOEXCEPT inline spdlog::string_view_type to_string_view(const fmt::basic_memory_buffer<char, Buffer_Size> &buf) SPDLOG_NOEXCEPT
{ {
return fmt::string_view(buf.data(), buf.size()); return spdlog::string_view_type(buf.data(), buf.size());
} }
template<size_t Buffer_Size1, size_t Buffer_Size2> template<size_t Buffer_Size1, size_t Buffer_Size2>
inline void append_buf(const fmt::basic_memory_buffer<char, Buffer_Size1> &buf, fmt::basic_memory_buffer<char, Buffer_Size2> &dest) inline void append_buf(const fmt::basic_memory_buffer<char, Buffer_Size1> &buf, fmt::basic_memory_buffer<char, Buffer_Size2> &dest)
@ -26,7 +26,7 @@ inline void append_buf(const fmt::basic_memory_buffer<char, Buffer_Size1> &buf,
} }
template<size_t Buffer_Size> template<size_t Buffer_Size>
inline void append_string_view(fmt::string_view view, fmt::basic_memory_buffer<char, Buffer_Size> &dest) inline void append_string_view(spdlog::string_view_type view, fmt::basic_memory_buffer<char, Buffer_Size> &dest)
{ {
auto *buf_ptr = view.data(); auto *buf_ptr = view.data();
if (buf_ptr != nullptr) if (buf_ptr != nullptr)

View File

@ -17,7 +17,7 @@ struct log_msg
{ {
log_msg() = default; log_msg() = default;
log_msg(const std::string *loggers_name, level::level_enum lvl, fmt::string_view view) log_msg(const std::string *loggers_name, level::level_enum lvl, string_view_type view)
: logger_name(loggers_name) : logger_name(loggers_name)
, level(lvl) , level(lvl)
#ifndef SPDLOG_NO_DATETIME #ifndef SPDLOG_NO_DATETIME
@ -44,7 +44,7 @@ struct log_msg
mutable size_t color_range_start{0}; mutable size_t color_range_start{0};
mutable size_t color_range_end{0}; mutable size_t color_range_end{0};
const fmt::string_view payload; const string_view_type payload;
}; };
} // namespace details } // namespace details
} // namespace spdlog } // namespace spdlog

View File

@ -39,7 +39,7 @@ class name_formatter : public flag_formatter
void format(const details::log_msg &msg, const std::tm &, fmt::memory_buffer &dest) override void format(const details::log_msg &msg, const std::tm &, fmt::memory_buffer &dest) override
{ {
// fmt_helper::append_str(*msg.logger_name, dest); // fmt_helper::append_str(*msg.logger_name, dest);
fmt_helper::append_string_view(*msg.logger_name, dest); fmt_helper::append_string_view(string_view_type(*msg.logger_name), dest);
} }
}; };
@ -49,6 +49,7 @@ class level_formatter : public flag_formatter
void format(const details::log_msg &msg, const std::tm &, fmt::memory_buffer &dest) override void format(const details::log_msg &msg, const std::tm &, fmt::memory_buffer &dest) override
{ {
// fmt_helper::append_string_view(level::to_c_str(msg.level), dest); // fmt_helper::append_string_view(level::to_c_str(msg.level), dest);
spdlog::string_view_type t("SSSSSSS");
fmt_helper::append_string_view(level::to_c_str(msg.level), dest); fmt_helper::append_string_view(level::to_c_str(msg.level), dest);
} }
}; };

View File

@ -94,7 +94,7 @@ struct async_msg
// copy into log_msg // copy into log_msg
log_msg to_log_msg() log_msg to_log_msg()
{ {
log_msg msg(&worker_ptr->name(), level, fmt::string_view(raw.data(), raw.size())); log_msg msg(&worker_ptr->name(), level, string_view_type(raw.data(), raw.size()));
msg.time = time; msg.time = time;
msg.thread_id = thread_id; msg.thread_id = thread_id;
msg.msg_id = msg_id; msg.msg_id = msg_id;