scm_t_bits scm_foreign_object_unsigned_ref (SCM obj, size_t n) #define FUNC_NAME "foreign-object-ref" { SCM_VALIDATE_STRUCT (SCM_ARG1, obj); if (SCM_STRUCT_SIZE (obj) <= n) scm_out_of_range (FUNC_NAME, scm_from_size_t (n)); if (!SCM_STRUCT_FIELD_IS_UNBOXED (obj, n)) scm_wrong_type_arg_msg (FUNC_NAME, 0, scm_from_size_t (n), "unboxed field"); return SCM_STRUCT_DATA_REF (obj, n); }
void scm_foreign_object_unsigned_set_x (SCM obj, size_t n, scm_t_bits val) #define FUNC_NAME "foreign-object-set!" { SCM_VALIDATE_STRUCT (SCM_ARG1, obj); if (SCM_STRUCT_SIZE (obj) <= n) scm_out_of_range (FUNC_NAME, scm_from_size_t (n)); if (!SCM_STRUCT_FIELD_IS_UNBOXED (obj, n)) scm_wrong_type_arg_msg (FUNC_NAME, 0, scm_from_size_t (n), "unboxed field"); SCM_STRUCT_DATA_SET (obj, n, val); }
void scm_foreign_object_unsigned_set_x (SCM obj, size_t n, scm_t_bits val) #define FUNC_NAME "foreign-object-set!" { SCM layout; SCM_VALIDATE_STRUCT (SCM_ARG1, obj); layout = SCM_STRUCT_LAYOUT (obj); if (scm_i_symbol_length (layout) / 2 < n) scm_out_of_range (FUNC_NAME, scm_from_size_t (n)); if (scm_i_symbol_ref (layout, n * 2) != 'u') scm_wrong_type_arg_msg (FUNC_NAME, 0, layout, "'u' field"); SCM_STRUCT_DATA_SET (obj, n, val); }