Esempio n. 1
0
/* clone a node */
stTree *stTree_cloneNode(stTree *node) {
    stTree *node2 = stTree_construct();
    stTree_setBranchLength(node2, stTree_getBranchLength(node));
    stTree_setClientData(node2, stTree_getClientData(node));
    stTree_setLabel(node2, stTree_getLabel(node));
    return node2;
}
Esempio n. 2
0
// Set client data to NULL (optionally recursively).
static void stTree_clearClientData(stTree *tree, bool recursive) {
    stTree_setClientData(tree, NULL);
    if (recursive) {
        for (int64_t i = 0; i < stTree_getChildNumber(tree); i++) {
            stTree_clearClientData(stTree_getChild(tree, i), true);
        }
    }
}
Esempio n. 3
0
/* destructor */
static void mafTreeNodeCompLink_destruct(struct mafTreeNodeCompLink *ncLink) {
    if (ncLink->node != NULL) {
        stTree_setClientData(ncLink->node, NULL);
    }
    if (ncLink->comp != NULL) {
        ncLink->comp->ncLink = NULL;
    }
    freeMem(ncLink);
}
Esempio n. 4
0
/* constructor, link with node and comp  */
static struct mafTreeNodeCompLink *mafTreeNodeCompLink_construct(int treeOrder, stTree *node, struct malnComp *comp) {
    struct mafTreeNodeCompLink *ncLink;
    AllocVar(ncLink);
    ncLink->treeOrder = treeOrder;
    if (node != NULL) {
        ncLink->node = node;
        stTree_setClientData(node, ncLink);
    }
    if (comp != NULL) {
        ncLink->comp = comp;
        ncLink->comp->ncLink = ncLink;
    }
    return ncLink;
}
Esempio n. 5
0
/* add genome objects as client data */
static void speciesTreeAddLinks(stTree *speciesNode, struct Genomes *genomes) {
    stTree_setClientData(speciesNode, genomesGetGenome(genomes, stTree_getLabel(speciesNode)));
    for (int i = 0; i < stTree_getChildNumber(speciesNode); i++) {
        speciesTreeAddLinks(stTree_getChild(speciesNode, i), genomes);
    }
}