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