46 lines
2.1 KiB
C
46 lines
2.1 KiB
C
#ifndef MRK_COMMON
|
|
#define MRK_COMMON
|
|
|
|
#include <stdlib.h>
|
|
|
|
#define MRK_CALLOC(out, n, size) \
|
|
{ \
|
|
void *temp = calloc(n, size); \
|
|
if (temp == NULL) \
|
|
return mrk_err_failed_alloc; \
|
|
*out = temp; \
|
|
}
|
|
|
|
#define MRK_MALLOC(out, size) \
|
|
{ \
|
|
void *temp = malloc(size); \
|
|
if (temp == NULL) \
|
|
return mrk_err_failed_alloc; \
|
|
*out = temp; \
|
|
}
|
|
|
|
#define MRK_RES(x) \
|
|
{ \
|
|
mrk_err res = x; \
|
|
if (res != mrk_err_ok) \
|
|
return res; \
|
|
}
|
|
|
|
#define MRK_RES2(x, e) \
|
|
{ \
|
|
mrk_err res = x; \
|
|
if (res != mrk_err_ok) { \
|
|
e; \
|
|
return res; \
|
|
} \
|
|
}
|
|
|
|
typedef enum mrk_err {
|
|
mrk_err_ok = 0,
|
|
mrk_err_failed_alloc,
|
|
mrk_err_unexpected_token,
|
|
mrk_err_invalid,
|
|
} mrk_err;
|
|
|
|
#endif
|