mrk/include/mrk/common.h

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