case SCM_FOREIGN_TYPE_INT64:
return scm_from_int64 (*(scm_t_int64*)ptr);
default:
- abort ();
+ scm_wrong_type_arg_msg (FUNC_NAME, 1, foreign, "foreign");
}
}
#undef FUNC_NAME
*(scm_t_int64*)ptr = scm_to_int64 (val);
break;
default:
- abort ();
+ scm_wrong_type_arg_msg (FUNC_NAME, 1, val, "foreign");
}
return SCM_UNSPECIFIED;
scm_puts ("pointer ", port);
break;
default:
- abort ();
+ scm_wrong_type_arg_msg ("%print-foreign", 1, foreign, "foreign");
}
scm_display (scm_foreign_ref (foreign), port);
scm_putc ('>', port);
*ftype = ffi_type_void;
return;
default:
- abort ();
+ scm_wrong_type_arg_msg ("make-foreign-function", 0, type,
+ "foreign type");
}
}
else
if (nargs < 10)
objcode = objcode_trampolines[nargs];
else
- abort ();
+ scm_misc_error ("make-foreign-function", "args >= 10 currently unimplemented",
+ SCM_EOL);
table = scm_c_make_vector (2, SCM_UNDEFINED);
SCM_SIMPLE_VECTOR_SET (table, 0, scm_cons (cif, func_ptr));
break;
case FFI_TYPE_STRUCT:
if (!SCM_FOREIGN_TYPED_P (x, VOID))
- abort ();
+ scm_wrong_type_arg_msg ("foreign-call", 0, x,
+ "foreign void pointer");
if (SCM_FOREIGN_LEN (x) && SCM_FOREIGN_LEN (x) != type->size)
- abort ();
+ scm_wrong_type_arg_msg ("foreign-call", 0, x,
+ "foreign void pointer of correct length");
memcpy (loc, SCM_FOREIGN_POINTER (x, void), type->size);
break;
case FFI_TYPE_POINTER:
if (!SCM_FOREIGN_TYPED_P (x, VOID))
- abort ();
+ scm_wrong_type_arg_msg ("foreign-call", 0, x,
+ "foreign void pointer");
*(void**)loc = SCM_FOREIGN_POINTER (x, void);
break;
default: