~node_t() { child_iterator_range c_range(children.begin(), children.end()); for(child_iterator it = c_range.begin(); it != c_range.end(); ++it) { node_descriptor c = *it; delete static_cast< node_t* >(c); } }
// Assumes children is empty void copy_children_from(const node_t& rhs) { child_iterator_range c_range(rhs.children.begin(), rhs.children.end()); for(child_iterator it = c_range.begin(); it != c_range.end(); ++it) { node_descriptor c = *it; children.push_back(copy_node(c)); static_cast< node_t* >(children.back())->parent = this; } }
void PE_match() { //find all matched paired end reads for every paired end read //brute force //clustering long i, j, overlap_start, overlap_end; PE_matchset_acknowledge_initialization(); for (i = 1; i < PE_num; i++) { //PE_matchset_acknowledge(PE_list_ordered[i], 50, 50, NULL); PE_matchset_acknowledge(i, 50, 50, NULL); j = i + 1; cluster c_range(PE_list[PE_list_ordered[i]]); while (j <= PE_num && PE_list[PE_list_ordered[j]]->startrange_low <= c_range.end1_range_high)// && PE_list[PE_list_ordered[j]]->endrange_low <= c_range.end2_range_high) { if (c_range.searchANDmodify(PE_list[PE_list_ordered[j]], &overlap_start, &overlap_end) == true) { //PE_matchset_acknowledge(PE_list_ordered[j], overlap_start, overlap_end, NULL); PE_matchset_acknowledge(j, overlap_start, overlap_end, NULL); } j++; } PE_matchset_acknowledge(0, 0, 0, &c_range); //end the current set } PE_matchset_acknowledge_end(); return; }