roza/lib/err.h

33 lines
540 B
C

#ifndef RZ_ERR_H
#define RZ_ERR_H
#define RZ_ERROR_STACK_SIZE 256
#include "commons.h"
#define ERR_TYPES(G) \
G(ERR_WARNING), G(ERR_FATAL)
RZ_ENUM_H(ErrType, ERR_TYPES);
typedef struct {
ErrType type;
char* what;
int line;
} err_msg_t;
typedef struct {
size_t size;
err_msg_t* errors[RZ_ERROR_STACK_SIZE];
} err_t;
void err_init(err_t* err);
void err_free(err_t* err);
void err_of_type(err_t* err, char* what, int line, ErrType type);
void err_fatal(err_t* err, char* what, int line);
int err_dump(err_t* err);
#endif