#include void mie_value_init(struct mie_value *val, enum mie_value_type type) { memset(val, 0x0, sizeof *val); val->v_ref = 1; val->v_type = type; } struct mie_value *mie_value_retain(struct mie_value *val) { val->v_ref++; return val; } void mie_value_release(struct mie_value *val) { if (val->v_ref > 1) { val->v_ref--; return; } /* TODO cleanup value */ }