diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-08 22:53:21 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-08 23:13:21 +0100 |
commit | 735bcfe579606eddb1700462e56918d48affe36e (patch) | |
tree | 03f998c72d39602b6ea12144d58237e051083b49 | |
parent | 75a029aa2553a24e4804722521f1e5db9690fbe3 (diff) | |
download | guile-735bcfe579606eddb1700462e56918d48affe36e.tar.gz |
add SCM_SMOB_TYPE_BITS and SCM_SMOB_TYPE_MASK
* libguile/smob.h (SCM_SMOB_TYPE_BITS, SCM_SMOB_TYPE_MASK): New macros,
for when you want to identify a SMOB by type and mask.
* libguile/arrays.c:
* libguile/bitvectors.c:
* libguile/srfi-4.c: Use the new macros.
-rw-r--r-- | libguile/arrays.c | 3 | ||||
-rw-r--r-- | libguile/bitvectors.c | 3 | ||||
-rw-r--r-- | libguile/smob.h | 2 | ||||
-rw-r--r-- | libguile/srfi-4.c | 3 |
4 files changed, 8 insertions, 3 deletions
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); |