diff options
author | Marius Vollmer <mvo@zagadka.de> | 2004-05-06 16:43:14 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2004-05-06 16:43:14 +0000 |
commit | f5710d53b1a67d7b965701b4b34004b9db1a6813 (patch) | |
tree | e6e4e2a562a827adba4f3c374c1152016dd6b68c /libguile/dynwind.c | |
parent | 41a2f6fc0c62afeb09bd7fbae4e9eca794c26bbe (diff) | |
download | guile-f5710d53b1a67d7b965701b4b34004b9db1a6813.tar.gz |
Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
Diffstat (limited to 'libguile/dynwind.c')
-rw-r--r-- | libguile/dynwind.c | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/libguile/dynwind.c b/libguile/dynwind.c index 28dbb0d45..a4f7c3de5 100644 --- a/libguile/dynwind.c +++ b/libguile/dynwind.c @@ -132,27 +132,28 @@ scm_internal_dynamic_wind (scm_t_guard before, static scm_t_bits tc16_frame; #define FRAME_P(f) SCM_SMOB_PREDICATE (tc16_frame, (f)) -#define FRAME_F_REWINDABLE (1 << 16) -#define FRAME_REWINDABLE_P(f) (SCM_CELL_WORD_0(f) & FRAME_F_REWINDABLE) +#define FRAME_F_REWINDABLE (1 << 0) +#define FRAME_REWINDABLE_P(f) (SCM_SMOB_FLAGS(f) & FRAME_F_REWINDABLE) static scm_t_bits tc16_winder; #define WINDER_P(w) SCM_SMOB_PREDICATE (tc16_winder, (w)) -#define WINDER_PROC(w) ((void (*)(void *))SCM_CELL_WORD_1 (w)) -#define WINDER_DATA(w) ((void *)SCM_CELL_WORD_2 (w)) +#define WINDER_PROC(w) ((void (*)(void *))SCM_SMOB_DATA (w)) +#define WINDER_DATA(w) ((void *)SCM_SMOB_DATA_2 (w)) -#define WINDER_F_EXPLICIT (1 << 16) -#define WINDER_F_REWIND (1 << 17) -#define WINDER_F_MARK (1 << 18) -#define WINDER_EXPLICIT_P(w) (SCM_CELL_WORD_0(w) & WINDER_F_EXPLICIT) -#define WINDER_REWIND_P(w) (SCM_CELL_WORD_0(w) & WINDER_F_REWIND) -#define WINDER_MARK_P(w) (SCM_CELL_WORD_0(w) & WINDER_F_MARK) +#define WINDER_F_EXPLICIT (1 << 0) +#define WINDER_F_REWIND (1 << 1) +#define WINDER_F_MARK (1 << 2) +#define WINDER_EXPLICIT_P(w) (SCM_SMOB_FLAGS(w) & WINDER_F_EXPLICIT) +#define WINDER_REWIND_P(w) (SCM_SMOB_FLAGS(w) & WINDER_F_REWIND) +#define WINDER_MARK_P(w) (SCM_SMOB_FLAGS(w) & WINDER_F_MARK) void scm_frame_begin (scm_t_frame_flags flags) { SCM f; - scm_t_bits fl = ((flags&SCM_F_FRAME_REWINDABLE)? FRAME_F_REWINDABLE : 0); - SCM_NEWSMOB (f, tc16_frame | fl, 0); + SCM_NEWSMOB (f, tc16_frame, 0); + if (flags & SCM_F_FRAME_REWINDABLE) + SCM_SET_SMOB_FLAGS (f, FRAME_F_REWINDABLE); scm_dynwinds = scm_cons (f, scm_dynwinds); } @@ -192,9 +193,9 @@ scm_frame_unwind_handler (void (*proc) (void *), void *data, scm_t_wind_flags flags) { SCM w; - scm_t_bits fl = ((flags&SCM_F_WIND_EXPLICITLY)? WINDER_F_EXPLICIT : 0); - SCM_NEWSMOB2 (w, tc16_winder | fl, - (scm_t_bits) proc, (scm_t_bits) data); + SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, (scm_t_bits) data); + if (flags & SCM_F_WIND_EXPLICITLY) + SCM_SET_SMOB_FLAGS (w, WINDER_F_EXPLICIT); scm_dynwinds = scm_cons (w, scm_dynwinds); } @@ -203,8 +204,8 @@ scm_frame_rewind_handler (void (*proc) (void *), void *data, scm_t_wind_flags flags) { SCM w; - SCM_NEWSMOB2 (w, tc16_winder | WINDER_F_REWIND, - (scm_t_bits) proc, (scm_t_bits) data); + SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, (scm_t_bits) data); + SCM_SET_SMOB_FLAGS (w, WINDER_F_REWIND); scm_dynwinds = scm_cons (w, scm_dynwinds); if (flags & SCM_F_WIND_EXPLICITLY) proc (data); @@ -216,8 +217,8 @@ scm_frame_unwind_handler_with_scm (void (*proc) (SCM), SCM data, { SCM w; scm_t_bits fl = ((flags&SCM_F_WIND_EXPLICITLY)? WINDER_F_EXPLICIT : 0); - SCM_NEWSMOB2 (w, tc16_winder | fl | WINDER_F_MARK, - (scm_t_bits) proc, SCM_UNPACK (data)); + SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, SCM_UNPACK (data)); + SCM_SET_SMOB_FLAGS (w, fl | WINDER_F_MARK); scm_dynwinds = scm_cons (w, scm_dynwinds); } @@ -226,8 +227,8 @@ scm_frame_rewind_handler_with_scm (void (*proc) (SCM), SCM data, scm_t_wind_flags flags) { SCM w; - SCM_NEWSMOB2 (w, tc16_winder | WINDER_F_REWIND | WINDER_F_MARK, - (scm_t_bits) proc, SCM_UNPACK (data)); + SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, SCM_UNPACK (data)); + SCM_SET_SMOB_FLAGS (w, WINDER_F_REWIND | WINDER_F_MARK); scm_dynwinds = scm_cons (w, scm_dynwinds); if (flags & SCM_F_WIND_EXPLICITLY) proc (data); |