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 | |
8 | namespace spdlog { |
9 | namespace 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 | |
14 | class SPDLOG_API log_msg_buffer : public log_msg { |
15 | memory_buf_t buffer; |
16 | void update_string_views(); |
17 | |
18 | public: |
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 |