diff --git a/libguile/arrays.c b/libguile/arrays.c index b4838e7e3..741cc564a 100644 --- a/libguile/arrays.c +++ b/libguile/arrays.c @@ -1126,7 +1126,8 @@ array_get_handle (SCM array, scm_t_array_handle *h) h->base = SCM_I_ARRAY_BASE (array); } -SCM_ARRAY_IMPLEMENTATION (scm_i_tc16_array, 0xffff, +SCM_ARRAY_IMPLEMENTATION (SCM_SMOB_TYPE_BITS (scm_i_tc16_array), + SCM_SMOB_TYPE_MASK, array_handle_ref, array_handle_set, array_get_handle); diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c index c3b6f3e4e..3e23adf8e 100644 --- a/libguile/bitvectors.c +++ b/libguile/bitvectors.c @@ -878,7 +878,8 @@ bitvector_get_handle (SCM bv, scm_t_array_handle *h) h->elements = h->writable_elements = BITVECTOR_BITS (bv); } -SCM_ARRAY_IMPLEMENTATION (scm_tc16_bitvector, 0xffff, +SCM_ARRAY_IMPLEMENTATION (SCM_SMOB_TYPE_BITS (scm_tc16_bitvector), + SCM_SMOB_TYPE_MASK, bitvector_handle_ref, bitvector_handle_set, bitvector_get_handle); SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_BIT, scm_make_bitvector); diff --git a/libguile/smob.h b/libguile/smob.h index 06b1c48e1..f9b511066 100644 --- a/libguile/smob.h +++ b/libguile/smob.h @@ -161,6 +161,8 @@ while (0) #define SCM_SMOB_OBJECT_LOC(x) (SCM_SMOB_OBJECT_1_LOC (x))) +#define SCM_SMOB_TYPE_MASK 0xffff +#define SCM_SMOB_TYPE_BITS(tc) (tc) #define SCM_TC2SMOBNUM(x) (0x0ff & ((x) >> 8)) #define SCM_SMOBNUM(x) (SCM_TC2SMOBNUM (SCM_CELL_TYPE (x))) /* SCM_SMOBNAME can be 0 if name is missing */ diff --git a/libguile/srfi-4.c b/libguile/srfi-4.c index 3849776cd..45b9de066 100644 --- a/libguile/srfi-4.c +++ b/libguile/srfi-4.c @@ -883,7 +883,8 @@ uvec_get_handle (SCM v, scm_t_array_handle *h) h->elements = h->writable_elements = SCM_UVEC_BASE (v); } -SCM_ARRAY_IMPLEMENTATION (scm_tc16_uvec, 0xffff, +SCM_ARRAY_IMPLEMENTATION (SCM_SMOB_TYPE_BITS (scm_tc16_uvec), + SCM_SMOB_TYPE_MASK, uvec_handle_ref, uvec_handle_set, uvec_get_handle);