general cleanup

removed factory functions with default meta method, changed std::string with memory_buf_t, changed qt_sink_color's base to base_sink, cleaned fwd declarations
pull/2315/head
Muhammed Galib Uludag 4 years ago committed by GitHub
parent 3ed8628a70
commit c4007d0f58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -21,57 +21,38 @@
#include <QObject> #include <QObject>
class QTextEdit;
class QPlainTextEdit;
// //
// qt_sink class // qt_sink class
// //
namespace spdlog { namespace spdlog {
namespace sinks { namespace sinks {
#if !defined(SPDLOG_USE_STD_FORMAT)
template <typename Mutex>
class qt_sink_color;
#endif
template <typename Mutex> template <typename Mutex>
class qt_sink : public base_sink<Mutex> { class qt_sink : public base_sink<Mutex> {
#if !defined(SPDLOG_USE_STD_FORMAT)
friend class qt_sink_color<Mutex>;
#endif
public: public:
qt_sink(QObject *qt_object = nullptr, const std::string &meta_method = "") { qt_sink(QObject *qt_object = nullptr, const std::string &meta_method = "") : qt_object_(qt_object), meta_method_(meta_method_) { }
qt_object_ = qt_object;
meta_method_ = meta_method;
}
~qt_sink() { flush_(); } ~qt_sink() { flush_(); }
protected: protected:
void sink_it_(const details::log_msg &msg) override { void sink_it_(const details::log_msg &msg) override {
memory_buf_t formatted; memory_buf_t formatted;
base_sink<Mutex>::formatter_->format(msg, formatted); base_sink<Mutex>::formatter_->format(msg, formatted);
string_view_t str = string_view_t(formatted.data(), formatted.size());
QMetaObject::invokeMethod(qt_object_, meta_method_.c_str(), Qt::AutoConnection, QMetaObject::invokeMethod(qt_object_, meta_method_.c_str(), Qt::AutoConnection,
Q_ARG(QString, QString::fromUtf8(str.data(), static_cast<int>(str.size())).trimmed())); Q_ARG(const QString&, QString::fromUtf8(formatted.data(), formatted.size())));
} }
void flush_() override {} void flush_() override {}
private: private:
QObject *qt_object_ = nullptr; QObject *qt_object_;
std::string meta_method_; std::string meta_method_;
}; };
#if !defined(SPDLOG_USE_STD_FORMAT) #if !defined(SPDLOG_USE_STD_FORMAT)
template <typename Mutex> template <typename Mutex>
class qt_sink_color : public qt_sink<Mutex> { class qt_sink_color : public base_sink<Mutex> {
public: public:
qt_sink_color(QObject *qt_object = nullptr, bool color_ = true, const std::string &meta_method = "") qt_sink_color(QObject *qt_object = nullptr, const std::string &meta_method = "") : qt_object_(qt_object), meta_method_(meta_method)
{ {
qt_sink<Mutex>::qt_object_ = qt_object;
qt_sink<Mutex>::meta_method_ = meta_method;
should_do_colors_ = color_;
set_color(level::trace, fmt::fg(fmt::color::white)); set_color(level::trace, fmt::fg(fmt::color::white));
set_color(level::debug, fmt::fg(fmt::color::cyan)); set_color(level::debug, fmt::fg(fmt::color::cyan));
set_color(level::info, fmt::fg(fmt::color::green)); set_color(level::info, fmt::fg(fmt::color::green));
@ -81,31 +62,29 @@ public:
set_color(level::off, reset_); set_color(level::off, reset_);
} }
~qt_sink_color() { flush_(); }
void set_color(level::level_enum color_level, fmt::text_style color) void set_color(level::level_enum color_level, fmt::text_style color)
{ {
std::lock_guard<Mutex> lock(base_sink<Mutex>::mutex_); std::lock_guard<Mutex> lock(base_sink<Mutex>::mutex_);
std::string str; std::string str;
auto bg = fmt::detail::make_background_color<fmt::detail::char8_type>(color.get_background()); auto bg = fmt::detail::make_background_color<fmt::detail::char8_type>(color.get_background());
auto fg = fmt::detail::make_foreground_color<fmt::detail::char8_type>(color.get_foreground()); auto fg = fmt::detail::make_foreground_color<fmt::detail::char8_type>(color.get_foreground());
auto em = fmt::detail::make_emphasis<fmt::detail::char8_type>(color.get_emphasis()); auto em = fmt::detail::make_emphasis<fmt::detail::char8_type>(color.get_emphasis());
str.append(bg.begin(), bg.end()); str.append(bg.begin(), bg.end());
str.append(fg.begin(), fg.end()); str.append(fg.begin(), fg.end());
str.append(em.begin(), em.end()); str.append(em.begin(), em.end());
colors_[color_level] = std::move(str);
colors_[color_level] = str;
} }
void set_color(level::level_enum color_level, string_view_t color) void set_color(level::level_enum color_level, string_view_t color)
{ {
std::lock_guard<Mutex> lock(base_sink<Mutex>::mutex_); std::lock_guard<Mutex> lock(base_sink<Mutex>::mutex_);
colors_[color_level] = to_string_(color); colors_[color_level] = to_string_(color);
} }
~qt_sink_color() { qt_sink<Mutex>::flush_(); } void flush_() override {}
const string_view_t reset_ = "\033[m"; const string_view_t reset_ = "\033[m";
@ -117,28 +96,26 @@ protected:
memory_buf_t formatted; memory_buf_t formatted;
base_sink<Mutex>::formatter_->format(msg, formatted); base_sink<Mutex>::formatter_->format(msg, formatted);
if (should_do_colors_ && msg.color_range_end > msg.color_range_start) if (msg.color_range_end > msg.color_range_start)
{ {
// before color range // before color range
std::string str; memory_buf_t colored;
auto ccode = to_ccode_(colors_[msg.level]); auto ccode = to_ccode_(colors_[msg.level]);
auto reset = to_ccode_(reset_); auto reset = to_ccode_(reset_);
str.reserve(formatted.size() + ccode.size()); colored.append(formatted.begin(), formatted.begin() + msg.color_range_start);
str.append(formatted.begin(), formatted.begin() + msg.color_range_start);
// in color range // in color range
str.append(ccode.begin(), ccode.end()); colored.append(ccode.begin(), ccode.end());
str.append(formatted.begin() + msg.color_range_start, formatted.begin() + msg.color_range_end); colored.append(formatted.begin() + msg.color_range_start, formatted.begin() + msg.color_range_end);
str.append(reset.begin(), reset.end()); colored.append(reset.begin(), reset.end());
// after color range // after color range
str.append(formatted.begin() + msg.color_range_end, formatted.end()); colored.append(formatted.begin() + msg.color_range_end, formatted.end());
QMetaObject::invokeMethod(qt_sink<Mutex>::qt_object_, qt_sink<Mutex>::meta_method_.c_str(), Qt::AutoConnection, QMetaObject::invokeMethod(qt_object_, meta_method_.c_str(), Qt::AutoConnection,
Q_ARG(QString, QString::fromStdString(str))); Q_ARG(const QString&, QString::fromUtf8(colored.data(), colored.size())));
} }
else // no color else // no color
{ {
string_view_t str = string_view_t(formatted.data(), formatted.size()); QMetaObject::invokeMethod(qt_object_, meta_method_.c_str(), Qt::AutoConnection,
QMetaObject::invokeMethod(qt_sink<Mutex>::qt_object_, qt_sink<Mutex>::meta_method_.c_str(), Qt::AutoConnection, Q_ARG(const QString&, QString::fromUtf8(formatted.data(), formatted.size())));
Q_ARG(QString, QString::fromUtf8(str.data(), static_cast<int>(str.size()))));
} }
} }
@ -147,7 +124,8 @@ private:
static std::string to_string_(const string_view_t &sv) { return std::string(sv.data(), sv.size()); } static std::string to_string_(const string_view_t &sv) { return std::string(sv.data(), sv.size()); }
private: private:
bool should_do_colors_; QObject *qt_object_;
std::string meta_method_;
std::array<std::string, level::n_levels> colors_; std::array<std::string, level::n_levels> colors_;
}; };
#endif #endif
@ -166,30 +144,6 @@ using qt_sink_color_st = qt_sink_color<spdlog::details::null_mutex>;
// //
// Factory functions // Factory functions
// //
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_mt(const std::string &logger_name, QTextEdit* qt_object, const std::string &meta_method = "append") {
return Factory::template create<sinks::qt_sink_mt>(logger_name, qt_object, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_st(const std::string &logger_name, QTextEdit* qt_object, const std::string &meta_method = "append") {
return Factory::template create<sinks::qt_sink_st>(logger_name, qt_object, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_mt(const std::string &logger_name, QPlainTextEdit* qt_object , const std::string &meta_method = "appendPlainText") {
return Factory::template create<sinks::qt_sink_mt>(logger_name, qt_object, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_st(const std::string &logger_name, QPlainTextEdit* qt_object, const std::string &meta_method = "appendPlainText") {
return Factory::template create<sinks::qt_sink_st>(logger_name, qt_object, meta_method);
}
template <typename Factory = spdlog::synchronous_factory> template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger> inline std::shared_ptr<logger>
qt_logger_mt(const std::string &logger_name, QObject* qt_object, const std::string &meta_method) { qt_logger_mt(const std::string &logger_name, QObject* qt_object, const std::string &meta_method) {
@ -208,38 +162,14 @@ qt_logger_st(const std::string &logger_name, QObject* qt_object, const std::stri
#if !defined(SPDLOG_USE_STD_FORMAT) #if !defined(SPDLOG_USE_STD_FORMAT)
template <typename Factory = spdlog::synchronous_factory> template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger> inline std::shared_ptr<logger>
qt_logger_color_mt(const std::string &logger_name, QTextEdit* qt_object, bool color, const std::string &meta_method = "append") { qt_logger_color_mt(const std::string &logger_name, QObject* qt_object, const std::string &meta_method) {
return Factory::template create<sinks::qt_sink_color_mt>(logger_name, qt_object, color, meta_method); return Factory::template create<sinks::qt_sink_color_mt>(logger_name, qt_object, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_color_st(const std::string &logger_name, QTextEdit* qt_object, bool color, const std::string &meta_method = "append") {
return Factory::template create<sinks::qt_sink_color_st>(logger_name, qt_object, color, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_color_mt(const std::string &logger_name, QPlainTextEdit* qt_object , bool color, const std::string &meta_method = "appendPlainText") {
return Factory::template create<sinks::qt_sink_color_mt>(logger_name, qt_object, color, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_color_st(const std::string &logger_name, QPlainTextEdit* qt_object, bool color, const std::string &meta_method = "appendPlainText") {
return Factory::template create<sinks::qt_sink_color_st>(logger_name, qt_object, color, meta_method);
}
template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger>
qt_logger_color_mt(const std::string &logger_name, QObject* qt_object, bool color, const std::string &meta_method) {
return Factory::template create<sinks::qt_sink_color_mt>(logger_name, qt_object, color, meta_method);
} }
template <typename Factory = spdlog::synchronous_factory> template <typename Factory = spdlog::synchronous_factory>
inline std::shared_ptr<logger> inline std::shared_ptr<logger>
qt_logger_color_st(const std::string &logger_name, QObject* qt_object, bool color, const std::string &meta_method) { qt_logger_color_st(const std::string &logger_name, QObject* qt_object, const std::string &meta_method) {
return Factory::template create<sinks::qt_sink_color_st>(logger_name, qt_object, color, meta_method); return Factory::template create<sinks::qt_sink_color_st>(logger_name, qt_object, meta_method);
} }
#endif #endif
} // namespace spdlog } // namespace spdlog

Loading…
Cancel
Save