static SCM gdbscm_make_arg_error (SCM key, const char *subr, int arg_pos, SCM bad_value, const char *error_prefix, const char *error) { char *msg; SCM result; if (error_prefix != NULL) { if (arg_pos > 0) { msg = xstrprintf (_("%s %s in position %d: ~S"), error_prefix, error, arg_pos); } else msg = xstrprintf (_("%s %s: ~S"), error_prefix, error); } else { if (arg_pos > 0) msg = xstrprintf (_("%s in position %d: ~S"), error, arg_pos); else msg = xstrprintf (_("%s: ~S"), error); } result = gdbscm_make_error (key, subr, msg, scm_list_1 (bad_value), scm_list_1 (bad_value)); xfree (msg); return result; }
static SCM ppscm_make_pp_type_error_exception (const char *message, SCM object) { std::string msg = string_printf ("%s: ~S", message); return gdbscm_make_error (pp_type_error_symbol, NULL /* func */, msg.c_str (), scm_list_1 (object), scm_list_1 (object)); }
SCM gdbscm_scm_from_gdb_exception (struct gdb_exception exception) { SCM key; if (exception.reason == RETURN_QUIT) { /* Handle this specially to be consistent with top-repl.scm. */ return gdbscm_make_error (signal_symbol, NULL, _("User interrupt"), SCM_EOL, scm_list_1 (scm_from_int (SIGINT))); } if (exception.error == MEMORY_ERROR) key = memory_error_symbol; else key = error_symbol; return gdbscm_make_error (key, NULL, "~A", scm_list_1 (gdbscm_scm_from_c_string (exception.message)), SCM_BOOL_F); }
static SCM ppscm_make_pp_type_error_exception (const char *message, SCM object) { char *msg = xstrprintf ("%s: ~S", message); struct cleanup *cleanup = make_cleanup (xfree, msg); SCM exception = gdbscm_make_error (pp_type_error_symbol, NULL /* func */, msg, scm_list_1 (object), scm_list_1 (object)); do_cleanups (cleanup); return exception; }
SCM gdbscm_make_type_error (const char *subr, int arg_pos, SCM bad_value, const char *expected_type) { char *msg; SCM result; if (arg_pos > 0) { if (expected_type != NULL) { msg = xstrprintf (_("Wrong type argument in position %d" " (expecting %s): ~S"), arg_pos, expected_type); } else { msg = xstrprintf (_("Wrong type argument in position %d: ~S"), arg_pos); } } else { if (expected_type != NULL) { msg = xstrprintf (_("Wrong type argument (expecting %s): ~S"), expected_type); } else msg = xstrprintf (_("Wrong type argument: ~S")); } result = gdbscm_make_error (scm_arg_type_key, subr, msg, scm_list_1 (bad_value), scm_list_1 (bad_value)); xfree (msg); return result; }
SCM gdbscm_make_memory_error (const char *subr, const char *msg, SCM args) { return gdbscm_make_error (memory_error_symbol, subr, msg, args, SCM_EOL); }