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),
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;
};
}
}

View File

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

View File

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