void qtree_debug(t_qtree *tree, int level, t_qnode_vshowhook hook) { t_qnode *np; int count; loudbug_post("------------------------"); count = qtree_checktraversal(tree); if (level) { for (np = tree->t_first; np; np = np->n_next) qnode_post(tree, np, hook, 0); if (level > 1) { loudbug_post("************"); for (np = tree->t_last; np; np = np->n_prev) loudbug_startpost("%g ", np->n_key); loudbug_endpost(); } } if (tree->t_root) { t_qnode *first = tree->t_root, *last = tree->t_root; while (first->n_left && first->n_left != tree->t_root) first = first->n_left; while (last->n_right && last->n_right != tree->t_root) last = last->n_right; loudbug_post("count %d, height %d, root %g", count, qnode_height(tree->t_root), tree->t_root->n_key); loudbug_post("first %g, root->left* %g, last %g, root->right* %g", (tree->t_first ? tree->t_first->n_key : 0), first->n_key, (tree->t_last ? tree->t_last->n_key : 0), last->n_key); } else loudbug_post("empty"); loudbug_post("...verified (black-height is %d)", qtree_verify(tree)); loudbug_post("------------------------"); }
static void matrix_debugsums(t_matrix *x) { int i; loudbug_startpost("nblock %d (max %d), vectors:", x->x_nblock, x->x_maxblock); for (i = 0; i < x->x_noutlets; i++) loudbug_startpost(" %x", (int)x->x_osums[i]); loudbug_endpost(); }
static void qnode_post(t_qtree *tree, t_qnode *np, t_qnode_vshowhook hook, char *message) { loudbug_startpost("%g ", np->n_key); if (tree->t_valuetype == QTREETYPE_FLOAT) loudbug_startpost("%g ", QNODE_GETFLOAT(np)); else if (tree->t_valuetype == QTREETYPE_SYMBOL) loudbug_startpost("%s ", QNODE_GETSYMBOL(np)->s_name); else if (tree->t_valuetype == QTREETYPE_ATOM) { t_atom *ap = QNODE_GETATOMPTR(np); if (ap->a_type == A_FLOAT) loudbug_startpost("%g ", ap->a_w.w_float); else if (ap->a_type == A_SYMBOL) loudbug_startpost("%s ", ap->a_w.w_symbol->s_name); } else if (hook) { char buf[MAXPDSTRING]; (*hook)(np, buf, MAXPDSTRING); loudbug_startpost("%s ", buf); } else loudbug_startpost("0x%08x ", (int)QNODE_GETSYMBOL(np)); loudbug_startpost("%s ", (np->n_black ? "black" : "red")); if (qnode_checkmulti(np, np->n_parent) || qnode_checkmulti(np, np->n_left) || qnode_checkmulti(np, np->n_right) || qnode_checkmulti(np->n_parent, np->n_left) || qnode_checkmulti(np->n_parent, np->n_right) || qnode_checkmulti(np->n_left, np->n_right)) loudbug_startpost("multi "); if (np->n_parent) loudbug_startpost("(%g -> ", np->n_parent->n_key); else loudbug_startpost("(nul -> "); if (np->n_left) loudbug_startpost("%g, ", np->n_left->n_key); else loudbug_startpost("nul, "); if (np->n_right) loudbug_startpost("%g)", np->n_right->n_key); else loudbug_startpost("nul)"); if (message) loudbug_post(": %s", message); else loudbug_endpost(); }