Exemplo n.º 1
0
// ----------------------------------------------------------------
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);
		}
	}
}
Exemplo n.º 2
0
// ----------------------------------------------------------------
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);
		}
	}
}