#include <stdio.h>
#include <stdlib.h>

struct config_generic
{
	const char *name;
};

struct config_real
{
	struct config_generic	gen;
	double 	*var;
	double	reset_val;
};

static double dbl_val = 4.0;

static struct config_real test = {
	{ "generic name" },
	&dbl_val,
	2.0
};

static struct config_generic **guc_variables;

int main(int argc, char **argv)
{
	struct config_generic  *generic_var;
	struct config_real     *double_var;

	guc_variables = (struct config_generic **) malloc(sizeof(struct config_generic *));
	guc_variables[0] = &test.gen;

	generic_var = guc_variables[0];
	double_var = (struct config_real *) generic_var;

	printf("sizeof(double) = %d, sizeof(double *) = %d\n",
			sizeof(double),
			sizeof(double *));

	printf("var is %f\n", *double_var->var);

	printf("storing reset_val into var\n");
	*double_var->var = double_var->reset_val;

	printf("var is %f\n", *double_var->var);

	return 0;
}
