summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-06-08 10:02:13 +0800
committerJohn Hodge <tpg@mutabah.net>2016-06-08 10:02:13 +0800
commit368c42ce7e5355341d547e5af6b71808dfd01acb (patch)
tree81a46fe3b660c9c3057ada289a30e39f49b4b2d4 /src/include
parent1ad65688d231ddee98ebf8425f45eba305f324f7 (diff)
downloadmrust-368c42ce7e5355341d547e5af6b71808dfd01acb.tar.gz
Resolve - Fix generic binding indexes
Diffstat (limited to 'src/include')
-rw-r--r--src/include/debug.hpp26
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 <<"}";})