25 #include <type_traits>
45 enum class Log : unsigned char
68 explicit Logger(
const Log& type,
const QString& class_name);
72 static void registerLogListener(
LogListener* logListener);
74 Logger& operator << (
const QString& msg);
75 Logger& operator << (
const QChar& c);
76 Logger& operator << (
const QStringList& lst);
77 Logger& operator << (
const QByteArray& arr);
78 Logger& operator << (
const QPoint& point);
79 Logger& operator << (
const QSize& size);
80 Logger& operator << (
const QRect& size);
81 Logger& operator << (
const char* str);
82 Logger& operator << (
const std::string& str);
83 Logger& operator << (
const Log& log_type);
86 typename std::enable_if< std::is_floating_point<T>::value,
Logger&>::type
87 operator << (
const T& val){
89 (*this) << std::to_string(val);
95 typename std::enable_if< std::is_integral<T>::value,
Logger&>::type
96 operator << (
const T& val){
98 (*this) << std::to_string(val);
103 template<
typename T,
template <
typename ELEM>
class CONT>
104 Logger& operator << (
const CONT<T> list){
105 for(
const T& item : list){
106 (*this) << std::to_string(item) <<
", ";
113 Logger spLog(
const Log& type,
const std::string& data);
114 Logger spLog(
const Log& type,
const char* data);
117 typename std::enable_if< std::is_class<T>::value,
Logger>::type
118 spLog(
const Log& type,
const T*)
120 return spLog(type,
typeid(T).name());
123 Q_DECLARE_METATYPE(Log)