summaryrefslogtreecommitdiff
path: root/src/common.h
blob: e10649aecdeeb9fde351d5c9dd3860604b6c1a3e (plain)
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
#ifndef LOG_H
#define LOG_H

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define ARR_SIZE(a) (sizeof(a)/sizeof(*(a)))

#define __RED__    "\033[0;31m"
#define __GREEN__  "\033[0;32m"
#define __YELLOW__ "\033[0;33m"
#define __RESET__  "\033[0m"

#define STR(x) #x
#define XSTR(x) STR(x)

#define info(...) do { fprintf(stdout, __GREEN__"[INFO]"__RESET__"  "__VA_ARGS__); fprintf(stdout, "\n"); } while(0)
#define err(...)  do { fprintf(stderr, __RED__"[ERROR]"__RESET__" "__FILE__":"XSTR(__LINE__)": "__VA_ARGS__); fprintf(stderr, "\n"); } while(0)
#define warn(...) do { fprintf(stderr, __YELLOW__"[WARN]"__RESET__"  "__FILE__":"XSTR(__LINE__)": "__VA_ARGS__); fprintf(stderr, "\n"); } while(0)

#define die(...) do {     \
        err(__VA_ARGS__); \
        abort();          \
    } while(0)

#define MAKE_VERSION(major, minor, patch) \
    ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))

void *xmalloc(size_t size);
void *xcalloc(size_t nmemb, size_t size);
void *xrealloc(void *ptr, size_t size);

#endif