void scheme_signal_error(char *msg, ...)
Raises a generic primitive exception. The parameters are as with printf.
void scheme_raise_exn(int exnid, ...)
Raises a specific primitive exception. The exnid argument specifies the exception to be raised. If an instance of that exception has n fields, then the next n-2 arguments are values for those fields (skipping the message and debug-info fields). The remaining arguments start with an error string and proceed as for printf.
Exception ids are #defined using the same names as in Scheme, but prefixed with ``MZ'' and all letter are capitalized and all ``:'s', ``-''s, and ``/''s are replaced with underscores. For example, MZEXN_I_O_FILESYSTEM_DIRECTORY is the exception id for the bad directory pathname exception.
void scheme_warning(char *msg, ...)
Signals a warning. The parameters are as with printf.
void scheme_wrong_count(char *name, int minc, int maxc,
int argc, Scheme_Object **argv)
Signals that the wrong number of parameters was received and escapes (like scheme_signal_error). name is the name of the procedure that was given the wrong number of arguments; minc is the minimum number of expected arguments; maxc is the maximum number of expected arguments, or -1 if there is no maximum; argc and argv contain the received arguments. This function is automatically invoked when the wrong number of arguments are given to a primitive procedure.
void scheme_wrong_type(char *name, char *expected, int which,
int argc, Scheme_Object **argv)
Signals that an argument of the wrong type was received, and escapes (like scheme_signal_error). name is the name of the procedure that was given the wrong type of argument; expected is the name of the expected type; which is the offending argument in the argv array; argc and argv contain the received arguments.
void scheme_check_proc_arity(char *where, int a, int which,
int argc, Scheme_Object **argv)
Checks the whichth argument in argv to make sure it is a procedure that can take a arguments. If there is an error, the where, which, argc, and argv arguments are passed on to scheme_wrong_type. As in scheme_wrong_type, which can be -1, in which case *argv is checked.
Scheme_Object * scheme_dynamic_wind(
void (*pre)(void *data),
Scheme_Object *(*action)(void *data),
void (*post)(void *data),
Scheme_Object *(*jmp_handler)(void *data),
void *data)
Evaluates calls the function action to get a value for the scheme_dynamic_wind call. The functions pre and post are invoked when jumping into and out of action, repsectively.
The function jmp_handler is called when an error is signaled (or an escaping continuation is invoked) duirng the call to action; if jmp_handler returns NULL, then the error is passed on to the next error handler, otherwise the return value is used as the return value for the scheme_dynamic_wind call.
The pointer data can be anything; it is passed along in calls to action, pre, post, and jmp_handler.