diff options
Diffstat (limited to 'libguile/pairs.h')
-rw-r--r-- | libguile/pairs.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libguile/pairs.h b/libguile/pairs.h index 9cbca3541..4b7af0b26 100644 --- a/libguile/pairs.h +++ b/libguile/pairs.h @@ -101,8 +101,16 @@ typedef SCM huge *SCMPTR; #define SCM_CAR(x) (((scm_cell *)(SCM2PTR(x)))->car) #define SCM_CDR(x) (((scm_cell *)(SCM2PTR(x)))->cdr) #define SCM_GCCDR(x) (~1L & SCM_CDR(x)) -#define SCM_SETCDR(x, v) SCM_CDR(x) = (SCM)(v) -#define SCM_SETCAR(x, v) SCM_CAR(x) = (SCM)(v) +#define SCM_SETCAR(x, v) (SCM_CAR(x) = (SCM)(v)) +#define SCM_SETCDR(x, v) (SCM_CDR(x) = (SCM)(v)) + +#define SCM_CARLOC(x) (&SCM_CAR (x)) +#define SCM_CDRLOC(x) (&SCM_CDR (x)) + +#define SCM_SETAND_CAR(x, y) (SCM_CAR (x) &= (y)) +#define SCM_SETAND_CDR(x, y) (SCM_CDR (x) &= (y)) +#define SCM_SETOR_CAR(x, y) (SCM_CAR (x) |= (y)) +#define SCM_SETOR_CDR(x, y) (SCM_CDR (x) |= (y)) #define SCM_CAAR(OBJ) SCM_CAR (SCM_CAR (OBJ)) #define SCM_CDAR(OBJ) SCM_CDR (SCM_CAR (OBJ)) |