From 664849db9e15d5f419fcacdccbb2bf5f5afe3524 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Thu, 22 Sep 2016 20:59:36 -0400 Subject: [PATCH] filter-func iterate --- c/mapping/mapper_filter.c | 26 +++++++++++++++----------- c/todo.txt | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/c/mapping/mapper_filter.c b/c/mapping/mapper_filter.c index e70b6b3fb..046b57687 100644 --- a/c/mapping/mapper_filter.c +++ b/c/mapping/mapper_filter.c @@ -11,12 +11,14 @@ #include "cli/argparse.h" typedef struct _mapper_filter_state_t { - ap_state_t* pargp; - char* mlr_dsl_expression; - char* comment_stripped_mlr_dsl_expression; + ap_state_t* pargp; + char* mlr_dsl_expression; + char* comment_stripped_mlr_dsl_expression; mlr_dsl_cst_t* pcst; - mlhmmv_t* poosvars; - int do_exclude; + mlhmmv_t* poosvars; + bind_stack_t* pbind_stack; + loop_stack_t* ploop_stack; + int do_exclude; } mapper_filter_state_t; static void mapper_filter_usage(FILE* o, char* argv0, char* verb); @@ -181,9 +183,11 @@ static mapper_t* mapper_filter_alloc(ap_state_t* pargp, // Retain the string contents along with any in-pointers from the AST/CST pstate->mlr_dsl_expression = mlr_dsl_expression; pstate->comment_stripped_mlr_dsl_expression = comment_stripped_mlr_dsl_expression; - pstate->pcst = mlr_dsl_cst_alloc_filterable(past, type_inferencing); - pstate->poosvars = mlhmmv_alloc(); - pstate->do_exclude = do_exclude; + pstate->pcst = mlr_dsl_cst_alloc_filterable(past, type_inferencing); + pstate->poosvars = mlhmmv_alloc(); + pstate->pbind_stack = bind_stack_alloc(); + pstate->ploop_stack = loop_stack_alloc(); + pstate->do_exclude = do_exclude; mapper_t* pmapper = mlr_malloc_or_die(sizeof(mapper_t)); @@ -218,10 +222,10 @@ static sllv_t* mapper_filter_process(lrec_t* pinrec, context_t* pctx, void* pvst .pinrec = pinrec, .ptyped_overlay = ptyped_overlay, .poosvars = pstate->poosvars, - .ppregex_captures = NULL, + .ppregex_captures = NULL, // xxx UT .pctx = pctx, - .pbind_stack = NULL, - .ploop_stack = NULL, + .pbind_stack = pstate->pbind_stack, + .ploop_stack = pstate->ploop_stack, .return_state = { .returned = FALSE, .retval = mv_absent(), diff --git a/c/todo.txt b/c/todo.txt index 21b7c495e..db2f22c7c 100644 --- a/c/todo.txt +++ b/c/todo.txt @@ -24,7 +24,7 @@ SEQGEN: MORE: !! mix -f and -e for filter/put !! :) -> mld/mlh/UT -! allow func @ filter +! UT/mlh/mld func @ filter UDFs/subrs/localvars: * maybe: