#include <sys/poll.h>
+#ifndef DO_NOT_USE_AFB
extern "C" {
#include <afb/afb-binding.h>
};
+#endif
+
+#define CONCAT_(X, Y) X##Y
+#define CONCAT(X, Y) CONCAT_(X, Y)
#ifdef __GNUC__
#define ATTR_FORMAT(stringindex, firsttocheck) \
#define ATTR_NORETURN
#endif
+#ifdef AFB_BINDING_VERSION
#define lognotice(...) AFB_NOTICE(__VA_ARGS__)
#define logerror(...) AFB_ERROR(__VA_ARGS__)
#define fatal(...) \
AFB_ERROR(__VA_ARGS__); \
abort(); \
} while (0)
+#else
+#define lognotice(...)
+#define logerror(...)
+#define fatal(...) \
+ do { \
+ abort(); \
+ } while (0)
+#endif
#ifdef DEBUG_OUTPUT
+#ifdef AFB_BINDING_VERSION
#define logdebug(...) AFB_DEBUG(__VA_ARGS__)
#else
#define logdebug(...)
#endif
+#else
+#define logdebug(...)
+#endif
-#ifdef NDEBUG
+#ifndef SCOPE_TRACING
#define ST()
#define STN(N)
#else
-#define CONCAT_(X, Y) X##Y
-#define CONCAT(X, Y) CONCAT_(X, Y)
-
#define ST() \
ScopeTrace __attribute__((unused)) CONCAT(trace_scope_, __LINE__)(__func__)
#define STN(N) \
struct ScopeTrace {
thread_local static int indent;
char const *f{};
- explicit ScopeTrace(char const *func) : f(func) {
- fprintf(stderr, "%lu %*s%s -->\n", pthread_self(), 2 * indent++, "", this->f);
- }
- ~ScopeTrace() { fprintf(stderr, "%lu %*s%s <--\n", pthread_self(), 2 * --indent, "", this->f); }
+ explicit ScopeTrace(char const *func);
+ ~ScopeTrace();
};
#endif