Example #1
0
static void acc_mean_emit(void* pvstate, char* value_field_name, char* acc_name, lrec_t* poutrec) {
	acc_mean_state_t* pstate = pvstate;
	double quot = pstate->sum / pstate->count;
	char* key = mlr_paste_3_strings(value_field_name, "_", acc_name);
	char* val = mlr_alloc_string_from_double(quot, MLR_GLOBALS.ofmt);
	lrec_put(poutrec, key, val, LREC_FREE_ENTRY_KEY|LREC_FREE_ENTRY_VALUE);
}
Example #2
0
static void acc_percentile_emit(void* pvstate, char* value_field_name, char* acc_name, lrec_t* poutrec) {
	acc_percentile_state_t* pstate = pvstate;
	char* key = mlr_paste_3_strings(value_field_name, "_", acc_name);

	double p;
	(void)sscanf(acc_name, "p%lf", &p); // Assuming this was range-checked earlier on to be in [0,100].
	double v = percentile_keeper_emit(pstate->ppercentile_keeper, p);
	char* s = mlr_alloc_string_from_double(v, MLR_GLOBALS.ofmt);
	lrec_put(poutrec, key, s, LREC_FREE_ENTRY_KEY|LREC_FREE_ENTRY_VALUE);
}
Example #3
0
static void acc_max_emit(void* pvstate, char* value_field_name, char* acc_name, lrec_t* poutrec) {
	acc_max_state_t* pstate = pvstate;
	char* key = mlr_paste_3_strings(value_field_name, "_", acc_name);
	if (pstate->have_max) {
		char* val = mlr_alloc_string_from_double(pstate->max, MLR_GLOBALS.ofmt);
		lrec_put(poutrec, key, val, LREC_FREE_ENTRY_KEY|LREC_FREE_ENTRY_VALUE);
	} else {
		lrec_put(poutrec, key, "", LREC_FREE_ENTRY_KEY);
	}
}
Example #4
0
static void step_delta_dprocess(void* pvstate, double dblv, lrec_t* prec) {
	step_delta_state_t* pstate = pvstate;
	double delta = dblv;
	if (pstate->have_prev) {
		delta = dblv - pstate->prev;
	} else {
		pstate->have_prev = TRUE;
	}
	lrec_put(prec, pstate->output_field_name, mlr_alloc_string_from_double(delta, MLR_GLOBALS.ofmt),
		LREC_FREE_ENTRY_VALUE);
	pstate->prev = dblv;
}
Example #5
0
// xxx recast all of these in terms of providable outputs
static void acc_stddev_var_meaneb_emit(void* pvstate, char* value_field_name, char* acc_name, lrec_t* poutrec) {
	acc_stddev_var_meaneb_state_t* pstate = pvstate;
	char* key = mlr_paste_3_strings(value_field_name, "_", acc_name);
	if (pstate->count < 2LL) {
		lrec_put(poutrec, key, "", LREC_FREE_ENTRY_KEY);
	} else {
		double output = mlr_get_var(pstate->count, pstate->sumx, pstate->sumx2);
		if (pstate->do_which == DO_STDDEV)
			output = sqrt(output);
		else if (pstate->do_which == DO_MEANEB)
			output = sqrt(output / pstate->count);
		char* val =  mlr_alloc_string_from_double(output, MLR_GLOBALS.ofmt);
		lrec_put(poutrec, key, val, LREC_FREE_ENTRY_KEY|LREC_FREE_ENTRY_VALUE);
	}
}
Example #6
0
static void stats1_kurtosis_emit(void* pvstate, char* value_field_name, char* stats1_acc_name, int copy_data, lrec_t* poutrec) {
	stats1_kurtosis_state_t* pstate = pvstate;
	if (pstate->count < 2LL) {
		if (copy_data)
			lrec_put(poutrec, mlr_strdup_or_die(pstate->output_field_name), "", FREE_ENTRY_KEY);
		else
			lrec_put(poutrec, pstate->output_field_name, "", NO_FREE);
	} else {
		double output = mlr_get_kurtosis(pstate->count, pstate->sumx, pstate->sumx2, pstate->sumx3, pstate->sumx4);
		char* val =  mlr_alloc_string_from_double(output, MLR_GLOBALS.ofmt);
		if (copy_data)
			lrec_put(poutrec, mlr_strdup_or_die(pstate->output_field_name), val, FREE_ENTRY_KEY|FREE_ENTRY_VALUE);
		else
			lrec_put(poutrec, pstate->output_field_name, val, FREE_ENTRY_VALUE);
	}
}
Example #7
0
static void stats1_mean_emit(void* pvstate, char* value_field_name, char* stats1_acc_name, int copy_data, lrec_t* poutrec) {
	stats1_mean_state_t* pstate = pvstate;
	if (pstate->count == 0LL) {
		if (copy_data)
			lrec_put(poutrec, mlr_strdup_or_die(pstate->output_field_name), "", FREE_ENTRY_KEY);
		else
			lrec_put(poutrec, pstate->output_field_name, "", NO_FREE);
	} else {
		double quot = pstate->sum / pstate->count;
		char* val = mlr_alloc_string_from_double(quot, MLR_GLOBALS.ofmt);
		if (copy_data)
			lrec_put(poutrec, mlr_strdup_or_die(pstate->output_field_name), val, FREE_ENTRY_KEY|FREE_ENTRY_VALUE);
		else
			lrec_put(poutrec, pstate->output_field_name, val, FREE_ENTRY_VALUE);
	}
}
Example #8
0
static void stats1_stddev_var_meaneb_emit(void* pvstate, char* value_field_name, char* stats1_acc_name, int copy_data, lrec_t* poutrec) {
	stats1_stddev_var_meaneb_state_t* pstate = pvstate;
	if (pstate->count < 2LL) {
		if (copy_data)
			lrec_put(poutrec, mlr_strdup_or_die(pstate->output_field_name), "", FREE_ENTRY_KEY);
		else
			lrec_put(poutrec, pstate->output_field_name, "", NO_FREE);
	} else {
		double output = mlr_get_var(pstate->count, pstate->sumx, pstate->sumx2);
		if (pstate->do_which == DO_STDDEV)
			output = sqrt(output);
		else if (pstate->do_which == DO_MEANEB)
			output = sqrt(output / pstate->count);
		char* val =  mlr_alloc_string_from_double(output, MLR_GLOBALS.ofmt);
		if (copy_data)
			lrec_put(poutrec, mlr_strdup_or_die(pstate->output_field_name), val, FREE_ENTRY_KEY|FREE_ENTRY_VALUE);
		else
			lrec_put(poutrec, pstate->output_field_name, val, FREE_ENTRY_VALUE);
	}
}
Example #9
0
static void step_rsum_dprocess(void* pvstate, double dblv, lrec_t* prec) {
	step_rsum_state_t* pstate = pvstate;
	pstate->rsum += dblv;
	lrec_put(prec, pstate->output_field_name, mlr_alloc_string_from_double(pstate->rsum, MLR_GLOBALS.ofmt),
		LREC_FREE_ENTRY_VALUE);
}
Example #10
0
// ----------------------------------------------------------------
static char * test_scanners() {
	mu_assert("error: mlr_alloc_string_from_double", streq(mlr_alloc_string_from_double(4.25, "%.4f"), "4.2500"));
	mu_assert("error: mlr_alloc_string_from_ull", streq(mlr_alloc_string_from_ull(12345LL), "12345"));
	mu_assert("error: mlr_alloc_string_from_int", streq(mlr_alloc_string_from_int(12345), "12345"));
	return 0;
}