#define WM_UTIL_HPP
#include <functional>
-#include <sys/poll.h>
-
+#include <thread>
#include <vector>
+#include <sys/poll.h>
+
extern "C" {
#include <afb/afb-binding.h>
};
+#define CONCAT_(X, Y) X##Y
+#define CONCAT(X, Y) CONCAT_(X, Y)
+
#ifdef __GNUC__
#define ATTR_FORMAT(stringindex, firsttocheck) \
__attribute__((format(printf, stringindex, firsttocheck)))
#define logdebug(...)
#endif
-#ifndef NDEBUG
-#define DB(expr) \
- do { \
- std::ostringstream o; \
- o << __FILE__ << ":" << __LINE__ << ":" << __func__ << ": " << expr; \
- logdebug("%s", o.str().c_str()); \
- } while (0)
+#ifndef SCOPE_TRACING
+#define ST()
+#define STN(N)
#else
-#define DB(expr)
+#define ST() \
+ ScopeTrace __attribute__((unused)) CONCAT(trace_scope_, __LINE__)(__func__)
+#define STN(N) \
+ ScopeTrace __attribute__((unused)) CONCAT(named_trace_scope_, __LINE__)(#N)
+
+struct ScopeTrace {
+ thread_local static int indent;
+ char const *f{};
+ explicit ScopeTrace(char const *func);
+ ~ScopeTrace();
+};
#endif
// _ _ _ __ _