diff options
Diffstat (limited to 'libguile/foreign-object.h')
-rw-r--r-- | libguile/foreign-object.h | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/libguile/foreign-object.h b/libguile/foreign-object.h index 3b7784eb6..806b7eddb 100644 --- a/libguile/foreign-object.h +++ b/libguile/foreign-object.h @@ -32,16 +32,29 @@ SCM_API SCM scm_make_foreign_object_type (SCM name, SCM slot_names, SCM_API void scm_assert_foreign_object_type (SCM type, SCM val); +/* All objects of a given foreign object type have the same number of + fields. When constructing a foreign object, you don't have to pass + initializers for all of the fields; it is always OK to call + scm_make_foreign_object_0 and initialize the fields by hand with + scm_foreign_object_set_x or other setters. The initial value of + fields that haven't been explicitly given a value is 0. */ 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); -SCM_API SCM scm_make_foreign_object_3 (SCM type, scm_t_bits val0, - scm_t_bits val1, scm_t_bits val2); -SCM_API SCM scm_make_foreign_object_n (SCM type, size_t n, scm_t_bits vals[]); - -SCM_API scm_t_bits scm_foreign_object_ref (SCM obj, size_t n); -SCM_API void scm_foreign_object_set_x (SCM obj, size_t n, scm_t_bits val); +SCM_API SCM scm_make_foreign_object_1 (SCM type, void *val0); +SCM_API SCM scm_make_foreign_object_2 (SCM type, void *val0, void *val1); +SCM_API SCM scm_make_foreign_object_3 (SCM type, void *val0, void *val1, + void *val2); +SCM_API SCM scm_make_foreign_object_n (SCM type, size_t n, void *vals[]); + +SCM_API void* scm_foreign_object_ref (SCM obj, size_t n); +SCM_API void scm_foreign_object_set_x (SCM obj, size_t n, void *val); + +SCM_API scm_t_bits scm_foreign_object_unsigned_ref (SCM obj, size_t n); +SCM_API void scm_foreign_object_unsigned_set_x (SCM obj, size_t n, + scm_t_bits val); + +SCM_API scm_t_signed_bits scm_foreign_object_signed_ref (SCM obj, size_t n); +SCM_API void scm_foreign_object_signed_set_x (SCM obj, size_t n, + scm_t_signed_bits val); SCM_INTERNAL void scm_register_foreign_object (void); |