// // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // #pragma once #include #include #include // Line logger class - aggregates operator<< calls to fast ostream // and logs upon destruction namespace spdlog { // Forward declaration class logger; namespace details { class line_logger { public: line_logger(logger* callback_logger, level::level_enum msg_level, bool enabled); // No copy intended. Only move line_logger(const line_logger& other) = delete; line_logger& operator=(const line_logger&) = delete; line_logger& operator=(line_logger&&) = delete; line_logger(line_logger&& other); //Log the log message using the callback logger ~line_logger(); // // Support for format string with variadic args // void write(const char* what); template void write(const char* fmt, const Args&... args); // // Support for operator<< // line_logger& operator<<(const char* what); line_logger& operator<<(const std::string& what); line_logger& operator<<(int what); line_logger& operator<<(unsigned int what); line_logger& operator<<(long what); line_logger& operator<<(unsigned long what); line_logger& operator<<(long long what); line_logger& operator<<(unsigned long long what); line_logger& operator<<(double what); line_logger& operator<<(long double what); line_logger& operator<<(float what); line_logger& operator<<(char what); //Support user types which implements operator<< template line_logger& operator<<(const T& what); void disable(); bool is_enabled() const; private: logger* _callback_logger; log_msg _log_msg; bool _enabled; }; } //Namespace details } // Namespace spdlog