PUBLIC BOOL ui_render(Graphic *g) { void *iterator = linked_list_iterator(ui.linked_view, LINKED_LIST_TAIL); while (NULL != iterator) { View *view = linked_list_iterator_prev(&iterator); if (TRUE == view->isShowing) view_onDraw(view, NULL, g); } return TRUE; }
void suffix_mng_update(int chrom, size_t read_start, size_t read_end, size_t genome_start, size_t genome_end, suffix_mng_t *p) { if (!p) return; if (!p->suffix_lists) return; linked_list_t *suffix_list = p->suffix_lists[chrom]; if (!suffix_list) return; seed_t *seed; if (linked_list_size(suffix_list) <= 0) { // list is empty, insert and return seed = seed_new(read_start, read_end, genome_start, genome_end); seed->chromosome_id = chrom; linked_list_insert(seed, suffix_list); p->num_seeds++; return; } linked_list_iterator_t* itr = linked_list_iterator_new(suffix_list); seed = (seed_t *) linked_list_iterator_curr(itr); while (seed != NULL) { // if it's included then return if (seed->chromosome_id == chrom && seed->read_start <= read_start && seed->read_end >= read_end && seed->genome_start <= genome_start && seed->genome_end >= genome_end) { // free memory linked_list_iterator_free(itr); return; } // if it's previous then insert and return if (genome_start < seed->genome_start) { seed = seed_new(read_start, read_end, genome_start, genome_end); seed->chromosome_id = chrom; linked_list_iterator_insert(seed, itr); linked_list_iterator_prev(itr); p->num_seeds++; // free memory linked_list_iterator_free(itr); return; } //continue loop... linked_list_iterator_next(itr); seed = linked_list_iterator_curr(itr); } // insert at the last position seed = seed_new(read_start, read_end, genome_start, genome_end); seed->chromosome_id = chrom; linked_list_insert_last(seed, suffix_list); p->num_seeds++; // free memory linked_list_iterator_free(itr); }