Line data Source code
1 : // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 : // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 : 4 : #pragma once 5 : 6 : #ifndef SPDLOG_HEADER_ONLY 7 : # include <spdlog/details/log_msg_buffer.h> 8 : #endif 9 : 10 : namespace spdlog { 11 : namespace details { 12 : 13 0 : SPDLOG_INLINE log_msg_buffer::log_msg_buffer(const log_msg &orig_msg) 14 0 : : log_msg{orig_msg} 15 : { 16 0 : buffer.append(logger_name.begin(), logger_name.end()); 17 0 : buffer.append(payload.begin(), payload.end()); 18 0 : update_string_views(); 19 0 : } 20 : 21 0 : SPDLOG_INLINE log_msg_buffer::log_msg_buffer(const log_msg_buffer &other) 22 0 : : log_msg{other} 23 : { 24 0 : buffer.append(logger_name.begin(), logger_name.end()); 25 0 : buffer.append(payload.begin(), payload.end()); 26 0 : update_string_views(); 27 0 : } 28 : 29 : SPDLOG_INLINE log_msg_buffer::log_msg_buffer(log_msg_buffer &&other) SPDLOG_NOEXCEPT : log_msg{other}, buffer{std::move(other.buffer)} 30 : { 31 : update_string_views(); 32 : } 33 : 34 0 : SPDLOG_INLINE log_msg_buffer &log_msg_buffer::operator=(const log_msg_buffer &other) 35 : { 36 0 : log_msg::operator=(other); 37 0 : buffer.clear(); 38 0 : buffer.append(other.buffer.data(), other.buffer.data() + other.buffer.size()); 39 0 : update_string_views(); 40 0 : return *this; 41 : } 42 : 43 0 : SPDLOG_INLINE log_msg_buffer &log_msg_buffer::operator=(log_msg_buffer &&other) SPDLOG_NOEXCEPT 44 : { 45 0 : log_msg::operator=(other); 46 0 : buffer = std::move(other.buffer); 47 0 : update_string_views(); 48 0 : return *this; 49 : } 50 : 51 0 : SPDLOG_INLINE void log_msg_buffer::update_string_views() 52 : { 53 0 : logger_name = string_view_t{buffer.data(), logger_name.size()}; 54 0 : payload = string_view_t{buffer.data() + logger_name.size(), payload.size()}; 55 : } 56 : 57 : } // namespace details 58 : } // namespace spdlog