// ---------------------------------------------------------------- static void make_accs( slls_t* paccumulator_names, // Input lhmsv_t* acc_field_to_acc_state) // Output { acc_t* ppercentile_acc = NULL; for (sllse_t* pc = paccumulator_names->phead; pc != NULL; pc = pc->pnext) { // for "sum", "count" char* acc_name = pc->value; if (is_percentile_acc_name(acc_name)) { if (ppercentile_acc == NULL) { ppercentile_acc = acc_percentile_alloc(); } lhmsv_put(acc_field_to_acc_state, acc_name, ppercentile_acc); } else { acc_t* pacc = make_acc(acc_name); if (pacc == NULL) { fprintf(stderr, "%s stats1: accumulator \"%s\" not found.\n", MLR_GLOBALS.argv0, acc_name); exit(1); } lhmsv_put(acc_field_to_acc_state, acc_name, pacc); } } }
// ---------------------------------------------------------------- void make_stats1_accs( char* value_field_name, // input slls_t* paccumulator_names, // input int allow_int_float, // input lhmsv_t* acc_field_to_acc_state) // output { stats1_acc_t* ppercentile_acc = NULL; for (sllse_t* pc = paccumulator_names->phead; pc != NULL; pc = pc->pnext) { // for "sum", "count" char* stats1_acc_name = pc->value; if (is_percentile_acc_name(stats1_acc_name)) { if (ppercentile_acc == NULL) { ppercentile_acc = stats1_percentile_alloc(value_field_name, stats1_acc_name, allow_int_float); } else { stats1_percentile_reuse(ppercentile_acc); } lhmsv_put(acc_field_to_acc_state, stats1_acc_name, ppercentile_acc, NO_FREE); } else { stats1_acc_t* pstats1_acc = make_stats1_acc(value_field_name, stats1_acc_name, allow_int_float); if (pstats1_acc == NULL) { fprintf(stderr, "%s stats1: accumulator \"%s\" not found.\n", MLR_GLOBALS.argv0, stats1_acc_name); exit(1); } lhmsv_put(acc_field_to_acc_state, stats1_acc_name, pstats1_acc, NO_FREE); } } }