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#include <spdlog/details/log_msg.h>
7
8namespace spdlog {
9namespace details {
10
11// Extend log_msg with internal buffer to store its payload.
12// This is needed since log_msg holds string_views that points to stack data.
13
14class SPDLOG_API log_msg_buffer : public log_msg {
15 memory_buf_t buffer;
16 void update_string_views();
17
18public:
19 log_msg_buffer() = default;
20 explicit log_msg_buffer(const log_msg &orig_msg);
21 log_msg_buffer(const log_msg_buffer &other);
22 log_msg_buffer(log_msg_buffer &&other) SPDLOG_NOEXCEPT;
23 log_msg_buffer &operator=(const log_msg_buffer &other);
24 log_msg_buffer &operator=(log_msg_buffer &&other) SPDLOG_NOEXCEPT;
25};
26
27} // namespace details
28} // namespace spdlog
29
30#ifdef SPDLOG_HEADER_ONLY
31 #include "log_msg_buffer-inl.h"
32#endif
33