Skip to content
Snippets Groups Projects
Commit e366f215 authored by Florian Fischer's avatar Florian Fischer
Browse files

[Debug] use a lambda to build up the log message

This hides the used std::stringstream from the context using the LOG macros.
So we don't have to see the a huge messy std::stringstream object in gdb
for example.

The use of a lambda is a ISO C++ alternative to GCC's statement expression.
parent 2db36a22
No related branches found
No related tags found
1 merge request!133[Debug] use a lambda to build up the log message
......@@ -14,8 +14,14 @@
// clang-format off
// Hide the stringstream inside a lamba from the context where our LOG macros are used.
// The lamda should be fairly cheap/free because it will be inlined.
// The use of a lambda here is the ISO C++ equivalent to GCC statement expressions.
// NOLINTNEXTLINE(bugprone-macro-parentheses)
#define LOG(level, x, log_func, new_line) do {if constexpr (level > EMPER_LOG_LEVEL) { break; } std::stringstream sst; sst << x; if constexpr (new_line) { sst << std::endl; }; log_func(sst.str()); } while (false)
#define LOG_STR_LAMBDA(x, new_line) [&](){std::stringstream sst; sst << x; if constexpr (new_line) { sst << std::endl; }; return sst.str(); }
// NOLINTNEXTLINE(bugprone-macro-parentheses)
#define LOG(level, x, log_func, new_line) do {if constexpr (level > EMPER_LOG_LEVEL) { break; } log_func(LOG_STR_LAMBDA(x, new_line)()); } while (false)
// NOLINTNEXTLINE(bugprone-macro-parentheses)
#define DBG(x) LOG(Debug, x, emper_log_no_prefix, true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment