diff --git a/src/error.h b/src/error.h new file mode 100644 index 0000000..e4c0473 --- /dev/null +++ b/src/error.h @@ -0,0 +1,57 @@ +#ifndef _ERROR_H +#define _ERROR_H + + +typedef enum { + EOK=0, + ECALL, // CALL/CCALL error + EDATA, // DATA error + EEXPR, // Expression error + EEVENT, // Event error + EHEAP, // Heap error + EINPUT, // Input error (EWOULDBLOCk...) + ENOTFOUND, + EOP, // Instruction error + EPROC, // Procedure error + ERANGE, // Array range error + ERUN, // Run-time error + ESTACK, // Stack error + ESYNTAX, // Syntax error + ETASK, // Task (creation) error + ETODO, // Not yet implemented + ETYPE, + EVAR, // Variable error + EWOULDBLOCK, // Blocking IO not allowed +} errors_t; + +#define ERRORS char *Errors[]={\ + "EOK",\ + "ECALL",\ + "EDATA",\ + "EEXPR",\ + "EEVENT",\ + "EHEAP",\ + "EINPUT",\ + "ENOTFOUND",\ + "EOP",\ + "EPROC",\ + "ERANGE",\ + "ERUN",\ + "ESTACK",\ + "ESYNTAX",\ + "ETASK",\ + "ETODO",\ + "ETYPE",\ + "EVAR",\ + "EWOULDBLOCK",\ +} +extern char *Errors[]; + +typedef int8_t error_t; +// void error(reg_t *R,error_t e); + +#define RETURNERROR(R,e,status) { error(R,e); return status; } +#define RETURNERROR0(R,e) { error(R,e); return; } + + +#endif