1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-20 10:40:19 +02:00

SCM is a union

* libguile/tags.h (SCM): Change to simply be a union containing
  scm_t_bits.
  (SCM_PACK, SCM_UNPACK): Adapt accordingly.
This commit is contained in:
Andy Wingo 2011-05-13 16:21:11 +02:00
parent 6bc898466b
commit 8787d7a170

View file

@ -74,9 +74,9 @@ typedef scm_t_uintptr scm_t_bits;
* desired level of type checking, be defined in several ways:
*/
#if (SCM_DEBUG_TYPING_STRICTNESS == 2)
typedef union SCM { struct { scm_t_bits n; } n; } SCM;
# define SCM_UNPACK(x) ((x).n.n)
# define SCM_PACK(x) ((SCM) { { (scm_t_bits) (x) } })
typedef union SCM { scm_t_bits n; } SCM;
# define SCM_UNPACK(x) ((x).n)
# define SCM_PACK(x) ((SCM) { (scm_t_bits) (x) })
#elif (SCM_DEBUG_TYPING_STRICTNESS == 1)
/* This is the default, which provides an intermediate level of compile time
* type checking while still resulting in very efficient code.