static void old_tags(BI_NODE * a) { beginDisplay(); FreeIfNeeded(BI_KEY(a)); FreeIfNeeded(TYPECAST(char, a)); endofDisplay(); }
static void old_elapsed(BI_NODE * a) { beginDisplay(); if (a != 0) { FreeIfNeeded(BI_KEY(a)); FreeIfNeeded(a->value.data); free(a); } endofDisplay(); }
/*ARGSUSED*/ static void dpy_elapsed(BI_NODE * a, int level GCC_UNUSED) { BI_DATA *p = &(a->value); ELAPSED_DATA *q = p->data; Trace("\t%-24s\t%f / %5ld = %g\n", BI_KEY(a), q->total_time, q->total_calls, q->total_time / q->total_calls); }
static BI_NODE * new_tags(BI_DATA * a) { BI_NODE *p; beginDisplay(); if ((p = typecalloc(BI_NODE)) != 0) { p->value = *a; if ((BI_KEY(p) = strmalloc(a->bi_key)) == 0) { old_tags(p); p = 0; } } endofDisplay(); return p; }
static BI_NODE * new_elapsed(BI_DATA * a) { BI_NODE *p; beginDisplay(); if ((p = typecalloc(BI_NODE)) != 0) { BI_DATA *q = &(p->value); if ((BI_KEY(p) = strmalloc(a->bi_key)) == 0 || (q->data = typecalloc(ELAPSED_DATA)) == 0) { old_elapsed(p); p = 0; } } endofDisplay(); return p; }
p = 0; } } endofDisplay(); return p; } /*ARGSUSED*/ static void dpy_tags(BI_NODE * a GCC_UNUSED, int level GCC_UNUSED) { #if OPT_TRACE while (level-- > 0) TRACE((". ")); TRACE(("%s (%d)\n", BI_KEY(a), a->balance)); #endif } static void xcg_tags(BI_NODE * a, BI_NODE * b) { BI_DATA temp = a->value; a->value = b->value; b->value = temp; } #define BI_DATA0 {{0}, 0, {0}} #define BI_TREE0 0, 0, BI_DATA0 static BI_TREE tags_tree = {new_tags, old_tags, dpy_tags, xcg_tags, BI_TREE0};