factor/native/error.h

42 lines
1018 B
C

typedef enum
{
ERROR_EXPIRED
ERROR_IO
ERROR_UNDEFINED_WORD
ERROR_TYPE
ERROR_SIGNAL
ERROR_NEGATIVE_ARRAY_SIZE
ERROR_C_STRING
ERROR_FFI
ERROR_HEAP_SCAN
ERROR_UNDEFINED_SYMBOL
ERROR_USER_INTERRUPT
ERROR_DS_UNDERFLOW
ERROR_DS_OVERFLOW
ERROR_RS_UNDERFLOW
ERROR_RS_OVERFLOW
ERROR_CS_UNDERFLOW
ERROR_CS_OVERFLOW
ERROR_OBJECTIVE_C
} F_ERRORTYPE;
/* Are we throwing an error? */
bool throwing;
/* When throw_error throws an error, it sets this global and
longjmps back to the top-level. */
CELL thrown_error;
CELL thrown_keep_stacks;
/* Since longjmp restores registers, we must save all these values. */
CELL thrown_ds;
CELL thrown_rs;
void fatal_error(char* msg, CELL tagged);
void critical_error(char* msg, CELL tagged);
void throw_error(CELL error, bool keep_stacks);
void early_error(CELL error);
void general_error(F_ERRORTYPE error, CELL arg1, CELL arg2, bool keep_stacks);
void signal_error(int signal);
void type_error(CELL type, CELL tagged);
void primitive_throw(void);
void primitive_die(void);