19 enum rofl_debug_levels {
20 UNDEF_DEBUG_LEVEL = -1,
36 enum rofl_debug_class {
37 UNDEF_DEBUG_CLASS = -1,
47 #define ROFL_DEFAULT_LEVELS { DBG_LEVEL }
49 #define ROFL_DEFAULT_LEVELS { LOGGING_LEVEL }
53 extern enum rofl_debug_levels rofl_debug_level[MAX_DEBUG_CLASS];
54 extern int (*rofl_debug_print)(FILE *stream,
const char *format, ...);
57 #define ROFL_DEBUG_CHECK(cn, level) \
58 ( rofl_debug_level[cn] >= level )
59 #define ROFL_DEBUG_PRINT(fd, cn, level, stuff, ...) \
61 if (ROFL_DEBUG_CHECK(cn, level) && *rofl_debug_print != NULL){ \
62 rofl_debug_print(fd,stuff, ##__VA_ARGS__);\
66 #define ROFL_WARN(stuff,...) \
67 ROFL_DEBUG_PRINT(stderr, DEFAULT, WARN_LEVEL, stuff, ##__VA_ARGS__)
69 #define ROFL_ERR(stuff, ...) \
70 ROFL_DEBUG_PRINT(stderr, DEFAULT, ERROR_LEVEL, stuff, ##__VA_ARGS__)
72 #define ROFL_INFO(stuff,...) \
73 ROFL_DEBUG_PRINT(stderr, DEFAULT, INFO_LEVEL, stuff, ##__VA_ARGS__)
77 #define ROFL_DEBUG(stuff, ...) \
78 ROFL_DEBUG_PRINT(stderr, DEFAULT, DBG_LEVEL, stuff, ##__VA_ARGS__)
80 #define ROFL_DEBUG_VERBOSE(stuff, ...) \
81 ROFL_DEBUG_PRINT(stderr, DEFAULT, DBG_VERBOSE_LEVEL, stuff, ##__VA_ARGS__)
89 #define ROFL_DEBUG(stuff, ...) do{}while(0)
90 #define ROFL_DEBUG_VERBOSE(stuff, ...) do{}while(0)
91 #endif //ROFL_NO_LOGGING
97 void rofl_set_logging_function(
int (*logging_func)(FILE *stream,
const char *format, ...));
100 void rofl_set_logging_level(
enum rofl_debug_levels level);