From 72b1ccd75cedad6669e55f96de85113aaa15dc9d Mon Sep 17 00:00:00 2001 From: John Kerl Date: Tue, 15 Nov 2016 09:10:43 -0500 Subject: [PATCH] mapvar emit-lashed iterate --- c/mapping/mlr_dsl_cst_output_statements.c | 9 ++++++--- c/mapping/rval_list_evaluators.c | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/c/mapping/mlr_dsl_cst_output_statements.c b/c/mapping/mlr_dsl_cst_output_statements.c index fda841196..6d662da81 100644 --- a/c/mapping/mlr_dsl_cst_output_statements.c +++ b/c/mapping/mlr_dsl_cst_output_statements.c @@ -1110,9 +1110,12 @@ static void handle_emit_lashed_common( char* oosvar_flatten_separator) { int keys_all_non_null_or_error = TRUE; - // xxx XXX next. - sllmv_t** ppmvkeys = evaluate_lists(pstate->ppemit_keylist_evaluators, pstate->num_emit_lashed_items, - pvars, &keys_all_non_null_or_error); + + sllmv_t** ppmvkeys = mlr_malloc_or_die(pstate->num_emit_lashed_items * sizeof(sllmv_t*)); + for (int i = 0; i < pstate->num_emit_lashed_items; i++) { + ppmvkeys[i] = evaluate_list(pstate->ppemit_keylist_evaluators[i], pvars, &keys_all_non_null_or_error); + } + if (keys_all_non_null_or_error) { int names_all_non_null_or_error = TRUE; sllmv_t* pmvnames = evaluate_list(pstate->pemit_namelist_evaluators, pvars, diff --git a/c/mapping/rval_list_evaluators.c b/c/mapping/rval_list_evaluators.c index 69bc5520f..b4c524d26 100644 --- a/c/mapping/rval_list_evaluators.c +++ b/c/mapping/rval_list_evaluators.c @@ -31,7 +31,9 @@ sllmv_t* evaluate_list(sllv_t* pevaluators, variables_t* pvars, int* pall_non_nu return pmvs; } -sllmv_t** evaluate_lists(sllv_t** ppevaluators, int num_evaluators, variables_t* pvars, int* pall_non_null_or_error) { +sllmv_t** evaluate_lists( // xxx rm + sllv_t** ppevaluators, int num_evaluators, variables_t* pvars, int* pall_non_null_or_error) +{ sllmv_t** retval = mlr_malloc_or_die(num_evaluators * sizeof(sllmv_t*)); for (int i = 0; i < num_evaluators; i++) { retval[i] = evaluate_list(ppevaluators[i], pvars, pall_non_null_or_error);