void tapdisk_stats_field(td_stats_t *st, const char *key, const char *conv, ...) { va_list ap; int n_elem; char t; n_elem = st->n_elem[st->depth]++; if (n_elem > 0) __stats_sprintf(st, ", "); __stats_sprintf(st, "\"%s\": ", key); if (!conv) { __stats_sprintf(st, "null"); return; } t = conv[0]; switch (t) { case '[': case '{': __tapdisk_stats_enter(st, t); break; default: va_start(ap, conv); __stats_enter(st); tapdisk_stats_vval(st, conv, ap); __stats_leave(st); va_end(ap); } }
void tapdisk_stats_val(td_stats_t * st, const char *conv, ...) { va_list ap; va_start(ap, conv); tapdisk_stats_vval(st, conv, ap); va_end(ap); }