typename RangeT::size_type List< RangeT, TraitsT, ContainerT >::insert(const RangeT& value) { if ( value.end() > Traits::limit() ) { qDebug( qPrintable(QString("ListError - insert - size: %1 - limit: %2 - sum: %3 - Range - begin: %4 - end: %5") .arg(size()).arg(Traits::limit()).arg(Traits::length_sum()).arg(value.begin()).arg(value.end())) ); return 0; } if ( value.size() == 0 ) return 0; iterator_pair sequence( merge_range( value ) ); return sequence.first != sequence.second ? Traits::merge_and_replace( m_set, sequence, value ) : Traits::simple_merge( m_set, sequence.first, value ); }
typename RangeT::size_type List< RangeT, TraitsT, ContainerT >::insert(const RangeT& value) { if ( value.end() > limit() ) { // throw ListException( value, limit() ); CString msg; msg.Format( _T( "ListError - insert - size: %u - limit: %I64u - sum: %I64u - " ) _T( "Range - begin: %I64u - end: %I64u" ), size(), limit(), Traits::length_sum(), value.begin(), value.end() ); theApp.Message( MSG_ERROR, msg ); return 0; } if ( value.size() == 0 ) return 0; iterator_pair sequence( merge_range( value ) ); return sequence.first != sequence.second ? Traits::merge_and_replace( m_set, sequence, value ) : Traits::simple_merge( m_set, sequence.first, value ); }
bool cluster::searchANDmodify(paired_end* currentPE, long *overlap_start, long *overlap_end) { bool overlap = false; bool overlap_tag_start, overlap_tag_end; long tmp1, tmp2, tmp3, tmp4; tmp1 = end1_range_low; tmp2 = end1_range_high; tmp3 = end2_range_low; tmp4 = end2_range_high; *overlap_start = 0; *overlap_end = 0; range *nextrange, *nextPErange; if (strcmp(currentPE->chromosome_start, chromosome_1) == 0 && strcmp(currentPE->strand_start, strand_start) == 0) { if (strcmp(currentPE->chromosome_end, chromosome_2) == 0 && strcmp(currentPE->strand_end, strand_end) == 0) { //check start point nextrange = endpoint1; overlap_tag_start = false; overlap_tag_end = false; while (nextrange != NULL) { nextPErange = currentPE->start; while (nextPErange != NULL) { if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end) { overlap_tag_start = true; if (nextPErange->start >= nextrange->start) { if (nextPErange->end >= nextrange->end) { *overlap_start += nextrange->end - nextPErange->start + 1; } else { *overlap_start += nextPErange->end - nextPErange->start + 1; } } else if (nextPErange->end >= nextrange->end) { *overlap_start += nextrange->end - nextrange->start + 1; } else { *overlap_start += nextPErange->end - nextrange->start + 1; } if (nextPErange->start < tmp1) { tmp1 = nextPErange->start; } if (nextPErange->end > tmp2) { tmp2 = nextPErange->end; } } nextPErange = nextPErange->next; } nextrange = nextrange->next; } //check end point nextrange = endpoint2; while (nextrange != NULL) { nextPErange = currentPE->end; while (nextPErange != NULL) { if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end) { overlap_tag_end = true; if (nextPErange->start >= nextrange->start) { if (nextPErange->end >= nextrange->end) { *overlap_end += nextrange->end - nextPErange->start + 1; } else { *overlap_end += nextPErange->end - nextPErange->start + 1; } } else if (nextPErange->end >= nextrange->end) { *overlap_end += nextrange->end - nextrange->start + 1; } else { *overlap_end += nextPErange->end - nextrange->start + 1; } if (nextPErange->start < tmp3) { tmp3 = nextPErange->start; } if (nextPErange->end > tmp4) { tmp4 = nextPErange->end; } } nextPErange = nextPErange->next; } nextrange = nextrange->next; } //check whether overlap or not if (overlap_tag_start == true && overlap_tag_end == true) { overlap = true; end1_range_low = tmp1; end1_range_high = tmp2; end2_range_low = tmp3; end2_range_high = tmp4; merge_range(currentPE); } } } else if (strcmp(currentPE->chromosome_start, chromosome_2) == 0 && strcmp(currentPE->strand_start, strand_end) == 0) { if (strcmp(currentPE->chromosome_end, chromosome_1) == 0 && strcmp(currentPE->strand_end, strand_start) == 0) { //check start point nextrange = endpoint2; overlap_tag_start = false; overlap_tag_end = false; while (nextrange != NULL) { nextPErange = currentPE->start; while (nextPErange != NULL) { if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end) { overlap_tag_start = true; if (nextPErange->start >= nextrange->start) { if (nextPErange->end >= nextrange->end) { *overlap_start += nextrange->end - nextPErange->start + 1; } else { *overlap_start += nextPErange->end - nextPErange->start + 1; } } else if (nextPErange->end >= nextrange->end) { *overlap_start += nextrange->end - nextrange->start + 1; } else { *overlap_start += nextPErange->end - nextrange->start + 1; } if (nextPErange->start < tmp3) { tmp3 = nextPErange->start; } if (nextPErange->end > tmp4) { tmp4 = nextPErange->end; } } nextPErange = nextPErange->next; } nextrange = nextrange->next; } //check end point nextrange = endpoint1; while (nextrange != NULL) { nextPErange = currentPE->end; while (nextPErange != NULL) { if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end) { overlap_tag_end = true; if (nextPErange->start >= nextrange->start) { if (nextPErange->end >= nextrange->end) { *overlap_end += nextrange->end - nextPErange->start + 1; } else { *overlap_end += nextPErange->end - nextPErange->start + 1; } } else if (nextPErange->end >= nextrange->end) { *overlap_end += nextrange->end - nextrange->start + 1; } else { *overlap_end += nextPErange->end - nextrange->start + 1; } if (nextPErange->start < tmp1) { tmp1 = nextPErange->start; } if (nextPErange->end > tmp2) { tmp2 = nextPErange->end; } } nextPErange = nextPErange->next; } nextrange = nextrange->next; } //check whether overlap or not if (overlap_tag_start = true && overlap_tag_end == true) { overlap = true; end1_range_low = tmp1; end1_range_high = tmp2; end2_range_low = tmp3; end2_range_high = tmp4; merge_range(currentPE); } } } return overlap; }
int pdfmerge_main(int argc, char **argv) { pdf_write_options opts = { 0 }; char *output = "out.pdf"; char *infile_src; int c; while ((c = fz_getopt(argc, argv, "adlszo:")) != -1) { switch (c) { case 'o': output = fz_optarg; break; case 'a': opts.do_ascii ++; break; case 'd': opts.do_expand ^= PDF_EXPAND_ALL; break; case 'l': opts.do_linear ++; break; case 's': opts.do_clean ++; break; case 'z': opts.do_deflate ++; break; default: usage(); break; } } if (fz_optind == argc) usage(); ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED); if (!ctx) { fprintf(stderr, "Cannot initialise context\n"); exit(1); } fz_try(ctx) { doc_des = pdf_create_document(ctx); } fz_catch(ctx) { fprintf(stderr, "Failed to allocate destination document file %s\n", output); exit(1); } /* Step through the source files */ while (fz_optind < argc) { fz_try(ctx) { infile_src = argv[fz_optind++]; pdf_drop_document(ctx, doc_src); doc_src = pdf_open_document(ctx, infile_src); if (fz_optind == argc || !isrange(argv[fz_optind])) merge_range("1-"); else merge_range(argv[fz_optind++]); } fz_catch(ctx) { fprintf(stderr, "Failed merging document %s\n", infile_src); exit(1); } } fz_try(ctx) { pdf_save_document(ctx, doc_des, output, &opts); } fz_always(ctx) { pdf_drop_document(ctx, doc_des); pdf_drop_document(ctx, doc_src); } fz_catch(ctx) { fprintf(stderr, "Error encountered during file save.\n"); exit(1); } fz_flush_warnings(ctx); fz_drop_context(ctx); return 0; }
int pdfmerge_main(int argc, char **argv) { pdf_write_options opts = { 0 }; char *output = "out.pdf"; char *flags = ""; char *input; int c; while ((c = fz_getopt(argc, argv, "o:O:")) != -1) { switch (c) { case 'o': output = fz_optarg; break; case 'O': flags = fz_optarg; break; default: usage(); break; } } if (fz_optind == argc) usage(); ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED); if (!ctx) { fprintf(stderr, "error: Cannot initialize MuPDF context.\n"); exit(1); } pdf_parse_write_options(ctx, &opts, flags); fz_try(ctx) { doc_des = pdf_create_document(ctx); } fz_catch(ctx) { fprintf(stderr, "error: Cannot create destination document.\n"); exit(1); } /* Step through the source files */ while (fz_optind < argc) { input = argv[fz_optind++]; fz_try(ctx) { pdf_drop_document(ctx, doc_src); doc_src = pdf_open_document(ctx, input); if (fz_optind == argc || !fz_is_page_range(ctx, argv[fz_optind])) merge_range("1-N"); else merge_range(argv[fz_optind++]); } fz_catch(ctx) { fprintf(stderr, "error: Cannot merge document '%s'.\n", input); exit(1); } } fz_try(ctx) { pdf_save_document(ctx, doc_des, output, &opts); } fz_always(ctx) { pdf_drop_document(ctx, doc_des); pdf_drop_document(ctx, doc_src); } fz_catch(ctx) { fprintf(stderr, "error: Cannot save output file: '%s'.\n", output); exit(1); } fz_flush_warnings(ctx); fz_drop_context(ctx); return 0; }