log_msg faster move

This commit is contained in:
gabi 2014-11-21 11:23:55 +02:00
parent e2cd9285f4
commit 7ded05f365
3 changed files with 12 additions and 29 deletions

View File

@ -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;
}; };
} }
} }

View File

@ -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())

View File

@ -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"