From f8a72ca4c983b3e4c19bffb9ec1e9b433331df8b Mon Sep 17 00:00:00 2001 From: Mikael Djurfeldt Date: Sun, 12 Mar 2000 18:41:47 +0000 Subject: [PATCH] *** empty log message *** --- NEWS | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/NEWS b/NEWS index 33f7a3750..456a69e36 100644 --- a/NEWS +++ b/NEWS @@ -157,6 +157,23 @@ the readability of argument checking. ** All (nearly?) K&R prototypes for functions replaced with ANSI C equivalents. +** New macros: SCM_PACK, SCM_UNPACK, SCM_UNPACK_CAR + +Compose/decompose an SCM value. + +The SCM type is now defined as void * on most architectures. This +makes it easier to find several types of bugs, for example when SCM +values are treated as integers without conversion. Values of the SCM +type should be treated as "atomic" values. These macros are used when +composing/decomposing an SCM value, either because you want to access +individual bits, or because you want to treat it as an integer value. + +E.g., in order to set bit 7 in an SCM value x, use the expression + + SCM_PACK (SCM_UNPACK (x) | 0x80) + +SCM_UNPACK_CAR (X) is defined as SCM_UNPACK (SCM_CAR (X)) + ** Port internals: the rw_random variable in the scm_port structure must be set to non-zero in any random access port. In recent Guile releases it was only set for bidirectional random-access ports. -- 2.20.1