scm_list_2 (scm_class_name (type), val), scm_list_1 (val));
}
+SCM
+scm_make_foreign_object_0 (SCM type)
+{
+ return scm_make_foreign_object_n (type, 0, NULL);
+}
+
SCM
scm_make_foreign_object_1 (SCM type, scm_t_bits val0)
{
SCM obj;
SCM layout;
size_t i;
+ const char *layout_chars;
SCM_VALIDATE_VTABLE (SCM_ARG1, type);
if (scm_i_symbol_length (layout) / 2 < n)
scm_out_of_range (FUNC_NAME, scm_from_size_t (n));
+ layout_chars = scm_i_symbol_chars (layout);
for (i = 0; i < n; i++)
- if (scm_i_symbol_ref (layout, i * 2) != 'u')
+ if (layout_chars[i * 2] != 'u')
scm_wrong_type_arg_msg (FUNC_NAME, 0, layout, "'u' field");
obj = scm_c_make_structv (type, 0, 0, NULL);
SCM_API void scm_assert_foreign_object_type (SCM type, SCM val);
+SCM_API SCM scm_make_foreign_object_0 (SCM type);
SCM_API SCM scm_make_foreign_object_1 (SCM type, scm_t_bits val0);
SCM_API SCM scm_make_foreign_object_2 (SCM type, scm_t_bits val0,
scm_t_bits val1);