diff options
Diffstat (limited to 'src/io/log.h')
-rw-r--r-- | src/io/log.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/io/log.h b/src/io/log.h new file mode 100644 index 0000000..c2fbd90 --- /dev/null +++ b/src/io/log.h @@ -0,0 +1,45 @@ +#pragma once + +#include <stdint.h> + +#define LOG +#ifdef LOG + +typedef enum { + DEBUG, + TRACE, + INFO, + WARN, + ERROR, +} LogLevel; + +#define BUF_LENGTH 256 +#define INIT_LOG_BUFFER(name) char name[BUF_LENGTH]; +#define INIT_LOG_BOUNDS int t = 0; +#define APPEND(buffer, msg, ...) t += snprintf(buffer + t, BUF_LENGTH - t, msg, ##__VA_ARGS__); +#define LOGONLY(code) code + +void logmsg(LogLevel level, const char* msg, ...) + __attribute__ ((__format__(printf, 2, 3))); + +#define DEBUG(msg, ...) logmsg(DEBUG, msg, ##__VA_ARGS__) +#define TRACE(msg, ...) logmsg(TRACE, msg, ##__VA_ARGS__) +#define INFO(msg, ...) logmsg(INFO, msg, ##__VA_ARGS__) +#define WARN(msg, ...) logmsg(WARN, msg, ##__VA_ARGS__) +#define ERROR(msg, ...) logmsg(ERROR, msg, ##__VA_ARGS__) + +#else + +#define BUF_LENGTH +#define INIT_LOG_BUFFER(name) +#define INIT_LOG_BOUNDS +#define APPEND(buffer, msg, ...) +#define LOGONLY(code) + +#define DEBUG(msg, ...) +#define TRACE(msg, ...) +#define INFO(msg, ...) +#define WARN(msg, ...) +#define ERROR(msg, ...) + +#endif
\ No newline at end of file |