diff options
author | Marius Vollmer <mvo@zagadka.de> | 2004-01-07 18:08:52 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2004-01-07 18:08:52 +0000 |
commit | ef20bf705f6b9d23267a08e2362bb91715dc7e4f (patch) | |
tree | 04113d4056e6c353f3f479d3dd875eb15508a207 /libguile/fluids.c | |
parent | 07add3457ba962b8bce04b46101f85f7e089d8e8 (diff) | |
download | guile-ef20bf705f6b9d23267a08e2362bb91715dc7e4f.tar.gz |
(scm_frame_fluid): New.
Diffstat (limited to 'libguile/fluids.c')
-rw-r--r-- | libguile/fluids.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libguile/fluids.c b/libguile/fluids.c index 32a5ffd37..7be538f9d 100644 --- a/libguile/fluids.c +++ b/libguile/fluids.c @@ -233,6 +233,23 @@ scm_c_with_fluid (SCM fluid, SCM value, SCM (*cproc) (), void *cdata) } #undef FUNC_NAME +static void +swap_fluid (SCM data) +{ + SCM f = SCM_CAR (data); + SCM t = scm_fluid_ref (f); + scm_fluid_set_x (f, SCM_CDR (data)); + SCM_SETCDR (data, t); +} + +void +scm_frame_fluid (SCM fluid, SCM value) +{ + SCM data = scm_cons (fluid, value); + scm_frame_rewind_with_scm (swap_fluid, data, SCM_F_WIND_EXPLICITLY); + scm_frame_unwind_with_scm (swap_fluid, data, SCM_F_WIND_EXPLICITLY); +} + void scm_init_fluids () { |