1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
|