diff options
author | John Hodge <tpg@mutabah.net> | 2016-06-08 10:02:13 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-06-08 10:02:13 +0800 |
commit | 368c42ce7e5355341d547e5af6b71808dfd01acb (patch) | |
tree | 81a46fe3b660c9c3057ada289a30e39f49b4b2d4 /src/include | |
parent | 1ad65688d231ddee98ebf8425f45eba305f324f7 (diff) | |
download | mrust-368c42ce7e5355341d547e5af6b71808dfd01acb.tar.gz |
Resolve - Fix generic binding indexes
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/debug.hpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/include/debug.hpp b/src/include/debug.hpp index 9dafdb42..2b3b1bee 100644 --- a/src/include/debug.hpp +++ b/src/include/debug.hpp @@ -3,6 +3,7 @@ #pragma once #include <sstream> #include <cassert> +#include <functional> extern int g_debug_indent_level; @@ -41,21 +42,42 @@ public: class TraceLog { const char* m_tag; + ::std::function<void(::std::ostream&)> m_ret; public: - TraceLog(const char* tag, ::std::string info): m_tag(tag) { + TraceLog(const char* tag, ::std::string info, ::std::function<void(::std::ostream&)> ret): + m_tag(tag), + m_ret(ret) + { DEBUG(" >> " << m_tag << "(" << info << ")"); INDENT(); } - TraceLog(const char* tag): m_tag(tag) { + TraceLog(const char* tag, ::std::string info): + m_tag(tag), + m_ret([](const auto&){}) + { + DEBUG(" >> " << m_tag << "(" << info << ")"); + INDENT(); + } + TraceLog(const char* tag): + m_tag(tag), + m_ret([](const auto&){}) + { DEBUG(" >> " << m_tag); INDENT(); } ~TraceLog() { UNINDENT(); DEBUG("<< " << m_tag); + if(debug_enabled()) { + auto& os = debug_output(g_debug_indent_level, __FUNCTION__); + os << "<<" << m_tag; + m_ret(os); + os << ::std::endl; + } } }; #define TRACE_FUNCTION TraceLog _tf_(__func__) #define TRACE_FUNCTION_F(ss) TraceLog _tf_(__func__, FMT(ss)) +#define TRACE_FUNCTION_FR(ss,ss2) TraceLog _tf_(__func__, FMT(ss), [&](::std::ostream&__os){ __os<<"(" << ss2 <<"}";}) |