mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
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.
This commit is contained in:
parent
75a029aa25
commit
735bcfe579
4 changed files with 8 additions and 3 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue