log_msg faster move
This commit is contained in:
		@@ -50,29 +50,17 @@ struct log_msg
 | 
			
		||||
        raw(other.raw),
 | 
			
		||||
        formatted(other.formatted) {}
 | 
			
		||||
 | 
			
		||||
    log_msg(log_msg&& other)
 | 
			
		||||
    {
 | 
			
		||||
        swap(*this, other);
 | 
			
		||||
    }
 | 
			
		||||
    log_msg(log_msg&& other) :
 | 
			
		||||
        logger_name(std::move(other.logger_name)),
 | 
			
		||||
        level(other.level),
 | 
			
		||||
        time(std::move(other.time)),
 | 
			
		||||
        tm_time(other.tm_time),
 | 
			
		||||
        raw(std::move(other.raw)),
 | 
			
		||||
        formatted(std::move(other.formatted)) {}
 | 
			
		||||
 | 
			
		||||
    void swap(log_msg& l, log_msg& r)
 | 
			
		||||
    {
 | 
			
		||||
        using std::swap;
 | 
			
		||||
        swap(l.logger_name, r.logger_name);
 | 
			
		||||
        swap(l.level, r.level);
 | 
			
		||||
        swap(l.time, r.time);
 | 
			
		||||
        swap(l.tm_time, r.tm_time);
 | 
			
		||||
        swap(l.raw, r.raw);
 | 
			
		||||
        swap(l.formatted, r.formatted);
 | 
			
		||||
    }
 | 
			
		||||
    log_msg& operator=(log_msg&& other) = delete;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    log_msg& operator=(log_msg other)
 | 
			
		||||
    {
 | 
			
		||||
        swap(*this, other);
 | 
			
		||||
        return *this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void clear()
 | 
			
		||||
    {
 | 
			
		||||
@@ -86,8 +74,6 @@ struct log_msg
 | 
			
		||||
    std::tm tm_time;
 | 
			
		||||
    fast_oss raw;
 | 
			
		||||
    fast_oss formatted;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,10 +42,10 @@ public:
 | 
			
		||||
    static const unsigned short stack_size = STACK_SIZE;
 | 
			
		||||
    stack_buf() :_v(), _stack_size(0) {}
 | 
			
		||||
    ~stack_buf() = default;
 | 
			
		||||
    stack_buf(const stack_buf& other):stack_buf(other, delegate_copy_move {})
 | 
			
		||||
    stack_buf(const stack_buf& other) :stack_buf(other, delegate_copy_or_move {})
 | 
			
		||||
    {}
 | 
			
		||||
 | 
			
		||||
    stack_buf(stack_buf&& other):stack_buf(other, delegate_copy_move {})
 | 
			
		||||
    stack_buf(stack_buf&& other) :stack_buf(other, delegate_copy_or_move {})
 | 
			
		||||
    {
 | 
			
		||||
        other.clear();
 | 
			
		||||
    }
 | 
			
		||||
@@ -109,9 +109,9 @@ public:
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    struct delegate_copy_move {};
 | 
			
		||||
    struct delegate_copy_or_move {};
 | 
			
		||||
    template<class T1>
 | 
			
		||||
    stack_buf(T1&& other, delegate_copy_move)
 | 
			
		||||
    stack_buf(T1&& other, delegate_copy_or_move)
 | 
			
		||||
    {
 | 
			
		||||
        _stack_size = other._stack_size;
 | 
			
		||||
        if (other.vector_used())
 | 
			
		||||
 
 | 
			
		||||
@@ -96,9 +96,6 @@ private:
 | 
			
		||||
    void _variadic_log(details::line_logger&l, const First& first, const Rest&... rest);
 | 
			
		||||
    void _log_msg(details::log_msg& msg);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#include "./details/logger_impl.h"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user