From 499b5dfa3eff74f525ba07b6c865a970c056a6cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 20 Jan 2009 23:29:09 +0100 Subject: [PATCH] Add `SCM_SET_SUBR_GENERIC ()' to replace `SCM_SUBR_GENERIC ()' as an lvalue. * libguile/goops.c (scm_c_extend_primitive_generic): Use `SCM_SET_SUBR_GENERIC ()' instead of using `SCM_SUBR_GENERIC ()' as an lvalue. * libguile/procs.c (scm_c_make_subr_with_generic): Use `SCM_SET_SUBR_GENERIC_LOC ()'. * libguile/procs.h (SCM_SET_SUBR_GENERIC, SCM_SET_SUBR_GENERIC_LOC): New macros. --- libguile/goops.c | 2 +- libguile/procs.c | 2 +- libguile/procs.h | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libguile/goops.c b/libguile/goops.c index 9ac9e9afa..520b1c25d 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -1905,7 +1905,7 @@ scm_c_extend_primitive_generic (SCM extended, SCM extension) gext = scm_call_2 (SCM_VARIABLE_REF (scm_var_make_extended_generic), gf, SCM_SNAME (extension)); - *SCM_SUBR_GENERIC (extension) = gext; + SCM_SET_SUBR_GENERIC (extension, gext); } else { diff --git a/libguile/procs.c b/libguile/procs.c index d536dfc3b..fa32277fe 100644 --- a/libguile/procs.c +++ b/libguile/procs.c @@ -92,7 +92,7 @@ scm_c_make_subr_with_generic (const char *name, long type, SCM (*fcn) (), SCM *gf) { SCM subr = scm_c_make_subr (name, type, fcn); - SCM_SUBR_GENERIC (subr) = gf; + SCM_SET_SUBR_GENERIC_LOC (subr, gf); return subr; } diff --git a/libguile/procs.h b/libguile/procs.h index 122187cb9..c2fc7589a 100644 --- a/libguile/procs.h +++ b/libguile/procs.h @@ -47,6 +47,8 @@ typedef struct #define SCM_DSUBRF(x) ((double (*)()) SCM_CELL_WORD_1 (x)) #define SCM_SUBR_PROPS(x) (SCM_SUBR_ENTRY (x).properties) #define SCM_SUBR_GENERIC(x) (SCM_SUBR_ENTRY (x).generic) +#define SCM_SET_SUBR_GENERIC(x, g) (*SCM_SUBR_ENTRY (x).generic = (g)) +#define SCM_SET_SUBR_GENERIC_LOC(x, g) (SCM_SUBR_ENTRY (x).generic = (g)) #define SCM_CCLO_LENGTH(x) (SCM_CELL_WORD_0 (x) >> 8) #define SCM_MAKE_CCLO_TAG(v) (((v) << 8) + scm_tc7_cclo)