Example #1
0
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);
}
Example #2
0
scm_t_bits
scm_foreign_object_unsigned_ref (SCM obj, size_t n)
#define FUNC_NAME "foreign-object-ref"
{
  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");

  return SCM_STRUCT_DATA_REF (obj, n);
}