#include <stdarg.h>
#include "general.h"
#include "debug.h"
uint16_t bmda_debug_flags = BMD_DEBUG_ERROR | BMD_DEBUG_WARNING;
static void debug_print(const uint16_t level, const char *format, va_list args)
{
if (!(bmda_debug_flags & level))
return;
FILE *const where = bmda_debug_flags & BMD_DEBUG_USE_STDERR ? stderr : stdout;
(void)vfprintf(where, format, args);
}
#define DEBUG_PRINT(level) \
va_list args; \
va_start(args, format); \
debug_print((level), format, args); \
va_end(args)
void debug_error(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_ERROR);
}
void debug_warning(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_WARNING);
}
void debug_info(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_INFO);
}
void debug_gdb(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_GDB);
}
void debug_target(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_TARGET);
}
void debug_protocol(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_PROTO);
}
void debug_probe(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_PROBE);
}
void debug_wire(const char *format, ...)
{
DEBUG_PRINT(BMD_DEBUG_WIRE);
}