struct data { void *data; size_t length; }; union value { char *zstr; int intgr; float flt; struct data *data; }; enum type { STRING, INTEGER, FLOATING, DATA, };