diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-10-24 23:35:48 -0400 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-10-24 23:35:48 -0400 |
commit | 77b9c8f289df7b0ba45668e09cdc040252c681c8 (patch) | |
tree | d1d6df2cd1ed2ad82a9aa845cda6c4243f01ce99 /unwind.h | |
parent | 23a6fd5129b285d25faa8198e395ac91db0348c4 (diff) | |
download | txr-77b9c8f289df7b0ba45668e09cdc040252c681c8.tar.gz txr-77b9c8f289df7b0ba45668e09cdc040252c681c8.tar.bz2 txr-77b9c8f289df7b0ba45668e09cdc040252c681c8.zip |
* filter.c (function_filter): New function.
(get_filter): Handle (fun ...) syntax.
* match.c (v_bind): Establish dynamic environment frame around
dest_bind, and stash the bindings there so filters can have access
to the bindings.
(v_output): Likewise, around do_output calls.
(v_fun): New function.
(match_files): Function handling broken out into v_fun.
(match_funcall): New function.
* match.h (match_funcall): Declared.
* unwind.c (uw_push_env): Initialize match_context.
(uw_get_match_context, uw_set_match_context): New functions.
* unwind.h (struct uw_dynamic_env): New member, match_context.
(uw_get_match_context, uw_set_match_context): Declared.
* txr.1: Documented function filters.
Diffstat (limited to 'unwind.h')
-rw-r--r-- | unwind.h | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -51,6 +51,7 @@ struct uw_dynamic_env { uw_frtype_t type; uw_frame_t *up_env; val func_bindings; + val match_context; }; struct uw_catch { @@ -75,6 +76,8 @@ void uw_push_block(uw_frame_t *, val tag); void uw_push_env(uw_frame_t *); val uw_get_func(val sym); val uw_set_func(val sym, val value); +val uw_get_match_context(void); +val uw_set_match_context(val context); val uw_block_return(val tag, val result); void uw_push_catch(uw_frame_t *, val matches); noreturn val uw_throw(val sym, val exception); |