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 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)
using level_t = details::null_atomic_int;
#else

View File

@ -14,9 +14,9 @@ namespace details {
namespace fmt_helper {
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>
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>
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();
if (buf_ptr != nullptr)

View File

@ -17,7 +17,7 @@ struct log_msg
{
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)
, level(lvl)
#ifndef SPDLOG_NO_DATETIME
@ -44,7 +44,7 @@ struct log_msg
mutable size_t color_range_start{0};
mutable size_t color_range_end{0};
const fmt::string_view payload;
const string_view_type payload;
};
} // namespace details
} // 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
{
// 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
{
// 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);
}
};

View File

@ -94,7 +94,7 @@ struct async_msg
// copy into 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.thread_id = thread_id;
msg.msg_id = msg_id;