/*
 * xrt.c - cross-reference table
 */
.
.

struct treenode
    {
    char *word;
    ln_seq lines;
    treenode *left, *right;
    treenode(unsigned);
    };

treenode::treenode(unsigned n) : lines(n) { }

static treenode *addtree
		(treenode *t, char *w, unsigned n)
    {
    int cond;

    if (t == 0)
        {
        t = new treenode(n);
        t->word = new char[strlen(w) + 1];
        strcpy(t->word, w);
        t->left = t->right = 0;
        }
    else if ((cond = strcmp(w, t->word)) == 0)
        t->lines.add(n);
    else if (cond < 0)
        t->left = addtree(t->left, w, n);
    else
        t->right = addtree(t->right, w, n);
    return t;
    }
.
.

