#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 { int total; int quiet; 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