|
|
#pragma once |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define STRUCTURE(NAME, ...) \ |
|
|
typedef struct NAME NAME; struct NAME { __VA_ARGS__ } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define HOLD() (void)fgetc(stdin); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LOG(FD, COLOR, ...) fprintf(FD, COLOR), fprintf(FD, "%s:%d: ", __FILE__, __LINE__), fprintf(FD, __VA_ARGS__), fprintf(FD, "\033[0m"), fflush(FD) |
|
|
#define COMMENT(...) LOG(stdout, "\033[38;5;78m", __VA_ARGS__) |
|
|
#define WARNING(...) LOG(stdout, "\033[38;5;208m", __VA_ARGS__), HOLD() |
|
|
#define INFO(...) LOG(stdout, "\033[38;5;228m", __VA_ARGS__) |
|
|
#define ERROR(...) { LOG(stderr, "\033[38;5;196m", __VA_ARGS__); exit(EXIT_FAILURE); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define CALLBACK_ON_FILE(FNAME, ...) \ |
|
|
if (FNAME != NULL) { __VA_ARGS__; } \ |
|
|
else WARNING("\"%s\" not set, skipping", #FNAME); |
|
|
|