summaryrefslogtreecommitdiffstats
path: root/unwind.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-10-24 23:35:48 -0400
committerKaz Kylheku <kaz@kylheku.com>2011-10-24 23:35:48 -0400
commit77b9c8f289df7b0ba45668e09cdc040252c681c8 (patch)
treed1d6df2cd1ed2ad82a9aa845cda6c4243f01ce99 /unwind.h
parent23a6fd5129b285d25faa8198e395ac91db0348c4 (diff)
downloadtxr-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.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/unwind.h b/unwind.h
index 98b7a58a..a09df613 100644
--- a/unwind.h
+++ b/unwind.h
@@ -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);