示例#1
0
void destroyLinks(cfuhash_table_t * linkHash) {
    char **keys = NULL;
    size_t *key_sizes = NULL;
    size_t key_count = 0;
    int i = 0;
    keys = (char **)cfuhash_keys_data(linkHash, &key_count, &key_sizes, 0);

    for (i = 0; i < (int)key_count; i++) {
        BM_linkPair * base_LP = cfuhash_get(linkHash, keys[i]);
        if(keys[i] != 0)
        {
            free(keys[i]);
            keys[i] = 0;
        }
        BM_linkInfo* LI = base_LP->LI;
        if (LI != 0)
            while(destroyLinkInfo_andNext(&LI));
        if(base_LP !=0) {
            free(base_LP);
            base_LP = 0;
        }
    }

    if(keys != 0) {
        free(keys);
        keys = 0;
    }

    if(key_sizes != 0) {
        free(key_sizes);
        key_sizes = 0;
    }
}
示例#2
0
void printLinks(cfuhash_table_t * linkHash, char ** bamNames, char ** contigNames)
{
    char **keys = NULL;
    size_t *key_sizes = NULL;
    size_t key_count = 0;
    int i = 0;
    keys = (char **)cfuhash_keys_data(linkHash, &key_count, &key_sizes, 0);

    for (i = 0; i < (int)key_count; i++) {
        PM_link_pair * LP = cfuhash_get(linkHash, keys[i]);
        free(keys[i]);
        printLinkPair(LP, bamNames, contigNames);
    }
    free(keys);
    free(key_sizes);
}
示例#3
0
int initLinkWalker(BM_LinkWalker * walker, cfuhash_table_t * linkHash) {
    // get some memory
    walker->linkHash = linkHash;
    walker->keyCount = 0;
    walker->numKeys = 0;
    size_t *key_sizes = NULL;
    // get the keys from the hash
    walker->keys = (char **)cfuhash_keys_data(linkHash,
                                              &(walker->numKeys),
                                              &key_sizes,
                                              0);
    if((walker->keys)[walker->keyCount] != 0) {
        // we don't need this
        if (key_sizes != 0) {
            free(key_sizes);
            key_sizes = 0;
        }
        // load the first linkPair
        walker->pair = cfuhash_get(linkHash, (walker->keys)[walker->keyCount]);
        if ((walker->keys)[walker->keyCount] != 0) {
            free((walker->keys)[walker->keyCount]);
            (walker->keys)[walker->keyCount] = 0;
        }
        // tee-up the first linkInfo
        walker->LI = (walker->pair)->LI;
        return 2;
    }
    else {
        // no links
        if (walker->keys != 0) {
            free(walker->keys);
            walker->keys = 0;
        }
    }
    return 0;
}