/** * @TODO: make the output stream configurable? Either * Print out an error and exit */ void saffire_warning(char *str, ...) { t_dll_element *e = DLL_TAIL(lineno_stack); unsigned long lineno = (unsigned long)e->data; va_list args; va_start(args, str); fprintf(STREAM_WARNING, "Warning in line %lu: ", (unsigned long)lineno); vfprintf(STREAM_WARNING, str, args); fprintf(STREAM_WARNING, "\n"); va_end(args); }
/** * Print out an error and exit */ void saffire_error(char *str, ...) { t_dll_element *e = DLL_TAIL(lineno_stack); unsigned long lineno = (unsigned long)e->data; va_list args; va_start(args, str); fprintf(STREAM_ERROR, "Error in line %lu: ", (unsigned long)lineno); vfprintf(STREAM_ERROR, str, args); fprintf(STREAM_ERROR, "\n"); va_end(args); exit(1); }
t_scope *get_current_scope(void) { t_dll_element *e = DLL_TAIL(scope_stack->dll); return e->data; }