Removed fast_oss in favour of simple ostringsream
This commit is contained in:
		@@ -10,12 +10,15 @@ public:
 | 
			
		||||
    str_devicebuf() = default;
 | 
			
		||||
    ~str_devicebuf() = default;
 | 
			
		||||
    str_devicebuf(const str_devicebuf& other):std::streambuf(),_str(other._str) {}
 | 
			
		||||
    str_devicebuf& operator=(const str_devicebuf other) {
 | 
			
		||||
        if(this != &other)
 | 
			
		||||
            _str = other._str;
 | 
			
		||||
        return *this;
 | 
			
		||||
 | 
			
		||||
    str_devicebuf(str_devicebuf&& other) :std::streambuf(), _str(std::move(other._str)) {
 | 
			
		||||
        other._str.clear();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    str_devicebuf& operator=(const str_devicebuf&) = delete;
 | 
			
		||||
    str_devicebuf& operator=(str_devicebuf&&) = delete;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const std::string& str_ref() const {
 | 
			
		||||
        return _str;
 | 
			
		||||
        std::ostringstream oss;
 | 
			
		||||
@@ -50,12 +53,11 @@ public:
 | 
			
		||||
    ~fast_oss() = default;
 | 
			
		||||
 | 
			
		||||
    fast_oss(const fast_oss& other) :std::basic_ios<char>(), std::ostream(&_dev), _dev(other._dev) {}
 | 
			
		||||
    
 | 
			
		||||
    fast_oss& operator=(const fast_oss& other) {
 | 
			
		||||
        if(&other != this)
 | 
			
		||||
            _dev = other._dev;
 | 
			
		||||
        return *this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fast_oss(fast_oss&& other) :std::basic_ios<char>(), std::ostream(&_dev), _dev(std::move(other._dev)) {}
 | 
			
		||||
 | 
			
		||||
    fast_oss& operator=(const fast_oss& other) = delete;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const std::string& str_ref() const {
 | 
			
		||||
        return _dev.str_ref();
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
#include "../common_types.h"
 | 
			
		||||
#include "../logger.h"
 | 
			
		||||
#include "fast_oss.h"
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
namespace c11log {
 | 
			
		||||
class logger;
 | 
			
		||||
@@ -10,41 +10,49 @@ namespace details {
 | 
			
		||||
 | 
			
		||||
class line_logger {
 | 
			
		||||
public:
 | 
			
		||||
    line_logger(logger* callback_logger, level::level_enum msg_level):
 | 
			
		||||
    line_logger(logger* callback_logger, level::level_enum msg_level, bool enabled):
 | 
			
		||||
        _callback_logger(callback_logger),
 | 
			
		||||
        _oss(),
 | 
			
		||||
        _level(msg_level) {
 | 
			
		||||
        _level(msg_level),
 | 
			
		||||
        _enabled(enabled) {
 | 
			
		||||
        callback_logger->_formatter->format_header(callback_logger->_logger_name,
 | 
			
		||||
                msg_level,
 | 
			
		||||
                log_clock::now(),
 | 
			
		||||
                _oss);
 | 
			
		||||
    }
 | 
			
		||||
    line_logger(logger*):_callback_logger(nullptr) {};
 | 
			
		||||
    line_logger(const line_logger& other):
 | 
			
		||||
    // No copy intended. Only move
 | 
			
		||||
    line_logger(const line_logger& other) = delete;
 | 
			
		||||
 | 
			
		||||
    line_logger(line_logger&& other) :
 | 
			
		||||
        _callback_logger(other._callback_logger),
 | 
			
		||||
        _oss(other._oss),
 | 
			
		||||
        _level(other._level) {};
 | 
			
		||||
        _oss(std::move(other._oss)),
 | 
			
		||||
        _level(other._level) {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    line_logger& operator=(const line_logger&) = delete;
 | 
			
		||||
    line_logger& operator=(line_logger&&) = delete;
 | 
			
		||||
 | 
			
		||||
    ~line_logger() {
 | 
			
		||||
        if (_callback_logger) {
 | 
			
		||||
        if (_enabled) {
 | 
			
		||||
            _oss << '\n';
 | 
			
		||||
            _callback_logger->_log_it(_oss.str_ref());
 | 
			
		||||
            _callback_logger->_log_it(_oss.str(), _level);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    template<typename T>
 | 
			
		||||
    line_logger& operator<<(const T& msg) {
 | 
			
		||||
        if (_callback_logger)
 | 
			
		||||
        if (_enabled)
 | 
			
		||||
            _oss << msg;
 | 
			
		||||
        return *this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    logger* _callback_logger;
 | 
			
		||||
    details::fast_oss _oss;
 | 
			
		||||
    std::ostringstream _oss;
 | 
			
		||||
    level::level_enum _level;
 | 
			
		||||
    bool _enabled;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
} //Namespace details
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user