Exemple #1
0
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("------------------------");
}
Exemple #2
0
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();
}
Exemple #3
0
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();
}