[med-svn] [seqan2] 01/01: New upstream version 2.3.2.000platform-issues8-6f85721+dfsg
Michael Crusoe
misterc-guest at moszumanska.debian.org
Fri Dec 8 12:42:01 UTC 2017
This is an automated email from the git hooks/post-receive script.
misterc-guest pushed a commit to annotated tag upstream/2.3.2.000platform-issues8-6f85721+dfsg
in repository seqan2.
commit 9f5dc0271574a8c6d712dbdd27d133dc86e6eb83
Author: Michael R. Crusoe <michael.crusoe at gmail.com>
Date: Fri Dec 8 02:42:37 2017 -0800
New upstream version 2.3.2.000platform-issues8-6f85721+dfsg
---
CMakeLists.txt | 6 +-
apps/alf/README | 8 +-
apps/bs_tools/bisar.h | 2 +-
apps/bs_tools/casbar.cpp | 10 +-
apps/bs_tools/casbar.h | 4 +-
apps/bs_tools/casbar_consensus_realign.h | 2 +-
apps/dfi/README | 14 +-
apps/fiona/compute_gain.cpp | 5 +-
apps/fiona/fiona.cpp | 36 ++--
apps/gustaf/README | 6 +-
apps/gustaf/create_stellarmatches_from_file.h | 6 +-
apps/gustaf/msplazer.h | 42 ++---
apps/gustaf/msplazer_algorithms.h | 10 +-
apps/gustaf/msplazer_out.h | 39 ++--
apps/insegt/README | 14 +-
apps/insegt/base.h | 6 +-
apps/insegt/create_gff.h | 4 +-
apps/insegt/fusion.h | 46 ++---
apps/insegt/overlap_module.h | 32 ++--
apps/mason2/external_split_merge.cpp | 6 +-
apps/mason2/external_split_merge.h | 6 +-
apps/mason2/fragment_generation.h | 2 +
apps/mason2/genomic_variants.cpp | 18 +-
apps/mason2/mason_materializer.cpp | 2 +-
apps/mason2/mason_simulator.cpp | 4 +-
apps/mason2/mason_splicing.cpp | 18 +-
apps/mason2/mason_variator.cpp | 28 +--
apps/micro_razers/README | 14 +-
apps/ngs_roi/CMakeLists.txt | 5 +
apps/ngs_roi/project_spliced.cpp | 6 +-
apps/ngs_roi/roi_feature_projection.cpp | 2 +-
apps/pair_align/lib/pair_align_lib.cpp | 2 +-
apps/rabema/rabema_build_gold_standard.cpp | 12 +-
apps/rabema/rabema_evaluate.cpp | 24 +--
apps/rabema/ref_id_mapping.h | 6 +-
apps/razers/README | 14 +-
apps/razers/outputFormat.h | 8 +-
apps/razers/razers.h | 10 +-
apps/razers/razers_matepairs.h | 10 +-
apps/razers/razers_spliced.h | 12 +-
apps/razers/readSimulator.h | 2 +-
apps/razers/tests/run_tests.py | 7 +
apps/razers3/README | 16 +-
apps/razers3/razers.h | 30 ++--
apps/razers3/razers_match_filter.h | 4 +-
apps/razers3/razers_matepairs.h | 10 +-
apps/razers3/razers_matepairs_parallel.h | 10 +-
apps/razers3/razers_paired_match_filter.h | 4 +-
apps/razers3/razers_parallel.h | 14 +-
apps/razers3/readSimulator.h | 2 +-
apps/sak/sak.cpp | 12 +-
apps/samcat/CMakeLists.txt | 5 +
apps/searchjoin/db.h | 26 +--
apps/sgip/sgip_base.h | 4 +-
apps/snp_store/README | 12 +-
apps/snp_store/snp_store.cpp | 10 +-
apps/snp_store/snp_store.h | 6 +-
apps/splazers/README | 15 +-
apps/splazers/outputFormat.h | 8 +-
apps/splazers/razers.h | 10 +-
apps/splazers/razers_matepairs.h | 8 +-
apps/splazers/razers_spliced.h | 24 +--
apps/splazers/readSimulator.h | 2 +-
apps/stellar/README | 8 +-
apps/stellar/stellar.cpp | 4 +-
apps/stellar/stellar.h | 8 +-
apps/stellar/stellar_extension.h | 6 +-
apps/stellar/stellar_types.h | 4 +-
apps/yara/bits_context.h | 2 +-
apps/yara/bits_matches.h | 4 +-
apps/yara/indexer.cpp | 8 +-
apps/yara/mapper.cpp | 8 +-
apps/yara/tests/run_tests.py | 11 +-
demos/blast/blast_in_lowlevel.cpp | 4 +-
demos/dox/bam_io/bam_file_in.cpp | 2 +-
demos/dox/index/find_repeats.cpp | 2 +-
demos/dox/statistics/build_markov_model.cpp | 3 +-
demos/dox/statistics/load_markov_model.cpp | 3 +-
demos/dox/store/store_example.cpp | 4 +-
demos/tutorial/sam_and_bam_io/base.cpp | 6 +-
demos/tutorial/string_sets/example_iterators.cpp | 2 +-
demos/unassigned_or_unused/filter_sam.cpp | 2 +-
demos/unassigned_or_unused/sam2svg.cpp | 8 +-
.../tutorial_file_io/solution2.cpp | 61 -------
.../tutorial_file_io/solution3.cpp | 72 --------
.../stream_compression_formats.cpp | 12 +-
dox/CMakeLists.txt | 54 +-----
include/seqan/align/align_base.h | 13 +-
include/seqan/align/align_interface_wrapper.h | 3 +-
include/seqan/align/dp_algorithm_impl.h | 4 +-
include/seqan/align/dp_cell.h | 4 +-
include/seqan/align/dp_matrix_navigator.h | 2 +-
.../seqan/align/dp_matrix_navigator_score_matrix.h | 4 +-
.../dp_matrix_navigator_score_matrix_sparse.h | 4 +-
.../seqan/align/dp_matrix_navigator_trace_matrix.h | 6 +-
include/seqan/align/dp_profile.h | 14 +-
include/seqan/align/evaluate_alignment.h | 2 +-
include/seqan/align/gaps_anchor.h | 8 +-
include/seqan/align/gaps_base.h | 2 +-
include/seqan/align/gaps_iterator_anchor.h | 4 +-
.../align/global_alignment_myers_hirschberg_impl.h | 6 +-
include/seqan/align/global_alignment_myers_impl.h | 2 +-
.../local_alignment_banded_waterman_eggert_impl.h | 4 +-
.../align/local_alignment_waterman_eggert_impl.h | 8 +-
include/seqan/align_extend/align_extend.h | 10 +-
include/seqan/align_extend/dp_scout_xdrop.h | 8 +-
include/seqan/align_profile/add_to_profile.h | 6 +-
include/seqan/align_split/align_split_interface.h | 10 +-
include/seqan/bam_io/bam_alignment_record.h | 20 +--
include/seqan/bam_io/bam_file.h | 2 +-
include/seqan/bam_io/bam_header_record.h | 4 +-
include/seqan/bam_io/bam_index_bai.h | 62 +++----
include/seqan/bam_io/bam_sam_conversion.h | 4 +-
include/seqan/bam_io/bam_tags_dict.h | 6 +-
include/seqan/bam_io/read_bam.h | 6 +-
include/seqan/bam_io/read_sam.h | 2 +-
include/seqan/basic/allocator_interface.h | 40 ++---
include/seqan/basic/alphabet_adapt_builtins.h | 13 +-
include/seqan/basic/alphabet_concept.h | 24 +--
include/seqan/basic/alphabet_math.h | 28 +--
include/seqan/basic/alphabet_simple_type.h | 90 +++++++---
include/seqan/basic/array_construct_destruct.h | 4 +-
include/seqan/basic/basic_stream.h | 7 +-
include/seqan/basic/debug_test_system.h | 7 +-
include/seqan/basic/fundamental_concepts.h | 32 +++-
include/seqan/basic/fundamental_transport.h | 4 +-
include/seqan/basic/holder_tristate.h | 6 +-
include/seqan/basic/iterator_adaptor.h | 12 +-
include/seqan/basic/iterator_interface.h | 14 +-
include/seqan/basic/math_log_space_value.h | 2 +-
include/seqan/basic/pair_bit_compressed.h | 17 +-
include/seqan/basic/pair_packed.h | 16 +-
include/seqan/basic/proxy_base.h | 4 +-
include/seqan/consensus/consensus_base.h | 2 +-
include/seqan/consensus/consensus_library.h | 2 +-
include/seqan/consensus/consensus_realign.h | 2 +-
include/seqan/consensus/overlap_info_computation.h | 4 +-
include/seqan/consensus/overlapper.h | 2 +-
include/seqan/file/file_base.h | 1 +
include/seqan/file/file_page.h | 4 +-
include/seqan/find/find_bom.h | 1 +
include/seqan/find/find_multiple_bfam.h | 1 +
include/seqan/find/find_myers_ukkonen.h | 6 +-
include/seqan/find/find_shiftand.h | 4 +-
include/seqan/find/find_shiftor.h | 2 +-
include/seqan/find/find_wumanber.h | 4 +-
include/seqan/gff_io/gff_io_base.h | 15 +-
include/seqan/graph_align/graph_impl_align.h | 8 +-
.../graph_msa/graph_align_tcoffee_guidetree.h | 2 +-
include/seqan/graph_types/graph_interface.h | 3 +-
include/seqan/index/find_backtracking.h | 2 +-
include/seqan/index/find_pigeonhole.h | 4 +-
include/seqan/index/index_base.h | 7 +-
include/seqan/index/index_childtab.h | 2 +-
include/seqan/index/index_fm_compressed_sa.h | 10 +-
include/seqan/index/index_fm_lf_table.h | 20 +--
.../seqan/index/index_fm_rank_dictionary_base.h | 4 +-
.../seqan/index/index_fm_rank_dictionary_levels.h | 6 +-
.../seqan/index/index_fm_rank_dictionary_naive.h | 2 +-
include/seqan/index/index_fm_rank_dictionary_wt.h | 2 +-
include/seqan/index/index_pizzachili.h | 4 +
include/seqan/index/index_qgram.h | 14 +-
include/seqan/index/index_sa_bwtwalk.h | 20 +--
include/seqan/index/index_sa_lss.h | 4 +-
include/seqan/index/index_sa_truncated.h | 8 +-
include/seqan/index/index_wotd.h | 8 +-
include/seqan/index/shape_threshold.h | 2 +-
include/seqan/journaled_string_tree/delta_map.h | 2 +-
.../journaled_string_tree/delta_map_iterator.h | 4 +-
.../journaled_string_tree_traverser_util.h | 12 +-
include/seqan/math/math_rational.h | 6 +-
include/seqan/misc/interval_tree.h | 12 +-
include/seqan/misc/name_store_cache.h | 25 ++-
include/seqan/modifier/modifier_padding.h | 14 +-
include/seqan/modifier/modifier_view.h | 4 +-
include/seqan/parse_lm/local_match_store.h | 22 +--
include/seqan/pipe/pipe_source.h | 2 +-
include/seqan/pipe/pool_base.h | 8 +-
include/seqan/platform.h | 27 ++-
include/seqan/realign/realign_base.h | 10 +-
include/seqan/rna_io/rna_record.h | 15 +-
include/seqan/seeds/banded_chain_alignment_impl.h | 10 +-
include/seqan/seeds/seeds_extension.h | 4 +-
include/seqan/seeds/seeds_global_chaining.h | 8 +-
include/seqan/seq_io/bam_sam.h | 6 +-
include/seqan/seq_io/sequence_file.h | 6 +-
include/seqan/sequence/adapt_stl_container.h | 3 +-
include/seqan/sequence/sequence_forwards.h | 3 +
include/seqan/sequence/string_cstyle.h | 3 +-
include/seqan/sequence/string_packed.h | 12 +-
include/seqan/sequence/string_packed_old.h | 2 +-
include/seqan/sequence/string_set_base.h | 5 +-
include/seqan/sequence/string_set_owner.h | 6 +
include/seqan/simd.h | 12 ++
include/seqan/simd/simd_base.h | 4 +
include/seqan/simd/simd_base_seqan_impl_avx2.h | 179 ++++++++++++------
include/seqan/simd/simd_base_seqan_impl_sse4.2.h | 165 ++++++++++++-----
include/seqan/simd/simd_base_seqan_interface.h | 12 ++
include/seqan/simd/simd_base_umesimd_impl.h | 11 ++
include/seqan/statistics/statistics_markov_model.h | 2 +-
include/seqan/store/store_align.h | 4 +-
include/seqan/store/store_all.h | 50 +++---
include/seqan/store/store_annotation.h | 4 +-
include/seqan/store/store_contig.h | 6 +-
include/seqan/store/store_io_sam.h | 6 +-
include/seqan/store/store_io_ucsc.h | 2 +-
include/seqan/store/store_matepair.h | 2 +-
include/seqan/store/store_read.h | 2 +-
include/seqan/stream.h | 6 +
include/seqan/stream/lexical_cast.h | 8 +-
include/seqan/stream/stream_compressor.h | 8 +-
include/seqan/stream/tokenization.h | 10 +-
include/seqan/system/file_async.h | 13 +-
include/seqan/tabix_io/tabix_index_tbi.h | 10 +-
.../Infrastructure/Use/CustomBuildSystem.rst | 25 +++
.../source/Infrastructure/Use/FindSeqAnCMake.rst | 24 +++
.../DataStructures/Indices/StringIndices.rst | 16 ++
tests/align/CMakeLists.txt | 6 +
tests/align/test_align_simd.h | 14 +-
.../test_alignment_algorithms_band_position.h | 34 ++--
tests/align/test_alignment_dp_cell.h | 2 +-
tests/align/test_alignment_dp_matrix_navigator.h | 24 +--
tests/arg_parse/test_arg_parse_ctd_support.h | 3 +-
tests/bam_io/test_bam_file.h | 26 +--
tests/bam_io/test_bam_index.h | 15 +-
tests/bam_io/test_bam_io.cpp | 2 +-
tests/bam_io/test_bam_sam_conversion.h | 11 +-
tests/bam_io/test_read_bam.h | 10 +-
tests/bam_io/test_write_bam.h | 6 +-
tests/basic/test_basic.cpp | 1 -
tests/basic/test_basic_alphabet.cpp | 6 +-
tests/basic/test_basic_alphabet.h | 50 +-----
tests/basic/test_basic_alphabet_adapt_builtins.h | 199 ---------------------
tests/basic/test_basic_alphabet_math.h | 29 +--
tests/basic/test_basic_alphabet_residue.h | 74 ++------
tests/basic/test_basic_concept.cpp | 4 +-
tests/basic/test_basic_concepts.h | 39 ++++
tests/basic/test_basic_exception.h | 6 +-
tests/basic/test_basic_iterator.h | 2 +-
tests/bed_io/test_bed_io.cpp | 8 +-
tests/blast/test_blast_input.h | 8 +-
tests/consensus/test_consensus.h | 27 +--
tests/consensus/test_consensus_realign.h | 5 +-
tests/gff_io/test_gff_io.h | 37 ++--
tests/index/test_index_creation.h | 6 +-
tests/index/test_index_helpers.h | 8 +-
tests/index/test_qgram_index.h | 23 +--
tests/index/test_sa_bwtwalk.h | 2 +-
tests/journaled_string_tree/test_delta_map.h | 14 +-
.../test_journaled_string_tree.h | 2 +-
tests/misc/test_misc.cpp | 6 +-
tests/parse_lm/test_parse_lm.h | 2 +-
tests/rna_io/CMakeLists.txt | 4 +-
tests/roi_io/test_roi_io.cpp | 8 +-
tests/score/test_score.cpp | 9 +-
tests/seeds/test_align_banded_chain_impl.cpp | 2 +-
tests/seq_io/test_fai_index.h | 24 +--
tests/seq_io/test_sequence_file.h | 36 ++--
tests/sequence/test_sequence.h | 53 ++----
tests/sequence/test_string_packed_extension.h | 4 +-
tests/sequence/test_string_set.h | 67 ++-----
tests/simd/CMakeLists.txt | 5 +-
tests/simd/test_simd_vector.h | 79 +++++---
tests/statistics/test_statistics_base.h | 3 +-
tests/store/test_store_io.h | 92 +++++-----
tests/store/test_store_io_bam.h | 10 +-
tests/stream/test_stream_lexical_cast.h | 4 +-
tests/stream/test_stream_tokenization.h | 60 +++----
tests/stream/test_stream_virtual_stream.h | 15 +-
tests/tabix_io/test_tabix_io.h | 11 +-
tests/translation/test_translation.h | 3 +-
tests/ucsc_io/test_ucsc_io.cpp | 24 +--
tests/vcf_io/test_vcf_io.h | 16 +-
util/cmake/SeqAnBuildSystem.cmake | 16 +-
util/cmake/SeqAnContribs.cmake | 113 +++++-------
util/cmake/SeqAnSimdUtility.cmake | 31 ++--
util/cmake/seqan-config.cmake | 14 +-
util/py_lib/CMakeLists.txt | 5 +
278 files changed, 1964 insertions(+), 2039 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc06439..2e2511e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -135,8 +135,10 @@ if ("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
message (STATUS "Configuring demos")
add_subdirectory (demos)
- message (STATUS "Configuring manual")
- add_subdirectory (manual)
+ if (NOT SEQAN_NO_DOX)
+ message (STATUS "Configuring manual")
+ add_subdirectory (manual)
+ endif ()
endif ()
if ((("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP") OR
diff --git a/apps/alf/README b/apps/alf/README
index 95f9f30..d2b0bbd 100644
--- a/apps/alf/README
+++ b/apps/alf/README
@@ -28,12 +28,12 @@ N2 similarity measure.
---------------------------------------------------------------------------
ALF is distributed with SeqAn - The C++ Sequence Analysis Library (see
-http://www.seqan.de). To build ALF from SVN do the following:
+http://www.seqan.de). To build ALF from Git do the following:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
+ 1) git clone https://github.com/seqan/seqan.git
2) mkdir -p build/Release
3) cd build/Release
- 4) cmake ../.. -DCMAKE_BUILD_TYPE=Release
+ 4) cmake ../../seqan -DCMAKE_BUILD_TYPE=Release
5) make alf
6) ./apps/alf/alf --help
@@ -42,7 +42,7 @@ was dumped.
For more information about retrieving SeqAn and prerequisites please visit
- http://trac.seqan.de/wiki/Tutorial/GettingStarted
+ https://www.seqan.de/getting-started/
---------------------------------------------------------------------------
3. Usage
diff --git a/apps/bs_tools/bisar.h b/apps/bs_tools/bisar.h
index 7ac9c59..6b8b261 100644
--- a/apps/bs_tools/bisar.h
+++ b/apps/bs_tools/bisar.h
@@ -1098,7 +1098,7 @@ postProcessMain(TOptions &options, TModel const &)
if (hasFlagUnmapped(record)) continue; // Read is unmapped
// Get readId (could be curr. read or mate) -> Only Id, seq. we will get the original from readSeqStore
// If read name not found, skip entry
- if (!getIdByName(store.readNameStore, record.qName, readId, readNameCache)) continue;
+ if (!getIdByName(readId, readNameCache, record.qName)) continue;
if (hasFlagMultiple(record)) //) // If paired: Get readId for current mate
{
diff --git a/apps/bs_tools/casbar.cpp b/apps/bs_tools/casbar.cpp
index 15f25a6..3bfd9df 100755
--- a/apps/bs_tools/casbar.cpp
+++ b/apps/bs_tools/casbar.cpp
@@ -165,8 +165,8 @@ copyNextWindowMatchesAndReads(TFragmentStore &fragmentStore,
--itG;
// We will use minCoord/maxCoord to store the temporarily minimal and maximal coordinates in the window.
- int minCoord = maxValue<int>();
- int maxCoord = minValue<int>();
+ int minCoord = std::numeric_limits<int>::max();
+ int maxCoord = std::numeric_limits<int>::min();
//CharString str = "discBef";
//_dumpMatches(fragmentStore, str);
@@ -192,9 +192,9 @@ copyNextWindowMatchesAndReads(TFragmentStore &fragmentStore,
}
// Write minimal and maximal coordinate from reads in this window to options.minCoord/options.maxCoord.
- if (minCoord != maxValue<int>())
+ if (minCoord != std::numeric_limits<int>::max())
options.minCoord = minCoord;
- if (maxCoord != minValue<int>())
+ if (maxCoord != std::numeric_limits<int>::min())
options.maxCoord = maxCoord;
if(options._debugLevel > 1)
@@ -625,7 +625,7 @@ detectSNPsForContig(seqan::VcfFileOut & vcfFileOut,
TReadStore tmpRs;
TReadSeqStore tmpReads; // Something went wrong when keeping all reads of contig, so keep it like that for the moment
TSetContigAnchorGaps tmpSetContigAnchorGaps;
- options.minCoord = MaxValue<unsigned>::VALUE;
+ options.minCoord = std::numeric_limits<unsigned>::max();
options.maxCoord = 0;
// snp calling is done for all positions between windowBegin and windowEnd
diff --git a/apps/bs_tools/casbar.h b/apps/bs_tools/casbar.h
index 1831843..8398799 100755
--- a/apps/bs_tools/casbar.h
+++ b/apps/bs_tools/casbar.h
@@ -180,7 +180,7 @@ struct SNPCallingOptions
pHomoSnp(0.0005),
//
maxHitLength(1),
- minCoord(maxValue<unsigned>()),
+ minCoord(std::numeric_limits<unsigned>::max()),
maxCoord(0),
windowSize(100000), // 10000?
windowBuff(70)
@@ -684,7 +684,7 @@ int readMatchesFromSamBam(
options.maxHitLength = endPos - beginPos;
// remember min and max positions seen
- if(beginPos < (TContigPos)options.minCoord || options.minCoord == maxValue<unsigned>()) options.minCoord = (unsigned)beginPos;
+ if(beginPos < (TContigPos)options.minCoord || options.minCoord == numeric_limits<unsigned>::max()) options.minCoord = (unsigned)beginPos;
if(endPos > (TContigPos)options.maxCoord) options.maxCoord = (unsigned)endPos;
// alignedReadStoreElement
diff --git a/apps/bs_tools/casbar_consensus_realign.h b/apps/bs_tools/casbar_consensus_realign.h
index 32511e0..c177c1a 100644
--- a/apps/bs_tools/casbar_consensus_realign.h
+++ b/apps/bs_tools/casbar_consensus_realign.h
@@ -628,7 +628,7 @@ reAlign(FragmentStore<TSpec, TConfig> & fragStore,
// Copy all reads belonging to this contig and reverse complement them if necessary.
TAlignedReadStore contigReads; // TODO(holtgrew): Rather contigAlignedReads?
TReadPos maxPos = 0;
- TReadPos minPos = MaxValue<TReadPos>::VALUE;
+ TReadPos minPos = std::numeric_limits<TReadPos>::max();
for (; alignIt != alignItEnd; ++alignIt) {
if (alignIt->beginPos > alignIt->endPos) {
reverseComplement(fragStore.readSeqStore[alignIt->readId]);
diff --git a/apps/dfi/README b/apps/dfi/README
index 95e4aad..654e11e 100644
--- a/apps/dfi/README
+++ b/apps/dfi/README
@@ -49,16 +49,14 @@ http://www.seqan.de). To compile DFI on your system do the following:
5) cd dfi
6) ./dfi --help
-Alternatively you can check out the latest SVN version of DFI and SeqAn
+Alternatively you can check out the latest Git version of DFI and SeqAn
with:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
- 2) cd seqan
- 3) make forwards
- 4) cd projects/library/apps
- 5) make dfi
- 6) cd dfi
- 7) ./dfi --help
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
+ 3) cmake .. -DCMAKE_BUILD_TYPE=Release
+ 4) make dfi
+ 5) ./bin/dfi --help
On success, an executable file dfi was build and a brief usage description
was dumped.
diff --git a/apps/fiona/compute_gain.cpp b/apps/fiona/compute_gain.cpp
index 2db17a7..523daa5 100644
--- a/apps/fiona/compute_gain.cpp
+++ b/apps/fiona/compute_gain.cpp
@@ -956,7 +956,7 @@ int main(int argc, char const ** argv)
}
String<unsigned> idMap;
- resize(idMap, length(contigNames(context(inPre))), maxValue<unsigned>());
+ resize(idMap, length(contigNames(context(inPre))), std::numeric_limits<unsigned>::max());
for (unsigned i = 0; i < length(ids); ++i)
{
trimSeqHeaderToId(ids[i]);
@@ -990,9 +990,6 @@ int main(int argc, char const ** argv)
bool stop = false;
bool error = false;
- // Format recognition tag used for sequence file I/O.
- seqan::AutoSeqFormat seqFormatTag;
-
uint64_t chunksLeftToRead = options.maxChunks;
--chunksLeftToRead;
diff --git a/apps/fiona/fiona.cpp b/apps/fiona/fiona.cpp
index b468b16..5aeae30 100644
--- a/apps/fiona/fiona.cpp
+++ b/apps/fiona/fiona.cpp
@@ -994,7 +994,7 @@ inline void fillCorrection(TCorrection &newCorrection,
{
//TValue empty=maxValue(readLength);
//fill Correction struct
- newCorrection.nextCorrection = maxValue<unsigned>(); // it will be the last correction in the linked list
+ newCorrection.nextCorrection = std::numeric_limits<unsigned>::max(); // it will be the last correction in the linked list
#ifndef FIONA_CONSENSUS_REDUCE_MEMORY
newCorrection.correctReadId = correctReadId; // only for debugging purposes
newCorrection.correctPos = correctPos;
@@ -1246,7 +1246,7 @@ getFoundCorrections(
unsigned numCorrections = 0;
TValue currentPos = firstCorrectionForRead[erroneousReadId];
- while (currentPos != maxValue<TValue>())
+ while (currentPos != std::numeric_limits<TValue>::max())
{
if (correctionList[currentPos].errorPos == errorPos)
{
@@ -1302,9 +1302,9 @@ inline void addCorrectionEntry(String<TCorrection> &correctionList,
//TValue empty=maxValue(erroneousReadId);
//first check if a Correction for erroneousReadId exists already
- TValue insertLinkAt = maxValue<TValue>();
+ TValue insertLinkAt = std::numeric_limits<TValue>::max();
TValue currentPos = firstCorrectionForRead[erroneousReadId];
- while (currentPos != maxValue<TValue>())
+ while (currentPos != std::numeric_limits<TValue>::max())
{
TCorrection &corr = correctionList[currentPos];
if (existsCorrectionAtPos(
@@ -1354,7 +1354,7 @@ inline void addCorrectionEntry(String<TCorrection> &correctionList,
}
appendValue(correctionList, newCorrection);
- if (insertLinkAt == maxValue<TValue>())
+ if (insertLinkAt == std::numeric_limits<TValue>::max())
firstCorrectionForRead[erroneousReadId] = length(correctionList) - 1;
else
correctionList[insertLinkAt].nextCorrection = length(correctionList) - 1;
@@ -1423,7 +1423,7 @@ inline void addCorrectionEntry(String<TCorrection> &correctionList,
inline void _testCorrectionStruct(String<TCorrection> &correctionList, String<TValue> &firstCorrectionForRead,TReadStore &store)
{
// we assume we work with three reads here
- TValue empty = maxValue<TValue>();
+ TValue empty = std::numeric_limits<TValue>::max();
appendValue(firstCorrectionForRead,empty);
appendValue(firstCorrectionForRead,empty);
appendValue(firstCorrectionForRead,empty);
@@ -1574,12 +1574,12 @@ inline void _dumpCorrectionList(
for (unsigned int i =0;i< length(firstCorrectionForRead);i++)
{
std::cerr << "Found "<<length(correctionList)<<" corrections. Look at readID: " <<i<<std::endl;
- if (firstCorrectionForRead[i] != maxValue<TValue>())
+ if (firstCorrectionForRead[i] != std::numeric_limits<TValue>::max())
{
std::cerr << "found Correction for read "<<i<< " at pos (in String<corrections>) "<< firstCorrectionForRead[i] << std::endl;
_dumpCorrectionIndelPos(correctionList[firstCorrectionForRead[i]],i,store);
TValue next = correctionList[firstCorrectionForRead[i]].nextCorrection;
- while (next != maxValue<TValue>())
+ while (next != std::numeric_limits<TValue>::max())
{
std::cerr << "found Correction for read "<<i<< " at pos (in String<corrections>) "<< next << std::endl;
_dumpCorrectionIndelPos(correctionList[next],i,store);
@@ -1699,7 +1699,7 @@ inline unsigned applyReadErrorCorrections(String<TCorrection> const &correctionL
{
// descend if correction exists
TValue corrId = firstCorrectionForRead[readId];
- if (corrId == maxValue<TValue>())
+ if (corrId == std::numeric_limits<TValue>::max())
continue;
// step through linked list and collect corrections
@@ -1717,7 +1717,7 @@ inline unsigned applyReadErrorCorrections(String<TCorrection> const &correctionL
#endif
//_dumpCorrectionIndelPos(correction, readId);
corrId = correction.nextCorrection;
- } while (corrId != maxValue<TValue>());
+ } while (corrId != std::numeric_limits<TValue>::max());
//sorting by Position first to get the best correction per Position
//sorting is done arbitrarily from large to small(right to left)
@@ -2346,7 +2346,7 @@ void computeCutoffRepeats(
TGenomeLen genomelength)
{
clear(thresholds);
- resize(thresholds, kmax + 1, maxValue<typename Value<TCuttoffs>::Type>());
+ resize(thresholds, kmax + 1, std::numeric_limits<typename Value<TCuttoffs>::Type>::max());
for (int i = kmin; i <= kmax; i++)
thresholds[i] = OddsRepeatCutoff(odds, expected[i], errorrate, i, genomelength); // Dave: I added "/ 3", otherwise this cutoff seems to have no effect
}
@@ -3743,11 +3743,11 @@ if (LOOP_LEVEL != 0)
if (ordValue(*itE) == 4) continue;
#endif
if (*itE != *itCLeft)
- if (--acceptedMismatchesLeft == MaxValue<unsigned>::VALUE) break;
+ if (--acceptedMismatchesLeft == std::numeric_limits<unsigned>::max()) break;
}
// too many mismatches left of the common prefix?
- if (acceptedMismatchesLeft == MaxValue<unsigned>::VALUE)
+ if (acceptedMismatchesLeft == std::numeric_limits<unsigned>::max())
continue;
#endif
@@ -3834,12 +3834,12 @@ if (LOOP_LEVEL != 0)
if (ordValue(*itE) == 4) continue;
#endif
if (*itE != *itC)
- if (--acceptedMismatches == MaxValue<unsigned>::VALUE)
+ if (--acceptedMismatches == std::numeric_limits<unsigned>::max())
break;
}
// too many mismatches right of the common prefix?
- if (acceptedMismatches == MaxValue<unsigned>::VALUE)
+ if (acceptedMismatches == std::numeric_limits<unsigned>::max())
continue;
errorsRight = acceptedMismatchesLeft - acceptedMismatches;
@@ -4216,7 +4216,7 @@ unsigned correctReads(
// if no occurrence exists set the enrty to maxINt Value
String<unsigned int> firstCorrectionForRead; // should this really be always created anew for different cycles, could be created outside correctReads?
// we assume we work with three reads here
- resize(firstCorrectionForRead, readCount, maxValue<unsigned>(), Exact());
+ resize(firstCorrectionForRead, readCount, std::numeric_limits<unsigned>::max(), Exact());
// Determine the number of allowed corrections per round per read, depending on the read length and the
// configuration in options.relativeErrorsToCorrect. We set a hard lower limit of 2.
@@ -4356,7 +4356,7 @@ unsigned correctReads(
}
else
{
- resize(options.repeatCutoffs, options.toLevel + 2, maxValue<unsigned>());
+ resize(options.repeatCutoffs, options.toLevel + 2, std::numeric_limits<unsigned>::max());
}
if (options.verbosity >= 2)
@@ -4969,7 +4969,7 @@ unsigned correctReads(
unsigned readCorrections=0;
for (unsigned a = 0; a < length(firstCorrectionForRead); ++a)
{
- if (firstCorrectionForRead[a] == maxValue<unsigned>()) continue;
+ if (firstCorrectionForRead[a] == std::numeric_limits<unsigned>::max()) continue;
++readCorrections;
}
diff --git a/apps/gustaf/README b/apps/gustaf/README
index 6bb02b1..cf39ad2 100644
--- a/apps/gustaf/README
+++ b/apps/gustaf/README
@@ -48,10 +48,10 @@ http://www.seqan.de/downloads/projects.html
Gustaf is distributed with SeqAn - The C++ Sequence Analysis Library (see
http://www.seqan.de). To build Gustaf yourself, you can check out the latest
-SVN version of Gustaf and SeqAn with:
+Git version of Gustaf and SeqAn with:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
- 2) cd seqan/build/
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
3) cmake .. -DCMAKE_BUILD_TYPE=Release
4) make gustaf
5) ./bin/gustaf --help
diff --git a/apps/gustaf/create_stellarmatches_from_file.h b/apps/gustaf/create_stellarmatches_from_file.h
index 627ff74..984c5d5 100644
--- a/apps/gustaf/create_stellarmatches_from_file.h
+++ b/apps/gustaf/create_stellarmatches_from_file.h
@@ -92,8 +92,8 @@ bool _createStellarMatches(StringSet<TSequence> & queries,
TInfix queryInf;
// Take match query ID and find the right index in queries
- unsigned iDB = maxValue<unsigned>(); // position of database sequence in databases
- unsigned iQuery = maxValue<unsigned>(); // position of query/read sequence in queries
+ unsigned iDB = std::numeric_limits<unsigned>::max(); // position of database sequence in databases
+ unsigned iQuery = std::numeric_limits<unsigned>::max(); // position of query/read sequence in queries
// Takes the short chromosome Id (from the Stellar match file) and looks up the corresponding long chromosome
// Id entry from the reference input file
@@ -118,7 +118,7 @@ bool _createStellarMatches(StringSet<TSequence> & queries,
}
// Sanity check for read and query Id:
// skips entry if no corresponding entry in the input file could not be found, else creates StellarMatch object
- if (iDB == maxValue<unsigned>() || iQuery == maxValue<unsigned>())
+ if (iDB == std::numeric_limits<unsigned>::max() || iQuery == std::numeric_limits<unsigned>::max())
{
std::cerr << "Read or database does not exist for match: " << it - begin(lmStore.matchStore, Standard())
<< " subjectId: " << lmStore.sequenceNameStore[(*it).subjectId]
diff --git a/apps/gustaf/msplazer.h b/apps/gustaf/msplazer.h
index dfa80eb..210463d 100644
--- a/apps/gustaf/msplazer.h
+++ b/apps/gustaf/msplazer.h
@@ -193,15 +193,15 @@ struct Breakpoint
midPosStrand(false),
startSeqPos(0),
endSeqPos(0),
- dupTargetPos(maxValue<unsigned>()),
- dupMiddlePos(maxValue<unsigned>()),
+ dupTargetPos(std::numeric_limits<unsigned>::max()),
+ dupMiddlePos(std::numeric_limits<unsigned>::max()),
readStartPos(0),
readEndPos(0),
- cipos(maxValue<unsigned>()),
- ciend(maxValue<unsigned>()),
- cimiddle(maxValue<unsigned>()),
+ cipos(std::numeric_limits<unsigned>::max()),
+ ciend(std::numeric_limits<unsigned>::max()),
+ cimiddle(std::numeric_limits<unsigned>::max()),
support(1),
- similar(maxValue<unsigned>()),
+ similar(std::numeric_limits<unsigned>::max()),
svtype(INVALID),
insertionSeq("NNNN"),
revStrandDel(false),
@@ -227,15 +227,15 @@ struct Breakpoint
midPosStrand(false),
startSeqPos(sPos),
endSeqPos(ePos),
- dupTargetPos(maxValue<unsigned>()),
- dupMiddlePos(maxValue<unsigned>()),
+ dupTargetPos(std::numeric_limits<unsigned>::max()),
+ dupMiddlePos(std::numeric_limits<unsigned>::max()),
readStartPos(rsPos),
readEndPos(rePos),
- cipos(maxValue<unsigned>()),
- ciend(maxValue<unsigned>()),
- cimiddle(maxValue<unsigned>()),
+ cipos(std::numeric_limits<unsigned>::max()),
+ ciend(std::numeric_limits<unsigned>::max()),
+ cimiddle(std::numeric_limits<unsigned>::max()),
support(1),
- similar(maxValue<unsigned>()),
+ similar(std::numeric_limits<unsigned>::max()),
svtype(INVALID),
insertionSeq("NNNN"),
revStrandDel(false),
@@ -262,15 +262,15 @@ struct Breakpoint
midPosStrand(false),
startSeqPos(sPos),
endSeqPos(ePos),
- dupTargetPos(maxValue<unsigned>()),
- dupMiddlePos(maxValue<unsigned>()),
+ dupTargetPos(std::numeric_limits<unsigned>::max()),
+ dupMiddlePos(std::numeric_limits<unsigned>::max()),
readStartPos(rsPos),
readEndPos(rePos),
- cipos(maxValue<unsigned>()),
- ciend(maxValue<unsigned>()),
- cimiddle(maxValue<unsigned>()),
+ cipos(std::numeric_limits<unsigned>::max()),
+ ciend(std::numeric_limits<unsigned>::max()),
+ cimiddle(std::numeric_limits<unsigned>::max()),
support(1),
- similar(maxValue<unsigned>()),
+ similar(std::numeric_limits<unsigned>::max()),
svtype(INVALID),
insertionSeq("NNNN"),
revStrandDel(false),
@@ -589,7 +589,7 @@ inline bool _breakendSupport(Breakpoint<TId, TPos> & be, Breakpoint<TId, TPos> &
return false;
// If bp is duplication or translocation, also check targetpos
if ((bp.svtype == TBreakpoint::DISPDUPLICATION || bp.svtype == TBreakpoint::TRANSLOCATION || bp.svtype == TBreakpoint::INTERTRANSLOCATION)
- && bp.dupMiddlePos != maxValue<unsigned>())
+ && bp.dupMiddlePos != std::numeric_limits<unsigned>::max())
return (_posInSameRange(be.startSeqPos, bp.startSeqPos, range) ||
_posInSameRange(be.startSeqPos, bp.endSeqPos, range) ||
_posInSameRange(be.startSeqPos, bp.dupMiddlePos, range) );
@@ -616,7 +616,7 @@ inline bool _similarBreakpoints(Breakpoint<TId, TPos> & bp1, Breakpoint<TId, TPo
&& _posInSameRange(length(bp1.insertionSeq), length(bp2.insertionSeq), range));
if (bp1.svtype == TBreakpoint::DISPDUPLICATION || bp1.svtype == TBreakpoint::TRANSLOCATION)
{
- if (bp1.dupMiddlePos != maxValue<unsigned>() && bp2.dupMiddlePos != maxValue<unsigned>())
+ if (bp1.dupMiddlePos != std::numeric_limits<unsigned>::max() && bp2.dupMiddlePos != std::numeric_limits<unsigned>::max())
return (_posInSameRange(bp1.dupMiddlePos, bp2.dupMiddlePos, range)
&& _posInSameRange(bp1.startSeqPos, bp2.startSeqPos, range)
&& _posInSameRange(bp1.endSeqPos, bp2.endSeqPos, range));
@@ -679,7 +679,7 @@ TStream & operator<<(TStream & out, Breakpoint<TSequence, TId> const & value)
out << value.startSeqId << " ( " << value.startSeqStrand << " ) " << " --> " << value.endSeqId << " ( " <<
value.endSeqStrand << " ) " << std::endl;
out << " ( " << value.startSeqPos + 1 << " ) --> ( " << value.endSeqPos + 1 << " ) " << std::endl;
- if (value.dupMiddlePos != maxValue<unsigned>())
+ if (value.dupMiddlePos != std::numeric_limits<unsigned>::max())
out << "dup middle pos " << value.dupMiddlePos + 1 << std::endl;
out << " ( " << value.readStartPos + 1 << " ) --> ( " << value.readEndPos + 1 << " ) " << std::endl;
switch (value.svtype)
diff --git a/apps/gustaf/msplazer_algorithms.h b/apps/gustaf/msplazer_algorithms.h
index 950c407..ee45073 100644
--- a/apps/gustaf/msplazer_algorithms.h
+++ b/apps/gustaf/msplazer_algorithms.h
@@ -424,7 +424,7 @@ void _chainMatches(QueryMatches<StellarMatch<TSequence, TId> > & queryMatches,
// Note: old match scores are already distances, new score is a negative score bc. we use scoring sceme (0, -1, -1, -1)
auto tmp = _splitAlignmentImpl(row(match1, 0), row(match1, 1), row(match2, 0), row(match2, 1),
scoreType, AlignConfig<false, false, true, true>());
- SEQAN_ASSERT_NEQ(std::get<0>(tmp) + std::get<1>(tmp), maxValue<int>());
+ SEQAN_ASSERT_NEQ(std::get<0>(tmp) + std::get<1>(tmp), std::numeric_limits<int>::max());
score = std::get<0>(tmp) + std::get<1>(tmp) + (static_cast<int>(matchDistanceScores[m1]) + static_cast<int>(matchDistanceScores[m2]));
splitPos = endPosition(row(match1, 0)) + stMatch1.begin2;
@@ -1305,7 +1305,7 @@ inline void _inferComplexBP(String<TBreakpoint> & globalBreakpoints, TBreakpoint
// Append breakpoint if new
if (keepBP)
{
- if (bp.similar == maxValue<unsigned>())
+ if (bp.similar == std::numeric_limits<unsigned>::max())
{
bp.similar = similarBPId;
++similarBPId;
@@ -1339,7 +1339,7 @@ inline void _insertBreakpoint(String<TBreakpoint> & countedBP, TBreakpoint & bp,
else if (_similarBreakpoints(bp, tempBP, bpPosRange))
{
appendSupportId(tempBP, bp.supportIds);
- if (bp.dupMiddlePos != maxValue<unsigned>() && tempBP.dupMiddlePos != maxValue<unsigned>()
+ if (bp.dupMiddlePos != std::numeric_limits<unsigned>::max() && tempBP.dupMiddlePos != std::numeric_limits<unsigned>::max()
&& bp.dupMiddlePos < tempBP.dupMiddlePos)
{
tempBP.dupMiddlePos = bp.dupMiddlePos;
@@ -1358,7 +1358,7 @@ inline void _insertBreakpoint(String<TBreakpoint> & countedBP, TBreakpoint & bp,
// Append breakpoint if new
if (newBP)
{
- if (bp.similar == maxValue<unsigned>())
+ if (bp.similar == std::numeric_limits<unsigned>::max())
{
bp.similar = similarBPId;
++similarBPId;
@@ -1504,7 +1504,7 @@ bool _findBestChain(TMSplazerChain & queryChain, String<TMatch> & stellarMatches
// Getting vertex descriptor of anchestor
spVertex2 = getProperty(queryChain.predMap, spVertex1);
// if vertex descriptor has max value then there is no (shortest) path from start to end.
- if (spVertex2 == maxValue<TVertexDescriptor>())
+ if (spVertex2 == std::numeric_limits<TVertexDescriptor>::max())
{
// queryChain.isPartial = true;
++bcc;
diff --git a/apps/gustaf/msplazer_out.h b/apps/gustaf/msplazer_out.h
index bcadb7c..49ef6d2 100644
--- a/apps/gustaf/msplazer_out.h
+++ b/apps/gustaf/msplazer_out.h
@@ -227,7 +227,7 @@ inline void _fillGffRecordDuplication(GffRecord & record, TBreakpoint & bp, unsi
record.ref = sId;
record.source = "GUSTAF";
record.type = "duplication";
- TPos begin, end, target = maxValue<unsigned>();
+ TPos begin, end, target = std::numeric_limits<unsigned>::max();
// Using set function for VCF duplication to set positions
_setVcfRecordDuplicationPos(bp, begin, end, target);
if (begin > end)
@@ -244,7 +244,7 @@ inline void _fillGffRecordDuplication(GffRecord & record, TBreakpoint & bp, unsi
record.strand = '+';
appendValue(record.tagNames, "ID");
appendValue(record.tagValues, toString(id));
- if (target != maxValue<unsigned>())
+ if (target != std::numeric_limits<unsigned>::max())
{
appendValue(record.tagNames, "size");
appendValue(record.tagValues, toString((end - begin)));
@@ -409,7 +409,7 @@ inline void _fillVcfRecordInsertion(VcfRecord & record, TBreakpoint & bp, TSeque
ss << "SVTYPE=INS";
SEQAN_ASSERT_GEQ_MSG(bp.endSeqPos, bp.startSeqPos, "Insertion end position smaller than begin position!");
ss << ";SVLEN=" << length(bp.insertionSeq);
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -444,7 +444,7 @@ inline void _fillVcfRecordDeletion(VcfRecord & record, TBreakpoint & bp, TSequen
ss << ";END=" << bp.endSeqPos + 1 - 1; // 1-base adjustment, -1 bc endPos is behind last variant position
SEQAN_ASSERT_GEQ_MSG(bp.endSeqPos, bp.startSeqPos, "Deletion end position smaller than begin position!");
ss << ";SVLEN=-" << bp.endSeqPos-bp.startSeqPos;
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -481,7 +481,7 @@ inline void _fillVcfRecordInversion(VcfRecord & record, TBreakpoint & bp, TSeque
ss << ";END=" << bp.endSeqPos + 1 - 1; // 1-base adjustment, -1 bc endPos is behind last variant position
SEQAN_ASSERT_GEQ_MSG(bp.endSeqPos, bp.startSeqPos, "Inversion end position smaller than begin position!");
ss << ";SVLEN=" << bp.endSeqPos-bp.startSeqPos;
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -511,7 +511,7 @@ inline void _fillVcfRecordTandem(VcfRecord & record, TBreakpoint & bp, TSequence
ss << ";END=" << bp.endSeqPos + 1 - 1; // 1-base adjustment, -1 bc endPos is behind last variant position
SEQAN_ASSERT_GEQ_MSG(bp.endSeqPos, bp.startSeqPos, "Tandem duplication end position smaller than begin position!");
ss << ";SVLEN=" << bp.endSeqPos-bp.startSeqPos - 1; // -1 bc positions are flanking the variant region
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -536,7 +536,7 @@ inline void _fillVcfRecordTandem(VcfRecord & record, TBreakpoint & bp, TSequence
template <typename TBreakpoint, typename TPos>
inline bool _setVcfRecordDuplicationPos(TBreakpoint & bp, TPos & begin, TPos & end, TPos & target)
{
- if (bp.dupMiddlePos != maxValue<unsigned>())
+ if (bp.dupMiddlePos != std::numeric_limits<unsigned>::max())
{
// Downstream duplication dup(middlePos, endPos, startPos)
if (bp.dupTargetPos == bp.startSeqPos)
@@ -560,7 +560,7 @@ template <typename TBreakpoint, typename TSequence>
inline void _fillVcfRecordDuplication(VcfRecord & record, TBreakpoint & bp, TSequence & ref, unsigned id)
{
typedef typename TBreakpoint::TPos TPos;
- TPos begin, end, target = maxValue<unsigned>();
+ TPos begin, end, target = std::numeric_limits<unsigned>::max();
std::stringstream ss;
if (!_setVcfRecordDuplicationPos(bp, begin, end, target))
ss << "IMPRECISE;";
@@ -573,12 +573,12 @@ inline void _fillVcfRecordDuplication(VcfRecord & record, TBreakpoint & bp, TSeq
ss << "SVTYPE=DUP";
ss << ";END=" << end - 1 + 1; // -1 to set end as last position of variant, +1 for 1-base adjustment
SEQAN_ASSERT_GEQ_MSG(bp.endSeqPos, bp.startSeqPos, "Duplication end position smaller than begin position!");
- if (target != maxValue<unsigned>())
+ if (target != std::numeric_limits<unsigned>::max())
{
ss << ";SVLEN=" << end-begin;
ss << ";TARGETPOS=" << target - 1 + 1; // -1 to set target as position before insertion, +1 for 1-base adjustment
}
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -607,7 +607,7 @@ inline void _fillVcfRecordBreakend(VcfRecord & record, TBreakpoint & bp, TSequen
// ss << "IMPRECISE;";
ss << "SVTYPE=BND";
// ss << ";CIPOS=-5,5";
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
//ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -691,7 +691,7 @@ inline bool _writeVcfTranslocation(VcfFileOut & vcfOut, TBreakpoint & bp, TSeque
std::stringstream ss;
ss << "SVTYPE=BND";
ss << ";EVENT=Trans" << bp_id;
- //if (bp.similar != maxValue<unsigned>())
+ //if (bp.similar != std::numeric_limits<unsigned>::max())
ss << ";BM=" << bp.similar;
ss << ";DP=" << bp.support;
record.info = ss.str();
@@ -718,7 +718,7 @@ inline bool _writeVcfTranslocation(VcfFileOut & vcfOut, TBreakpoint & bp, TSeque
}
// Compute ALT columns
- if (bp.dupMiddlePos != maxValue<unsigned>())
+ if (bp.dupMiddlePos != std::numeric_limits<unsigned>::max())
{
_getShortId(sId, bp.midPosId);
std::stringstream alt1;
@@ -790,7 +790,7 @@ inline bool _writeVcfTranslocation(VcfFileOut & vcfOut, TBreakpoint & bp, TSeque
clear(record.alt);
// 3rd and 4th entry only exist if the middle (bp.dupMiddlePos) of translocation is known
- if (bp.dupMiddlePos != maxValue<unsigned>())
+ if (bp.dupMiddlePos != std::numeric_limits<unsigned>::max())
{
// 3rd entry
// 3rd: pos. before second split (dupMiddlePos - 1) ALT: endSeqPos
@@ -922,7 +922,7 @@ inline bool _writeVcfTranslocation(VcfFileOut & vcfOut, TBreakpoint & bp, TSeque
record.beginPos = bp.endSeqPos;
// Compute ALT columns
- if (bp.dupMiddlePos != maxValue<unsigned>())
+ if (bp.dupMiddlePos != std::numeric_limits<unsigned>::max())
{
std::stringstream alt1;
if (bp.endSeqStrand != bp.midPosStrand)
@@ -1017,8 +1017,7 @@ void _fillVcfHeader(seqan::VcfHeader & vcfHeader,
append(contigStr, ">");
appendValue(vcfHeader, seqan::VcfHeaderRecord("contig", contigStr));
- appendName(contigNames(context(vcfFileOut)), databaseIDs[i],
- contigNamesCache(context(vcfFileOut)));
+ appendName(contigNamesCache(context(vcfFileOut)), databaseIDs[i]);
}
}
@@ -1032,7 +1031,7 @@ int32_t _getrID(StringSet<TId> & databaseIDs, TId dbID)
if (sID == dbID)
return static_cast<int32_t>(i);
}
- return maxValue<int>();
+ return std::numeric_limits<int>::max();
}
// Breakpoint writing call
@@ -1070,7 +1069,7 @@ bool _writeGlobalBreakpoints(String<TBreakpoint> & globalBreakpoints,
}
VcfRecord vcf_record;
- int32_t id = maxValue<int>();
+ int32_t id = std::numeric_limits<int>::max();
for (unsigned i = 0; i < length(globalBreakpoints); ++i)
{
TBreakpoint & bp = globalBreakpoints[i];
@@ -1097,7 +1096,7 @@ bool _writeGlobalBreakpoints(String<TBreakpoint> & globalBreakpoints,
} else
{
// extra write function because we have to write 6 records here instead of 1
- int32_t id2 = maxValue<int>();
+ int32_t id2 = std::numeric_limits<int>::max();
id2 = _getrID(databaseIDs, bp.endSeqId);
if (_writeVcfTranslocation(vcfOut, bp, databases[id], databases[id2], id, id2, i))
std::cerr << "Error while writing breakpoint translocation vcf record!" << std::endl;
diff --git a/apps/insegt/README b/apps/insegt/README
index 0d027a0..15bb528 100644
--- a/apps/insegt/README
+++ b/apps/insegt/README
@@ -42,17 +42,15 @@ INSEGT is distributed with SeqAn - The C++ Sequence Analysis Library (see
http://www.seqan.de). To build INSEGT do the following:
Follow the "Getting Started" section on http://trac.seqan.de/wiki and check
-out the latest SVN trunk. Instead of creating a project file in Debug mode,
+out the latest Git repo. Instead of creating a project file in Debug mode,
switch to Release mode (-DCMAKE_BUILD_TYPE=Release) and compile insegt. This
can be done as follows:
- svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan seqan-trunk
- mkdir seqan-trunk-build
- mkdir seqan-trunk-build/release
- cd seqan-trunk-build/release
- cmake ../../seqan-trunk -DCMAKE_BUILD_TYPE=Release
- make insegt
-
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
+ 3) cmake .. -DCMAKE_BUILD_TYPE=Release
+ 4) make insegt
+ 5) ./bin/insegt --help
---------------------------------------------------------------------------
3. Usage
diff --git a/apps/insegt/base.h b/apps/insegt/base.h
index 198e849..f77145d 100644
--- a/apps/insegt/base.h
+++ b/apps/insegt/base.h
@@ -70,7 +70,7 @@ create_nTuple(TStringSet &tupleSet, FragmentStore<TSpec, TConfig> &fragStore, co
itSetEnd = end(tempTupleSet);
for ( ; itSet != itSetEnd; goNext(itSet))
{
- appendValue(tupleSet, getValue(itSet), Generous());
+ appendValue(tupleSet, *itSet, Generous());
}
}
}
@@ -98,7 +98,7 @@ create_Tuple(TStringSet &tupleSet, FragmentStore<TSpec, TConfig> &fragStore, con
itEnd = end(tempTupleSet);
for ( ; it != itEnd; goNext(it))
{
- appendValue(tupleSet, getValue(it), Generous());
+ appendValue(tupleSet, *it, Generous());
}
}
}
@@ -124,7 +124,7 @@ createCombinations(TStringSet &tupleSet, TStringSet &annoIds)
unsigned n = 1;
for ( ; itStrSet != itStrSetEnd; goNext(itStrSet))
{
- n = n * length(getValue(itStrSet));
+ n = n * length(*itStrSet);
}
clear(tupleSet);
diff --git a/apps/insegt/create_gff.h b/apps/insegt/create_gff.h
index 395e659..9715ae5 100644
--- a/apps/insegt/create_gff.h
+++ b/apps/insegt/create_gff.h
@@ -74,14 +74,14 @@ createReadCountGFF(TFile & readOutput, TReadAnnoStore & readAnnoStore, FragmentS
itAnnoIds = begin(getValue(itCountStore).annoIds);
itAnnoIdsEnd = end(getValue(itCountStore).annoIds);
- while (itAnnoIds != itAnnoIdsEnd && front(getValue(itAnnoIds)) == INVALID_ID)
+ while (itAnnoIds != itAnnoIdsEnd && front(*itAnnoIds) == INVALID_ID)
{
goNext(itAnnoIds);
}
if (itAnnoIds != itAnnoIdsEnd) // not only INVALID_IDS
{
- firstId = front(getValue(itAnnoIds));
+ firstId = front(*itAnnoIds);
// orientation:
if (getValue(fragStore.annotationStore, firstId).beginPos <= getValue(fragStore.annotationStore, firstId).endPos)
diff --git a/apps/insegt/fusion.h b/apps/insegt/fusion.h
index ae0751f..3832cc4 100644
--- a/apps/insegt/fusion.h
+++ b/apps/insegt/fusion.h
@@ -192,7 +192,7 @@ buildTupleCountStore_Fusion(TTupleCountStore & tupleCountStore,
itSecTupleEnd = end(tempSecTupleSet);
for ( ; itSecTuple != itSecTupleEnd; goNext(itSecTuple))
{
- appendValue(secTupleSet, getValue(itSecTuple));
+ appendValue(secTupleSet, *itSecTuple);
}
}
}
@@ -209,25 +209,25 @@ buildTupleCountStore_Fusion(TTupleCountStore & tupleCountStore,
itTupleEnd = end(tupleSet);
for ( ; itTuple != itTupleEnd; goNext(itTuple))
{
- firstAnnoId1 = front(getValue(itTuple));
+ firstAnnoId1 = front(*itTuple);
erase(value(itTuple), 0); // first id is not stored; is know by position in tupleCountStore
// readConnections:
- if (!empty(getValue(itTuple)))
+ if (!empty(*itTuple))
{
- if (searchValue(pos, getValue(itTuple), getValue(tupleCountStore, firstAnnoId1).readConnections))
+ if (searchValue(pos, *itTuple, getValue(tupleCountStore, firstAnnoId1).readConnections))
++value(value(tupleCountStore, firstAnnoId1).readConnectionCounts, pos);
else
{
if (pos != endPosition(getValue(tupleCountStore, firstAnnoId1).readConnections) )
{
resizeSpace(value(tupleCountStore, firstAnnoId1).readConnections, 1, pos, pos, Generous());
- assignValue(value(tupleCountStore, firstAnnoId1).readConnections, pos, getValue(itTuple));
+ assignValue(value(tupleCountStore, firstAnnoId1).readConnections, pos, *itTuple);
insertValue(value(tupleCountStore, firstAnnoId1).readConnectionCounts, pos, 1, Generous());
}
else
{
- appendValue(value(tupleCountStore, firstAnnoId1).readConnections, getValue(itTuple), Generous());
+ appendValue(value(tupleCountStore, firstAnnoId1).readConnections, *itTuple, Generous());
appendValue(value(tupleCountStore, firstAnnoId1).readConnectionCounts, 1, Generous());
}
}
@@ -239,29 +239,29 @@ buildTupleCountStore_Fusion(TTupleCountStore & tupleCountStore,
itSecTupleEnd = end(secTupleSet);
for ( ; itSecTuple != itSecTupleEnd; goNext(itSecTuple) )
{
- matePairTuple = getValue(itTuple);
+ matePairTuple = *itTuple;
// INVALID_ID: sign for connection by matepair (apart from that, there are no INVALID_IDs in the list)
appendValue(matePairTuple, INVALID_ANNO_ID, Generous());
- if (!empty(getValue(itTuple)) && back(getValue(itTuple)) == front(getValue(itSecTuple)) ) // no id 2x allowed
+ if (!empty(*itTuple) && back(*itTuple) == front(*itSecTuple)) // no id 2x allowed
{
if (exact_nTuple == 0 && n == 0) erase(value(itSecTuple), 0);
else continue; // tupel would be created double or tupel wouldn't have the length n anymore
}
- append(matePairTuple, getValue(itSecTuple), Generous());
+ append(matePairTuple, *itSecTuple, Generous());
- if (empty(getValue(itTuple)))
+ if (empty(*itTuple))
{
beginPos1 = getValue(fragStore.annotationStore, firstAnnoId1).beginPos;
endPos1 = getValue(fragStore.annotationStore, firstAnnoId1).endPos;
}
else
{
- beginPos1 = getValue(fragStore.annotationStore, back(getValue(itTuple))).beginPos;
- endPos1 = getValue(fragStore.annotationStore, back(getValue(itTuple))).endPos;
+ beginPos1 = getValue(fragStore.annotationStore, back(*itTuple)).beginPos;
+ endPos1 = getValue(fragStore.annotationStore, back(*itTuple)).endPos;
}
// begin position of first annotation in tuple of second read
- beginPos2 = getValue(fragStore.annotationStore, front(getValue(itSecTuple))).beginPos;
- endPos2 = getValue(fragStore.annotationStore, front(getValue(itSecTuple))).endPos;
+ beginPos2 = getValue(fragStore.annotationStore, front(*itSecTuple)).beginPos;
+ endPos2 = getValue(fragStore.annotationStore, front(*itSecTuple)).endPos;
if ( (beginPos1 <= endPos1 && endPos1 < beginPos2) || // no overlapping annotations allowed
(endPos1 < beginPos1 && beginPos1 < endPos2) )
{
@@ -292,37 +292,37 @@ buildTupleCountStore_Fusion(TTupleCountStore & tupleCountStore,
itTupleEnd = end(tupleSet);
for ( ; itTuple != itTupleEnd; goNext(itTuple))
{
- firstAnnoId1 = front(getValue(itTuple));
+ firstAnnoId1 = front(*itTuple);
erase(value(itTuple), 0); // first id is not stored; is know by position in tupleCountStore
itSecTuple = begin(secTupleSet);
itSecTupleEnd = end(secTupleSet);
for ( ; itSecTuple != itSecTupleEnd; goNext(itSecTuple) )
{
- matePairTuple = getValue(itTuple);
+ matePairTuple = *itTuple;
// INVALID_ID: sign for connection by matepair (apart from that, there are no INVALID_IDs in the list)
appendValue(matePairTuple, INVALID_ANNO_ID, Generous());
- if (!empty(getValue(itTuple)) && back(getValue(itTuple)) == front(getValue(itSecTuple)) ) // no id 2x allowed
+ if (!empty(*itTuple) && back(*itTuple) == front(*itSecTuple)) // no id 2x allowed
{
if (exact_nTuple == 0 && n == 0) erase(value(itSecTuple), 0);
else continue; // tupel would be created double or tupel wouldn't have the length n anymore
}
- append(matePairTuple, getValue(itSecTuple), Generous());
+ append(matePairTuple, *itSecTuple, Generous());
- if (empty(getValue(itTuple)))
+ if (empty(*itTuple))
{
beginPos1 = getValue(fragStore.annotationStore, firstAnnoId1).beginPos;
endPos1 = getValue(fragStore.annotationStore, firstAnnoId1).endPos;
}
else
{
- beginPos1 = getValue(fragStore.annotationStore, back(getValue(itTuple))).beginPos;
- endPos1 = getValue(fragStore.annotationStore, back(getValue(itTuple))).endPos;
+ beginPos1 = getValue(fragStore.annotationStore, back(*itTuple)).beginPos;
+ endPos1 = getValue(fragStore.annotationStore, back(*itTuple)).endPos;
}
// begin position of first annotation in tuple of second read
- beginPos2 = getValue(fragStore.annotationStore, front(getValue(itSecTuple))).beginPos;
- endPos2 = getValue(fragStore.annotationStore, front(getValue(itSecTuple))).endPos;
+ beginPos2 = getValue(fragStore.annotationStore, front(*itSecTuple)).beginPos;
+ endPos2 = getValue(fragStore.annotationStore, front(*itSecTuple)).endPos;
if ( (beginPos1 <= endPos1 && endPos1 < beginPos2) || // no overlapping annotations allowed
(endPos1 < beginPos1 && beginPos1 < endPos2) )
{
diff --git a/apps/insegt/overlap_module.h b/apps/insegt/overlap_module.h
index 79e450c..1a7da0f 100644
--- a/apps/insegt/overlap_module.h
+++ b/apps/insegt/overlap_module.h
@@ -94,9 +94,9 @@ getIdsForRead(TAnnoIds & ids, FragmentStore<TSpec, TConfig> & fragStore, TInterv
for ( ; itI != itIEnd; goNext(itI), goNext(itR))
{
- for (unsigned i = 0; i < length(getValue(itR)); ++i)
+ for (unsigned i = 0; i < length(*itR); ++i)
{
- currentId = getValue(getValue(itR), i);
+ currentId = getValue(*itR, i);
beginPos = getValue(fragStore.annotationStore, currentId).beginPos;
endPos = getValue(fragStore.annotationStore, currentId).endPos;
@@ -138,7 +138,7 @@ getIdsForRead(TAnnoIds & ids, FragmentStore<TSpec, TConfig> & fragStore, TInterv
}
}
}
- if (empty(getValue(itR)) ) // if aligment-interval doesn't fit to any annotation, append INVALID_ID to mark this
+ if (empty(*itR) ) // if aligment-interval doesn't fit to any annotation, append INVALID_ID to mark this
appendValue(value(itR), INVALID_ID, Generous());
}
}
@@ -355,25 +355,25 @@ buildTupleCountStore(TTupleCountStore & tupleCountStore,
itTupleEnd = end(tupleSet);
for ( ; itTuple != itTupleEnd; goNext(itTuple))
{
- firstAnnoId1 = front(getValue(itTuple));
+ firstAnnoId1 = front(*itTuple);
erase(value(itTuple), 0); // first id is not stored; is know by position in tupleCountStore
// readConnections:
- if (!empty(getValue(itTuple)))
+ if (!empty(*itTuple))
{
- if (searchValue(pos, getValue(itTuple), getValue(tupleCountStore, firstAnnoId1).readConnections))
+ if (searchValue(pos, *itTuple, getValue(tupleCountStore, firstAnnoId1).readConnections))
++value(value(tupleCountStore, firstAnnoId1).readConnectionCounts, pos);
else
{
if (pos != endPosition(getValue(tupleCountStore, firstAnnoId1).readConnections) )
{
resizeSpace(value(tupleCountStore, firstAnnoId1).readConnections, 1, pos, pos, Generous());
- assignValue(value(tupleCountStore, firstAnnoId1).readConnections, pos, getValue(itTuple));
+ assignValue(value(tupleCountStore, firstAnnoId1).readConnections, pos, *itTuple);
insertValue(value(tupleCountStore, firstAnnoId1).readConnectionCounts, pos, 1, Generous());
}
else
{
- appendValue(value(tupleCountStore, firstAnnoId1).readConnections, getValue(itTuple), Generous());
+ appendValue(value(tupleCountStore, firstAnnoId1).readConnections, *itTuple, Generous());
appendValue(value(tupleCountStore, firstAnnoId1).readConnectionCounts, 1, Generous());
}
}
@@ -385,29 +385,29 @@ buildTupleCountStore(TTupleCountStore & tupleCountStore,
itSecTupleEnd = end(secTupleSet);
for ( ; itSecTuple != itSecTupleEnd; goNext(itSecTuple) )
{
- matePairTuple = getValue(itTuple);
+ matePairTuple = *itTuple;
// INVALID_ID: sign for connection by matepair (apart from that, there are no INVALID_IDs in the list)
appendValue(matePairTuple, INVALID_ANNO_ID, Generous());
- if (!empty(getValue(itTuple)) && back(getValue(itTuple)) == front(getValue(itSecTuple)) ) // no id 2x allowed
+ if (!empty(*itTuple) && back(*itTuple) == front(*itSecTuple)) // no id 2x allowed
{
if (exact_nTuple == 0 && n == 0) erase(value(itSecTuple), 0);
else continue; // tupel would be created double or tupel wouldn't have the length n anymore
}
- append(matePairTuple, getValue(itSecTuple), Generous());
+ append(matePairTuple, *itSecTuple, Generous());
- if (empty(getValue(itTuple)))
+ if (empty(*itTuple))
{
beginPos1 = getValue(fragStore.annotationStore, firstAnnoId1).beginPos;
endPos1 = getValue(fragStore.annotationStore, firstAnnoId1).endPos;
}
else
{
- beginPos1 = getValue(fragStore.annotationStore, back(getValue(itTuple))).beginPos;
- endPos1 = getValue(fragStore.annotationStore, back(getValue(itTuple))).endPos;
+ beginPos1 = getValue(fragStore.annotationStore, back(*itTuple)).beginPos;
+ endPos1 = getValue(fragStore.annotationStore, back(*itTuple)).endPos;
}
// begin position of first annotation in tuple of second read
- beginPos2 = getValue(fragStore.annotationStore, front(getValue(itSecTuple))).beginPos;
- endPos2 = getValue(fragStore.annotationStore, front(getValue(itSecTuple))).endPos;
+ beginPos2 = getValue(fragStore.annotationStore, front(*itSecTuple)).beginPos;
+ endPos2 = getValue(fragStore.annotationStore, front(*itSecTuple)).endPos;
if ( (beginPos1 <= endPos1 && endPos1 < beginPos2) || // no overlapping annotations allowed
(endPos1 < beginPos1 && beginPos1 < endPos2) )
{
diff --git a/apps/mason2/external_split_merge.cpp b/apps/mason2/external_split_merge.cpp
index 6d9314d..f90b030 100644
--- a/apps/mason2/external_split_merge.cpp
+++ b/apps/mason2/external_split_merge.cpp
@@ -178,15 +178,15 @@ bool SamJoiner::_loadNext(seqan::BamAlignmentRecord & record, unsigned idx)
int SamJoiner::get(seqan::BamAlignmentRecord & record)
{
- unsigned idx = seqan::maxValue<unsigned>();
+ unsigned idx = std::numeric_limits<unsigned>::max();
for (unsigned i = 0; i < length(records); ++i)
{
if (!active[i])
continue;
- if (idx == seqan::maxValue<unsigned>() || ltBamAlignmentRecord(records[i], records[idx]))
+ if (idx == std::numeric_limits<unsigned>::max() || ltBamAlignmentRecord(records[i], records[idx]))
idx = i;
}
- if (idx == seqan::maxValue<unsigned>())
+ if (idx == std::numeric_limits<unsigned>::max())
return 1;
// We use double-buffering and the input parameters as buffers.
diff --git a/apps/mason2/external_split_merge.h b/apps/mason2/external_split_merge.h
index e36aaa9..4e43d81 100644
--- a/apps/mason2/external_split_merge.h
+++ b/apps/mason2/external_split_merge.h
@@ -302,15 +302,15 @@ bool FastxJoiner<TTag>::_loadNext(TSeq & id, TSeq & seq, TSeq & qual, unsigned i
template <typename TTag>
int FastxJoiner<TTag>::get(seqan::CharString & id, seqan::CharString & seq, seqan::CharString & qual)
{
- unsigned idx = seqan::maxValue<unsigned>();
+ unsigned idx = std::numeric_limits<unsigned>::max();
for (unsigned i = 0; i < length(ids); ++i)
{
if (!active[i])
continue;
- if (idx == seqan::maxValue<unsigned>() || strnum_cmp(toCString(ids[i]), toCString(ids[idx])) < 0)
+ if (idx == std::numeric_limits<unsigned>::max() || strnum_cmp(toCString(ids[i]), toCString(ids[idx])) < 0)
idx = i;
}
- if (idx == seqan::maxValue<unsigned>())
+ if (idx == std::numeric_limits<unsigned>::max())
return 1;
// We use double-buffering and the input parameters as buffers.
diff --git a/apps/mason2/fragment_generation.h b/apps/mason2/fragment_generation.h
index 33bf5de..32fa109 100644
--- a/apps/mason2/fragment_generation.h
+++ b/apps/mason2/fragment_generation.h
@@ -96,6 +96,8 @@ public:
virtual void generateMany(std::vector<Fragment> & frags, int rId, unsigned contigLength,
std::vector<std::pair<int, int> > const & gapIntervals,
unsigned count) = 0;
+
+ virtual ~FragmentSamplerImpl() = default;
};
diff --git a/apps/mason2/genomic_variants.cpp b/apps/mason2/genomic_variants.cpp
index 6d073d7..52356ac 100644
--- a/apps/mason2/genomic_variants.cpp
+++ b/apps/mason2/genomic_variants.cpp
@@ -51,7 +51,7 @@ std::ostream & operator<<(std::ostream & out, SmallIndelRecord const & record)
int StructuralVariantRecord::endPosition() const
{
if (pos == -1)
- return seqan::MaxValue<int>::VALUE;
+ return std::numeric_limits<int>::max();
switch (kind)
{
@@ -211,12 +211,12 @@ int VariantMaterializer::_materializeSmallVariants(
unsigned smallIndelIdx = 0;
// Current SNP record, default to sentinel.
SnpRecord snpRecord;
- snpRecord.rId = seqan::maxValue<int>();
+ snpRecord.rId = std::numeric_limits<int>::max();
if (snpsIdx < length(variants.snps))
snpRecord = variants.snps[snpsIdx++];
// Current small indel record, default to sentinel.
SmallIndelRecord smallIndelRecord;
- smallIndelRecord.rId = seqan::maxValue<int>();
+ smallIndelRecord.rId = std::numeric_limits<int>::max();
if (smallIndelIdx < length(variants.smallIndels))
smallIndelRecord = variants.smallIndels[smallIndelIdx++];
// Track last position from contig appended to seq so far.
@@ -227,7 +227,7 @@ int VariantMaterializer::_materializeSmallVariants(
// TODO(holtgrew): Extract contig building into their own functions.
if (verbosity >= 2)
std::cerr << "building output\n";
- while (snpRecord.rId != seqan::maxValue<int>() || smallIndelRecord.rId != seqan::maxValue<int>())
+ while (snpRecord.rId != std::numeric_limits<int>::max() || smallIndelRecord.rId != std::numeric_limits<int>::max())
{
// TODO(holtgrew): Extract SNP and small indel handling into their own functions.
if (snpRecord.getPos() < smallIndelRecord.getPos()) // process SNP records
@@ -259,7 +259,7 @@ int VariantMaterializer::_materializeSmallVariants(
}
if (snpsIdx >= length(variants.snps))
- snpRecord.rId = seqan::maxValue<int>();
+ snpRecord.rId = std::numeric_limits<int>::max();
else
snpRecord = variants.snps[snpsIdx++];
}
@@ -337,7 +337,7 @@ int VariantMaterializer::_materializeSmallVariants(
}
if (smallIndelIdx >= length(variants.smallIndels))
- smallIndelRecord.rId = seqan::maxValue<int>();
+ smallIndelRecord.rId = std::numeric_limits<int>::max();
else
smallIndelRecord = variants.smallIndels[smallIndelIdx++];
}
@@ -704,7 +704,7 @@ int VariantMaterializer::_materializeLargeVariants(
bool PositionMap::overlapsWithBreakpoint(int svBeginPos, int svEndPos) const
{
- std::set<std::pair<int, int> >::const_iterator it = svBreakpoints.upper_bound(std::make_pair(svBeginPos, seqan::maxValue<int>()));
+ std::set<std::pair<int, int> >::const_iterator it = svBreakpoints.upper_bound(std::make_pair(svBeginPos, std::numeric_limits<int>::max()));
return (it != svBreakpoints.end() && it->first < svEndPos);
}
@@ -856,14 +856,14 @@ void PositionMap::reinit(TJournalEntries const & journal)
SEQAN_ASSERT_NEQ(it->segmentSource, seqan::SOURCE_NULL);
SEQAN_ASSERT_EQ(it->virtualPosition, 0u);
- unsigned lastRefPos = seqan::MaxValue<unsigned>::VALUE; // Previous position from reference.
+ unsigned lastRefPos = std::numeric_limits<unsigned>::max(); // Previous position from reference.
for (; it != end(journal, seqan::Standard()); ++it)
{
// std::cerr << *it << "\n";
SEQAN_ASSERT_NEQ(it->segmentSource, seqan::SOURCE_NULL);
if (it->segmentSource == seqan::SOURCE_ORIGINAL)
{
- if (lastRefPos == seqan::maxValue<unsigned>())
+ if (lastRefPos == std::numeric_limits<unsigned>::max())
{
if (it->physicalPosition != 0)
{
diff --git a/apps/mason2/mason_materializer.cpp b/apps/mason2/mason_materializer.cpp
index 84d2bbf..df5d2a8 100644
--- a/apps/mason2/mason_materializer.cpp
+++ b/apps/mason2/mason_materializer.cpp
@@ -118,7 +118,7 @@ public:
throw MasonIOException("Could not open methylation output file.");
}
}
- catch (MasonIOException e)
+ catch (MasonIOException & e)
{
std::cerr << "\nERROR: " << e.what() << "\n";
return 1;
diff --git a/apps/mason2/mason_simulator.cpp b/apps/mason2/mason_simulator.cpp
index 24d1736..3285e76 100644
--- a/apps/mason2/mason_simulator.cpp
+++ b/apps/mason2/mason_simulator.cpp
@@ -237,7 +237,7 @@ public:
setClippedBeginPosition(gapsContig, countGaps(begin(gapsRead, seqan::Standard())));
setClippedBeginPosition(gapsRead, countGaps(begin(gapsRead, seqan::Standard())));
- getCigarString(record.cigar, gapsContig, gapsRead, seqan::maxValue<int>());
+ getCigarString(record.cigar, gapsContig, gapsRead, std::numeric_limits<int>::max());
getMDString(mdString, gapsContig, gapsRead);
}
@@ -558,7 +558,7 @@ public:
setClippedBeginPosition(gapsContig, countGaps(begin(gapsRead, seqan::Standard())));
setClippedBeginPosition(gapsRead, countGaps(begin(gapsRead, seqan::Standard())));
- getCigarString(record.cigar, gapsContig, gapsRead, seqan::maxValue<int>());
+ getCigarString(record.cigar, gapsContig, gapsRead, std::numeric_limits<int>::max());
getMDString(mdString, gapsContig, gapsRead);
}
diff --git a/apps/mason2/mason_splicing.cpp b/apps/mason2/mason_splicing.cpp
index 7e109ae..d556809 100644
--- a/apps/mason2/mason_splicing.cpp
+++ b/apps/mason2/mason_splicing.cpp
@@ -67,11 +67,11 @@ public:
static const int INVALID_IDX;
- MyGffRecord() : seqan::GffRecord(), rID(seqan::maxValue<int>())
+ MyGffRecord() : seqan::GffRecord(), rID(std::numeric_limits<int>::max())
{}
};
-const int MyGffRecord::INVALID_IDX = seqan::maxValue<int>();
+const int MyGffRecord::INVALID_IDX = std::numeric_limits<int>::max();
// --------------------------------------------------------------------------
// Class SplicingInstruction
@@ -152,7 +152,7 @@ public:
if (!open(gffFileIn, toCString(options.inputGffFile)))
throw MasonIOException("Could not open GFF/GTF file.");
}
- catch (MasonIOException e)
+ catch (MasonIOException & e)
{
std::cerr << "\nERROR: " << e.what() << "\n";
return 1;
@@ -166,7 +166,7 @@ public:
// Read first GFF record.
MyGffRecord record;
_readFirstRecord(record);
- if (record.rID == seqan::maxValue<int>())
+ if (record.rID == std::numeric_limits<int>::max())
return 0; // at end, could not read any, done
// Transcript names.
@@ -185,7 +185,7 @@ public:
// Read GFF/GTF file contig by contig (must be sorted by reference name). For each contig, we all recors,
// create simulation instructions and then build the transcripts for each haplotype.
- while (record.rID != seqan::maxValue<int>()) // sentinel, at end
+ while (record.rID != std::numeric_limits<int>::max()) // sentinel, at end
{
seqan::CharString refName = record.ref;
std::cerr << "Splicing for " << refName << " ...";
@@ -206,7 +206,7 @@ public:
if (atEnd(gffFileIn))
{
- record.rID = seqan::maxValue<int>();
+ record.rID = std::numeric_limits<int>::max();
break;
}
@@ -362,10 +362,10 @@ public:
{
if (empty(ss[i]))
continue;
- if (!getIdByName(contigNames, ss[i], idx, cache))
+ if (!getIdByName(idx, cache, ss[i]))
{
appendValue(tIDs, length(contigNames));
- appendName(contigNames, ss[i], cache);
+ appendName(cache, ss[i]);
}
else
{
@@ -396,7 +396,7 @@ public:
}
}
if (!found)
- record.rID = seqan::maxValue<int>();
+ record.rID = std::numeric_limits<int>::max();
}
};
diff --git a/apps/mason2/mason_variator.cpp b/apps/mason2/mason_variator.cpp
index b3e8b26..cc27c96 100644
--- a/apps/mason2/mason_variator.cpp
+++ b/apps/mason2/mason_variator.cpp
@@ -1136,30 +1136,30 @@ public:
unsigned svIdx = 0;
// Current SNP record, default to sentinel.
SnpRecord snpRecord;
- snpRecord.rId = seqan::maxValue<int>();
+ snpRecord.rId = std::numeric_limits<int>::max();
if (snpsIdx < length(variants.snps))
snpRecord = variants.snps[snpsIdx++];
// Current small indel record, default to sentinel.
SmallIndelRecord smallIndelRecord;
- smallIndelRecord.rId = seqan::maxValue<int>();
+ smallIndelRecord.rId = std::numeric_limits<int>::max();
if (smallIndelIdx < length(variants.smallIndels))
smallIndelRecord = variants.smallIndels[smallIndelIdx++];
// Current SV record, default to sentinel.
StructuralVariantRecord svRecord;
- svRecord.rId = seqan::maxValue<int>();
+ svRecord.rId = std::numeric_limits<int>::max();
if (svIdx < length(variants.svRecords))
svRecord = variants.svRecords[svIdx++];
- while (snpRecord.rId != seqan::maxValue<int>() ||
- smallIndelRecord.rId != seqan::maxValue<int>() ||
- svRecord.rId != seqan::maxValue<int>())
+ while (snpRecord.rId != std::numeric_limits<int>::max() ||
+ smallIndelRecord.rId != std::numeric_limits<int>::max() ||
+ svRecord.rId != std::numeric_limits<int>::max())
{
- if (snpRecord.rId != seqan::maxValue<int>() && smallIndelRecord.rId != seqan::maxValue<int>())
+ if (snpRecord.rId != std::numeric_limits<int>::max() && smallIndelRecord.rId != std::numeric_limits<int>::max())
SEQAN_ASSERT(snpRecord.getPos() != smallIndelRecord.getPos()); // are generated indendently
- if (snpRecord.rId != seqan::maxValue<int>() && svRecord.rId != seqan::maxValue<int>())
+ if (snpRecord.rId != std::numeric_limits<int>::max() && svRecord.rId != std::numeric_limits<int>::max())
SEQAN_ASSERT_MSG(snpRecord.getPos() != svRecord.getPos(),
"Should be generated non-overlapping (snp pos = %d, sv pos = %d).",
snpRecord.pos, svRecord.pos);
- if (smallIndelRecord.rId != seqan::maxValue<int>() && svRecord.rId != seqan::maxValue<int>())
+ if (smallIndelRecord.rId != std::numeric_limits<int>::max() && svRecord.rId != std::numeric_limits<int>::max())
SEQAN_ASSERT(smallIndelRecord.getPos() != svRecord.getPos()); // are generated indendently
SEQAN_ASSERT_NEQ(snpRecord.pos, 0); // Not simulated, VCF complexer.
SEQAN_ASSERT_NEQ(svRecord.pos, 0); // Not simulated, VCF complexer.
@@ -1206,7 +1206,7 @@ public:
}
if (svIdx >= length(variants.svRecords))
- svRecord.rId = seqan::maxValue<int>();
+ svRecord.rId = std::numeric_limits<int>::max();
else
svRecord = variants.svRecords[svIdx++];
}
@@ -1242,11 +1242,11 @@ public:
inTos[ordValue(seqan::Dna5(snpRecord.to))] = true;
if (snpsIdx >= length(variants.snps))
- snpRecord.rId = seqan::maxValue<int>();
+ snpRecord.rId = std::numeric_limits<int>::max();
else
snpRecord = variants.snps[snpsIdx++];
}
- while (snpRecord.rId != seqan::maxValue<int>() &&
+ while (snpRecord.rId != std::numeric_limits<int>::max() &&
snpsIdx < length(variants.snps) &&
snpRecord.getPos() == pos);
@@ -1313,11 +1313,11 @@ public:
appendValue(records, smallIndelRecord);
if (smallIndelIdx >= length(variants.smallIndels))
- smallIndelRecord.rId = seqan::maxValue<int>();
+ smallIndelRecord.rId = std::numeric_limits<int>::max();
else
smallIndelRecord = variants.smallIndels[smallIndelIdx++];
}
- while (smallIndelRecord.rId != seqan::maxValue<int>() &&
+ while (smallIndelRecord.rId != std::numeric_limits<int>::max() &&
smallIndelIdx < length(variants.smallIndels) &&
smallIndelRecord.getPos() == variants.smallIndels[smallIndelIdx].getPos());
SEQAN_ASSERT_NOT(empty(records));
diff --git a/apps/micro_razers/README b/apps/micro_razers/README
index a176f66..2289160 100644
--- a/apps/micro_razers/README
+++ b/apps/micro_razers/README
@@ -43,16 +43,14 @@ MicroRazerS is distributed with SeqAn - The C++ Sequence Analysis Library
5) cd micro_razers
6) ./micro_razers --help
-Alternatively you can check out the latest SVN version of MicroRazerS and SeqAn
+Alternatively you can check out the latest Git version of MicroRazerS and SeqAn
with:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
- 2) cd seqan
- 3) make forwards
- 4) cd projects/library/apps
- 5) make micro_razers
- 6) cd micro_razers
- 7) ./micro_razers --help
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
+ 3) cmake .. -DCMAKE_BUILD_TYPE=Release
+ 4) make micro_razers
+ 5) ./bin/micro_razers --help
On success, an executable file micro_razers was built and a brief usage
description was dumped.
diff --git a/apps/ngs_roi/CMakeLists.txt b/apps/ngs_roi/CMakeLists.txt
index 980224b..2ee38bd 100644
--- a/apps/ngs_roi/CMakeLists.txt
+++ b/apps/ngs_roi/CMakeLists.txt
@@ -23,6 +23,11 @@ if (NOT "${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
find_package (SeqAn CONFIG REQUIRED)
endif ()
+if (NOT ZLIB_FOUND)
+ message (STATUS " ZLIB not found: ngs_roi will not be built.")
+ return ()
+endif ()
+
# ----------------------------------------------------------------------------
# Build Setup
# ----------------------------------------------------------------------------
diff --git a/apps/ngs_roi/project_spliced.cpp b/apps/ngs_roi/project_spliced.cpp
index 3b5b1e2..5f9d8d5 100644
--- a/apps/ngs_roi/project_spliced.cpp
+++ b/apps/ngs_roi/project_spliced.cpp
@@ -77,7 +77,7 @@ void ProjectSplicedRoi::beginContig()
clear(ranges);
// Set current group to invalid.
- currentGroup = seqan::maxValue<unsigned>();
+ currentGroup = std::numeric_limits<unsigned>::max();
}
// ---------------------------------------------------------------------------
@@ -122,7 +122,7 @@ void ProjectSplicedRoi::_updateRanges(seqan::GffRecord const & record,
std::cerr << "Updating " << name << "\t" << record.beginPos << "\t" << record.endPos << "\n";
unsigned idx = 0;
- if (getIdByName(groupNames, name, idx, groupNamesCache))
+ if (getIdByName(idx, groupNamesCache, name))
{
ranges[idx].i1 = std::min(ranges[idx].i1, (int)record.beginPos);
ranges[idx].i2 = std::max(ranges[idx].i2, (int)record.endPos);
@@ -130,7 +130,7 @@ void ProjectSplicedRoi::_updateRanges(seqan::GffRecord const & record,
else
{
idx = length(groupNames);
- appendName(groupNames, name, groupNamesCache);
+ appendName(groupNamesCache, name);
appendValue(ranges, TIntPair(record.beginPos, record.endPos));
}
}
diff --git a/apps/ngs_roi/roi_feature_projection.cpp b/apps/ngs_roi/roi_feature_projection.cpp
index d6c8f96..acb9fde 100644
--- a/apps/ngs_roi/roi_feature_projection.cpp
+++ b/apps/ngs_roi/roi_feature_projection.cpp
@@ -136,7 +136,7 @@ template <typename TRecord>
void makeSentinel(TRecord & record)
{
clear(record.ref);
- record.beginPos = seqan::maxValue<int>();
+ record.beginPos = std::numeric_limits<int>::max();
}
// Configuration object for directly reading BED records with IntersectDriver.
diff --git a/apps/pair_align/lib/pair_align_lib.cpp b/apps/pair_align/lib/pair_align_lib.cpp
index 52bdcb4..5d2ad1b 100644
--- a/apps/pair_align/lib/pair_align_lib.cpp
+++ b/apps/pair_align/lib/pair_align_lib.cpp
@@ -37,4 +37,4 @@
#include "pair_align_lib.h"
// Definition of static variable has to be moved to cpp file.
-int const Options::INVALID_DIAGONAL = seqan::MaxValue<int>::VALUE;
+int const Options::INVALID_DIAGONAL = std::numeric_limits<int>::max();
diff --git a/apps/rabema/rabema_build_gold_standard.cpp b/apps/rabema/rabema_build_gold_standard.cpp
index b6febd0..08ac1fa 100644
--- a/apps/rabema/rabema_build_gold_standard.cpp
+++ b/apps/rabema/rabema_build_gold_standard.cpp
@@ -275,8 +275,8 @@ int intervalizeAndDumpErrorCurves(TStream & stream,
// The position of the previous match, so we can consider only the ones with the smallest error.
//
// The following two vars should be != first pos and contigId.
- size_t previousPos = maxValue<size_t>();
- size_t previousContigId = maxValue<size_t>();
+ size_t previousPos = std::numeric_limits<size_t>::max();
+ size_t previousContigId = std::numeric_limits<size_t>::max();
typedef Iterator<TWeightedMatches>::Type TWeightedMatchesIter;
for (TWeightedMatchesIter it = begin(sortedMatches);
it != end(sortedMatches); ++it)
@@ -396,7 +396,7 @@ void buildErrorCurvePoints(String<WeightedMatch> & errorCurve,
// In oracle Sam mode, the maximum error is the error at the position given in the Sam alignment.
bool oracleMode = false;
- if (maxError == maxValue<int>()) // We are in oracle mode.
+ if (maxError == std::numeric_limits<int>::max()) // We are in oracle mode.
{
oracleMode = true;
Finder<TContigSeq> finder(contig);
@@ -827,10 +827,10 @@ int matchesToErrorFunction(TErrorCurves & errorCurves,
append(record.qName, "/1");
// Translate read to read id.
unsigned readId = 0;
- if (!getIdByName(readNameStore, record.qName, readId, readNameStoreCache))
+ if (!getIdByName(readId, readNameStoreCache, record.qName))
{
readId = length(readNameStore);
- appendName(readNameStore, record.qName, readNameStoreCache);
+ appendName(readNameStoreCache, record.qName);
appendValue(readLengthStore, length(record.seq));
if (options.oracleMode)
appendValue(readAlignmentDistances, -1);
@@ -888,7 +888,7 @@ int matchesToErrorFunction(TErrorCurves & errorCurves,
// In oracle mode, set max error to -1, buildErrorCurvePoints() will use the error at the alignment position
// from the SAM/BAM file. In normal mode, convert from error rate from options to error count.
- int maxError = maxValue<int>();
+ int maxError = std::numeric_limits<int>::max();
if (!options.oracleMode)
maxError = static_cast<int>(floor(0.01 * options.maxError * length(record.seq)));
diff --git a/apps/rabema/rabema_evaluate.cpp b/apps/rabema/rabema_evaluate.cpp
index 6d6b241..89c2707 100644
--- a/apps/rabema/rabema_evaluate.cpp
+++ b/apps/rabema/rabema_evaluate.cpp
@@ -260,9 +260,9 @@ void performIntervalLowering(String<GsiRecord> & gsiRecords, int maxError)
// Add sentinel interval.
GsiRecord sentinel(back(gsiRecords));
- sentinel.firstPos = MaxValue<size_t>::VALUE;
- sentinel.lastPos = MaxValue<size_t>::VALUE;
- // sentinel.id = MaxValue<size_t>::VALUE;
+ sentinel.firstPos = std::numeric_limits<size_t>::max();
+ sentinel.lastPos = std::numeric_limits<size_t>::max();
+ // sentinel.id = std::numeric_limits<size_t>::max();
appendValue(gsiRecords, sentinel);
String<TInterval> openIntervals;
@@ -402,7 +402,7 @@ int benchmarkReadResult(RabemaStats & result,
// In case of oracle mode, we ignore the distance of the intervals in the GSI file here but use it later on.
//
// Start with picking the smallest distance if *-best mode.
- int smallestDistance = options.oracleMode ? maxValue<int>() : options.maxError;
+ int smallestDistance = options.oracleMode ? std::numeric_limits<int>::max() : options.maxError;
// Note that smallestDistance (as bestDistance defined below) is expressed as percent of read length ceiled
// and cat to an int value.
if (options.oracleMode || options.benchmarkCategory == CATEGORY_ANY_BEST ||
@@ -410,7 +410,7 @@ int benchmarkReadResult(RabemaStats & result,
for (unsigned i = 0; i < length(gsiRecords); ++i)
smallestDistance = std::min(smallestDistance, gsiRecords[i].distance);
int largestDistance = options.maxError;
- if (options.oracleMode && smallestDistance != maxValue<int>())
+ if (options.oracleMode && smallestDistance != std::numeric_limits<int>::max())
for (unsigned i = 0; i < length(gsiRecords); ++i)
largestDistance = std::max(largestDistance, gsiRecords[i].distance);
String<GsiRecord> pickedGsiRecords;
@@ -592,7 +592,7 @@ int benchmarkReadResult(RabemaStats & result,
endPos--;
}
- int bestDistance = minValue<int>(); // Marker for "not set yet".
+ int bestDistance = std::numeric_limits<int>::min(); // Marker for "not set yet".
// Note that bestDistance expresses the distance in percent error, relative to the read length, ceiled up
// and converted to an int value.
if (!options.oracleMode)
@@ -652,7 +652,7 @@ int benchmarkReadResult(RabemaStats & result,
for (unsigned i = 0; i < length(queryResult); ++i)
intervalHit[queryResult[i]] = true;
}
- else if (bestDistance != minValue<int>())
+ else if (bestDistance != std::numeric_limits<int>::min())
{
// && bestDistance <= options.maxError)
@@ -664,7 +664,7 @@ int benchmarkReadResult(RabemaStats & result,
// Note that all distances including allowedDistance are percent of read length, ceiled up.
int allowedDistance = options.maxError;
if ((options.benchmarkCategory == CATEGORY_ALL_BEST || options.benchmarkCategory == CATEGORY_ANY_BEST) &&
- (smallestDistance != maxValue<int>()))
+ (smallestDistance != std::numeric_limits<int>::max()))
allowedDistance = smallestDistance;
if (bestDistance > allowedDistance)
{
@@ -708,7 +708,7 @@ int benchmarkReadResult(RabemaStats & result,
resize(foundIntervalsForErrorRate, largestDistance + 1, 0);
if (options.oracleMode || options.benchmarkCategory == CATEGORY_ANY_BEST)
{
- int bestDistance = maxValue<int>();
+ int bestDistance = std::numeric_limits<int>::max();
int bestIdx = 0;
for (unsigned i = 0; i < length(intervalDistances); ++i)
if (intervalHit[i])
@@ -719,7 +719,7 @@ int benchmarkReadResult(RabemaStats & result,
bestIdx = i;
bestDistance = std::min(bestDistance, intervalDistances[i]);
}
- if (bestDistance != maxValue<int>())
+ if (bestDistance != std::numeric_limits<int>::max())
{
if (options.showHitIntervals)
std::cerr << "HIT_BEST\t" << filteredGsiRecords[bestIdx] << "\t" << filteredGsiRecords[bestIdx].originalDistance << "\n";
@@ -765,7 +765,7 @@ int benchmarkReadResult(RabemaStats & result,
result.intervalsToFind += 1;
result.intervalsFound += found;
result.normalizedIntervals += found;
- int d = (smallestDistance == maxValue<int>()) ? 0 : smallestDistance;
+ int d = (smallestDistance == std::numeric_limits<int>::max()) ? 0 : smallestDistance;
result.intervalsToFindForErrorRate[d] += 1;
result.intervalsFoundForErrorRate[d] += found;
result.normalizedIntervalsToFindForErrorRate[d] += 1;
@@ -773,7 +773,7 @@ int benchmarkReadResult(RabemaStats & result,
}
else if (options.benchmarkCategory == CATEGORY_ANY_BEST)
{
- int d = (smallestDistance == maxValue<int>()) ? 0 : smallestDistance;
+ int d = (smallestDistance == std::numeric_limits<int>::max()) ? 0 : smallestDistance;
bool toFind = (numIntervalsForErrorRate[d] > 0u);
bool found = (foundIntervalsForErrorRate[d] > 0u);
SEQAN_ASSERT_LEQ(found, toFind);
diff --git a/apps/rabema/ref_id_mapping.h b/apps/rabema/ref_id_mapping.h
index b858686..69cd755 100644
--- a/apps/rabema/ref_id_mapping.h
+++ b/apps/rabema/ref_id_mapping.h
@@ -79,17 +79,17 @@ inline unsigned length(RefIdMapping const & mapping)
template <typename TTargetNameStore, typename TTargetNameStoreCache, typename TSourceNameStore>
void rebuildMapping(RefIdMapping & mapping,
- TTargetNameStore const & targetNameStore,
+ TTargetNameStore const & /*targetNameStore*/,
TTargetNameStoreCache const & targetNameStoreCache,
TSourceNameStore const & sourceNameStore)
{
clear(mapping.map);
- resize(mapping.map, length(sourceNameStore), maxValue<unsigned>());
+ resize(mapping.map, length(sourceNameStore), std::numeric_limits<unsigned>::max());
for (unsigned i = 0; i < length(sourceNameStore); ++i)
{
unsigned idx = 0;
- if (getIdByName(targetNameStore, sourceNameStore[i], idx, targetNameStoreCache))
+ if (getIdByName(idx, targetNameStoreCache, sourceNameStore[i]))
mapping.map[i] = idx;
}
}
diff --git a/apps/razers/README b/apps/razers/README
index 284e973..3a0c105 100644
--- a/apps/razers/README
+++ b/apps/razers/README
@@ -41,16 +41,14 @@ http://www.seqan.de). To build RazerS do the following:
5) cd razers
6) ./razers --help
-Alternatively you can check out the latest SVN version of RazerS and SeqAn
+Alternatively you can check out the latest Git version of RazerS and SeqAn
with:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
- 2) cd seqan
- 3) make forwards
- 4) cd projects/library/apps
- 5) make razers
- 6) cd razers
- 7) ./razers --help
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
+ 3) cmake .. -DCMAKE_BUILD_TYPE=Release
+ 4) make razers
+ 5) ./bin/razers --help
On success, an executable file razers was build and a brief usage
description was dumped.
diff --git a/apps/razers/outputFormat.h b/apps/razers/outputFormat.h
index ae01817..be854c7 100644
--- a/apps/razers/outputFormat.h
+++ b/apps/razers/outputFormat.h
@@ -934,7 +934,12 @@ void dumpMatches(
}
break;
case 3: // Gff: printf "$chr $name_$format read $pos %ld . $dir . ID=$col[0]$unique$rest\n",$pos+$len-1;
- for (unsigned filecount = 0; filecount < length(genomeFileNameList); ++filecount)
+ // NOTE(marehr): filecount+=2 might be a potential bug [https://github.com/seqan/seqan/issues/2165]
+ // In revision 4dbf27b55 and before, filecount was incremented twice at the
+ // end of the for loop, which caused a compiler warning (once in the body
+ // and once in the iteration_expression of the for loop). We kept this
+ // behaviour, because we have no active maintainer for this app.
+ for (unsigned filecount = 0; filecount < length(genomeFileNameList); filecount+=2)
{
// open genome file
SeqFileIn gFile;
@@ -1201,7 +1206,6 @@ void dumpMatches(
}
}
close(gFile);
- ++filecount;
}
break;
}
diff --git a/apps/razers/razers.h b/apps/razers/razers.h
index 3ea0c30..931b304 100644
--- a/apps/razers/razers.h
+++ b/apps/razers/razers.h
@@ -945,7 +945,7 @@ void countMatches(TMatches &matches, TCounts &cnt)
unsigned readNo = -1;
short editDist = -1;
int64_t count = 0;
- int64_t maxVal = MaxValue<TValue>::VALUE;
+ int64_t maxVal = std::numeric_limits<TValue>::max();
for (; it != itEnd; ++it)
{
@@ -982,7 +982,7 @@ setMaxErrors(TSwift &swift, TReadNo readNo, TMaxErrors maxErrors)
int minT = _qgramLemma(swift, readNo, maxErrors);
if (minT > 1)
{
- if (maxErrors < 0) minT = MaxValue<int>::VALUE;
+ if (maxErrors < 0) minT = std::numeric_limits<int>::max();
// ::std::cout<<" read:"<<readNo<<" newThresh:"<<minT;
setMinThreshold(swift, readNo, (unsigned)minT);
}
@@ -1032,7 +1032,7 @@ void compactMatches(TMatches &matches, TCounts &
++hitCountCutOff; // we keep one more match than we actually want, so we can later decide
// whether the read mapped more than maxhits times
#endif
- int editDistCutOff = MaxValue<int>::VALUE;
+ int editDistCutOff = std::numeric_limits<int>::max();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -1204,7 +1204,7 @@ void purgeAmbiguousRnaMatches(TMatches &matches, TStats &stats, RazerSOptions<TS
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int editDistCutOff = MaxValue<int>::VALUE;
+ int editDistCutOff = std::numeric_limits<int>::max();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -1447,7 +1447,7 @@ matchVerify(
#endif
unsigned ndlLength = sequenceLength(rseqNo, readSet);
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = -(int)(ndlLength * options.errorRate);
TMyersFinder maxPos;
diff --git a/apps/razers/razers_matepairs.h b/apps/razers/razers_matepairs.h
index bc46240..06d8c6b 100644
--- a/apps/razers/razers_matepairs.h
+++ b/apps/razers/razers_matepairs.h
@@ -250,14 +250,14 @@ void compactPairMatches(TMatches &matches, TCounts & /*cnts*/, RazerSOptions<TSp
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
TIterator dit = it;
TIterator ditBeg = it;
- int scoreRangeBest = (options.distanceRange == 0u)? MinValue<int>::VALUE: -(int)options.distanceRange;
+ int scoreRangeBest = (options.distanceRange == 0u)? std::numeric_limits<int>::min(): -(int)options.distanceRange;
// sort
::std::sort(it, itEnd, LessPairErrors<TMatch>());
@@ -468,8 +468,8 @@ void mapMatePairReads(
}
}
- int bestLeftErrors = MaxValue<int>::VALUE;
- int bestLibSizeError = MaxValue<int>::VALUE;
+ int bestLeftErrors = std::numeric_limits<int>::max();
+ int bestLibSizeError = std::numeric_limits<int>::max();
TDequeueIterator bestLeft = TDequeueIterator();
bool rightVerified = false;
@@ -576,7 +576,7 @@ void mapMatePairReads(
}
// verify right mate, if left mate matches
- if (bestLeftErrors != MaxValue<int>::VALUE)
+ if (bestLeftErrors != std::numeric_limits<int>::max())
{
// distance between left mate beginning and right mate end
int64_t dist = (int64_t)mR.gEnd - (int64_t)(*bestLeft).i2.gBegin;
diff --git a/apps/razers/razers_spliced.h b/apps/razers/razers_spliced.h
index 36100f8..57e83e5 100644
--- a/apps/razers/razers_spliced.h
+++ b/apps/razers/razers_spliced.h
@@ -190,7 +190,7 @@ void compactSplicedMatches(TMatches &matches,
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -271,7 +271,7 @@ void compactSplicedMatchesPurgeAmbiguous(TMatches &matches, TCounts & /*cnts*/,
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -355,7 +355,7 @@ void countSplitMatches(TMatches &matches, TCounts &cnt)
unsigned readNo = -1;
short editDist = -1;
int64_t count = 0;
- int64_t maxVal = MaxValue<TValue>::VALUE;
+ int64_t maxVal = std::numeric_limits<TValue>::max();
for (; it != itEnd; ++it)
{
@@ -477,7 +477,7 @@ matchVerify(
#endif
unsigned ndlLength = _min(sequenceLength(rseqNo, readSet),options.minMatchLen);
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = -(int)(ndlLength * options.errorRate);
TMyersFinder maxPos;
@@ -950,7 +950,7 @@ findBestSplitPosition(String<Pair<TScore,int> > & maxColsL,
::std::cout << "findBestSplitEditForward\n";
#endif
- TScore maxSum = minValue<TScore>();
+ TScore maxSum = std::numeric_limits<TScore>::min();
int bestL = rowPosL1;
int bestR = rowPosR1;
while (rowPosL1 <= rowPosL2 && rowPosR1 >= rowPosR2)
@@ -991,7 +991,7 @@ findBestSplitPosition(String<Pair<TScore,int> > & maxColsL,
::std::cout << "findBestSplitEditReverse\n";
#endif
- TScore maxSum = minValue<TScore>();
+ TScore maxSum = std::numeric_limits<TScore>::min();
int bestL = rowPosL2;
int bestR = rowPosR2;
diff --git a/apps/razers/readSimulator.h b/apps/razers/readSimulator.h
index bc04f2d..9b9bedc 100644
--- a/apps/razers/readSimulator.h
+++ b/apps/razers/readSimulator.h
@@ -378,7 +378,7 @@ void simulateReads(
TMyersPattern &myersPattern = forwardPattern;
// find end of best semi-global alignment
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = -(int)countErrors;
TMyersFinder maxPos;
while (find(myersFinder, myersPattern, minScore))
diff --git a/apps/razers/tests/run_tests.py b/apps/razers/tests/run_tests.py
index 6fd2cb8..ff0b4bd 100644
--- a/apps/razers/tests/run_tests.py
+++ b/apps/razers/tests/run_tests.py
@@ -12,6 +12,7 @@ Usage: run_tests.py SOURCE_ROOT_PATH BINARY_ROOT_PATH
import logging
import os.path
import sys
+import platform
# Automagically add util/py_lib to PYTHONPATH environment variable.
path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..',
@@ -23,6 +24,12 @@ import seqan.app_tests as app_tests
def main(source_base, binary_base):
"""Main entry point of the script."""
+ # gold standard binary files created on little endian
+ if platform.machine().startswith('mips64'):
+ print 'Skipping tests for Razers on mips64el'
+ print '====================================='
+ return 0
+
print 'Executing test for razers'
print '========================='
print
diff --git a/apps/razers3/README b/apps/razers3/README
index cd912ce..8b4e1d3 100644
--- a/apps/razers3/README
+++ b/apps/razers3/README
@@ -51,23 +51,23 @@ and BAM formats (.sam or .bam).
2. Installation
------------------------------------------------------------------------------
-To install RazerS 3, you can either compile the latest version from the SVN
-trunk or use a precompiled binary.
+To install RazerS 3, you can either compile the latest version from the Git
+version or use a precompiled binary.
------------------------------------------------------------------------------
2.1. Compilation from source code
------------------------------------------------------------------------------
Follow the "Getting Started" section on http://trac.seqan.de/wiki and check
-out the latest SVN trunk. Instead of creating a project file in Debug mode,
+out the latest Git repo. Instead of creating a project file in Debug mode,
switch to Release mode (-DCMAKE_BUILD_TYPE=Release) and compile razers3. This
can be done as follows:
- svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan seqan-trunk
- mkdir seqan-trunk/build
- cd seqan-trunk/build
- cmake .. -DCMAKE_BUILD_TYPE=Release
- make razers3
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
+ 3) cmake .. -DCMAKE_BUILD_TYPE=Release
+ 4) make razers3
+ 5) ./bin/razers3 --help
If RazerS 3 will be run on the same machine it is compiled on, you may
consider to optimize for the given system architecture. For gcc or llvm/clang
diff --git a/apps/razers3/razers.h b/apps/razers3/razers.h
index f898689..d5f79e4 100644
--- a/apps/razers3/razers.h
+++ b/apps/razers3/razers.h
@@ -70,12 +70,12 @@ struct MatchRecord
static const unsigned INVALID_ID;
MatchRecord() :
- contigId(MaxValue<unsigned>::VALUE), readId(MaxValue<unsigned>::VALUE),
+ contigId(std::numeric_limits<unsigned>::max()), readId(std::numeric_limits<unsigned>::max()),
beginPos(0), endPos(0),
#ifdef RAZERS_DEFER_COMPACTION
isRegistered(false),
#endif // #ifndef RAZERS_DEFER_COMPACTION
- orientation('-'), score(0), pairMatchId(MaxValue<unsigned>::VALUE),
+ orientation('-'), score(0), pairMatchId(std::numeric_limits<unsigned>::max()),
libDiff(0), pairScore(0)
{}
};
@@ -89,7 +89,7 @@ operator<<(TStream & stream, MatchRecord<TPos> & record)
}
template <typename TGPos_>
-const unsigned MatchRecord<TGPos_>::INVALID_ID = MaxValue<unsigned>::VALUE;
+const unsigned MatchRecord<TGPos_>::INVALID_ID = std::numeric_limits<unsigned>::max();
#ifdef RAZERS_PROFILE
enum
@@ -551,7 +551,7 @@ struct MatchVerifier
double compactionTime;
MatchVerifier() :
- genomeLength(0), rightClip(0), sinkPos(MaxValue<TContigPos>::VALUE), onReverseComplement(false), oneMatchPerBucket(false), compactionTime(0) {}
+ genomeLength(0), rightClip(0), sinkPos(std::numeric_limits<TContigPos>::max()), onReverseComplement(false), oneMatchPerBucket(false), compactionTime(0) {}
MatchVerifier(TMatches_ & _matches, TOptions & _options, TFilterPattern & _filterPattern, TCounts & _cnts) :
matches(&_matches),
@@ -561,7 +561,7 @@ struct MatchVerifier
{
genomeLength = 0;
rightClip = 0;
- sinkPos = MaxValue<TContigPos>::VALUE >> 1;
+ sinkPos = std::numeric_limits<TContigPos>::max() >> 1;
onReverseComplement = false;
oneMatchPerBucket = false;
compactionTime = 0;
@@ -1478,7 +1478,7 @@ void countMatches(TFragmentStore & store, TCounts & cnt, TRazerSMode const &)
unsigned readId = TAlignedRead::INVALID_ID;
short errors = -1;
int64_t count = 0;
- int64_t maxVal = MaxValue<TValue>::VALUE;
+ int64_t maxVal = std::numeric_limits<TValue>::max();
#ifdef RAZERS_PROFILE
timelineBeginTask(TASK_SORT);
@@ -1534,7 +1534,7 @@ setMaxErrors(Pattern<TIndex, Swift<TSwiftSpec> > & filterPattern, TReadNo readNo
{
// std::cout<<" read:"<<readNo<<" newThresh:"<<minT;
if (maxErrors < 0)
- minT = MaxValue<int>::VALUE;
+ minT = std::numeric_limits<int>::max();
setMinThreshold(filterPattern, readNo, (unsigned)minT);
}
}
@@ -1568,8 +1568,8 @@ void compactMatches(
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreCutOff = MinValue<int>::VALUE;
- int scoreRangeBest = (IsSameType<TAlignMode, RazerSGlobal>::VALUE && !IsSameType<TScoreMode, RazerSScore>::VALUE) ? -(int)options.scoreDistanceRange : MaxValue<int>::VALUE;
+ int scoreCutOff = std::numeric_limits<int>::min();
+ int scoreRangeBest = (IsSameType<TAlignMode, RazerSGlobal>::VALUE && !IsSameType<TScoreMode, RazerSScore>::VALUE) ? -(int)options.scoreDistanceRange : std::numeric_limits<int>::max();
ignoreUnusedVariableWarning(scoreRangeBest);
ignoreUnusedVariableWarning(compactMode);
@@ -1863,7 +1863,7 @@ matchVerify(
TGenomeIterator git = begin(inf, Standard());
TGenomeIterator gitEnd = end(inf, Standard()) - (ndlLength - 1);
- unsigned errorThresh = (verifier.oneMatchPerBucket) ? MaxValue<unsigned>::VALUE : maxErrors;
+ unsigned errorThresh = (verifier.oneMatchPerBucket) ? std::numeric_limits<unsigned>::max() : maxErrors;
unsigned minErrors = maxErrors + 2;
int bestHitLength = 0;
@@ -2007,7 +2007,7 @@ matchVerify(
TGenomeIterator gitEnd = end(inf, Standard()) - (ndlLength - 1);
int maxScore = minScore - 1;
- int scoreThresh = (verifier.oneMatchPerBucket) ? MaxValue<int>::VALUE : minScore;
+ int scoreThresh = (verifier.oneMatchPerBucket) ? std::numeric_limits<int>::max() : minScore;
int score, errors;
for (; git < gitEnd; ++git)
@@ -2137,14 +2137,14 @@ matchVerify(
typedef Pattern<TReadRev, MyersUkkonenGlobal> TMyersPatternRev;
unsigned ndlLength = length(read);
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = verifier.options->errorCutOff[readId];
if (minScore == 0)
return false;
minScore = -minScore + 1;
- TDistance minSinkDistance = MaxValue<TDistance>::VALUE;
+ TDistance minSinkDistance = std::numeric_limits<TDistance>::max();
TPosition maxPos = 0;
TPosition lastPos = length(inf);
#ifdef RAZERS_ISLAND_CRITERION
@@ -2282,7 +2282,7 @@ matchVerify(
verifier.push();
maxScore = minScore - 1;
- minSinkDistance = MaxValue<TDistance>::VALUE;
+ minSinkDistance = std::numeric_limits<TDistance>::max();
}
}
#endif // #ifdef RAZERS_ISLAND_CRITERION
@@ -2466,7 +2466,7 @@ void computeQGramLengths(TDelta & minDelta, TOptions const & options)
unsigned seqCount = 0;
String<unsigned> maxDelta;
- resize(minDelta, options.maxOverlap + 1, MaxValue<unsigned>::VALUE);
+ resize(minDelta, options.maxOverlap + 1, std::numeric_limits<unsigned>::max());
resize(maxDelta, options.maxOverlap + 1, 3);
// compute delta (==stepSize) for different overlaps
diff --git a/apps/razers3/razers_match_filter.h b/apps/razers3/razers_match_filter.h
index 05bc4ef..cf8e422 100644
--- a/apps/razers3/razers_match_filter.h
+++ b/apps/razers3/razers_match_filter.h
@@ -174,7 +174,7 @@ inline void
registerRead(MatchFilter<TOptionsSpec, TReadSeqSet, TCallback> & filter, unsigned readId, int score)
{
// std::cerr << "registering read " << readId << std::endl;
- if (filter.hitCount[readId - filter.readOffset] == MaxValue<unsigned>::VALUE)
+ if (filter.hitCount[readId - filter.readOffset] == std::numeric_limits<unsigned>::max())
return;
if (++filter.hitCount[readId - filter.readOffset] < filter.matchThreshold)
@@ -254,7 +254,7 @@ processRead(MatchFilter<TOptionsSpec, TReadSeqSet, TCallback> & filter, unsigned
{
_freeHistogram(filter, histogramId);
filter.readIdToHistogramId.erase(readId);
- filter.hitCount[readId - filter.readOffset] = MaxValue<unsigned>::VALUE;
+ filter.hitCount[readId - filter.readOffset] = std::numeric_limits<unsigned>::max();
return true;
}
return false;
diff --git a/apps/razers3/razers_matepairs.h b/apps/razers3/razers_matepairs.h
index bfe549e..f0329d4 100644
--- a/apps/razers3/razers_matepairs.h
+++ b/apps/razers3/razers_matepairs.h
@@ -425,8 +425,8 @@ void compactPairMatches(
unsigned matePairId = -2;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
- int scoreRangeBest = (options.scoreDistanceRange == 0u) ? MinValue<int>::VALUE : -(int)options.scoreDistanceRange;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
+ int scoreRangeBest = (options.scoreDistanceRange == 0u) ? std::numeric_limits<int>::min() : -(int)options.scoreDistanceRange;
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -751,8 +751,8 @@ void _mapMatePairReads(
}
}
- int bestLeftScore = MinValue<int>::VALUE;
- int bestLibSizeError = MaxValue<int>::VALUE;
+ int bestLeftScore = std::numeric_limits<int>::min();
+ int bestLibSizeError = std::numeric_limits<int>::max();
TDequeueIterator bestLeft = TDequeueIterator();
bool rightVerified = false;
@@ -916,7 +916,7 @@ void _mapMatePairReads(
}
// verify right mate, if left mate matches
- if (bestLeftScore != MinValue<int>::VALUE)
+ if (bestLeftScore != std::numeric_limits<int>::min())
{
fL.i2 = (*bestLeft).i2;
diff --git a/apps/razers3/razers_matepairs_parallel.h b/apps/razers3/razers_matepairs_parallel.h
index 7854ced..b57b37d 100644
--- a/apps/razers3/razers_matepairs_parallel.h
+++ b/apps/razers3/razers_matepairs_parallel.h
@@ -371,7 +371,7 @@ void initializeThreadLocalStoragesPaired(TThreadLocalStorages & threadLocalStora
typedef typename TThreadLocalStorage::TMatchFilter TMatchFilter;
double READ_FRAC_WITH_HISTO = 0.01;
tls.matchFilter.reset(new TMatchFilter(tls.splitters[i + 1] - tls.splitters[i], options.matchHistoStartThreshold, READ_FRAC_WITH_HISTO, tls, tls.splitters[i], tls.globalStore->readSeqStore, tls.options));
- tls.options.compactThresh = MaxValue<unsigned>::VALUE;
+ tls.options.compactThresh = std::numeric_limits<unsigned>::max();
#endif // #ifdef RAZERS_DEFER_COMPACTION
unsigned offset = splitters[i];
@@ -663,8 +663,8 @@ void workVerification(ThreadLocalStorage<MapPairedReads<TMatches, TFragmentStore
}
}
- int bestLeftScore = MinValue<int>::VALUE;
- int bestLibSizeError = MaxValue<int>::VALUE;
+ int bestLeftScore = std::numeric_limits<int>::min();
+ int bestLibSizeError = std::numeric_limits<int>::max();
TDequeueIterator bestLeft = TDequeueIterator();
bool rightVerified = false;
@@ -822,7 +822,7 @@ void workVerification(ThreadLocalStorage<MapPairedReads<TMatches, TFragmentStore
}
// (4) Verify right mate, if left mate matches.
- if (bestLeftScore != MinValue<int>::VALUE)
+ if (bestLeftScore != std::numeric_limits<int>::min())
{
fL.i2 = (*bestLeft).i2;
@@ -1477,7 +1477,7 @@ int _mapMatePairReadsParallel(
// Save compaction threshold and set global threshold to infinity, so matchVerify does not compact!
int oldThreshold = options.compactThresh;
- options.compactThresh = MaxValue<unsigned>::VALUE;
+ options.compactThresh = std::numeric_limits<unsigned>::max();
SEQAN_PROTIMESTART(findTime);
for (int contigId = 0; contigId < (int)length(store.contigStore); ++contigId)
diff --git a/apps/razers3/razers_paired_match_filter.h b/apps/razers3/razers_paired_match_filter.h
index c4d9049..4eaac9d 100644
--- a/apps/razers3/razers_paired_match_filter.h
+++ b/apps/razers3/razers_paired_match_filter.h
@@ -83,7 +83,7 @@ inline void
registerRead(PairedMatchFilter<TOptionsSpec, TReadSeqSet, TCallback> & filter, unsigned pairId, int score)
{
// std::cerr << "registering read " << pairId << std::endl;
- if (filter.hitCount[pairId - filter.readOffset] == MaxValue<unsigned>::VALUE)
+ if (filter.hitCount[pairId - filter.readOffset] == std::numeric_limits<unsigned>::max())
return;
if (++filter.hitCount[pairId - filter.readOffset] < filter.matchThreshold)
@@ -170,7 +170,7 @@ processRead(PairedMatchFilter<TOptionsSpec, TReadSeqSet, TCallback> & filter, un
{
_freeHistogram(filter, histogramId);
filter.pairIdToHistogramId.erase(pairId);
- filter.hitCount[pairId - filter.readOffset] = MaxValue<unsigned>::VALUE;
+ filter.hitCount[pairId - filter.readOffset] = std::numeric_limits<unsigned>::max();
return true;
}
return false;
diff --git a/apps/razers3/razers_parallel.h b/apps/razers3/razers_parallel.h
index 3555004..7113973 100644
--- a/apps/razers3/razers_parallel.h
+++ b/apps/razers3/razers_parallel.h
@@ -353,8 +353,8 @@ writeBackToLocal(ThreadLocalStorage<MapSingleReads<TMatches, TFragmentStore, TFi
unsigned const DELTA = getMaxDeviationOfOrder(tls.filterPattern);
// std::cerr << "(DELTA=" << DELTA << ")";
//std::cerr << "[DELTA=" << DELTA << std::endl;
- size_t firstBeginPos = MaxValue<size_t>::VALUE; // Leftmost sort position, required later for masking.
- size_t firstWindowBegin = MaxValue<size_t>::VALUE; // Leftmost sort position, required later for masking.
+ size_t firstBeginPos = std::numeric_limits<size_t>::max(); // Leftmost sort position, required later for masking.
+ size_t firstWindowBegin = std::numeric_limits<size_t>::max(); // Leftmost sort position, required later for masking.
unsigned bucketsWrittenBack = 0;
// (2) Write back the longest contiguous sequence of full buckets.
for (; tls.nextBucketToWriteBack < length(tls.missingInBucket) && tls.missingInBucket[tls.nextBucketToWriteBack] == 0u; ++tls.nextBucketToWriteBack, ++bucketsWrittenBack)
@@ -394,7 +394,7 @@ writeBackToLocal(ThreadLocalStorage<MapSingleReads<TMatches, TFragmentStore, TFi
size_t dPos = 1;
// Exponential search backwards. After masking, reads are sorted by begin position.
size_t windowBegin = tls.options.windowSize * idx;
- if (firstWindowBegin == MaxValue<size_t>::VALUE)
+ if (firstWindowBegin == std::numeric_limits<size_t>::max())
firstWindowBegin = windowBegin;
while (beginPos > 0u &&
static_cast<size_t>(tls.matches[beginPos].beginPos) < windowBegin &&
@@ -414,7 +414,7 @@ writeBackToLocal(ThreadLocalStorage<MapSingleReads<TMatches, TFragmentStore, TFi
// LessBeginPos<TMatch> cmp;
// TIterator it = std::lower_bound(begin(tls.matches, Standard()) + beginPos, end(tls.matches, Standard()), m, cmp);
// beginPos = it - begin(tls.matches, Standard());
- if (firstBeginPos == MaxValue<size_t>::VALUE)
+ if (firstBeginPos == std::numeric_limits<size_t>::max())
firstBeginPos = beginPos;
// SEQAN_OMP_PRAGMA(critical)
@@ -675,7 +675,7 @@ void _mapSingleReadsParallelToContig(
// SEQAN_OMP_PRAGMA(critical)
// std::cerr << "window count: " << length(tls.verificationResultBuckets) << std::endl;
clear(tls.missingInBucket);
- resize(tls.missingInBucket, length(tls.verificationResultBuckets), MaxValue<unsigned>::VALUE);
+ resize(tls.missingInBucket, length(tls.verificationResultBuckets), std::numeric_limits<unsigned>::max());
// For each filtration window...
bool hasMore = !empty(host(tls.filterFinder));
@@ -841,7 +841,7 @@ void initializeThreadLocalStoragesSingle(TThreadLocalStorages & threadLocalStora
typedef typename TThreadLocalStorage::TMatchFilter TMatchFilter;
double READ_FRAC_WITH_HISTO = 0.01;
tls.matchFilter.reset(new TMatchFilter(tls.splitters[tls.threadId + 1] - tls.splitters[tls.threadId], options.matchHistoStartThreshold, READ_FRAC_WITH_HISTO, tls, tls.splitters[tls.threadId], tls.globalStore->readSeqStore, tls.options));
- tls.options.compactThresh = MaxValue<unsigned>::VALUE;
+ tls.options.compactThresh = std::numeric_limits<unsigned>::max();
#endif // #ifdef RAZERS_DEFER_COMPACTION
// Clear pattern and set parameters.
@@ -1022,7 +1022,7 @@ int _mapSingleReadsParallel(
// Save compaction threshold and set global threshold to infinity, so matchVerify does not compact!
int oldThreshold = options.compactThresh;
- options.compactThresh = MaxValue<unsigned>::VALUE;
+ options.compactThresh = std::numeric_limits<unsigned>::max();
// For each contig: Map reads in parallel.
SEQAN_PROTIMESTART(findTime);
diff --git a/apps/razers3/readSimulator.h b/apps/razers3/readSimulator.h
index aa3df4c..3a52a92 100644
--- a/apps/razers3/readSimulator.h
+++ b/apps/razers3/readSimulator.h
@@ -381,7 +381,7 @@ void simulateReads(
TMyersPattern &myersPattern = forwardPattern;
// find end of best semi-global alignment
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = -(int)countErrors;
TMyersFinder maxPos;
while (find(myersFinder, myersPattern, minScore))
diff --git a/apps/sak/sak.cpp b/apps/sak/sak.cpp
index bb1f23a..7762286 100644
--- a/apps/sak/sak.cpp
+++ b/apps/sak/sak.cpp
@@ -85,9 +85,9 @@ struct SakOptions
SakOptions() :
verbosity(1),
seqInfixBegin(0),
- seqInfixEnd(seqan::maxValue<uint64_t>()),
+ seqInfixEnd(std::numeric_limits<uint64_t>::max()),
reverseComplement(false),
- maxLength(seqan::maxValue<uint64_t>())
+ maxLength(std::numeric_limits<uint64_t>::max())
{
}
};
@@ -118,7 +118,7 @@ bool parseRange(TNum & beginPos, TNum & endPos, seqan::CharString const & rangeS
if (empty(buffer))
{
- endPos = seqan::maxValue<TNum>();
+ endPos = std::numeric_limits<TNum>::max();
return true;
}
@@ -354,12 +354,12 @@ int main(int argc, char ** argv)
}
// Compute index of last sequence to write if any.
- uint64_t endIdx = seqan::maxValue<uint64_t>();
+ uint64_t endIdx = std::numeric_limits<uint64_t>::max();
for (unsigned i = 0; i < length(options.seqIndices); ++i)
- if (endIdx == seqan::maxValue<uint64_t>() || endIdx > options.seqIndices[i] + 1)
+ if (endIdx == std::numeric_limits<uint64_t>::max() || endIdx > options.seqIndices[i] + 1)
endIdx = options.seqIndices[i] + 1;
for (unsigned i = 0; i < length(options.seqIndexRanges); ++i)
- if (endIdx == seqan::maxValue<uint64_t>() || endIdx > options.seqIndexRanges[i].i2)
+ if (endIdx == std::numeric_limits<uint64_t>::max() || endIdx > options.seqIndexRanges[i].i2)
endIdx = options.seqIndexRanges[i].i2;
if (options.verbosity >= 2)
std::cerr << "Sequence end idx: " << endIdx << "\n";
diff --git a/apps/samcat/CMakeLists.txt b/apps/samcat/CMakeLists.txt
index 963ec67..1fada83 100644
--- a/apps/samcat/CMakeLists.txt
+++ b/apps/samcat/CMakeLists.txt
@@ -23,6 +23,11 @@ if (NOT "${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
find_package (SeqAn CONFIG REQUIRED)
endif ()
+if (NOT ZLIB_FOUND)
+ message (STATUS " ZLIB not found: samcat will not be built.")
+ return ()
+endif ()
+
# ----------------------------------------------------------------------------
# Build Setup
# ----------------------------------------------------------------------------
diff --git a/apps/searchjoin/db.h b/apps/searchjoin/db.h
index 2ef7a45..bec0120 100644
--- a/apps/searchjoin/db.h
+++ b/apps/searchjoin/db.h
@@ -130,25 +130,25 @@ namespace seqan
template <>
struct Fibre<TDbDnaSaSmall, FibreSA>
{
- typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, DefaultIndexStringSpec<TDbDnaSaSmall>::Type> Type;
+ typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, StringSpec<TDbDnaSaSmall>::Type> Type;
};
template <>
struct Fibre<TDbGeoSaSmall, FibreSA>
{
- typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, DefaultIndexStringSpec<TDbGeoSaSmall>::Type> Type;
+ typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, StringSpec<TDbGeoSaSmall>::Type> Type;
};
template <>
struct Fibre<TDbDnaSaHuge, FibreSA>
{
- typedef String<Pair<unsigned int, unsigned char, Pack>, DefaultIndexStringSpec<TDbDnaSaHuge>::Type> Type;
+ typedef String<Pair<unsigned int, unsigned char, Pack>, StringSpec<TDbDnaSaHuge>::Type> Type;
};
template <>
struct Fibre<TDbGeoSaHuge, FibreSA>
{
- typedef String<Pair<unsigned int, unsigned char, Pack>, DefaultIndexStringSpec<TDbDnaSaHuge>::Type> Type;
+ typedef String<Pair<unsigned int, unsigned char, Pack>, StringSpec<TDbDnaSaHuge>::Type> Type;
};
}
@@ -159,7 +159,7 @@ struct Fibre<TDbGeoSaHuge, FibreSA>
//template <typename TText>
//struct ShapeLength
//{
-// static const unsigned VALUE = MaxValue<typename Size<TText>::Type>::VALUE;
+// static const unsigned VALUE = std::numeric_limits<typename Size<TText>::Type>::max();
//};
//
//template <>
@@ -511,8 +511,8 @@ bool load(Db<TText, TSpec> & db, TFileName const & fileName)
TDbParser parser(db);
// Initialize min/max text length.
- db.minLength = MaxValue<TTextSize>::VALUE;
- db.maxLength = MinValue<TTextSize>::VALUE;
+ db.minLength = std::numeric_limits<TTextSize>::max();
+ db.maxLength = std::numeric_limits<TTextSize>::min();
// Read the file.
while (!atEnd(inputIt))
@@ -573,10 +573,10 @@ void split(Db<TText, Query> & dbShort, Db<TText, Query> & dbLong, Db<TText, Quer
TDbSize dbSize = length(db.text);
// Initialize min/max text length.
- dbShort.minLength = MaxValue<TTextSize>::VALUE;
- dbShort.maxLength = MinValue<TTextSize>::VALUE;
- dbLong.minLength = MaxValue<TTextSize>::VALUE;
- dbLong.maxLength = MinValue<TTextSize>::VALUE;
+ dbShort.minLength = std::numeric_limits<TTextSize>::max();
+ dbShort.maxLength = std::numeric_limits<TTextSize>::min();
+ dbLong.minLength = std::numeric_limits<TTextSize>::max();
+ dbLong.maxLength = std::numeric_limits<TTextSize>::min();
for (TDbSize dbId = 0; dbId < dbSize; ++dbId)
{
@@ -834,7 +834,7 @@ void build(DbIndex<Index<TText, TIndexSpec>, TDbIndexSpec> & dbIndex,
// }
// }
//
-// QGramLess_<TIndexSAPos, TText const> less(db.text, MaxValue<TTextSize>::VALUE);
+// QGramLess_<TIndexSAPos, TText const> less(db.text, std::numeric_limits<TTextSize>::max());
// sort(sa, less, Parallel());
}
@@ -923,7 +923,7 @@ void _buildSA(TIndexSAFibre & sa,
TTextSize textLength = length(text);
TErrors errors = getErrors(db, dbId);
-
+
TTextSize seedCount = _max(textLength / seedLength, 1u);
TSeedErrors seedErrors_ = errors / seedCount;
TTextSize seedCountHigh = (errors % seedCount) + 1;
diff --git a/apps/sgip/sgip_base.h b/apps/sgip/sgip_base.h
index a471240..0e3d3b6 100644
--- a/apps/sgip/sgip_base.h
+++ b/apps/sgip/sgip_base.h
@@ -310,11 +310,11 @@ inline int compare_(std::vector<TValue> const & obj1, std::vector<TValue> const
tiEnd = obj2.end();
while (it < itEnd && ti < tiEnd)
{
- if (getValue(it) < getValue(ti))
+ if (*it < *ti)
{
return -1;
}
- else if (getValue(it) > getValue(ti))
+ else if (*it > *ti)
{
return 1;
}
diff --git a/apps/snp_store/README b/apps/snp_store/README
index 69427cb..4112f41 100644
--- a/apps/snp_store/README
+++ b/apps/snp_store/README
@@ -26,7 +26,7 @@ Reads can optionally be realigned, using the ReAligner algorithm by Anson
and Myers.
Please note: SnpStore is work in progress! Keep yourself up to date by
-checking out the latest version of SnpStore from the SeqAn SVN repository
+checking out the latest version of SnpStore from the SeqAn Git repository
(instructions follow below).
@@ -45,13 +45,13 @@ http://www.seqan.de). To build SnpStore do the following:
6) ./apps/snp_store
Alternatively - and this is what I recommend - you can check out the latest
-SVN version of SnpStore and SeqAn with:
+Git version of SnpStore and SeqAn with:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
- 2) cd seqan/build
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
3) cmake .. -DCMAKE_BUILD_TYPE=Release
- 5) make snp_store
- 7) ./apps/snp_store
+ 4) make snp_store
+ 5) ./bin/snp_store --help
If successful, an executable file snp_store was built and a brief usage
description was dumped.
diff --git a/apps/snp_store/snp_store.cpp b/apps/snp_store/snp_store.cpp
index cb6ad0d..419e90f 100755
--- a/apps/snp_store/snp_store.cpp
+++ b/apps/snp_store/snp_store.cpp
@@ -158,8 +158,8 @@ copyNextWindowMatchesAndReads(TFragmentStore &fragmentStore,
--mIt;
// We will use minCoord/maxCoord to store the temporarily minimal and maximal coordinates in the window.
- int minCoord = maxValue<int>();
- int maxCoord = minValue<int>();
+ int minCoord = std::numeric_limits<int>::max();
+ int maxCoord = std::numeric_limits<int>::min();
//CharString str = "discBef";
//_dumpMatches(fragmentStore, str);
@@ -187,9 +187,9 @@ copyNextWindowMatchesAndReads(TFragmentStore &fragmentStore,
}
// Write minimal and maximal coordinate from reads in this window to options.minCoord/options.maxCoord.
- if (minCoord != maxValue<int>())
+ if (minCoord != std::numeric_limits<int>::max())
options.minCoord = minCoord;
- if (maxCoord != minValue<int>())
+ if (maxCoord != std::numeric_limits<int>::min())
options.maxCoord = maxCoord;
if(options._debugLevel > 1)
@@ -817,7 +817,7 @@ int detectSNPs(SNPCallingOptions<TSpec> &options)
TReadCounts tmpReadCounts;
TReadClips tmpReadClips;
TReadCigars tmpReadCigars;
- options.minCoord = MaxValue<unsigned>::VALUE;
+ options.minCoord = std::numeric_limits<unsigned>::max();
options.maxCoord = 0;
// snp calling is done for all positions between windowBegin and windowEnd
diff --git a/apps/snp_store/snp_store.h b/apps/snp_store/snp_store.h
index 6aaee0f..2288c19 100755
--- a/apps/snp_store/snp_store.h
+++ b/apps/snp_store/snp_store.h
@@ -297,7 +297,7 @@ struct FragmentStoreConfig<SnpStoreGroupSpec_> :
windowSize = 1000000;
windowBuff = 70;
- minCoord = maxValue<unsigned>();
+ minCoord = std::numeric_limits<unsigned>::max();
maxCoord = 0;
maxHitLength = 1;
@@ -1161,7 +1161,7 @@ int readMatchesFromGFF_Batch(
options.maxHitLength = endPos - beginPos;
// remember min and max positions seen
- if(beginPos < (TContigPos)options.minCoord || options.minCoord == maxValue<unsigned>()) options.minCoord = (unsigned)beginPos;
+ if(beginPos < (TContigPos)options.minCoord || options.minCoord == std::numeric_limits<unsigned>::max()) options.minCoord = (unsigned)beginPos;
if(endPos > (TContigPos)options.maxCoord) options.maxCoord = (unsigned)endPos;
// create match m
@@ -1658,7 +1658,7 @@ int readMatchesFromSamBam_Batch(
options.maxHitLength = endPos - beginPos;
// remember min and max positions seen
- if(beginPos < (TContigPos)options.minCoord || options.minCoord == maxValue<unsigned>()) options.minCoord = (unsigned)beginPos;
+ if(beginPos < (TContigPos)options.minCoord || options.minCoord == std::numeric_limits<unsigned>::max()) options.minCoord = (unsigned)beginPos;
if(endPos > (TContigPos)options.maxCoord) options.maxCoord = (unsigned)endPos;
// create match m
diff --git a/apps/splazers/README b/apps/splazers/README
index 938b2e7..b6721f6 100644
--- a/apps/splazers/README
+++ b/apps/splazers/README
@@ -43,14 +43,13 @@ SeqAn projects download page: http://www.seqan.de/downloads/projects.html
SplazerS is distributed with SeqAn - The C++ Sequence Analysis Library (see
http://www.seqan.de). To build SplazerS yourself you can check out the latest
-SVN version of SplazerS and SeqAn with:
-
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan seqan-trunk
- 2) mkdir seqan-trunk/build/
- 3) cd seqan-trunk/build/
- 4) cmake .. -DCMAKE_BUILD_TYPE=Release
- 5) make splazers
- 6) ./apps/splazers/splazers --help
+Git version of SplazerS and SeqAn with:
+
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
+ 3) cmake .. -DCMAKE_BUILD_TYPE=Release
+ 4) make splazers
+ 5) ./bin/splazers --help
Alternatively, you can download the latest SeqAn snapshot and build SplazerS
with:
diff --git a/apps/splazers/outputFormat.h b/apps/splazers/outputFormat.h
index 80557c4..3fd0f0c 100644
--- a/apps/splazers/outputFormat.h
+++ b/apps/splazers/outputFormat.h
@@ -1112,7 +1112,12 @@ void dumpMatches(
}
break;
case 3: // Gff: printf "$chr $name_$format read $pos %ld . $dir . ID=$col[0]$unique$rest\n",$pos+$len-1;
- for (unsigned filecount = 0; filecount < length(genomeFileNameList); ++filecount)
+ // NOTE(marehr): filecount+=2 might be a potential bug [https://github.com/seqan/seqan/issues/2165]
+ // In revision 4dbf27b55 and before, filecount was incremented twice at the
+ // end of the for loop, which caused a compiler warning (once in the body
+ // and once in the iteration_expression of the for loop). We kept this
+ // behaviour, because we have no active maintainer for this app.
+ for (unsigned filecount = 0; filecount < length(genomeFileNameList); filecount+=2)
{
// open genome file
SeqFileIn gFile;
@@ -1358,7 +1363,6 @@ void dumpMatches(
}
}
close(gFile);
- ++filecount;
}
break;
case 4: // SAM output for splitMatches
diff --git a/apps/splazers/razers.h b/apps/splazers/razers.h
index 3c1669f..72e32ff 100644
--- a/apps/splazers/razers.h
+++ b/apps/splazers/razers.h
@@ -917,7 +917,7 @@ void countMatches(TMatches &matches, TCounts &cnt)
unsigned readNo = -1;
short editDist = -1;
int64_t count = 0;
- int64_t maxVal = MaxValue<TValue>::VALUE;
+ int64_t maxVal = std::numeric_limits<TValue>::max();
for (; it != itEnd; ++it)
{
@@ -954,7 +954,7 @@ setMaxErrors(TSwift &swift, TReadNo readNo, TMaxErrors maxErrors)
int minT = _qgramLemma(swift, readNo, maxErrors);
if (minT > 1)
{
- if (maxErrors < 0) minT = MaxValue<int>::VALUE;
+ if (maxErrors < 0) minT = std::numeric_limits<int>::max();
// ::std::cout<<" read:"<<readNo<<" newThresh:"<<minT;
setMinThreshold(swift, readNo, (unsigned)minT);
}
@@ -1002,7 +1002,7 @@ void compactMatches(TMatches &matches, TCounts &
++hitCountCutOff; // we keep one more match than we actually want, so we can later decide
// whether the read mapped more than maxhits times
#endif
- int editDistCutOff = MaxValue<int>::VALUE;
+ int editDistCutOff = std::numeric_limits<int>::max();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -1165,7 +1165,7 @@ void purgeAmbiguousRnaMatches(TMatches &matches, RazerSOptions<TSpec> &options)
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int editDistCutOff = MaxValue<int>::VALUE;
+ int editDistCutOff = std::numeric_limits<int>::max();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -1406,7 +1406,7 @@ matchVerify(
#endif
unsigned ndlLength = sequenceLength(rseqNo, readSet);
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = -(int)(ndlLength * options.errorRate);
TMyersFinder maxPos;
diff --git a/apps/splazers/razers_matepairs.h b/apps/splazers/razers_matepairs.h
index f07e3d8..ff2ce7c 100644
--- a/apps/splazers/razers_matepairs.h
+++ b/apps/splazers/razers_matepairs.h
@@ -542,7 +542,7 @@ void compactPairMatches(TMatches &matches, TCounts & /*cnts*/, RazerSOptions<TSp
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -744,8 +744,8 @@ void mapMatePairReads(
break;
}
- int bestLeftErrors = MaxValue<int>::VALUE;
- int bestLibSizeError = MaxValue<int>::VALUE;
+ int bestLeftErrors = std::numeric_limits<int>::max();
+ int bestLibSizeError = std::numeric_limits<int>::max();
TDequeueIterator bestLeft = TDequeueIterator();
TDequeueIterator it;
@@ -817,7 +817,7 @@ void mapMatePairReads(
value(fifo, lastPositive - firstNo).i1 = (int64_t)-1;
// verify right mate, if left mate matches
- if (bestLeftErrors != MaxValue<int>::VALUE)
+ if (bestLeftErrors != std::numeric_limits<int>::max())
{
if (matchVerify(
mR, infix(swiftFinderR),
diff --git a/apps/splazers/razers_spliced.h b/apps/splazers/razers_spliced.h
index 13b97c1..f370d67 100644
--- a/apps/splazers/razers_spliced.h
+++ b/apps/splazers/razers_spliced.h
@@ -210,7 +210,7 @@ bool loadReadsSam(
if (!open(file, fileName)) return false;
options.maxReadRegionsEnd = 0;
- options.minReadRegionsStart = maxValue<int>();
+ options.minReadRegionsStart = std::numeric_limits<int>::max();
TContigPos regionBegin = options.minReadRegionsStart;
TContigPos regionEnd = options.maxReadRegionsEnd;
@@ -351,7 +351,7 @@ void compactSplicedMatches(TMatches &matches,
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
TIterator it = begin(matches, Standard());
TIterator itEnd = end(matches, Standard());
@@ -442,7 +442,7 @@ void compactAndCountSplicedMatches(TMatches &matches,
unsigned readNo = -1;
unsigned hitCount = 0;
unsigned hitCountCutOff = options.maxHits;
- int scoreDistCutOff = MinValue<int>::VALUE;
+ int scoreDistCutOff = std::numeric_limits<int>::min();
clear(states);
@@ -643,7 +643,7 @@ matchVerify(
#endif
unsigned ndlLength = _min(sequenceLength(rseqNo, readSet),options.minMatchLen);
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = - maxNumSeedErrors(options,TSufPrefSpec());
TMyersFinder maxPos;
@@ -1117,7 +1117,7 @@ findBestSplitPosition(String<Pair<TScore,int> > & maxColsL,
::std::cout << "findBestSplitEditForward\n";
#endif
- TScore maxSum = minValue<TScore>();
+ TScore maxSum = std::numeric_limits<TScore>::min();
int bestL = rowPosL1;
int bestR = rowPosR1;
int bestTraceExtL = rowPosL1;
@@ -1319,8 +1319,8 @@ _alignBandedNeedlemanWunsch(TTrace& trace,
resize(mat, diagonalWidth);
resize(trace, height * diagonalWidth);
// ::std::cout <<height << "<-hieght\n";
- overallMaxValue[0] = MinValue<TScoreValue>::VALUE;
- overallMaxValue[1] = MinValue<TScoreValue>::VALUE;
+ overallMaxValue[0] = std::numeric_limits<TScoreValue>::min();
+ overallMaxValue[1] = std::numeric_limits<TScoreValue>::min();
overallMaxIndex[0] = diagonalWidth; overallMaxIndex[1] = height;
overallMaxIndex[2] = diagonalWidth; overallMaxIndex[3] = height;
@@ -1346,14 +1346,14 @@ _alignBandedNeedlemanWunsch(TTrace& trace,
TScoreValue verti_val = 0;
TScoreValue hori_val = 0;
for(TSize row = 0; row < height; ++row) {
- TScoreValue maxRowVal = MinValue<TScoreValue>::VALUE;
+ TScoreValue maxRowVal = std::numeric_limits<TScoreValue>::min();
unsigned maxRowCol = 0;
actualRow = row + lo_row;
if (lo_diag > 0) --lo_diag;
if (row + lo_row >= len1 - diagU) --hi_diag;
TTraceIter traceIt = begin(trace, Standard()) + row * diagonalWidth + lo_diag;
TRowIter matIt = begin(mat, Standard()) + lo_diag;
- hori_val = MinValue<TScoreValue>::VALUE;
+ hori_val = std::numeric_limits<TScoreValue>::min();
for(TSize col = lo_diag; col<hi_diag; ++col, ++matIt, ++traceIt) {
actualCol = col + diagL + actualRow;
//std::cerr << row << ',' << col << ':' << value(originalMat, actualRow * len1 + actualCol) << std::endl;
@@ -1365,14 +1365,14 @@ _alignBandedNeedlemanWunsch(TTrace& trace,
*traceIt = Diagonal;
if ((verti_val = (col < diagonalWidth - 1) ? *(matIt+1) +
scoreGapExtendVertical(sc, sequenceEntryForScore(sc, str1, ((int) actualCol - 1)),
- sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : MinValue<TScoreValue>::VALUE) > *matIt)
+ sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : std::numeric_limits<TScoreValue>::min()) > *matIt)
{
*matIt = verti_val;
*traceIt = Vertical;
}
if ((hori_val = (col > 0) ? hori_val +
scoreGapExtendHorizontal(sc, sequenceEntryForScore(sc, str1, ((int) actualCol - 1)),
- sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : MinValue<TScoreValue>::VALUE) > *matIt)
+ sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : std::numeric_limits<TScoreValue>::min()) > *matIt)
{
*matIt = hori_val;
*traceIt = Horizontal;
@@ -1481,7 +1481,7 @@ findBestSplitPosition(String<Pair<TScore,int> > & maxColsL,
::std::cout << "findBestSplitEditReverse\n";
#endif
- TScore maxSum = minValue<TScore>();
+ TScore maxSum = std::numeric_limits<TScore>::min();
int bestL = rowPosL2;
int bestR = rowPosR2;
int bestTraceExtR = rowPosL1;
diff --git a/apps/splazers/readSimulator.h b/apps/splazers/readSimulator.h
index 4c53fee..6bc11f6 100644
--- a/apps/splazers/readSimulator.h
+++ b/apps/splazers/readSimulator.h
@@ -381,7 +381,7 @@ void simulateReads(
TMyersPattern &myersPattern = forwardPattern;
// find end of best semi-global alignment
- int maxScore = MinValue<int>::VALUE;
+ int maxScore = std::numeric_limits<int>::min();
int minScore = -(int)countErrors;
TMyersFinder maxPos;
while (find(myersFinder, myersPattern, minScore))
diff --git a/apps/stellar/README b/apps/stellar/README
index 47e3513..e7486a4 100755
--- a/apps/stellar/README
+++ b/apps/stellar/README
@@ -47,14 +47,14 @@ http://www.seqan.de). To build STELLAR do the following:
5) make stellar
6) ./apps/stellar/stellar
-Alternatively you can check out the latest SVN version of STELLAR and SeqAn
+Alternatively you can check out the latest Git version of STELLAR and SeqAn
with:
- 1) svn co http://svn.mi.fu-berlin.de/seqan/trunk/seqan
- 2) cd seqan/build/
+ 1) git clone https://github.com/seqan/seqan.git
+ 2) mkdir seqan/buld; cd seqan/build
3) cmake .. -DCMAKE_BUILD_TYPE=Release
4) make stellar
- 5) ./apps/stellar/stellar
+ 5) ./bin/stellar --help
On success, an executable file stellar was build and a brief usage
description was dumped.
diff --git a/apps/stellar/stellar.cpp b/apps/stellar/stellar.cpp
index 090f928..604cd43 100644
--- a/apps/stellar/stellar.cpp
+++ b/apps/stellar/stellar.cpp
@@ -187,7 +187,7 @@ _stellarOnAll(StringSet<TSequence> & databases,
std::cout << std::endl;
// file output
- if (options.disableThresh != seqan::maxValue<unsigned>())
+ if (options.disableThresh != std::numeric_limits<unsigned>::max())
{
if (!_outputMatches(matches, queries, queryIDs, databases, options.verbose,
options.outputFile, options.outputFormat, options.disabledQueriesFile))
@@ -637,7 +637,7 @@ int mainWithOptions(TOptions & options, String<TAlphabet>)
}
file.close();
- if (options.disableThresh != seqan::maxValue<unsigned>())
+ if (options.disableThresh != std::numeric_limits<unsigned>::max())
{
std::ofstream daFile;
daFile.open(toCString(options.disabledQueriesFile));
diff --git a/apps/stellar/stellar.h b/apps/stellar/stellar.h
index d67ffd0..8d9b51f 100755
--- a/apps/stellar/stellar.h
+++ b/apps/stellar/stellar.h
@@ -78,7 +78,7 @@ _appendNegativeSegment(TAlign const & align,
}
++pos;
}
- if (pos == len) appendValue(queue, TMerger(beginPos, pos, minValue<TScoreValue>()+1));
+ if (pos == len) appendValue(queue, TMerger(beginPos, pos, MinValue<TScoreValue>::VALUE + 1));
else appendValue(queue, TMerger(beginPos, pos, score));
}
@@ -172,7 +172,7 @@ _splitAtXDrops(TAlign & align,
String<TMerger> queue;
TPos pos = _min(toViewPosition(row(align, 0), beginPosition(row(align, 0))),
toViewPosition(row(align, 1), beginPosition(row(align, 1))));
- appendValue(queue, TMerger(pos, pos, minValue<TScoreValue1>()+1));
+ appendValue(queue, TMerger(pos, pos, MinValue<TScoreValue1>::VALUE + 1));
TPos aliLength = _max(toViewPosition(row(align, 0), endPosition(row(align, 0))),
toViewPosition(row(align, 1), endPosition(row(align, 1))));
@@ -510,7 +510,7 @@ verifySwiftHit(Segment<TInfix, InfixSegment> const & infH,
TScore match = 1;
TScore mismatchIndel = (TScore)_max((TScore) ceil(-1/eps) + 1, -(TScore)length(host(infH)));
Score<TScore> scoreMatrix(match, mismatchIndel, mismatchIndel);
- TScore scoreDropOff = (TScore) _max((TScore) xDrop * (-mismatchIndel), minValue<TScore>()+1);
+ TScore scoreDropOff = (TScore) _max((TScore) xDrop * (-mismatchIndel), MinValue<TScore>::VALUE + 1);
// diagonals for banded alignment
int64_t upperDiag = 0;
@@ -576,7 +576,7 @@ verifySwiftHit(Segment<TInfix, InfixSegment> const & infH,
TScore match = 1;
TScore mismatchIndel = (TScore)_max((TScore) ceil(-1/eps) + 1, -(TScore)length(host(infH)));
Score<TScore> scoreMatrix(match, mismatchIndel, mismatchIndel);
- TScore scoreDropOff = (TScore) _max((TScore) xDrop * (-mismatchIndel), minValue<TScore>()+1);
+ TScore scoreDropOff = (TScore) _max((TScore) xDrop * (-mismatchIndel), MinValue<TScore>::VALUE + 1);
// calculate minimal score for local alignments
TEpsilon e = floor(eps*minLength);
diff --git a/apps/stellar/stellar_extension.h b/apps/stellar/stellar_extension.h
index b9b9cfb..3b8c879 100644
--- a/apps/stellar/stellar_extension.h
+++ b/apps/stellar/stellar_extension.h
@@ -294,7 +294,7 @@ _align_banded_nw_best_ends(TTrace& trace,
TTraceIter traceIt = begin(trace, Standard()) + row * diagonalWidth + lo_diag;
TRowIter matIt = begin(mat, Standard()) + lo_diag;
TRowIter lenIt = begin(len, Standard()) + lo_diag;
- hori_val = MinValue<TScoreValue>::VALUE;
+ hori_val = std::numeric_limits<TScoreValue>::min();
hori_len = len1+len2+1;
for(TSize col = lo_diag; col<hi_diag; ++col, ++matIt, ++traceIt, ++lenIt) {
actualCol = col + diagL + actualRow;
@@ -308,7 +308,7 @@ _align_banded_nw_best_ends(TTrace& trace,
++(*lenIt);
if ((verti_val = (col < diagonalWidth - 1) ? *(matIt+1) +
scoreGapExtendVertical(sc,sequenceEntryForScore(sc, str1, ((int) actualCol - 1)),
- sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : MinValue<TScoreValue>::VALUE) > *matIt)
+ sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : std::numeric_limits<TScoreValue>::min()) > *matIt)
{
*matIt = verti_val;
*traceIt = Vertical;
@@ -316,7 +316,7 @@ _align_banded_nw_best_ends(TTrace& trace,
}
if ((hori_val = (col > 0) ? hori_val +
scoreGapExtendHorizontal(sc, sequenceEntryForScore(sc, str1, ((int) actualCol - 1)),
- sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : MinValue<TScoreValue>::VALUE) > *matIt)
+ sequenceEntryForScore(sc, str2, ((int) actualRow - 1))) : std::numeric_limits<TScoreValue>::min()) > *matIt)
{
*matIt = hori_val;
*traceIt = Horizontal;
diff --git a/apps/stellar/stellar_types.h b/apps/stellar/stellar_types.h
index b754265..fc24de6 100755
--- a/apps/stellar/stellar_types.h
+++ b/apps/stellar/stellar_types.h
@@ -66,7 +66,7 @@ struct StellarOptions {
alphabet = "dna5";
noRT = false;
- qGram = seqan::maxValue<unsigned>();
+ qGram = std::numeric_limits<unsigned>::max();
epsilon = 0.05;
minLength = 100;
xDrop = 5;
@@ -74,7 +74,7 @@ struct StellarOptions {
forward = true;
reverse = true;
fastOption = "exact"; // exact verification
- disableThresh = seqan::maxValue<unsigned>();
+ disableThresh = std::numeric_limits<unsigned>::max();
compactThresh = 500;
numMatches = 50;
maxRepeatPeriod = 1;
diff --git a/apps/yara/bits_context.h b/apps/yara/bits_context.h
index a6c28bb..beddb92 100644
--- a/apps/yara/bits_context.h
+++ b/apps/yara/bits_context.h
@@ -83,7 +83,7 @@ template <typename TSpec, typename TConfig, typename TReadSeqs>
inline void resize(ReadsContext<TSpec, TConfig> & ctx, TReadSeqs const & readSeqs)
{
resize(ctx.seedErrors, getReadSeqsCount(readSeqs), 0, Exact());
- resize(ctx.minErrors, getReadSeqsCount(readSeqs), MaxValue<unsigned char>::VALUE, Exact());
+ resize(ctx.minErrors, getReadSeqsCount(readSeqs), std::numeric_limits<unsigned char>::max(), Exact());
resize(ctx.mapped, getReadsCount(readSeqs), false, Exact());
resize(ctx.paired, getReadsCount(readSeqs), false, Exact());
}
diff --git a/apps/yara/bits_matches.h b/apps/yara/bits_matches.h
index e8f2feb..4265d4f 100644
--- a/apps/yara/bits_matches.h
+++ b/apps/yara/bits_matches.h
@@ -615,7 +615,7 @@ getLibraryLength(Match<TSpec> const & a, Match<TSpec> const & b)
}
else
{
- return MaxValue<TContigSize>::VALUE;
+ return std::numeric_limits<TContigSize>::max();
}
}
@@ -633,7 +633,7 @@ getLibraryDeviation(Match<TSpec> const & a, Match<TSpec> const & b, TSize meanLe
if (isValid(a) && isValid(b) && contigEqual(a, b))
return _abs((TSignedContigSize)getLibraryLength(a, b) - (TSignedContigSize)meanLength);
else
- return MaxValue<TContigSize>::VALUE;
+ return std::numeric_limits<TContigSize>::max();
}
// ----------------------------------------------------------------------------
diff --git a/apps/yara/indexer.cpp b/apps/yara/indexer.cpp
index 93dc388..c28e41a 100644
--- a/apps/yara/indexer.cpp
+++ b/apps/yara/indexer.cpp
@@ -298,7 +298,7 @@ void saveIndex(YaraIndexer<TSpec, TConfig> & me)
template <typename TContigsSize, typename TContigsLen, typename TSpec, typename TConfig>
void saveIndex(YaraIndexer<TSpec, TConfig> & me)
{
- if (me.options.contigsSum <= MaxValue<uint32_t>::VALUE)
+ if (me.options.contigsSum <= std::numeric_limits<uint32_t>::max())
{
saveIndex<TContigsSize, TContigsLen, uint32_t>(me);
}
@@ -311,7 +311,7 @@ void saveIndex(YaraIndexer<TSpec, TConfig> & me)
template <typename TContigsSize, typename TSpec, typename TConfig>
void saveIndex(YaraIndexer<TSpec, TConfig> & me)
{
- if (me.options.contigsMaxLength <= MaxValue<uint32_t>::VALUE)
+ if (me.options.contigsMaxLength <= std::numeric_limits<uint32_t>::max())
{
saveIndex<TContigsSize, uint32_t>(me);
}
@@ -328,11 +328,11 @@ void saveIndex(YaraIndexer<TSpec, TConfig> & me)
template <typename TSpec, typename TConfig>
void saveIndex(YaraIndexer<TSpec, TConfig> & me)
{
- if (me.options.contigsSize <= MaxValue<uint8_t>::VALUE)
+ if (me.options.contigsSize <= std::numeric_limits<uint8_t>::max())
{
saveIndex<uint8_t>(me);
}
- else if (me.options.contigsSize <= MaxValue<uint16_t>::VALUE)
+ else if (me.options.contigsSize <= std::numeric_limits<uint16_t>::max())
{
saveIndex<uint16_t>(me);
}
diff --git a/apps/yara/mapper.cpp b/apps/yara/mapper.cpp
index 1cb6e8c..8e523af 100644
--- a/apps/yara/mapper.cpp
+++ b/apps/yara/mapper.cpp
@@ -342,7 +342,7 @@ parseCommandLine(Options & options, ArgumentParser & parser, int argc, char cons
template <typename TContigsSize, typename TContigsLen, typename TThreading, typename TSequencing, typename TStrategy>
void configureMapper(Options const & options, TThreading const & threading, TSequencing const & sequencing, TStrategy const & strategy)
{
- if (options.contigsSum <= MaxValue<uint32_t>::VALUE)
+ if (options.contigsSum <= std::numeric_limits<uint32_t>::max())
{
spawnMapper<TContigsSize, TContigsLen, uint32_t>(options, threading, sequencing, strategy);
}
@@ -355,7 +355,7 @@ void configureMapper(Options const & options, TThreading const & threading, TSeq
template <typename TContigsSize, typename TThreading, typename TSequencing, typename TStrategy>
void configureMapper(Options const & options, TThreading const & threading, TSequencing const & sequencing, TStrategy const & strategy)
{
- if (options.contigsMaxLength <= MaxValue<uint32_t>::VALUE)
+ if (options.contigsMaxLength <= std::numeric_limits<uint32_t>::max())
{
configureMapper<TContigsSize, uint32_t>(options, threading, sequencing, strategy);
}
@@ -372,11 +372,11 @@ void configureMapper(Options const & options, TThreading const & threading, TSeq
template <typename TThreading, typename TSequencing, typename TStrategy>
void configureMapper(Options const & options, TThreading const & threading, TSequencing const & sequencing, TStrategy const & strategy)
{
- if (options.contigsSize <= MaxValue<uint8_t>::VALUE)
+ if (options.contigsSize <= std::numeric_limits<uint8_t>::max())
{
configureMapper<uint8_t>(options, threading, sequencing, strategy);
}
- else if (options.contigsSize <= MaxValue<uint16_t>::VALUE)
+ else if (options.contigsSize <= std::numeric_limits<uint16_t>::max())
{
configureMapper<uint16_t>(options, threading, sequencing, strategy);
}
diff --git a/apps/yara/tests/run_tests.py b/apps/yara/tests/run_tests.py
index db6d921..32c7a8c 100644
--- a/apps/yara/tests/run_tests.py
+++ b/apps/yara/tests/run_tests.py
@@ -13,7 +13,6 @@ import logging
import os.path
import sys
import glob
-import platform
# Automagically add util/py_lib to PYTHONPATH environment variable.
path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..',
@@ -35,9 +34,9 @@ def main(source_base, binary_base):
"""Main entry point of the script."""
# gold standard binary files created on little endian
- if sys.byteorder != 'little' or platform.machine().startswith('mips64'):
- print 'Skipping tests for Yara on big endian and mips64el'
- print '=================================================='
+ if sys.byteorder != 'little':
+ print 'Skipping tests for Yara on big endian'
+ print '====================================='
return 0
print 'Executing test for Yara'
@@ -79,9 +78,9 @@ def main(source_base, binary_base):
conf = app_tests.TestConf(
program=path_to_indexer,
args=[ph.inFile('input/%s-genome.fa' % organism),
- '-o', ph.outFile('%s-genome' % organism)],
+ '-o', ph.outFile('%s-genome' % organism)],
to_diff=[(ph.inFile('gold/%s-genome.%s' % (organism, ext)),
- ph.outFile('%s-genome.%s' % (organism, ext)), 'md5') for ext in exts])
+ ph.outFile('%s-genome.%s' % (organism, ext)), 'md5') for ext in exts])
conf_list.append(conf)
# ============================================================
diff --git a/demos/blast/blast_in_lowlevel.cpp b/demos/blast/blast_in_lowlevel.cpp
index 0c6f83c..3238fbe 100644
--- a/demos/blast/blast_in_lowlevel.cpp
+++ b/demos/blast/blast_in_lowlevel.cpp
@@ -7,7 +7,7 @@ using namespace seqan;
int main()
{
- std::string inPath = std::string(SEQAN_PATH_TO_ROOT()) + "/tests/blast/plus_comments_defaults.m9";
+ std::string inPath = getAbsolutePath("/tests/blast/plus_comments_defaults.m9");
std::ifstream fin(toCString(inPath), std::ios_base::in | std::ios_base::binary);
auto fit = directionIterator(fin, Input());
@@ -46,4 +46,4 @@ int main()
std::cerr << "Demo not run, because of a bug in Microsoft Visual Studio 2015.\n";
return 0;
}
-#endif
\ No newline at end of file
+#endif
diff --git a/demos/dox/bam_io/bam_file_in.cpp b/demos/dox/bam_io/bam_file_in.cpp
index b2be48f..267e089 100644
--- a/demos/dox/bam_io/bam_file_in.cpp
+++ b/demos/dox/bam_io/bam_file_in.cpp
@@ -7,7 +7,7 @@ using namespace seqan;
int main()
{
// Open input stream, BamStream can read SAM and BAM files.
- std::string pathSam = std::string(SEQAN_PATH_TO_ROOT()) + "/demos/bam_io/example.sam";
+ std::string pathSam = getAbsolutePath("/demos/bam_io/example.sam");
BamFileIn bamFileIn;
if (!open(bamFileIn, toCString(pathSam)))
diff --git a/demos/dox/index/find_repeats.cpp b/demos/dox/index/find_repeats.cpp
index cc0dbf9..3c212ab 100644
--- a/demos/dox/index/find_repeats.cpp
+++ b/demos/dox/index/find_repeats.cpp
@@ -9,7 +9,7 @@ using namespace seqan;
int main()
{
// Get path to file to search for repeats in.
- std::string path = (std::string)SEQAN_PATH_TO_ROOT() + "/demos/index/ref.fa";
+ std::string path = getAbsolutePath("/demos/index/ref.fa");
// Load first sequence from file.
CharString id;
diff --git a/demos/dox/statistics/build_markov_model.cpp b/demos/dox/statistics/build_markov_model.cpp
index 64904a1..60764c5 100644
--- a/demos/dox/statistics/build_markov_model.cpp
+++ b/demos/dox/statistics/build_markov_model.cpp
@@ -10,8 +10,7 @@ using namespace seqan;
int main()
{
// Build path to background FASTA file.
- CharString bgPath = SEQAN_PATH_TO_ROOT();
- append(bgPath, "/demos/statistics/background.fa");
+ CharString bgPath = getAbsolutePath("/demos/statistics/background.fa");
// Read the background from a file into X.
StringSet<DnaString> X;
diff --git a/demos/dox/statistics/load_markov_model.cpp b/demos/dox/statistics/load_markov_model.cpp
index f90d44a..f26ff1c 100644
--- a/demos/dox/statistics/load_markov_model.cpp
+++ b/demos/dox/statistics/load_markov_model.cpp
@@ -11,8 +11,7 @@ using namespace seqan;
int main()
{
// Build path to serialized MarkovModel.
- CharString mmPath = SEQAN_PATH_TO_ROOT();
- append(mmPath, "/demos/statistics/zscore_example_mm.3");
+ CharString mmPath = getAbsolutePath("/demos/statistics/zscore_example_mm.3");
// Open the file.
FILE * mmFile = fopen(toCString(mmPath), "rb");
diff --git a/demos/dox/store/store_example.cpp b/demos/dox/store/store_example.cpp
index f15940b..a07fb28 100644
--- a/demos/dox/store/store_example.cpp
+++ b/demos/dox/store/store_example.cpp
@@ -7,8 +7,8 @@ int main()
{
// instantiate emtpy FragmentStore and set file paths
FragmentStore<> store;
- std::string pathGenome = std::string(SEQAN_PATH_TO_ROOT()) + "/demos/tutorial/store/ex1.fa";
- std::string pathSAM = std::string(SEQAN_PATH_TO_ROOT()) + "/demos/tutorial/store/ex1.sam";
+ std::string pathGenome = getAbsolutePath("/demos/tutorial/store/ex1.fa");
+ std::string pathSAM = getAbsolutePath("/demos/tutorial/store/ex1.sam");
// load example genome and example reads and alignments
loadContigs(store, pathGenome.c_str());
diff --git a/demos/tutorial/sam_and_bam_io/base.cpp b/demos/tutorial/sam_and_bam_io/base.cpp
index ac3a181..ceca6a5 100644
--- a/demos/tutorial/sam_and_bam_io/base.cpp
+++ b/demos/tutorial/sam_and_bam_io/base.cpp
@@ -10,11 +10,11 @@ class myBamAlignmentRecord
{
public:
CharString qName; // QNAME
- __uint16 flag; // FLAG
+ uint16_t flag; // FLAG
int32_t rID; // REF
int32_t beginPos; // POS
- __uint8 mapQ; // MAPQ mapping quality, 255 for */invalid
- __uint16 bin; // bin for indexing
+ uint8_t mapQ; // MAPQ mapping quality, 255 for */invalid
+ uint16_t bin; // bin for indexing
String<CigarElement<> > cigar; // CIGAR string
int32_t rNextId; // RNEXT (0-based)
int32_t pNext; // PNEXT (0-based)
diff --git a/demos/tutorial/string_sets/example_iterators.cpp b/demos/tutorial/string_sets/example_iterators.cpp
index f4b5f4a..bad9c1d 100644
--- a/demos/tutorial/string_sets/example_iterators.cpp
+++ b/demos/tutorial/string_sets/example_iterators.cpp
@@ -30,7 +30,7 @@ int main()
Iterator<TConcat>::Type itEnd = end(concatSet);
for (; it != itEnd; goNext(it))
{
- std::cout << getValue(it) << " ";
+ std::cout << *it << " ";
}
std::cout << '\n';
//![concatenator]
diff --git a/demos/unassigned_or_unused/filter_sam.cpp b/demos/unassigned_or_unused/filter_sam.cpp
index 806e718..4d3649b 100644
--- a/demos/unassigned_or_unused/filter_sam.cpp
+++ b/demos/unassigned_or_unused/filter_sam.cpp
@@ -112,7 +112,7 @@ void performWork(Options const & options)
// Copy over at most options.limit alignments per read.
std::cerr << "Filtering reads..." << std::endl;
FragmentStore<>::TAlignedReadStore rsCopy;
- size_t readId = MaxValue<size_t>::VALUE;
+ size_t readId = std::numeric_limits<size_t>::max();
size_t alignmentCount = 0;
for (TIterator it = begin(fragmentStore.alignedReadStore), itEnd = end(fragmentStore.alignedReadStore); it != itEnd; ++it)
{
diff --git a/demos/unassigned_or_unused/sam2svg.cpp b/demos/unassigned_or_unused/sam2svg.cpp
index d79c6b8..71253d0 100644
--- a/demos/unassigned_or_unused/sam2svg.cpp
+++ b/demos/unassigned_or_unused/sam2svg.cpp
@@ -177,7 +177,7 @@ int main(int argc, char const ** argv)
std::cerr << "Writing " << contigs.size() << " contigs...\n";
int beginLine = (options.beginLine == -1) ? 0 : options.beginLine;
- int endLine = (options.endLine == -1) ? MaxValue<int>::VALUE : options.endLine;
+ int endLine = (options.endLine == -1) ? std::numeric_limits<int>::max() : options.endLine;
for (unsigned i = 0; i < contigs.size(); ++i)
if (contigs[i] < length(store.contigStore))
@@ -185,18 +185,18 @@ int main(int argc, char const ** argv)
std::cerr << "Writing contig " << store.contigNameStore[contigs[i]] << " ... ";
int64_t l = (options.beginPos == -1) ? 0 : options.beginPos;
- int64_t r = (options.endPos == -1) ? MaxValue<TContigPos>::VALUE : options.endPos;
+ int64_t r = (options.endPos == -1) ? std::numeric_limits<TContigPos>::max() : options.endPos;
if (!options.gapSpace)
{
typedef Gaps<Nothing, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
TContigGaps contigGaps(store.contigStore[i].gaps);
l = positionSeqToGap(contigGaps, l);
- if (r != MaxValue<TContigPos>::VALUE)
+ if (r != std::numeric_limits<TContigPos>::max())
r = positionSeqToGap(contigGaps, r);
}
- if (r == MaxValue<TContigPos>::VALUE)
+ if (r == std::numeric_limits<TContigPos>::max())
{
r = 0;
for (unsigned j = 0; j < length(layout.contigRows[i]); ++j)
diff --git a/demos/unassigned_or_unused/tutorial_file_io/solution2.cpp b/demos/unassigned_or_unused/tutorial_file_io/solution2.cpp
deleted file mode 100644
index b2487c2..0000000
--- a/demos/unassigned_or_unused/tutorial_file_io/solution2.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <iostream>
-#include <fstream>
-
-#include <seqan/stream.h>
-
-using namespace seqan;
-
-// Copy from stream in to the stream out.
-
-template <typename TOutStream, typename TInStream>
-void copyStream(TOutStream & vout, TInStream & vin)
-{
- // Create iterators to read and write.
- typedef typename DirectionIterator<TInStream, Input>::Type TReader;
- typedef typename DirectionIterator<TOutStream, Output>::Type TWriter;
-
- TReader reader = directionIterator(vin, Input());
- TWriter writer = directionIterator(vout, Output());
-
- CharString buffer;
- reserve(buffer, 1000);
-
- while (!atEnd(reader))
- {
- clear(buffer);
- read(buffer, reader, capacity(buffer));
- write(writer, buffer);
- }
-}
-
-// The main function parses the command line, opens the files
-// and then calls either copyStream.
-
-int main(int argc, char const ** argv)
-{
- VirtualStream<char, Input> vin;
- VirtualStream<char, Output> vout;
-
- if (argc != 3)
- {
- CharString inExts = concat(vin.getFileExtensions(), "|", true);
- CharString outExts = concat(vout.getFileExtensions(), "|", true);
- std::cerr << "USAGE: " << argv[0] << " input[" << inExts << "] output[" << outExts << "]\n";
- return 1;
- }
-
- if (!open(vin, argv[1]))
- {
- std::cerr << "ERROR: Could not open file " << argv[1] << "\n";
- return 1;
- }
-
- if (!open(vout, argv[2]))
- {
- std::cerr << "ERROR: Could not open file " << argv[2] << "\n";
- return 1;
- }
-
- copyStream(vout, vin);
- return 0;
-}
diff --git a/demos/unassigned_or_unused/tutorial_file_io/solution3.cpp b/demos/unassigned_or_unused/tutorial_file_io/solution3.cpp
deleted file mode 100644
index 8dbe78b..0000000
--- a/demos/unassigned_or_unused/tutorial_file_io/solution3.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-#include <cstring>
-#include <iostream>
-#include <fstream>
-
-#include <seqan/stream.h>
-
-using namespace seqan;
-
-// Copy from stream in to the stream out.
-
-template <typename TOutStream, typename TInStream>
-void copyStream(TOutStream & vout, TInStream & vin)
-{
- // Create iterators to read and write.
- typedef typename DirectionIterator<TInStream, Input>::Type TReader;
- TReader reader = directionIterator(vin, Input());
-
- CharString buffer;
- reserve(buffer, 1000);
-
- while (!atEnd(reader))
- {
- clear(buffer);
- read(buffer, reader, capacity(buffer));
- write(vout, buffer);
- }
-}
-
-// The main function parses the command line, opens the files
-// and then calls either copyStream. Read from stdin if the 1st
-// argument is - or omitted and write to stdout if the 2nd argument
-// is omitted.
-
-int main(int argc, char const ** argv)
-{
- VirtualStream<char, Input> vin;
- VirtualStream<char, Output> vout;
-
- if (argc < 1 || argc > 3)
- {
- CharString inExts = concat(vin.getFileExtensions(), "|", true);
- CharString outExts = concat(vout.getFileExtensions(), "|", true);
- std::cerr << "USAGE: " << argv[0] << " input[" << inExts << "] [output[" << outExts << "]]\n";
- return 1;
- }
-
- bool success;
- if (argc >= 2 && strcmp(argv[1], "-") != 0)
- success = open(vin, argv[1]);
- else
- success = open(vin, std::cin);
-
- if (!success)
- {
- std::cerr << "ERROR: Could not open input file " << argv[1] << "\n";
- return 1;
- }
-
- if (argc == 3)
- success = open(vout, argv[2]);
- else
- success = open(vout, std::cout, Nothing()); // disable compression on stdout
-
- if (!success)
- {
- std::cerr << "ERROR: Could not open output file " << ((argc == 3) ? argv[2] : "") << "\n";
- return 1;
- }
-
- copyStream(vout, vin);
- return 0;
-}
diff --git a/demos/unassigned_or_unused/tutorial_file_io/stream_compression_formats.cpp b/demos/unassigned_or_unused/tutorial_file_io/stream_compression_formats.cpp
index 567b582..6230038 100644
--- a/demos/unassigned_or_unused/tutorial_file_io/stream_compression_formats.cpp
+++ b/demos/unassigned_or_unused/tutorial_file_io/stream_compression_formats.cpp
@@ -1,5 +1,9 @@
//![header]
#include <fstream>
+#include <vector>
+#include <iterator>
+#include <algorithm>
+
#include <seqan/sequence.h>
#include <seqan/stream.h>
@@ -13,8 +17,12 @@ int main(int argc, char const ** argv)
if (argc != 2)
{
- CharString exts = concat(TVStream::getFileExtensions(), "|", true);
- std::cerr << "USAGE: " << argv[0] << " input[" << exts << "]" << std::endl;
+ std::vector<std::string> file_ext_list = TVStream::getFileExtensions();
+ std::ostream_iterator<std::string> out_it (std::cerr,"|");
+
+ std::cerr << "USAGE: " << argv[0] << " input[";
+ std::copy(file_ext_list.begin(), file_ext_list.end() - 1, out_it);
+ std::cerr << "]" << std::endl;
return 1;
}
diff --git a/dox/CMakeLists.txt b/dox/CMakeLists.txt
index 78c0597..74b4749 100644
--- a/dox/CMakeLists.txt
+++ b/dox/CMakeLists.txt
@@ -9,56 +9,18 @@
cmake_minimum_required (VERSION 3.0.0)
project (seqan_dox CXX)
+# require python 2.7, not python3
+set(PythonInterp_FIND_VERSION 2.7)
+set(PythonInterp_FIND_VERSION_MAJOR 2)
+set(PythonInterp_FIND_VERSION_MINOR 7)
+set(PythonInterp_FIND_VERSION_COUNT 2)
+
find_package (PythonInterp)
-if (NOT PYTHONINTERP_FOUND)
- message (STATUS " Python not found, not building dox as a tests.")
+if (NOT PYTHONINTERP_FOUND OR NOT(${PYTHON_VERSION_MAJOR} MATCHES "2"))
+ message (STATUS " You need Python 2.x for building dox. (skip the tests)")
return ()
endif ()
-# find python 2.x
-if(NOT(${PYTHON_VERSION_MAJOR} MATCHES "2"))
- set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
- unset(_Python_NAMES)
- foreach(_CURRENT_VERSION IN LISTS _PYTHON2_VERSIONS)
- list(APPEND _Python_NAMES "python${_CURRENT_VERSION}")
- endforeach()
- unset(_PYTHON2_VERSIONS)
-
- find_program(PYTHON2_EXECUTABLE NAMES ${_Python_NAMES})
- if(PYTHON2_EXECUTABLE MATCHES "PYTHON2_EXECUTABLE-NOTFOUND")
- message (STATUS "You need Python 2.x for building dox. (skip the tests)")
- return()
- endif()
- set(PYTHON_EXECUTABLE "${PYTHON2_EXECUTABLE}")
- message (STATUS "Found Python 2.x: ${PYTHON_EXECUTABLE}")
-endif()
-
-# find python 2.x
-if(NOT(${PYTHON_VERSION_MAJOR} MATCHES "2"))
- set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
- unset(_Python_NAMES)
- foreach(_CURRENT_VERSION IN LISTS _PYTHON2_VERSIONS)
- list(APPEND _Python_NAMES "python${_CURRENT_VERSION}")
- endforeach()
- unset(_PYTHON2_VERSIONS)
-
- find_program(PYTHON2_EXECUTABLE NAMES ${_Python_NAMES})
- if(PYTHON2_EXECUTABLE MATCHES "PYTHON2_EXECUTABLE-NOTFOUND")
- message (STATUS "You need Python 2.x for building dox. (skip the tests)")
- return()
- endif()
- set(PYTHON_EXECUTABLE "${PYTHON2_EXECUTABLE}")
- message (STATUS "Found Python 2.x: ${PYTHON_EXECUTABLE}")
-
- # change shell scripts for building dox
- file(READ "${CMAKE_CURRENT_SOURCE_DIR}/../dox/run.sh.in" run_content)
- file(READ "${CMAKE_CURRENT_SOURCE_DIR}/../dox/dox_only.sh.in" dox_only_content)
- string(REPLACE "python2 ../" "${PYTHON_EXECUTABLE} ../" run_content "${run_content}")
- string(REPLACE "python2 ../" "${PYTHON_EXECUTABLE} ../" dox_only_content "${dox_only_content}")
- file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/../dox/run.sh" "${run_content}")
- file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/../dox/dox_only.sh" "${dox_only_content}")
-endif()
-
# Add building the documentation as a test.
add_test (build_dox
${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../util/bin/dox.py
diff --git a/include/seqan/align/align_base.h b/include/seqan/align/align_base.h
index a23afff..be165df 100644
--- a/include/seqan/align/align_base.h
+++ b/include/seqan/align/align_base.h
@@ -476,7 +476,7 @@ detach(Align<TSource, TSpec> & me)
template <typename TFile, typename TSource, typename TSpec>
inline void
-write(TFile & target,
+_write(TFile & target,
Align<TSource, TSpec> const & source)
{
typedef Align<TSource, TSpec> const TAlign;
@@ -557,6 +557,15 @@ write(TFile & target,
writeValue(target, '\n');
}
+template <typename TFile, typename TSource, typename TSpec>
+[[deprecated("Old-style I/O. Use stream operator << instead.")]]
+inline void
+write(TFile & target,
+ Align<TSource, TSpec> const & source)
+{
+ _write(target, source);
+}
+
// ----------------------------------------------------------------------------
// Function clearClipping()
// ----------------------------------------------------------------------------
@@ -607,7 +616,7 @@ operator<<(TStream & target,
Align<TSource, TSpec> const & source)
{
typename DirectionIterator<TStream, Output>::Type it = directionIterator(target, Output());
- write(it, source);
+ _write(it, source);
return target;
}
diff --git a/include/seqan/align/align_interface_wrapper.h b/include/seqan/align/align_interface_wrapper.h
index 177d0ae..6baafa0 100644
--- a/include/seqan/align/align_interface_wrapper.h
+++ b/include/seqan/align/align_interface_wrapper.h
@@ -167,7 +167,8 @@ _alignWrapperSequential(StringSet<Gaps<TSequenceH, TGapsSpecH>, TSetSpecH> & gap
template <typename... TArgs>
inline auto _alignWrapper(TArgs && ...args)
{
-#ifdef SEQAN_SIMD_ENABLED
+// NOTE(marehr): ume_simd is currently not working, thus falling back to sequential case
+#if defined(SEQAN_SIMD_ENABLED) && !defined(SEQAN_UMESIMD_ENABLED)
return _alignWrapperSimd(std::forward<TArgs>(args)...);
#else
return _alignWrapperSequential(std::forward<TArgs>(args)...);
diff --git a/include/seqan/align/dp_algorithm_impl.h b/include/seqan/align/dp_algorithm_impl.h
index de388f9..88736ba 100644
--- a/include/seqan/align/dp_algorithm_impl.h
+++ b/include/seqan/align/dp_algorithm_impl.h
@@ -87,7 +87,7 @@
// are accepted. If the dp profile consists of the standard global alignment
// algorithm (NeedlemanWunsch or Gotoh), the band is required to go through
// the sink and the source of the dp matrix. If this is not given the
-// alignment algorithm is aborted and the score MinValue<TScoreValue>::VALUE
+// alignment algorithm is aborted and the score std::numeric_limits<TScoreValue>::min()
// is returned.
// There are no further restrictions.
//
@@ -1543,7 +1543,7 @@ _computeAlignment(DPContext<TScoreValue, TGapScheme> & dpContext,
// Check if current dp settings are valid. If not return infinity value for dp score value.
if (!_isValidDPSettings(seqH, seqV, band, dpProfile))
- return createVector<TScoreValue>(MinValue<typename Value<TScoreValue>::Type>::VALUE); // NOTE(rrahn): In case of non-simd version, createVector returns just a scalar.
+ return createVector<TScoreValue>(std::numeric_limits<typename Value<TScoreValue>::Type>::min()); // NOTE(rrahn): In case of non-simd version, createVector returns just a scalar.
TDPScoreMatrix dpScoreMatrix;
TDPTraceMatrix dpTraceMatrix;
diff --git a/include/seqan/align/dp_cell.h b/include/seqan/align/dp_cell.h
index 49f3b85..ee3c5d5 100644
--- a/include/seqan/align/dp_cell.h
+++ b/include/seqan/align/dp_cell.h
@@ -109,7 +109,7 @@ struct DPCellDefaultInfinity
};
template <typename T>
-const int DPCellDefaultInfinity<T>::VALUE = MinValue<int>::VALUE;
+const int DPCellDefaultInfinity<T>::VALUE = std::numeric_limits<int>::min();
// We use the min value of the score type and shift it one bits to the left. This way we can use "infinity" without
// checking for it during the computation.
@@ -121,7 +121,7 @@ struct DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> >
template <typename TScoreValue, typename TGapCostFunction>
const TScoreValue DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> >::VALUE =
- createVector<TScoreValue>(MinValue<typename Value<TScoreValue>::Type>::VALUE) / createVector<TScoreValue>(2);
+ createVector<TScoreValue>(std::numeric_limits<typename Value<TScoreValue>::Type>::min()) / createVector<TScoreValue>(2);
template <typename TScoreValue, typename TGapCostFunction>
struct DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> const> :
diff --git a/include/seqan/align/dp_matrix_navigator.h b/include/seqan/align/dp_matrix_navigator.h
index a39100b..44d038b 100644
--- a/include/seqan/align/dp_matrix_navigator.h
+++ b/include/seqan/align/dp_matrix_navigator.h
@@ -154,7 +154,7 @@ inline void
assignValue(DPMatrixNavigator_<TDPMatrix, TDPMatrixType, TNavigationSpec> & dpNavigator,
TValue const & element)
{
- assignValue(dpNavigator._activeColIterator, element);
+ *dpNavigator._activeColIterator = element;
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/dp_matrix_navigator_score_matrix.h b/include/seqan/align/dp_matrix_navigator_score_matrix.h
index 9110b49..56622fe 100644
--- a/include/seqan/align/dp_matrix_navigator_score_matrix.h
+++ b/include/seqan/align/dp_matrix_navigator_score_matrix.h
@@ -96,7 +96,7 @@ _init(DPMatrixNavigator_<DPMatrix_<TValue, FullDPMatrix>, DPScoreMatrix, Navigat
navigator._activeColIterator = begin(dpMatrix, Standard());
navigator._prevColIterator = navigator._activeColIterator - _dataFactors(dpMatrix)[DPMatrixDimension_::HORIZONTAL];
navigator._laneLeap = 1;
- assignValue(navigator._activeColIterator, TValue());
+ *navigator._activeColIterator = TValue();
}
// Initializes the navigator for a banded alignment.
@@ -131,7 +131,7 @@ _init(DPMatrixNavigator_<DPMatrix_<TValue, FullDPMatrix>, DPScoreMatrix, Navigat
}
// Set previous iterator to same position, one column left.
navigator._prevColIterator = navigator._activeColIterator - _dataFactors(dpMatrix)[DPMatrixDimension_::HORIZONTAL];
- assignValue(navigator._activeColIterator, TValue());
+ *navigator._activeColIterator = TValue();
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h b/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h
index acc3267..4202d56 100644
--- a/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h
+++ b/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h
@@ -95,7 +95,7 @@ _init(DPMatrixNavigator_<DPMatrix_<TValue, SparseDPMatrix>, DPScoreMatrix, Navig
navigator._activeColIterator = begin(dpMatrix, Standard());
navigator._prevColIterator = navigator._activeColIterator;
navigator._laneLeap = 1 - _dataLengths(dpMatrix)[DPMatrixDimension_::VERTICAL];
- assignValue(navigator._activeColIterator, TValue());
+ *navigator._activeColIterator = TValue();
}
// Initializes the navigator for banded alignments
@@ -127,7 +127,7 @@ _init(DPMatrixNavigator_<DPMatrix_<TValue, SparseDPMatrix>, DPScoreMatrix, Navig
navigator._activeColIterator = begin(dpMatrix, Standard()) + length(dpMatrix, DPMatrixDimension_::VERTICAL) + navigator._laneLeap - 1;
}
navigator._prevColIterator = navigator._activeColIterator;
- assignValue(navigator._activeColIterator, TValue());
+ *navigator._activeColIterator = TValue();
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/dp_matrix_navigator_trace_matrix.h b/include/seqan/align/dp_matrix_navigator_trace_matrix.h
index 0fc7233..af944ee 100644
--- a/include/seqan/align/dp_matrix_navigator_trace_matrix.h
+++ b/include/seqan/align/dp_matrix_navigator_trace_matrix.h
@@ -104,7 +104,7 @@ _init(DPMatrixNavigator_<DPMatrix_<TValue, FullDPMatrix>, DPTraceMatrix<TTraceFl
navigator._ptrDataContainer = &dpMatrix;
navigator._activeColIterator = begin(dpMatrix, Standard());
navigator._laneLeap = 1;
- assignValue(navigator._activeColIterator, TValue());
+ *navigator._activeColIterator = TValue();
}
// Initializes the navigator for banded alignments.
@@ -144,7 +144,7 @@ _init(DPMatrixNavigator_<DPMatrix_<TValue, FullDPMatrix>, DPTraceMatrix<TTraceFl
navigator._laneLeap = lengthVertical + lastPos;
navigator._activeColIterator = begin(dpMatrix, Standard()) + navigator._laneLeap - 1;
}
- assignValue(navigator._activeColIterator, TValue());
+ *navigator._activeColIterator = TValue();
}
// ----------------------------------------------------------------------------
@@ -376,7 +376,7 @@ assignValue(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigation
if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
return; // Do nothing since no trace back is computed.
- assignValue(dpNavigator._activeColIterator, element);
+ *dpNavigator._activeColIterator = element;
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/dp_profile.h b/include/seqan/align/dp_profile.h
index 5f5c5f7..a861e37 100644
--- a/include/seqan/align/dp_profile.h
+++ b/include/seqan/align/dp_profile.h
@@ -110,7 +110,7 @@ typedef LocalAlignment_<SuboptimalAlignment> DPLocalEnumerate;
// Use macro expansion to define all possible SIMD initialization types.
-template <typename TVector, __uint8 FILL_VALUE, unsigned SIZE>
+template <typename TVector, uint8_t FILL_VALUE, unsigned SIZE>
struct InitSimdTrace_;
#define SEQAN_SIMD_INIT_FILL_VALUE_2_ FILL_VALUE, FILL_VALUE
@@ -121,23 +121,23 @@ struct InitSimdTrace_;
#ifdef COMPILER_MSVC
#define SEQAN_SIMD_TRACE_SETUP_2_(SIZE, ...) \
-template <typename TVector, __uint8 FILL_VALUE> \
+template <typename TVector, uint8_t FILL_VALUE> \
struct InitSimdTrace_<TVector, FILL_VALUE, SIZE> \
{ \
static const TVector VALUE; \
}; \
\
-template <typename TVector, __uint8 FILL_VALUE> \
+template <typename TVector, uint8_t FILL_VALUE> \
const TVector InitSimdTrace_<TVector, FILL_VALUE, SIZE>::VALUE = TVector{__VA_ARGS__};
#else // COMPILER_MSVC
#define SEQAN_SIMD_TRACE_SETUP_2_(SIZE, ...) \
-template <typename TVector, __uint8 FILL_VALUE> \
+template <typename TVector, uint8_t FILL_VALUE> \
struct InitSimdTrace_<TVector, FILL_VALUE, SIZE> \
{ \
static const TVector VALUE; \
}; \
\
-template <typename TVector, __uint8 FILL_VALUE> \
+template <typename TVector, uint8_t FILL_VALUE> \
const TVector InitSimdTrace_<TVector, FILL_VALUE, SIZE>::VALUE{__VA_ARGS__};
#endif // COMPILER_MSVC
@@ -188,7 +188,7 @@ struct TraceValue_<TVector, True>
#define SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(TRACE_VALUE) \
template <typename TVector> \
- const TVector TraceValue_<TVector, True>::TRACE_VALUE = InitSimdTrace_<TVector, TraceValue_<__uint8, False>::TRACE_VALUE, LENGTH<TVector>::VALUE>::VALUE;
+ const TVector TraceValue_<TVector, True>::TRACE_VALUE = InitSimdTrace_<TVector, TraceValue_<uint8_t, False>::TRACE_VALUE, LENGTH<TVector>::VALUE>::VALUE;
SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(NONE)
SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(DIAGONAL)
@@ -202,7 +202,7 @@ SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(NO_HORIZONTAL_TRACEBACK)
SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(NO_VERTICAL_TRACEBACK)
// Type alias to choose between scalar and simd version of trace value.
-template <typename TValue = __uint8>
+template <typename TValue = uint8_t>
using TraceBitMap_ = TraceValue_<TValue, typename Is<SimdVectorConcept<TValue> >::Type >;
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/evaluate_alignment.h b/include/seqan/align/evaluate_alignment.h
index e242f2e..a8fdaa5 100644
--- a/include/seqan/align/evaluate_alignment.h
+++ b/include/seqan/align/evaluate_alignment.h
@@ -316,8 +316,8 @@ TScoreVal computeAlignmentStats(AlignmentStats & stats,
return computeAlignmentStats(stats, row(align, 0), row(align, 1), scoringScheme);
}
-// NOTE(h-2): this interface is deprecated. Don't use it.
template <typename TGaps, typename TAlignSpec, typename TScoreVal, typename TScoreSpec>
+[[deprecated("Use computeAlignmentStats(stats, align, scoringScheme) instead.")]]
TScoreVal computeAlignmentStats(Align<TGaps, TAlignSpec> const & align,
Score<TScoreVal, TScoreSpec> const & scoringScheme)
{
diff --git a/include/seqan/align/gaps_anchor.h b/include/seqan/align/gaps_anchor.h
index c75042d..154f1c6 100644
--- a/include/seqan/align/gaps_anchor.h
+++ b/include/seqan/align/gaps_anchor.h
@@ -302,7 +302,7 @@ inline void
_assignSourceLength(TSize & size, Gaps<TSource, AnchorGaps<TGapAnchors> > const & me)
{
if (IsSameType<TSource, Nothing>::VALUE)
- size = maxValue<TSize>() / 2;
+ size = std::numeric_limits<TSize>::max() / 2;
else
size = length(value(me.data_source));
}
@@ -345,13 +345,13 @@ _getAnchor(TAnchor & anchor, Gaps<TSource, AnchorGaps<TGapAnchors> > const & me,
{
// if there is no sequence but anchors -> assume infinite sequence
if (anchor.seqPos == 0)
- anchor.seqPos = maxValue(anchor.gapPos);
+ anchor.seqPos = std::numeric_limits<decltype(anchor.gapPos)>::max();
// if the sequence has a length > 0, but there is an anchor behind the end
// -> elongate sequence
else if ((int64_t)anchor.seqPos < (int64_t)back(_dataAnchors(me)).seqPos)
anchor.seqPos = back(_dataAnchors(me)).seqPos;
}
- anchor.gapPos = maxValue(anchor.gapPos);
+ anchor.gapPos = std::numeric_limits<decltype(anchor.gapPos)>::max();
}
}
else if (idx > 0)
@@ -362,7 +362,7 @@ _getAnchor(TAnchor & anchor, Gaps<TSource, AnchorGaps<TGapAnchors> > const & me,
if (idx == 0)
anchor.gapPos = 0;
else
- anchor.gapPos = minValue(anchor.gapPos);
+ anchor.gapPos = std::numeric_limits<decltype(anchor.gapPos)>::min();
}
}
diff --git a/include/seqan/align/gaps_base.h b/include/seqan/align/gaps_base.h
index e187688..ed29a01 100644
--- a/include/seqan/align/gaps_base.h
+++ b/include/seqan/align/gaps_base.h
@@ -455,7 +455,7 @@ bool isGap(Gaps<TSequence, TSpec> const & gaps, TPos clippedViewPos)
* @fn Gaps#isCharacer
* @brief Query positions in a Gaps object for being a character.
*
- * @signature bool isGap(gaps, viewPos);
+ * @signature bool isCharacter(gaps, viewPos);
*
* @param[in] gaps The Gaps object to query.
* @param[in] viewPos The view position (including clipping and gaps).
diff --git a/include/seqan/align/gaps_iterator_anchor.h b/include/seqan/align/gaps_iterator_anchor.h
index 775af98..7d98108 100644
--- a/include/seqan/align/gaps_iterator_anchor.h
+++ b/include/seqan/align/gaps_iterator_anchor.h
@@ -180,7 +180,7 @@ getValue(Iter<TGaps, GapsIterator<AnchorGaps<TGapAnchors> > > & me)
typedef typename Value<Iter<TGaps, GapsIterator<ArrayGaps> > >::Type TValue;
if (isGap(me)) return gapValue<TValue>();
else if (isUnknown(me)) return unknownValue<TValue>();
- else return getValue(source(me));
+ else return *source(me);
}
template <typename TGaps, typename TGapAnchors>
@@ -190,7 +190,7 @@ getValue(Iter<TGaps, GapsIterator<AnchorGaps<TGapAnchors> > > const & me)
typedef typename Value<Iter<TGaps, GapsIterator<ArrayGaps> > const>::Type TValue;
if (isGap(me)) return gapValue<TValue>();
else if (isUnknown(me)) return unknownValue<TValue>();
- else return getValue(source(me));
+ else return *source(me);
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/global_alignment_myers_hirschberg_impl.h b/include/seqan/align/global_alignment_myers_hirschberg_impl.h
index 24e67ec..d6ce1f0 100644
--- a/include/seqan/align/global_alignment_myers_hirschberg_impl.h
+++ b/include/seqan/align/global_alignment_myers_hirschberg_impl.h
@@ -257,7 +257,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
String<unsigned> forwardBitMask;
String<unsigned> reverseBitMask;
- resize(VP, blockCount, maxValue<unsigned>());
+ resize(VP, blockCount, std::numeric_limits<unsigned>::max());
resize(VN, blockCount, 0);
// first bitMask will be constructed from the shorter sequence
@@ -512,7 +512,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
fSilencer <<= fOffSet;
/* reset v-bitvectors */
- std::fill(begin(VP, Standard()) + fStartBlock, begin(VP, Standard()) + fEndBlock + 1, maxValue<unsigned>());
+ std::fill(begin(VP, Standard()) + fStartBlock, begin(VP, Standard()) + fEndBlock + 1, std::numeric_limits<unsigned>::max());
std::fill(begin(VN, Standard()) + fStartBlock, begin(VN, Standard()) + fEndBlock + 1, 0);
/* determine start-position and start-score */
@@ -622,7 +622,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
rSilencer <<= rOffSet;
/* reset v-bitvectors */
- std::fill(begin(VP, Standard()) + rStartBlock, begin(VP, Standard()) + rEndBlock + 1, maxValue<unsigned>());
+ std::fill(begin(VP, Standard()) + rStartBlock, begin(VP, Standard()) + rEndBlock + 1, std::numeric_limits<unsigned>::max());
std::fill(begin(VN, Standard()) + rStartBlock, begin(VN, Standard()) + rEndBlock + 1, 0);
/* determine start-position and start-score */
diff --git a/include/seqan/align/global_alignment_myers_impl.h b/include/seqan/align/global_alignment_myers_impl.h
index 8082f3b..0d3c20e 100644
--- a/include/seqan/align/global_alignment_myers_impl.h
+++ b/include/seqan/align/global_alignment_myers_impl.h
@@ -94,7 +94,7 @@ _globalAlignmentScore(String<TAlphabetH, TSpecH> const & seqH,
unsigned int scoreMask = 1 << ((len_y % BLOCK_SIZE) - 1); // the mask with a bit set at the position of the last active cell
String<unsigned> VP;
- resize(VP, blockCount, maxValue<unsigned>());
+ resize(VP, blockCount, std::numeric_limits<unsigned>::max());
String<unsigned> VN;
resize(VN, blockCount, 0);
String<unsigned> bitMask;
diff --git a/include/seqan/align/local_alignment_banded_waterman_eggert_impl.h b/include/seqan/align/local_alignment_banded_waterman_eggert_impl.h
index 3f42d50..b80511c 100644
--- a/include/seqan/align/local_alignment_banded_waterman_eggert_impl.h
+++ b/include/seqan/align/local_alignment_banded_waterman_eggert_impl.h
@@ -498,8 +498,8 @@ _initLocalAlignmentFinder(TSequenceH const & seqH,
resize(finder.forbidden, height * diagonalWidth, false);
- finder.bestEndPos = minValue<typename TFinder::TMatrixPosition>();
- finder.bestBeginPos = minValue<typename TFinder::TMatrixPosition>();
+ finder.bestEndPos = std::numeric_limits<typename TFinder::TMatrixPosition>::min();
+ finder.bestBeginPos = std::numeric_limits<typename TFinder::TMatrixPosition>::min();
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align/local_alignment_waterman_eggert_impl.h b/include/seqan/align/local_alignment_waterman_eggert_impl.h
index e78fc33..d80cfc3 100644
--- a/include/seqan/align/local_alignment_waterman_eggert_impl.h
+++ b/include/seqan/align/local_alignment_waterman_eggert_impl.h
@@ -64,7 +64,7 @@ public:
TValue value_;
TID id_;
- ScoreAndID() : value_(MinValue<TValue>::VALUE), id_(MaxValue<TValue>::VALUE)
+ ScoreAndID() : value_(std::numeric_limits<TValue>::min()), id_(std::numeric_limits<TValue>::max())
{}
ScoreAndID(TValue score, TID id_pos)
@@ -157,8 +157,8 @@ _initLocalAlignmentFinder(TSequenceH const & seqH,
resize(finder.forbidden, (len0 + 1) * (len1 + 1), false);
- finder.bestEndPos = maxValue<typename TFinder::TMatrixPosition>();
- finder.bestBeginPos = maxValue<typename TFinder::TMatrixPosition>();
+ finder.bestEndPos = std::numeric_limits<typename TFinder::TMatrixPosition>::max();
+ finder.bestBeginPos = std::numeric_limits<typename TFinder::TMatrixPosition>::max();
}
// ----------------------------------------------------------------------------
@@ -179,7 +179,7 @@ template <typename TScoreValue>
TScoreValue getScore(LocalAlignmentFinder<TScoreValue> const & sw)
{
typedef LocalAlignmentFinder<TScoreValue> TFinder;
- if(sw.bestEndPos != maxValue<typename TFinder::TMatrixPosition>())
+ if(sw.bestEndPos != std::numeric_limits<typename TFinder::TMatrixPosition>::max())
return getValue(const_cast<typename TFinder::TMatrix &>(sw.matrix), sw.bestEndPos);
return 0;
}
diff --git a/include/seqan/align_extend/align_extend.h b/include/seqan/align_extend/align_extend.h
index f5459fb..6489927 100644
--- a/include/seqan/align_extend/align_extend.h
+++ b/include/seqan/align_extend/align_extend.h
@@ -254,7 +254,7 @@ _extendAlignmentImpl(Gaps<TSource0, TGapsSpec0> & row0,
TPos newAlignLen = length(row0);
// centerScore was set to "compute yourself" by interface function without score parameter
- if (centerScore == minValue<TScoreValue>())
+ if (centerScore == std::numeric_limits<TScoreValue>::min())
{
centerScore = 0;
@@ -501,7 +501,7 @@ extendAlignment(Align<TStringInfix, TAlignSpec> & align,
ExtensionDirection const & direction,
Score<TScoreValue, TScoreSpec> const & scoreScheme)
{
- return _extendAlignmentImpl(align, minValue<TScoreValue>(), hSeq, vSeq, positions, direction, 0, 0, 0, scoreScheme,
+ return _extendAlignmentImpl(align, std::numeric_limits<TScoreValue>::min(), hSeq, vSeq, positions, direction, 0, 0, 0, scoreScheme,
False(), False());
}
@@ -533,7 +533,7 @@ extendAlignment(Align<TStringInfix, TAlignSpec> & align,
int const upperDiag,
Score<TScoreValue, TScoreSpec> const & scoreScheme)
{
- return _extendAlignmentImpl(align, minValue<TScoreValue>(), hSeq, vSeq, positions, direction, lowerDiag, upperDiag,
+ return _extendAlignmentImpl(align, std::numeric_limits<TScoreValue>::min(), hSeq, vSeq, positions, direction, lowerDiag, upperDiag,
0, scoreScheme, True(), False());
}
@@ -566,7 +566,7 @@ extendAlignment(Align<TStringInfix, TAlignSpec> & align,
TScoreValue const & xDrop,
Score<TScoreValue, TScoreSpec> const & scoreScheme)
{
- return _extendAlignmentImpl(align, minValue<TScoreValue>(), hSeq, vSeq, positions, direction, 0, 0, xDrop,
+ return _extendAlignmentImpl(align, std::numeric_limits<TScoreValue>::min(), hSeq, vSeq, positions, direction, 0, 0, xDrop,
scoreScheme, False(), True());
}
@@ -600,7 +600,7 @@ extendAlignment(Align<TStringInfix, TAlignSpec> & align,
TScoreValue const & xDrop,
Score<TScoreValue, TScoreSpec> const & scoreScheme)
{
- return _extendAlignmentImpl(align, minValue<TScoreValue>(), hSeq, vSeq, positions, direction, lowerDiag, upperDiag,
+ return _extendAlignmentImpl(align, std::numeric_limits<TScoreValue>::min(), hSeq, vSeq, positions, direction, lowerDiag, upperDiag,
xDrop, scoreScheme, True(), True());
}
diff --git a/include/seqan/align_extend/dp_scout_xdrop.h b/include/seqan/align_extend/dp_scout_xdrop.h
index 8331f22..9cd22eb 100644
--- a/include/seqan/align_extend/dp_scout_xdrop.h
+++ b/include/seqan/align_extend/dp_scout_xdrop.h
@@ -68,14 +68,14 @@ public:
TScoreValue columnMax;
DPScoutState_() :
- terminationThreshold(MaxValue<TScoreValue>::VALUE),
- columnMax(MinValue<TScoreValue>::VALUE)
+ terminationThreshold(std::numeric_limits<TScoreValue>::max()),
+ columnMax(std::numeric_limits<TScoreValue>::min())
{
}
DPScoutState_(TScoreValue const & _terminationThreshold) :
terminationThreshold(_terminationThreshold),
- columnMax(MinValue<TScoreValue>::VALUE)
+ columnMax(std::numeric_limits<TScoreValue>::min())
{
}
};
@@ -156,7 +156,7 @@ _scoutBestScore(DPScout_<TDPCell, Terminator_<XDrop_<TDPCellValue> > > & dpScout
if (_scoreOfCell(dpScout._maxScore) - dpScout.state->columnMax >= dpScout.state->terminationThreshold)
terminateScout(dpScout);
else // reset columMax at end of column
- dpScout.state->columnMax = MinValue<TScoreValue>::VALUE;
+ dpScout.state->columnMax = std::numeric_limits<TScoreValue>::min();
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/align_profile/add_to_profile.h b/include/seqan/align_profile/add_to_profile.h
index 76f035d..bbd1cac 100644
--- a/include/seqan/align_profile/add_to_profile.h
+++ b/include/seqan/align_profile/add_to_profile.h
@@ -83,8 +83,8 @@ namespace seqan {
template <typename TChar, typename TValue, typename TSpec, typename TSpec2>
void addToProfile(String<ProfileChar<TChar, TValue, TSpec> > & profile,
String<TChar, TSpec2> /*const*/ & seq,
- int lDiag = minValue<int>(),
- int uDiag = maxValue<int>()) // non-const because of holder issues
+ int lDiag = std::numeric_limits<int>::min(),
+ int uDiag = std::numeric_limits<int>::max()) // non-const because of holder issues
{
typedef ProfileChar<TChar, TValue, TSpec> TProfileChar;
@@ -97,7 +97,7 @@ void addToProfile(String<ProfileChar<TChar, TValue, TSpec> > & profile,
seqan::Score<int, seqan::ProfileSeqScore> sScheme(profile);
// Perform the global alignment.
- if (lDiag == minValue<int>() || uDiag == maxValue<int>())
+ if (lDiag == std::numeric_limits<int>::min() || uDiag == std::numeric_limits<int>::max())
globalAlignment(gapsH, gapsV, sScheme, Gotoh());
else
globalAlignment(gapsH, gapsV, sScheme, lDiag, uDiag, Gotoh());
diff --git a/include/seqan/align_split/align_split_interface.h b/include/seqan/align_split/align_split_interface.h
index 658536a..f1db184 100644
--- a/include/seqan/align_split/align_split_interface.h
+++ b/include/seqan/align_split/align_split_interface.h
@@ -389,7 +389,7 @@ auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
// We actually need to first compute the scores, than trace from the choosen split position.
DPContext<TScoreValue, TGapModel> dpContextL;
DPScoutState_<SplitAlignmentScout> scoutStateL;
- resize(scoutStateL.splitScore, length(source(gapsContigL)) + 1, minValue<TScoreValue>() / 2);
+ resize(scoutStateL.splitScore, length(source(gapsContigL)) + 1, std::numeric_limits<TScoreValue>::min() / 2);
resize(scoutStateL.splitPos, length(scoutStateL.splitScore));
String<TTraceSegment> traceL;
@@ -402,7 +402,7 @@ auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
// Compute trace and split score sequence for the right alignment.
DPContext<TScoreValue, TGapModel> dpContextR;
DPScoutState_<SplitAlignmentScout> scoutStateR;
- resize(scoutStateR.splitScore, length(source(gapsContigR)) + 1, minValue<TScoreValue>() / 2);
+ resize(scoutStateR.splitScore, length(source(gapsContigR)) + 1, std::numeric_limits<TScoreValue>::min() / 2);
resize(scoutStateR.splitPos, length(scoutStateR.splitScore));
String<TTraceSegment> traceR;
@@ -482,7 +482,7 @@ auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
{
typedef typename SubstituteAlignConfig_<AlignConfig<TTop, TRight, TLeft, TBottom> >::Type TFreeEndGaps;
// Check whether we need to run the banded versions.
- if (lowerDiagonal != minValue<int>() && upperDiagonal != maxValue<int>())
+ if (lowerDiagonal != std::numeric_limits<int>::min() && upperDiagonal != std::numeric_limits<int>::max())
{
typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOn>, TFreeEndGaps,
TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TAlignConfigL;
@@ -513,8 +513,8 @@ auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
Gaps<TReadSeqR> & gapsReadR,
Score<TScoreValue, TScoreSpec> const & scoringScheme,
AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const & config,
- int lowerDiagonal = minValue<int>(),
- int upperDiagonal = maxValue<int>())
+ int lowerDiagonal = std::numeric_limits<int>::min(),
+ int upperDiagonal = std::numeric_limits<int>::max())
{
if (_usesAffineGaps(scoringScheme, source(gapsContigL), source(gapsReadL)))
return _splitAlignmentImpl(gapsContigL, gapsReadL, gapsContigR, gapsReadR,
diff --git a/include/seqan/bam_io/bam_alignment_record.h b/include/seqan/bam_io/bam_alignment_record.h
index b2b089e..7f2ff6e 100644
--- a/include/seqan/bam_io/bam_alignment_record.h
+++ b/include/seqan/bam_io/bam_alignment_record.h
@@ -254,7 +254,7 @@ public:
static int32_t const INVALID_LEN = 0;
static uint32_t const INVALID_QID = 4294967295u; // TODO(holtgrew): Undocumented as of yet.
- BamAlignmentRecord() : _qID(MaxValue<unsigned>::VALUE) { clear(*this); }
+ BamAlignmentRecord() : _qID(std::numeric_limits<unsigned>::max()) { clear(*this); }
};
// ============================================================================
@@ -281,7 +281,7 @@ clear(BamAlignmentRecord & record)
{
clear(record.qName);
record.flag = 0;
- record._qID = MaxValue<uint32_t>::VALUE;
+ record._qID = std::numeric_limits<uint32_t>::max();
record.rID = BamAlignmentRecord::INVALID_REFID;
record.beginPos = BamAlignmentRecord::INVALID_POS;
record.mapQ = 255;
@@ -613,19 +613,19 @@ getAlignmentLengthInRef(BamAlignmentRecord const & record)
#if SEQAN_BIG_ENDIAN
inline void
-ensure_little_endian(BamAlignmentRecordCore & r)
+enforceLittleEndian(BamAlignmentRecordCore & r)
{
- ensure_little_endian(r.rID);
- ensure_little_endian(r.beginPos);
+ enforceLittleEndian(r.rID);
+ enforceLittleEndian(r.beginPos);
// _l_qname unchanged because 8bit
// mapQ unchanged because 8bit
r.bin = htole16(r.bin);
r._n_cigar = htole16(r._n_cigar);
r.flag = htole16(r.flag);
- ensure_little_endian(r._l_qseq);
- ensure_little_endian(r.rNextId);
- ensure_little_endian(r.pNext);
- ensure_little_endian(r.tLen);
+ enforceLittleEndian(r._l_qseq);
+ enforceLittleEndian(r.rNextId);
+ enforceLittleEndian(r.pNext);
+ enforceLittleEndian(r.tLen);
}
// This function is guarded so that we save the copy on little endian systems
@@ -633,7 +633,7 @@ template <typename TTarget>
inline void
appendRawPod(TTarget & target, BamAlignmentRecordCore r)
{
- ensure_little_endian(r);
+ enforceLittleEndian(r);
appendRawPodImpl(target, r);
}
#endif
diff --git a/include/seqan/bam_io/bam_file.h b/include/seqan/bam_io/bam_file.h
index bf1c681..059a17a 100644
--- a/include/seqan/bam_io/bam_file.h
+++ b/include/seqan/bam_io/bam_file.h
@@ -243,7 +243,7 @@ readRecord(BamAlignmentRecord & record, FormattedFile<Bam, Input, TSpec> & file)
template <typename TRecords, typename TSpec, typename TSize>
inline SEQAN_FUNC_ENABLE_IF(And<IsSameType<typename Value<TRecords>::Type, BamAlignmentRecord>,
- IsInteger<TSize> >, TSize)
+ Is<IntegerConcept<TSize> > >, TSize)
readRecords(TRecords & records, FormattedFile<Bam, Input, TSpec> & file, TSize maxRecords)
{
String<CharString> & buffers = context(file).buffers;
diff --git a/include/seqan/bam_io/bam_header_record.h b/include/seqan/bam_io/bam_header_record.h
index 0854d33..ee095a8 100644
--- a/include/seqan/bam_io/bam_header_record.h
+++ b/include/seqan/bam_io/bam_header_record.h
@@ -272,7 +272,7 @@ findTagKey(unsigned & idx, TKeyName const & key, BamHeaderRecord const & record)
template <typename TId>
SEQAN_FUNC_ENABLE_IF(
- IsInteger<TId>,
+ Is<IntegerConcept<TId> >,
bool)
inline getTagValue(CharString & value, TId idx, BamHeaderRecord const & record)
{
@@ -310,7 +310,7 @@ inline getTagValue(CharString & value, TKeyName const & key, BamHeaderRecord con
template <typename TId>
SEQAN_FUNC_ENABLE_IF(
- IsInteger<TId>,
+ Is<IntegerConcept<TId> >,
void)
inline setTagValue(TId idx, CharString const & value, BamHeaderRecord & record)
{
diff --git a/include/seqan/bam_io/bam_index_bai.h b/include/seqan/bam_io/bam_index_bai.h
index 4a115f9..bbd07a8 100644
--- a/include/seqan/bam_io/bam_index_bai.h
+++ b/include/seqan/bam_io/bam_index_bai.h
@@ -146,7 +146,7 @@ public:
String<TBinIndex_> _binIndices;
String<TLinearIndex_> _linearIndices;
- BamIndex() : _unalignedCount(maxValue<uint64_t>())
+ BamIndex() : _unalignedCount(std::numeric_limits<uint64_t>::max())
{}
};
@@ -218,7 +218,7 @@ jumpToRegion(FormattedFile<Bam, Input, TSpec> & bamFile,
// ------------------------------------------------------------------------
// Compute offset in BGZF file.
// ------------------------------------------------------------------------
- uint64_t offset = MaxValue<uint64_t>::VALUE;
+ uint64_t offset = std::numeric_limits<uint64_t>::max();
// Retrieve the candidate bin identifiers for [pos, posEnd).
String<uint16_t> candidateBins;
@@ -312,7 +312,7 @@ jumpToRegion(FormattedFile<Bam, Input, TSpec> & bamFile,
break; // Cannot find overlapping any more.
}
- if (offset != MaxValue<uint64_t>::VALUE)
+ if (offset != std::numeric_limits<uint64_t>::max())
setPosition(bamFile, offset);
// Finding no overlapping alignment is not an error, hasAlignments is false.
@@ -345,19 +345,19 @@ bool jumpToOrphans(FormattedFile<Bam, Input, TSpec> & bamFile,
hasAlignments = false;
// Search linear indices for the largest entry of all references.
- uint64_t aliOffset = MaxValue<uint64_t>::VALUE;
+ uint64_t aliOffset = std::numeric_limits<uint64_t>::max();
for (int i = length(index._linearIndices) - 1; i >= 0; --i)
if (!empty(index._linearIndices[i]))
{
aliOffset = back(index._linearIndices[i]);
break;
}
- if (aliOffset == MaxValue<uint64_t>::VALUE)
+ if (aliOffset == std::numeric_limits<uint64_t>::max())
return false; // No offset found.
// Get index of the first orphan alignment by seeking from linear index bucket.
BamAlignmentRecord record;
- uint64_t offset = MaxValue<uint64_t>::VALUE;
+ uint64_t offset = std::numeric_limits<uint64_t>::max();
uint64_t result = 0;
if (!setPosition(bamFile, aliOffset))
return false; // Error while seeking.
@@ -375,7 +375,7 @@ bool jumpToOrphans(FormattedFile<Bam, Input, TSpec> & bamFile,
}
// Jump back to the first alignment.
- if (offset != MaxValue<uint64_t>::VALUE)
+ if (offset != std::numeric_limits<uint64_t>::max())
{
if (!setPosition(bamFile, offset))
return false; // Error while seeking.
@@ -440,7 +440,7 @@ open(BamIndex<Bai> & index, char const * filename)
fin.read(reinterpret_cast<char *>(&nRef), 4);
if (!fin.good())
return false;
- ensure_little_endian(nRef);
+ enforceLittleEndian(nRef);
resize(index._linearIndices, nRef);
resize(index._binIndices, nRef);
@@ -452,7 +452,7 @@ open(BamIndex<Bai> & index, char const * filename)
fin.read(reinterpret_cast<char *>(&nBin), 4);
if (!fin.good())
return false;
- ensure_little_endian(nBin);
+ enforceLittleEndian(nBin);
index._binIndices[i].clear();
BaiBamIndexBinData_ data;
for (int j = 0; j < nBin; ++j) // For each bin.
@@ -463,13 +463,13 @@ open(BamIndex<Bai> & index, char const * filename)
fin.read(reinterpret_cast<char *>(&bin), 4);
if (!fin.good())
return false;
- ensure_little_endian(bin);
+ enforceLittleEndian(bin);
int32_t nChunk = 0;
fin.read(reinterpret_cast<char *>(&nChunk), 4);
if (!fin.good())
return false;
- ensure_little_endian(nChunk);
+ enforceLittleEndian(nChunk);
reserve(data.chunkBegEnds, nChunk);
for (int k = 0; k < nChunk; ++k) // For each chunk;
{
@@ -479,8 +479,8 @@ open(BamIndex<Bai> & index, char const * filename)
fin.read(reinterpret_cast<char *>(&chunkEnd), 8);
if (!fin.good())
return false;
- ensure_little_endian(chunkBeg);
- ensure_little_endian(chunkEnd);
+ enforceLittleEndian(chunkBeg);
+ enforceLittleEndian(chunkEnd);
appendValue(data.chunkBegEnds, Pair<uint64_t>(chunkBeg, chunkEnd));
}
@@ -493,7 +493,7 @@ open(BamIndex<Bai> & index, char const * filename)
fin.read(reinterpret_cast<char *>(&nIntv), 4);
if (!fin.good())
return false;
- ensure_little_endian(nIntv);
+ enforceLittleEndian(nIntv);
clear(index._linearIndices[i]);
reserve(index._linearIndices[i], nIntv);
for (int j = 0; j < nIntv; ++j)
@@ -502,7 +502,7 @@ open(BamIndex<Bai> & index, char const * filename)
fin.read(reinterpret_cast<char *>(&ioffset), 8);
if (!fin.good())
return false;
- ensure_little_endian(ioffset);
+ enforceLittleEndian(ioffset);
appendValue(index._linearIndices[i], ioffset);
}
}
@@ -518,7 +518,7 @@ open(BamIndex<Bai> & index, char const * filename)
fin.clear();
nNoCoord = 0;
}
- ensure_little_endian(nNoCoord);
+ enforceLittleEndian(nNoCoord);
index._unalignedCount = nNoCoord;
return true;
@@ -558,7 +558,7 @@ inline bool save(BamIndex<Bai> const & index, char const * baiFilename)
// Write header.
out.write("BAI\1", 4);
int32_t numRefSeqs = length(index._binIndices);
- ensure_little_endian(numRefSeqs);
+ enforceLittleEndian(numRefSeqs);
out.write(reinterpret_cast<char *>(&numRefSeqs), 4);
// Write out indices.
@@ -573,26 +573,26 @@ inline bool save(BamIndex<Bai> const & index, char const * baiFilename)
// Write out binning index.
int32_t numBins = binIndex.size();
- ensure_little_endian(numBins);
+ enforceLittleEndian(numBins);
out.write(reinterpret_cast<char *>(&numBins), 4);
for (TBinIndexIter itB = binIndex.begin(), itBEnd = binIndex.end(); itB != itBEnd; ++itB)
{
// Write out bin id.
uint32_t tmp = itB->first;
- ensure_little_endian(tmp);
+ enforceLittleEndian(tmp);
out.write(reinterpret_cast<char const *>(&tmp), 4);
// Write out number of chunks.
uint32_t numChunks = length(itB->second.chunkBegEnds);
- ensure_little_endian(numChunks);
+ enforceLittleEndian(numChunks);
out.write(reinterpret_cast<char *>(&numChunks), 4);
// Write out all chunks.
typedef Iterator<String<Pair<uint64_t> > const, Rooted>::Type TChunkIter;
for (TChunkIter itC = begin(itB->second.chunkBegEnds); !atEnd(itC); goNext(itC))
{
uint64_t tmp1 = itC->i1;
- ensure_little_endian(tmp1);
+ enforceLittleEndian(tmp1);
uint64_t tmp2 = itC->i2;
- ensure_little_endian(tmp2);
+ enforceLittleEndian(tmp2);
out.write(reinterpret_cast<char const *>(&tmp1), 8);
out.write(reinterpret_cast<char const *>(&tmp2), 8);
}
@@ -600,23 +600,23 @@ inline bool save(BamIndex<Bai> const & index, char const * baiFilename)
// Write out linear index.
int32_t numIntervals = length(linearIndex);
- ensure_little_endian(numIntervals);
+ enforceLittleEndian(numIntervals);
out.write(reinterpret_cast<char *>(&numIntervals), 4);
typedef Iterator<String<uint64_t> const, Rooted>::Type TLinearIndexIter;
for (TLinearIndexIter it = begin(linearIndex, Rooted()); !atEnd(it); goNext(it))
{
uint64_t tmp = *it;
- ensure_little_endian(tmp);
+ enforceLittleEndian(tmp);
out.write(reinterpret_cast<char const *>(&tmp), 8);
}
}
// Write the number of unaligned reads if set.
//std::cerr << "UNALIGNED\t" << index._unalignedCount << std::endl;
- if (index._unalignedCount != maxValue<uint64_t>())
+ if (index._unalignedCount != std::numeric_limits<uint64_t>::max())
{
uint64_t tmp = index._unalignedCount;
- ensure_little_endian(tmp);
+ enforceLittleEndian(tmp);
out.write(reinterpret_cast<char const *>(&tmp), 8);
}
@@ -683,13 +683,13 @@ inline bool build(BamIndex<Bai> & index, char const * bamFilename)
// Scan over BAM file and create index.
BamAlignmentRecord record;
- uint32_t currBin = maxValue<uint32_t>();
- uint32_t prevBin = maxValue<uint32_t>();
+ uint32_t currBin = std::numeric_limits<uint32_t>::max();
+ uint32_t prevBin = std::numeric_limits<uint32_t>::max();
int32_t currRefId = BamAlignmentRecord::INVALID_REFID;
int32_t prevRefId = BamAlignmentRecord::INVALID_REFID;
uint64_t currOffset = position(bamFile);
uint64_t prevOffset = currOffset;
- int32_t prevPos = minValue<int32_t>();
+ int32_t prevPos = std::numeric_limits<int32_t>::min();
while (!atEnd(bamFile))
{
@@ -737,7 +737,7 @@ inline bool build(BamIndex<Bai> & index, char const * bamFilename)
// Update reference book keeping.
prevRefId = record.rID;
- prevBin = minValue<int32_t>();
+ prevBin = std::numeric_limits<int32_t>::min();
}
// If the alignment's reference id is valid and its bin is not a leaf.
@@ -763,7 +763,7 @@ inline bool build(BamIndex<Bai> & index, char const * bamFilename)
if (record.bin != prevBin)
{
// If not first bin of reference, save previous bin data.
- if (currBin != maxValue<uint32_t>())
+ if (currBin != std::numeric_limits<uint32_t>::max())
_baiAddAlignmentChunkToBin(index, currBin, currOffset, prevOffset);
// Update markers.
diff --git a/include/seqan/bam_io/bam_sam_conversion.h b/include/seqan/bam_io/bam_sam_conversion.h
index 66fafa9..2f5dd6e 100644
--- a/include/seqan/bam_io/bam_sam_conversion.h
+++ b/include/seqan/bam_io/bam_sam_conversion.h
@@ -234,7 +234,7 @@ struct AssignTagsBamToSamOneTagHelper_
return false;
Type tmp = *reinterpret_cast<Type const *>(&*it);
- ensure_little_endian(tmp);
+ enforceLittleEndian(tmp);
appendNumber(target, tmp);
it += sizeof(Type);
return true;
@@ -308,7 +308,7 @@ void _appendTagsBamToSamOneTag(TTarget & target, TSourceIter & it)
SEQAN_ASSERT_NOT(atEnd(it));
tmp.raw[i] = *it++;
}
- ensure_little_endian(tmp.len);
+ enforceLittleEndian(tmp.len);
for (uint32_t i = 0; i < tmp.len; ++i)
{
writeValue(target, ',');
diff --git a/include/seqan/bam_io/bam_tags_dict.h b/include/seqan/bam_io/bam_tags_dict.h
index 296f01c..98c41c7 100644
--- a/include/seqan/bam_io/bam_tags_dict.h
+++ b/include/seqan/bam_io/bam_tags_dict.h
@@ -302,7 +302,7 @@ buildIndex(BamTagsDict const & bamTags)
uint32_t len;
} tmp;
arrayCopyForward(it, it + 4, tmp.raw);
- ensure_little_endian(tmp.len);
+ enforceLittleEndian(tmp.len);
it += 4 + tmp.len * getBamTypeSize(c);
}
else
@@ -493,7 +493,7 @@ struct ExtractTagValueHelper_
} tmp;
arrayCopyForward(rawIter, rawIter + sizeof(Type), tmp.raw);
- ensure_little_endian(tmp.i);
+ enforceLittleEndian(tmp.i);
result = static_cast<TResultType>(tmp.i);
return true;
}
@@ -668,7 +668,7 @@ struct ToBamTagValueHelper_
} tmp;
tmp.i = static_cast<Type>(val);
- ensure_little_endian(tmp.i);
+ enforceLittleEndian(tmp.i);
append(result, toRange(&tmp.raw[0], &tmp.raw[sizeof(Type)]));
return true;
}
diff --git a/include/seqan/bam_io/read_bam.h b/include/seqan/bam_io/read_bam.h
index 24d57ca..8d5143f 100644
--- a/include/seqan/bam_io/read_bam.h
+++ b/include/seqan/bam_io/read_bam.h
@@ -207,7 +207,7 @@ readRecord(BamAlignmentRecord & record,
// BamAlignmentRecordCore.
arrayCopyForward(it, it + sizeof(BamAlignmentRecordCore), reinterpret_cast<char*>(&record));
- ensure_little_endian(*reinterpret_cast<BamAlignmentRecordCore*>(&record));
+ enforceLittleEndian(*reinterpret_cast<BamAlignmentRecordCore*>(&record));
it += sizeof(BamAlignmentRecordCore);
remainingBytes -= sizeof(BamAlignmentRecordCore) + record._l_qname +
@@ -252,9 +252,9 @@ readRecord(BamAlignmentRecord & record,
{
unsigned char ui = getValue(it);
++it;
- assignValue(sit, Iupac(ui >> 4));
+ *sit = Iupac(ui >> 4);
++sit;
- assignValue(sit, Iupac(ui & 0x0f));
+ *sit = Iupac(ui & 0x0f);
++sit;
}
if (record._l_qseq & 1)
diff --git a/include/seqan/bam_io/read_sam.h b/include/seqan/bam_io/read_sam.h
index ad30a46..83c52db 100644
--- a/include/seqan/bam_io/read_sam.h
+++ b/include/seqan/bam_io/read_sam.h
@@ -353,7 +353,7 @@ readRecord(BamAlignmentRecord & record,
// TLEN
if (value(iter) == '*')
{
- record.tLen = MaxValue<int32_t>::VALUE;
+ record.tLen = std::numeric_limits<int32_t>::max();
skipOne(iter);
}
else
diff --git a/include/seqan/basic/allocator_interface.h b/include/seqan/basic/allocator_interface.h
index 41d7169..60d09af 100644
--- a/include/seqan/basic/allocator_interface.h
+++ b/include/seqan/basic/allocator_interface.h
@@ -200,34 +200,18 @@ allocate(T const &,
#else
data = (TValue *) malloc(count * sizeof(TValue));
#endif*/
- data = (TValue *) operator new(count * sizeof(TValue));
-#endif
-
-#ifdef SEQAN_PROFILE
- if (data)
- SEQAN_PROADD(SEQAN_PROMEMORY, count * sizeof(TValue));
-#endif
-}
-
-template <typename T, typename TValue, typename TSize, typename TUsage>
-inline void
-allocate(T &,
- TValue * & data,
- TSize count,
- Tag<TUsage> const &)
-{
-// data = (TValue *) operator new(count * sizeof(TValue));
-#ifdef STDLIB_VS
- data = (TValue *) _aligned_malloc(count * sizeof(TValue), __alignof(TValue));
-#else
-/*#if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
- const size_t align = (__alignof__(TValue) < sizeof(void*)) ? sizeof(void*) : __alignof__(TValue);
- if (posix_memalign(&(void* &)data, align, count * sizeof(TValue)))
- data = NULL;
-#else
- data = (TValue *) malloc(count * sizeof(TValue));
-#endif*/
- data = (TValue *) operator new(count * sizeof(TValue));
+// suppress -Walloc-size-larger-than= warning; a simple static_cast does not work
+// a working solution would be to downcast std::size_t to unsigned, but this
+// would loose information; thus disabling this for gcc 7 and upwards
+ SEQAN_ASSERT_LEQ(static_cast<std::size_t>(count), std::numeric_limits<std::size_t>::max() / sizeof(TValue));
+# if defined(COMPILER_GCC) && __GNUC__ >= 7
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Walloc-size-larger-than="
+# endif //COMPILER_GCC
+ data = (TValue *) operator new(count * sizeof(TValue));
+# if defined(COMPILER_GCC) && __GNUC__ >= 7
+# pragma GCC diagnostic pop
+# endif //COMPILER_GCC
#endif
#ifdef SEQAN_PROFILE
diff --git a/include/seqan/basic/alphabet_adapt_builtins.h b/include/seqan/basic/alphabet_adapt_builtins.h
index a5db639..730cea5 100644
--- a/include/seqan/basic/alphabet_adapt_builtins.h
+++ b/include/seqan/basic/alphabet_adapt_builtins.h
@@ -171,13 +171,15 @@ unknownValueImpl(char const *)
// ----------------------------------------------------------------------------
template <typename T>
+[[deprecated("Use std::numeric_limits<T>::max() instead.")]]
inline T const &
supremumValueImpl(T *)
{
- static T const x = MaxValue<T>::VALUE;
+ static T const x = std::numeric_limits<T>::max();
return x;
}
+[[deprecated("Use std::numeric_limits<T>::max() instead.")]]
inline long double const &
supremumValueImpl(long double *)
{
@@ -185,12 +187,15 @@ supremumValueImpl(long double *)
return _value;
}
+[[deprecated("Use std::numeric_limits<T>::max() instead.")]]
inline double const &
supremumValueImpl(double *)
{
static double const _value = std::numeric_limits<double>::infinity( );
return _value;
}
+
+[[deprecated("Use std::numeric_limits<T>::max() instead.")]]
inline float const &
supremumValueImpl(float *)
{
@@ -203,13 +208,15 @@ supremumValueImpl(float *)
// ----------------------------------------------------------------------------
template <typename T>
+[[deprecated("Use std::numeric_limits<T>::min() instead.")]]
inline T const &
infimumValueImpl(T *)
{
- static T const x = MinValue<T>::VALUE;
+ static T const x = std::numeric_limits<T>::min();
return x;
}
+[[deprecated("Use std::numeric_limits<T>::min() instead.")]]
inline float const &
infimumValueImpl(float *)
{
@@ -217,6 +224,7 @@ infimumValueImpl(float *)
return _value;
}
+[[deprecated("Use std::numeric_limits<T>::min() instead.")]]
inline double const &
infimumValueImpl(double *)
{
@@ -224,6 +232,7 @@ infimumValueImpl(double *)
return _value;
}
+[[deprecated("Use std::numeric_limits<T>::min() instead.")]]
inline long double const &
infimumValueImpl(long double *)
{
diff --git a/include/seqan/basic/alphabet_concept.h b/include/seqan/basic/alphabet_concept.h
index 50e5164..c0955ae 100644
--- a/include/seqan/basic/alphabet_concept.h
+++ b/include/seqan/basic/alphabet_concept.h
@@ -171,7 +171,7 @@ SEQAN_CONCEPT_REFINE(AlphabetConcept, (TValue), (Assignable)(DefaultConstructibl
*
* @section Status
*
- * Deprecated, will be removed in favour of OrderedAlphabetConcept#MaxValue.
+ * @deprecated Will be removed in favour of MaxValue.
*
* @see OrderedAlphabetConcept#maxValue
*/
@@ -191,7 +191,7 @@ SEQAN_CONCEPT_REFINE(AlphabetConcept, (TValue), (Assignable)(DefaultConstructibl
*
* @section Status
*
- * Deprecated, will be removed in favour of MaxValue.
+ * @deprecated Will be removed in favour of MaxValue.
*
* @see OrderedAlphabetConcept#supremumValueImpl
* @see OrderedAlphabetConcept#minValue
@@ -213,7 +213,7 @@ SEQAN_CONCEPT_REFINE(AlphabetConcept, (TValue), (Assignable)(DefaultConstructibl
*
* @section Status
*
- * Deprecated, will be removed in favour of MinValue.
+ * @deprecated Will be removed in favour of MinValue.
*
* @see OrderedAlphabetConcept#minValue
*/
@@ -233,7 +233,7 @@ SEQAN_CONCEPT_REFINE(AlphabetConcept, (TValue), (Assignable)(DefaultConstructibl
*
* @section Status
*
- * Deprecated, will be removed in favour of MinValue.
+ * @deprecated Will be removed in favour of MinValue.
*
* @see OrderedAlphabetConcept#infimumValueImpl
* @see OrderedAlphabetConcept#maxValue
@@ -243,10 +243,10 @@ SEQAN_CONCEPT_REFINE(AlphabetConcept, (TValue), (Assignable)(DefaultConstructibl
// Forwards for Metafunctions and Functions.
template <typename T> struct MinValue;
template <typename T> struct MaxValue;
-template <typename T> T const & minValue();
-template <typename T> T const & minValue(T);
-template <typename T> T const & maxValue();
-template <typename T> T const & maxValue(T);
+template <typename T> T minValue();
+template <typename T> T minValue(T);
+template <typename T> T maxValue();
+template <typename T> T maxValue(T);
SEQAN_CONCEPT_REFINE(OrderedAlphabetConcept, (TValue), (AlphabetConcept)(Comparable))
{
@@ -255,11 +255,11 @@ SEQAN_CONCEPT_REFINE(OrderedAlphabetConcept, (TValue), (AlphabetConcept)(Compara
SEQAN_CONCEPT_USAGE(OrderedAlphabetConcept)
{
// type consistency checks
- sameType(minValue(val), val);
- sameType(minValue<TValue>(), val);
+ // sameType(minValue(val), val); // minValue() is deprecated
+ // sameType(minValue<TValue>(), val); // minValue() is deprecated
sameType(MinValue<TValue>::VALUE, val);
- sameType(maxValue(val), val);
- sameType(maxValue<TValue>(), val);
+ // sameType(maxValue(val), val); // maxValue() is deprecated
+ // sameType(maxValue<TValue>(), val); // maxValue() is deprecated
sameType(MaxValue<TValue>::VALUE, val);
// TODO(holtgrew): This does not work in C++98, we need C++11 with constexpr.
diff --git a/include/seqan/basic/alphabet_math.h b/include/seqan/basic/alphabet_math.h
index c77afdb..d471a7b 100644
--- a/include/seqan/basic/alphabet_math.h
+++ b/include/seqan/basic/alphabet_math.h
@@ -211,7 +211,7 @@ unsigned char toUpperValue(unsigned char c)
// Function supremumValueImpl
// ----------------------------------------------------------------------------
-template <typename T> inline T const & supremumValueImpl(T *);
+template <typename T> [[deprecated("Use std::numeric_limits<T>::max() instead.")]] inline T const & supremumValueImpl(T *);
// ----------------------------------------------------------------------------
// Function maxValue
@@ -220,26 +220,26 @@ template <typename T> inline T const & supremumValueImpl(T *);
// Forward to supremumValueImpl() only.
template <typename T>
-inline T const &
+[[deprecated("Use std::numeric_limits<T>::max() instead.")]]
+inline T
maxValue()
{
- T * _tag = 0;
- return supremumValueImpl(_tag);
+ return std::numeric_limits<T>::max();
}
template <typename T>
-inline T const &
+[[deprecated("Use std::numeric_limits<T>::max() instead.")]]
+inline T
maxValue(T /*tag*/)
{
- T * _tag = 0;
- return supremumValueImpl(_tag);
+ return std::numeric_limits<T>::max();
}
// ----------------------------------------------------------------------------
// Function infimumValueImpl
// ----------------------------------------------------------------------------
-template <typename T> inline T const & infimumValueImpl(T *);
+template <typename T> [[deprecated("Use std::numeric_limits<T>::min() instead.")]] inline T const & infimumValueImpl(T *);
// ----------------------------------------------------------------------------
// Function minValue
@@ -248,19 +248,19 @@ template <typename T> inline T const & infimumValueImpl(T *);
// Forward to infimumValueImpl() only.
template <typename T>
-inline T const &
+[[deprecated("Use std::numeric_limits<T>::min() instead.")]]
+inline T
minValue()
{
- T * _tag = 0;
- return infimumValueImpl(_tag);
+ return std::numeric_limits<T>::min();
}
template <typename T>
-inline T const &
+[[deprecated("Use std::numeric_limits<T>::min() instead.")]]
+inline T
minValue(T /*tag*/)
{
- T * _tag = 0;
- return infimumValueImpl(_tag);
+ return std::numeric_limits<T>::min();
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/basic/alphabet_simple_type.h b/include/seqan/basic/alphabet_simple_type.h
index f4955fc..b7bc8f6 100644
--- a/include/seqan/basic/alphabet_simple_type.h
+++ b/include/seqan/basic/alphabet_simple_type.h
@@ -135,26 +135,20 @@ public:
// Members; Have to be defined in class.
// ------------------------------------------------------------------------
- TValue value;
+ TValue value{0};
// ------------------------------------------------------------------------
// Constructors; Have to be defined in class.
// ------------------------------------------------------------------------
// TODO(holtgrew): Do we want default initialization?
-
- SimpleType() : value(0)
- {}
-
-
- SimpleType(SimpleType const & other)
- {
- assign(*this, other);
- }
+ SimpleType() = default;
+ SimpleType(SimpleType const &) = default;
+ SimpleType(SimpleType &&) = default;
+ ~SimpleType() = default;
// TODO(holtgrew): Do we want an explicit here?
template <typename T>
-
SimpleType(T const & other)
{
assign(*this, other);
@@ -163,13 +157,8 @@ public:
// ------------------------------------------------------------------------
// Assignment Operator; Have to be defined in class.
// ------------------------------------------------------------------------
-
-
- SimpleType & operator=(SimpleType const & other)
- {
- assign(*this, other);
- return *this;
- }
+ SimpleType & operator=(SimpleType const &) = default;
+ SimpleType & operator=(SimpleType &&) = default;
template <typename T>
inline SimpleType &
@@ -264,6 +253,67 @@ public:
};
#pragma pack(pop)
+} // namespace seqan
+
+// ----------------------------------------------------------------------------
+// Class numeric_limits
+// ----------------------------------------------------------------------------
+namespace std
+{
+
+template <typename TValue, typename TSpec>
+class numeric_limits<seqan::SimpleType<TValue, TSpec> >
+{
+public:
+ static constexpr bool is_specialized = true;
+ static constexpr bool is_signed = false;
+ static constexpr bool is_integer = false;
+ static constexpr bool is_exact = true;
+ static constexpr bool has_infinity = false;
+ static constexpr bool has_quiet_NaN = false;
+ static constexpr bool has_signaling_NaN = false;
+ static constexpr float_denorm_style has_denorm = denorm_absent;
+ static constexpr bool has_denorm_loss = false;
+ static constexpr float_round_style round_style = round_toward_zero;
+ static constexpr bool is_iec559 = false;
+ static constexpr bool is_bounded = true;
+ static constexpr bool is_modulu = false;
+ static constexpr int digits = seqan::BitsPerValue<seqan::SimpleType<TValue, TSpec>>::VALUE;
+ static constexpr int digits10 = digits - 1;
+ static constexpr int max_digits10 = 0;
+ static constexpr int radix = 2;
+ static constexpr int min_exponent = 0;
+ static constexpr int min_exponent10 = 0;
+ static constexpr int max_exponent = 0;
+ static constexpr int max_exponent10 = 0;
+ static constexpr bool traps = false;
+ static constexpr bool tinyness_before = false;
+
+ static constexpr seqan::SimpleType<TValue, TSpec> min()
+ {
+ return seqan::SimpleType<TValue, TSpec>(0);
+ }
+
+ static constexpr seqan::SimpleType<TValue, TSpec> max()
+ {
+ return seqan::SimpleType<TValue, TSpec>(((TValue)seqan::ValueSize<seqan::SimpleType<TValue, TSpec> >::VALUE - 1));
+ }
+
+ static constexpr seqan::SimpleType<TValue, TSpec> lowest()
+ {
+ return seqan::SimpleType<TValue, TSpec>(0);
+ }
+
+ static constexpr seqan::SimpleType<TValue, TSpec> infinity()
+ {
+ return seqan::SimpleType<TValue, TSpec>(((TValue)seqan::ValueSize<seqan::SimpleType<TValue, TSpec> >::VALUE - 1));
+ }
+};
+
+} //namespace std
+
+namespace seqan
+{
// ============================================================================
// Metafunctions
// ============================================================================
@@ -319,7 +369,7 @@ struct MinValue<SimpleType<TValue, TSpec> >
};
template <typename TValue, typename TSpec>
-const SimpleType<TValue, TSpec> MinValue<SimpleType<TValue, TSpec> >::VALUE = SimpleType<TValue, TSpec>(0);
+const SimpleType<TValue, TSpec> MinValue<SimpleType<TValue, TSpec> >::VALUE = std::numeric_limits<SimpleType<TValue, TSpec>>::min();
template <typename TValue, typename TSpec>
inline SimpleType<TValue, TSpec> const &
@@ -339,7 +389,7 @@ struct MaxValue<SimpleType<TValue, TSpec> >
};
template <typename TValue, typename TSpec>
-const SimpleType<TValue, TSpec> MaxValue<SimpleType<TValue, TSpec> >::VALUE = SimpleType<TValue, TSpec>(((TValue)ValueSize<SimpleType<TValue, TSpec> >::VALUE - 1));
+const SimpleType<TValue, TSpec> MaxValue<SimpleType<TValue, TSpec> >::VALUE = std::numeric_limits<SimpleType<TValue, TSpec>>::max();
template <typename TValue, typename TSpec>
inline SimpleType<TValue, TSpec> const &
diff --git a/include/seqan/basic/array_construct_destruct.h b/include/seqan/basic/array_construct_destruct.h
index cb83d7a..01940a7 100644
--- a/include/seqan/basic/array_construct_destruct.h
+++ b/include/seqan/basic/array_construct_destruct.h
@@ -460,9 +460,7 @@ _arrayConstructCopyDefault(TSource1 source_begin,
{
while (source_begin != source_end)
{
- // NOTE(holtgrew): getValue() is used here since value() could return
- // a proxy!
- valueConstruct(target_begin, getValue(source_begin));
+ valueConstruct(target_begin, *source_begin);
++source_begin;
++target_begin;
}
diff --git a/include/seqan/basic/basic_stream.h b/include/seqan/basic/basic_stream.h
index ee4a46c..9308601 100644
--- a/include/seqan/basic/basic_stream.h
+++ b/include/seqan/basic/basic_stream.h
@@ -813,8 +813,9 @@ writeValue(TTargetValue * & iter, TValue val)
template <typename TTarget, typename TFwdIterator, typename TSize, typename TIChunk, typename TOChunk>
inline void _write(TTarget &target, TFwdIterator &iter, TSize n, TIChunk, TOChunk)
{
+ typedef typename GetValue<TFwdIterator>::Type TValue;
for (; n > (TSize)0; --n, ++iter)
- writeValue(target, getValue(iter));
+ writeValue(target, static_cast<TValue>(*iter));
}
// ----------------------------------------------------------------------------
@@ -1206,7 +1207,7 @@ template <typename TTarget, typename TValue>
inline std::enable_if_t<std::is_arithmetic<TValue>::value>
appendRawPod(TTarget & target, TValue val)
{
- ensure_little_endian(val);
+ enforceLittleEndian(val);
appendRawPodImpl(target, val);
}
@@ -1278,7 +1279,7 @@ read(TTarget &target, TFwdIterator &iter, TSize n)
{
TSize i;
for (i = 0; !atEnd(iter) && i < n; ++i, ++iter)
- writeValue(target, value(iter));
+ writeValue(target, *iter);
return i;
}
diff --git a/include/seqan/basic/debug_test_system.h b/include/seqan/basic/debug_test_system.h
index 410ab6c..f1cdc6c 100644
--- a/include/seqan/basic/debug_test_system.h
+++ b/include/seqan/basic/debug_test_system.h
@@ -114,7 +114,11 @@
// Set default for SEQAN_ENABLE_DEBUG.
#ifndef SEQAN_ENABLE_DEBUG
+#ifdef NDEBUG
#define SEQAN_ENABLE_DEBUG 0
+#else
+#define SEQAN_ENABLE_DEBUG 1
+#endif
#endif // #ifndef SEQAN_ENABLE_DEBUG
#if !SEQAN_ENABLE_DEBUG
@@ -2316,7 +2320,6 @@ inline void fail()
#define SEQAN_PATH_TO_ROOT() \
::seqan::ClassTest::StaticData::pathToRoot()
-
// Returns the POSIX int file handle to an open file.
// TODO(holtgrewe): Uncomment if openTempFile has been implemented.
// #define SEQAN_OPEN_TEMP_FILE() (::seqan::ClassTest::openTempFile())
@@ -2384,7 +2387,7 @@ inline void fail()
inline std::string getAbsolutePath(const char * path)
{
- return std::string(SEQAN_PATH_TO_ROOT()) + "/" + path;
+ return std::string(::seqan::ClassTest::StaticData::pathToRoot()) + "/" + path;
}
} // namespace seqan
diff --git a/include/seqan/basic/fundamental_concepts.h b/include/seqan/basic/fundamental_concepts.h
index 5cf7646..588958f 100644
--- a/include/seqan/basic/fundamental_concepts.h
+++ b/include/seqan/basic/fundamental_concepts.h
@@ -277,6 +277,7 @@ struct Is<Convertible<T, S const> > :
* @endcode
*
* @see DefaultConstructibleConcept
+ * @see MoveConstructibleConcept
*/
SEQAN_CONCEPT(CopyConstructible,(T))
@@ -299,6 +300,33 @@ private:
T b;
};
+/*!
+ * @concept MoveConstructibleConcept
+ * @brief A type with a move-constructor.
+ *
+ * @headerfile <seqan/basic.h>
+ *
+ * @signature MoveConstructible<T>
+ *
+ * @section Valid Expressions
+ *
+ * @code{.cpp}
+ * T a(rv); // rv is an rvalue expression of type T
+ * @endcode
+ *
+ * @see DefaultConstructibleConcept
+ * @see CopyConstructibleConcept
+ */
+
+SEQAN_CONCEPT(MoveConstructible,(T))
+{
+ SEQAN_CONCEPT_USAGE(MoveConstructible)
+ {
+ T a{T{}}; // require move constructor
+ ignoreUnusedVariableWarning(a);
+ }
+};
+
// ============================================================================
// Relation Concepts
@@ -680,10 +708,10 @@ struct IsSignedInteger : Is< SignedIntegerConcept<T> > {};
template <typename T>
struct IsUnsignedInteger : Is< UnsignedIntegerConcept<T> > {};
template <typename T>
-struct IsInteger : Is< IntegerConcept<T> > {};
+struct [[deprecated("Please use Is<IntegerConcept<T> >::Type.")]] IsInteger : Is< IntegerConcept<T> > {};
template <typename T>
-struct IsIntegral : IsInteger<T> {};
+struct [[deprecated("Please use Is<IntegerConcept<T> >::Type.")]] IsIntegral : Is< IntegerConcept<T> > {};
// ============================================================================
// Concepts for integers
diff --git a/include/seqan/basic/fundamental_transport.h b/include/seqan/basic/fundamental_transport.h
index 116a6ba..8a97d9c 100644
--- a/include/seqan/basic/fundamental_transport.h
+++ b/include/seqan/basic/fundamental_transport.h
@@ -127,7 +127,7 @@ inline void
assign(Proxy<TTargetSpec> & target,
TSource & source)
{
- assignValue(iter(target), source);
+ *iter(target) = source;
}
template<typename TTargetSpec, typename TSource>
@@ -135,7 +135,7 @@ inline void
assign(Proxy<TTargetSpec> & target,
TSource const & source)
{
- assignValue(iter(target), source);
+ *iter(target) = source;
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/basic/holder_tristate.h b/include/seqan/basic/holder_tristate.h
index 0849a0a..fd40cd6 100644
--- a/include/seqan/basic/holder_tristate.h
+++ b/include/seqan/basic/holder_tristate.h
@@ -936,15 +936,15 @@ assign(Holder<TValue const, Tristate> & target_,
Holder<TValue const, Tristate> const & source_)
{
switch(source_.data_state) {
- case Holder<TValue, Tristate>::EMPTY:
+ case Holder<TValue const, Tristate>::EMPTY:
clear(target_);
break;
- case Holder<TValue, Tristate>::OWNER:
+ case Holder<TValue const, Tristate>::OWNER:
create(target_, value(source_));
break;
- default: // case Holder<TValue, Tristate>::DEPENDENT
+ default: // case Holder<TValue const, Tristate>::DEPENDENT
setValue(target_, value(source_));
break;
}
diff --git a/include/seqan/basic/iterator_adaptor.h b/include/seqan/basic/iterator_adaptor.h
index 006906e..6ed4128 100644
--- a/include/seqan/basic/iterator_adaptor.h
+++ b/include/seqan/basic/iterator_adaptor.h
@@ -378,14 +378,14 @@ template <typename TContainer, typename TIterator, typename TSpec>
inline typename Reference<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > >::Type
value(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
{
- return value(hostIterator(me));
+ return *hostIterator(me);
}
template <typename TContainer, typename TIterator, typename TSpec>
inline typename Reference<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
value(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
{
- return value(hostIterator(me));
+ return *hostIterator(me);
}
// ----------------------------------------------------------------------------
@@ -396,14 +396,14 @@ template <typename TContainer, typename TIterator, typename TSpec>
inline typename GetValue<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > >::Type
getValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
{
- return getValue(hostIterator(me));
+ return *hostIterator(me);
}
template <typename TContainer, typename TIterator, typename TSpec>
inline typename GetValue<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
getValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
{
- return getValue(hostIterator(me));
+ return *hostIterator(me);
}
// ----------------------------------------------------------------------------
@@ -415,7 +415,7 @@ inline void
assignValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
TValue const & _value)
{
- assignValue(hostIterator(me), _value);
+ *hostIterator(me) = _value;
}
template <typename TContainer, typename TIterator, typename TSpec, typename TValue>
@@ -423,7 +423,7 @@ inline void
assignValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
TValue const & _value)
{
- assignValue(hostIterator(me), _value);
+ *hostIterator(me) = _value;
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/basic/iterator_interface.h b/include/seqan/basic/iterator_interface.h
index 3cc7c0b..a2b945b 100644
--- a/include/seqan/basic/iterator_interface.h
+++ b/include/seqan/basic/iterator_interface.h
@@ -183,6 +183,7 @@ struct Container
// ---------------------------------------------------------------------------
template <typename T>
+[[deprecated("Use operator*() instead.")]]
inline typename Reference<T>::Type
value(T & me)
{
@@ -190,6 +191,7 @@ value(T & me)
}
template <typename T>
+[[deprecated("Use operator*() instead.")]]
inline typename Reference<T const>::Type
value(T const & me)
{
@@ -201,17 +203,19 @@ value(T const & me)
// ---------------------------------------------------------------------------
template <typename T>
+[[deprecated("Use operator*() instead.")]]
inline typename GetValue<T>::Type
getValue(T & me)
{
- return value(me);
+ return *me;
}
template <typename T>
+[[deprecated("Use operator*() instead.")]]
inline typename GetValue<T const>::Type
getValue(T const & me)
{
- return value(me);
+ return *me;
}
// ---------------------------------------------------------------------------
@@ -226,20 +230,22 @@ getValue(T const & me)
// ---------------------------------------------------------------------------
template <typename T, typename TValue>
+[[deprecated("Use dereferencement and assignment instead.")]]
inline void
assignValue(T & me,
TValue const & _value)
{
- assign(value(me), _value);
+ assign(*me, _value);
}
//const version for iterators as targets
template <typename T, typename TValue>
+[[deprecated("Use dereferencement and assignment instead.")]]
inline void
assignValue(T const & me,
TValue const & _value)
{
- assign(value(me), _value);
+ assign(*me, _value);
}
// ---------------------------------------------------------------------------
diff --git a/include/seqan/basic/math_log_space_value.h b/include/seqan/basic/math_log_space_value.h
index a945003..cec7ed1 100644
--- a/include/seqan/basic/math_log_space_value.h
+++ b/include/seqan/basic/math_log_space_value.h
@@ -140,7 +140,7 @@ class LogProb
inline
operator TValue2() const
{
- return _convert<TValue2>(typename IsInteger<TValue2>::Type());
+ return _convert<TValue2>(typename Is<IntegerConcept<TValue2> >::Type());
}
/*
inline
diff --git a/include/seqan/basic/pair_bit_compressed.h b/include/seqan/basic/pair_bit_compressed.h
index 6d7e5d5..5075f33 100644
--- a/include/seqan/basic/pair_bit_compressed.h
+++ b/include/seqan/basic/pair_bit_compressed.h
@@ -86,16 +86,23 @@ struct Pair<T1, T2, BitPacked<BITSIZE1, BITSIZE2> >
// Constructors
// ------------------------------------------------------------------------
- inline Pair() : i1(T1()), i2(T2()) {}
-
- inline Pair(Pair const & _p) : i1(_p.i1), i2(_p.i2) {}
+ // bitfield member cannot have an in-class initializer, thus
+ // `inline Pair() = default;` is not possible
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65132
+ inline Pair() : i1(T1{}), i2(T2{}) {};
+ inline Pair(Pair const &) = default;
+ inline Pair(Pair &&) = default;
+ inline Pair & operator=(Pair const &) = default;
+ inline Pair & operator=(Pair &&) = default;
+ inline ~Pair() = default;
inline Pair(T1 const & _i1, T2 const & _i2) : i1(_i1), i2(_i2) {}
template <typename T1_, typename T2_, typename TSpec__>
// TODO(holtgrew): explicit?
- inline Pair(Pair<T1_, T2_, TSpec__> const &_p)
- : i1(getValueI1(_p)), i2(getValueI2(_p)) {}
+ inline Pair(Pair<T1_, T2_, TSpec__> const &_p) :
+ i1(getValueI1(_p)), i2(getValueI2(_p))
+ {}
};
#pragma pack(pop)
diff --git a/include/seqan/basic/pair_packed.h b/include/seqan/basic/pair_packed.h
index 429e54f..b78d420 100644
--- a/include/seqan/basic/pair_packed.h
+++ b/include/seqan/basic/pair_packed.h
@@ -86,16 +86,22 @@ struct Pair<T1, T2, Pack>
// Constructors
// ------------------------------------------------------------------------
- Pair() : i1(T1()), i2(T2()) {}
-
- Pair(Pair const &_p) : i1(_p.i1), i2(_p.i2) {}
+ // Pair() = default; does not work on gcc4.9, it issues warnings if T1/T2
+ // have no proper default constructor. >=gcc5.0 reports no warnings.
+ Pair() : i1(), i2() {};
+ Pair(Pair const &) = default;
+ Pair(Pair &&) = default;
+ ~Pair() = default;
+ Pair & operator=(Pair const &) = default;
+ Pair & operator=(Pair &&) = default;
Pair(T1 const & _i1, T2 const & _i2) : i1(_i1), i2(_i2) {}
template <typename T1_, typename T2_, typename TSpec__>
// TODO(holtgrew): explicit?
- Pair(Pair<T1_, T2_, TSpec__> const &_p)
- : i1(getValueI1(_p)), i2(getValueI2(_p)) {}
+ Pair(Pair<T1_, T2_, TSpec__> const &_p) :
+ i1(getValueI1(_p)), i2(getValueI2(_p))
+ {}
};
#pragma pack(pop)
diff --git a/include/seqan/basic/proxy_base.h b/include/seqan/basic/proxy_base.h
index 446bb74..ae09d57 100644
--- a/include/seqan/basic/proxy_base.h
+++ b/include/seqan/basic/proxy_base.h
@@ -429,7 +429,7 @@ operator>>(TStream & strm,
typedef typename Value<TProxy>::Type TValue;
TValue temp;
strm >> temp;
- assignValue(iter(proxy), temp);
+ *iter(proxy) = temp;
return strm;
}
@@ -442,7 +442,7 @@ operator>>(TStream & strm,
typedef typename Value<TProxy>::Type TValue;
TValue temp;
strm >> temp;
- assignValue(iter(proxy), temp);
+ *iter(proxy) = temp;
return strm;
}
diff --git a/include/seqan/consensus/consensus_base.h b/include/seqan/consensus/consensus_base.h
index b71c368..6c64877 100644
--- a/include/seqan/consensus/consensus_base.h
+++ b/include/seqan/consensus/consensus_base.h
@@ -1354,7 +1354,7 @@ return;
//
// // Parse the file and convert the internal ids
// TPos maxPos = 0;
-// TPos minPos = MaxValue<TPos>::VALUE;
+// TPos minPos = std::numeric_limits<TPos>::max();
// TId count = 0;
// if (atEnd(reader))
// return false;
diff --git a/include/seqan/consensus/consensus_library.h b/include/seqan/consensus/consensus_library.h
index 433ed84..5e4d448 100644
--- a/include/seqan/consensus/consensus_library.h
+++ b/include/seqan/consensus/consensus_library.h
@@ -483,7 +483,7 @@ appendSegmentMatches(StringSet<TString, TSpec> const & str,
typedef typename Iterator<TBegEndPos const, Standard>::Type TBegEndIter;
TBegEndIter begEndIt = begin(begEndPos, Standard());
TBegEndIter begEndItEnd = end(begEndPos, Standard());
- TSize minVal = maxValue<TSize>();
+ TSize minVal = std::numeric_limits<TSize>::max();
TSize maxVal = 0;
for(;begEndIt != begEndItEnd; ++begEndIt) {
TSize pos1 = begEndIt->i1;
diff --git a/include/seqan/consensus/consensus_realign.h b/include/seqan/consensus/consensus_realign.h
index c970e74..9caf632 100644
--- a/include/seqan/consensus/consensus_realign.h
+++ b/include/seqan/consensus/consensus_realign.h
@@ -590,7 +590,7 @@ reAlign(FragmentStore<TSpec, TConfig> & fragStore,
// Copy all reads belonging to this contig and reverse complement them if necessary.
TAlignedReadStore contigReads; // TODO(holtgrew): Rather contigAlignedReads?
TReadPos maxPos = 0;
- TReadPos minPos = MaxValue<TReadPos>::VALUE;
+ TReadPos minPos = std::numeric_limits<TReadPos>::max();
for (; alignIt != alignItEnd; ++alignIt) {
if (alignIt->beginPos > alignIt->endPos) {
reverseComplement(fragStore.readSeqStore[alignIt->readId]);
diff --git a/include/seqan/consensus/overlap_info_computation.h b/include/seqan/consensus/overlap_info_computation.h
index 5250123..df9cc76 100644
--- a/include/seqan/consensus/overlap_info_computation.h
+++ b/include/seqan/consensus/overlap_info_computation.h
@@ -184,7 +184,7 @@ inline OverlapInfo_ OverlapInfoComputation_<TFragmentStore>::computeOverlapInfo(
AlignConfig<true, true, true, true> alignConfig;
- if (lDiag != seqan::minValue<int>() && uDiag != seqan::minValue<int>())
+ if (lDiag != std::numeric_limits<int>::min() && uDiag != std::numeric_limits<int>::min())
{
if (options.verbosity >= 2)
std::cerr << "global alignment with bands " << lDiag << ", " << uDiag << "\n";
@@ -244,7 +244,7 @@ inline void OverlapInfoComputation_<TFragmentStore>::buildGlobalAlignmentOverlap
for (unsigned j = i + 1; j < length(store.readStore); ++j)
{
OverlapInfo_ info = computeOverlapInfo(i, j,
- seqan::minValue<int>(), seqan::minValue<int>());
+ std::numeric_limits<int>::min(), std::numeric_limits<int>::min());
int ovlLen = length(store.readSeqStore[info.seq0]) - info.pos1;
// if (ovlLen < options.overlapMinLength || 100.0 * info.numErrors / ovlLen > options.overlapMaxErrorRate)
// {
diff --git a/include/seqan/consensus/overlapper.h b/include/seqan/consensus/overlapper.h
index 52cf68a..2dd6b5f 100644
--- a/include/seqan/consensus/overlapper.h
+++ b/include/seqan/consensus/overlapper.h
@@ -253,7 +253,7 @@ Overlap_ Overlapper_<TFragments, TSequence>::overlapFromAlignment(
unsigned len1 = length(strings[1]);
typedef int TPos;
- std::pair<TPos, TPos> range0(seqan::maxValue<TPos>(), seqan::minValue<TPos>());
+ std::pair<TPos, TPos> range0(std::numeric_limits<TPos>::max(), std::numeric_limits<TPos>::min());
std::pair<TPos, TPos> range1 = range0;
int errors = 0;
typedef typename Iterator<TFragments, Standard>::Type TFragmentsIter;
diff --git a/include/seqan/file/file_base.h b/include/seqan/file/file_base.h
index 8852d03..a2a222a 100644
--- a/include/seqan/file/file_base.h
+++ b/include/seqan/file/file_base.h
@@ -597,6 +597,7 @@ inline typename Position< File<TSpec> >::Type seek(File<TSpec> &me, TPos const f
// deprecated
template < typename TSpec, typename AsyncRequest >
+ [[deprecated]]
inline void release(File<TSpec> &, AsyncRequest &)
{
//IOREV _noop_ see general discussion about AsynRequest
diff --git a/include/seqan/file/file_page.h b/include/seqan/file/file_page.h
index 177f6c3..e54f24f 100644
--- a/include/seqan/file/file_page.h
+++ b/include/seqan/file/file_page.h
@@ -358,7 +358,7 @@ struct MMap;
Buffer():
TBase(),
dirty(false),
- pageNo(MaxValue<unsigned>::VALUE),
+ pageNo(std::numeric_limits<unsigned>::max()),
status(READY),
next(NULL) {}
@@ -505,7 +505,7 @@ struct MMap;
PageFrame():
TBase(),
- pageNo(MaxValue<unsigned>::VALUE),
+ pageNo(std::numeric_limits<unsigned>::max()),
next(NULL) {}
};
*/
diff --git a/include/seqan/find/find_bom.h b/include/seqan/find/find_bom.h
index e499646..f9f71fb 100644
--- a/include/seqan/find/find_bom.h
+++ b/include/seqan/find/find_bom.h
@@ -98,6 +98,7 @@ struct Trie {}; //Trie Tag => "BTM"
template <typename TSpec = Oracle>
struct Bfam; //backward factor automaton searching
+[[deprecated]]
typedef Bfam<Oracle> BomAlgo; //deprecated, still there for compatibility reasons
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/find/find_multiple_bfam.h b/include/seqan/find/find_multiple_bfam.h
index ffd2111..ce66b15 100644
--- a/include/seqan/find/find_multiple_bfam.h
+++ b/include/seqan/find/find_multiple_bfam.h
@@ -76,6 +76,7 @@ namespace seqan
template <typename TSpec = Oracle>
struct MultiBfam; //multiple backward factor automaton searching
+[[deprecated]]
typedef MultiBfam<Oracle> SBomAlgo; //deprecated
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/find/find_myers_ukkonen.h b/include/seqan/find/find_myers_ukkonen.h
index 3d30e1b..799596c 100644
--- a/include/seqan/find/find_myers_ukkonen.h
+++ b/include/seqan/find/find_myers_ukkonen.h
@@ -960,7 +960,7 @@ _patternInitSmallStateBanded(
// VP = 100... VP = 111...
//
- TWord VP = (MyersUkkonenHP0_<TSpec>::VALUE == 1)? (TWord)1 << ((int)BitsPerValue<TWord>::VALUE-1): maxValue<TWord>(); // HP[0]==1 <-> global, HP[0]==0 <-> local
+ TWord VP = (MyersUkkonenHP0_<TSpec>::VALUE == 1)? (TWord)1 << ((int)BitsPerValue<TWord>::VALUE-1): std::numeric_limits<TWord>::max(); // HP[0]==1 <-> global, HP[0]==0 <-> local
TWord VN = 0;
// Errors are counted along the lowest diagonal and the
@@ -1047,7 +1047,7 @@ _patternInitSmallStateBanded(
// adjust bitmasks (errors = number of needle chars to preprocess)
for (; shift < errors; ++ndlIter, ++shift)
- _myersAdjustBitmask(state, getValue(ndlIter), shift, typename MyersSmallAlphabet_<TValue>::Type());
+ _myersAdjustBitmask(state, *ndlIter, shift, typename MyersSmallAlphabet_<TValue>::Type());
// initialise left column with
//
@@ -1073,7 +1073,7 @@ _patternInitSmallStateBanded(
//////////////////////////////////////////////////////////////////
// adjust bitmask
- _myersAdjustBitmask(state, getValue(ndlIter), shift, typename MyersSmallAlphabet_<TValue>::Type());
+ _myersAdjustBitmask(state, *ndlIter, shift, typename MyersSmallAlphabet_<TValue>::Type());
/////////////////////////
// DIAGONAL MYERS CORE
diff --git a/include/seqan/find/find_shiftand.h b/include/seqan/find/find_shiftand.h
index 4c5d5cd..ebd33f1 100644
--- a/include/seqan/find/find_shiftand.h
+++ b/include/seqan/find/find_shiftand.h
@@ -161,7 +161,7 @@ _findShiftAndSmallNeedle(TFinder & finder, Pattern<TNeedle, ShiftAnd> & me)
TWord compare = (TWord)1 << (me.needleLength - 1);
while (!atEnd(finder))
{
- TWord pos = ordValue(convert<TValue>(getValue(finder)));
+ TWord pos = ordValue(convert<TValue>(*finder));
me.prefSufMatch[0] = ((me.prefSufMatch[0] << 1) | (TWord)1) & me.bitMasks[pos];
if ((me.prefSufMatch[0] & compare) != 0)
{
@@ -184,7 +184,7 @@ _findShiftAndLargeNeedle(TFinder & finder, Pattern<TNeedle, ShiftAnd> & me)
TWord compare = (TWord)1 << ((me.needleLength - 1) % BitsPerValue<TWord>::VALUE);
while (!atEnd(finder))
{
- TWord pos = ordValue(convert<TValue>(getValue(finder)));
+ TWord pos = ordValue(convert<TValue>(*finder));
TWord carry = 1;
for(TWord block = 0; block < me.blockCount; ++block)
{
diff --git a/include/seqan/find/find_shiftor.h b/include/seqan/find/find_shiftor.h
index 4e41811..13d5e13 100644
--- a/include/seqan/find/find_shiftor.h
+++ b/include/seqan/find/find_shiftor.h
@@ -221,7 +221,7 @@ _findShiftOrLargeNeedle(TFinder & finder, Pattern<TNeedle, ShiftOr> & me)
TWord compare = ~((TWord)1 << ((me.needleLength - 1) % BitsPerValue<TWord>::VALUE));
while (!atEnd(finder))
{
- TWord pos = ordValue(convert<TValue>(getValue(finder)));
+ TWord pos = ordValue(convert<TValue>(*finder));
TWord carry = 0;
for(TWord block = 0; block < me.blockCount; ++block)
{
diff --git a/include/seqan/find/find_wumanber.h b/include/seqan/find/find_wumanber.h
index cf4417b..3268fee 100644
--- a/include/seqan/find/find_wumanber.h
+++ b/include/seqan/find/find_wumanber.h
@@ -360,11 +360,11 @@ void _reinitPattern(Pattern<TNeedle, WuManber> & me)
typedef typename Size<TKeyword>::Type TSize;
//determine lmin
- me.lmin = maxValue<TSize>();
+ me.lmin = std::numeric_limits<TSize>::max();
for (TNeedleIterator it = begin(needle(me)); it != end(needle(me)); ++it)
if (!empty(*it) && length(*it) < me.lmin) // skipping empty needles
me.lmin = length(*it);
- if (me.lmin == maxValue<TSize>())
+ if (me.lmin == std::numeric_limits<TSize>::max())
return; // only empty needles
//compute q:
diff --git a/include/seqan/gff_io/gff_io_base.h b/include/seqan/gff_io/gff_io_base.h
index 8f2e8c0..4906b61 100644
--- a/include/seqan/gff_io/gff_io_base.h
+++ b/include/seqan/gff_io/gff_io_base.h
@@ -129,7 +129,7 @@ struct GffRecord
* @var int32_t GffRecord::INVALID_IDX;
* @brief Static member with invalid/sentinel rID value.
*/
- static int32_t const INVALID_POS = 2147483647; // TODO(singer): Should be MaxValue<int32_t>::VALUE, but that is not a constant expression :(
+ static int32_t const INVALID_POS = 2147483647; // TODO(singer): Should be std::numeric_limits<int32_t>::max(), but that is not a constant expression :(
/*!
* @var CharString GffRecord::ref;
@@ -349,12 +349,13 @@ void readRecord(GffRecord & record, CharString & buffer, TFwdIterator & iter)
{
IsNewline isNewline;
- // skip commented lines
+ // skip commented lines as well as ## directives
+ skipUntil(iter, NotFunctor<IsWhitespace>()); //skip empty lines
while (!atEnd(iter) && value(iter) == '#')
skipLine(iter);
+ skipUntil(iter, NotFunctor<IsWhitespace>()); //skip empty lines
clear(record);
- skipUntil(iter, NotFunctor<IsWhitespace>()); //skip empty lines
// read column 1: seqid
readUntil(record.ref, iter, OrFunctor<IsTab, AssertFunctor<NotFunctor<IsNewline>, ParseError, Gff> >());
@@ -436,6 +437,14 @@ void readRecord(GffRecord & record, CharString & buffer, TFwdIterator & iter)
break;
}
}
+
+ // The last line might be a "### directive" specifically in GFF3
+ // Need to skip it to avoid another call of readRecords
+ skipUntil(iter, NotFunctor<IsWhitespace>()); //skip empty lines
+ while (!atEnd(iter) && value(iter) == '#')
+ skipLine(iter);
+ skipUntil(iter, NotFunctor<IsWhitespace>()); //skip empty lines
+
return;
}
diff --git a/include/seqan/graph_align/graph_impl_align.h b/include/seqan/graph_align/graph_impl_align.h
index d78aa7d..472f041 100644
--- a/include/seqan/graph_align/graph_impl_align.h
+++ b/include/seqan/graph_align/graph_impl_align.h
@@ -1947,7 +1947,7 @@ heaviestCommonSubsequence(Graph<Alignment<TStringSet, TCargo, TSpec> > const& g,
// Remember for each vertex descriptor the position in the sequence
typedef String<TSize> TMapVertexPos;
TMapVertexPos map;
- resize(map, getIdUpperBound(_getVertexIdManager(g)), MaxValue<TSize>::VALUE);
+ resize(map, getIdUpperBound(_getVertexIdManager(g)), std::numeric_limits<TSize>::max());
typedef typename Iterator<TString const, Standard>::Type TStringIterConst;
typedef typename Iterator<TVertexSet const, Standard>::Type TVertexSetIterConst;
TStringIterConst itStr1 = begin(str1, Standard());
@@ -1978,7 +1978,7 @@ heaviestCommonSubsequence(Graph<Alignment<TStringSet, TCargo, TSpec> > const& g,
for(;!atEnd(itOut); ++itOut) {
// Target vertex must be in the map
pPos = map[targetVertex(itOut)];
- if (pPos != MaxValue<TSize>::VALUE)
+ if (pPos != std::numeric_limits<TSize>::max())
appendValue(occupiedPositions, pPos * n + (TSize) (n - posItStr2 - 1), Generous());
}
}
@@ -1989,7 +1989,7 @@ heaviestCommonSubsequence(Graph<Alignment<TStringSet, TCargo, TSpec> > const& g,
typedef typename Iterator<TSlotToPos, Standard>::Type TSlotToPosIter;
TSlotToPos slotToPos;
TSize counter = 0;
- TSize oldVal = MaxValue<TSize>::VALUE;
+ TSize oldVal = std::numeric_limits<TSize>::max();
TOccIter occIt = begin(occupiedPositions, Standard());
TOccIter occItEnd = end(occupiedPositions, Standard());
for(;occIt != occItEnd; ++occIt) {
@@ -2015,7 +2015,7 @@ heaviestCommonSubsequence(Graph<Alignment<TStringSet, TCargo, TSpec> > const& g,
for(;!atEnd(itOut); ++itOut) {
// Target vertex must be in the map
pPos = map[targetVertex(itOut)];
- if ( pPos != MaxValue<TSize>::VALUE)
+ if ( pPos != std::numeric_limits<TSize>::max())
weights[std::distance(begin(slotToPos, Standard()), std::lower_bound(begin(slotToPos, Standard()), end(slotToPos, Standard()), pPos * n + (TSize) (n - posItStr2 - 1)))] += (TCargo) cargo(*itOut);
}
}
diff --git a/include/seqan/graph_msa/graph_align_tcoffee_guidetree.h b/include/seqan/graph_msa/graph_align_tcoffee_guidetree.h
index 802205c..f295974 100644
--- a/include/seqan/graph_msa/graph_align_tcoffee_guidetree.h
+++ b/include/seqan/graph_msa/graph_align_tcoffee_guidetree.h
@@ -731,7 +731,7 @@ upgmaTree(Graph<Undirected<TValue, TSpec1> >& pairGraph,
typedef typename Size<TPairGraph>::Type TSize;
// First initialization
- TCargo const maxVal = maxValue<TCargo>();
+ TCargo const maxVal = std::numeric_limits<TCargo>::max();
TSize nseq = numVertices(pairGraph);
TCargo infCargo = _getInfinity<TCargo>();
clearVertices(g);
diff --git a/include/seqan/graph_types/graph_interface.h b/include/seqan/graph_types/graph_interface.h
index efb38bf..08da833 100644
--- a/include/seqan/graph_types/graph_interface.h
+++ b/include/seqan/graph_types/graph_interface.h
@@ -652,8 +652,7 @@ template <typename T>
inline T
_getInfinity()
{
- T * _tag = 0;
- return supremumValueImpl(_tag);
+ return std::numeric_limits<T>::max();
}
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/index/find_backtracking.h b/include/seqan/index/find_backtracking.h
index d95798c..339ff70 100644
--- a/include/seqan/index/find_backtracking.h
+++ b/include/seqan/index/find_backtracking.h
@@ -284,7 +284,7 @@ template <typename TPrefix>
inline unsigned
getScore(PrefixAligner_<TPrefix, HammingDistance> const & me, bool atEnd)
{
- return atEnd ? me.errors : MaxValue<unsigned>::VALUE;
+ return atEnd ? me.errors : std::numeric_limits<unsigned>::max();
}
template <typename TPrefix>
diff --git a/include/seqan/index/find_pigeonhole.h b/include/seqan/index/find_pigeonhole.h
index 88e104f..8037826 100644
--- a/include/seqan/index/find_pigeonhole.h
+++ b/include/seqan/index/find_pigeonhole.h
@@ -468,7 +468,7 @@ inline void _patternInit(Pattern<TIndex, Pigeonhole<TSpec> > &pattern, TFloat er
pattern._currentErrorRate = _newErrorRate;
- TSize minDelta = MaxValue<TSize>::VALUE;
+ TSize minDelta = std::numeric_limits<TSize>::max();
TSize maxDelta = 3;
TSize maxSeqLen = 0;
for(unsigned seqNo = 0; seqNo < seqCount; ++seqNo)
@@ -504,7 +504,7 @@ inline void _patternInit(Pattern<TIndex, Pigeonhole<TSpec> > &pattern, TFloat er
minDelta = pattern.params.delta;
}
- if (minDelta == MaxValue<TSize>::VALUE)
+ if (minDelta == std::numeric_limits<TSize>::max())
{
// disable index
minDelta = pattern.maxSeqLen + 1;
diff --git a/include/seqan/index/index_base.h b/include/seqan/index/index_base.h
index bb74311..1cb2eb8 100644
--- a/include/seqan/index/index_base.h
+++ b/include/seqan/index/index_base.h
@@ -201,6 +201,7 @@ SEQAN_CONCEPT_REFINE(StringTrieConcept, (TIndex), (StringIndexConcept)) {};
* @headerfile <seqan/index.h>
* @brief Default @link String @endlink specialization type of the @link Fibre
* @endlink of an @link Index @endlink.
+ * @deprecated Deprecated in favor of StringSpec.
*
* @signature DefaultIndexStringSpec<TIndex>::Type;
*
@@ -217,7 +218,7 @@ SEQAN_CONCEPT_REFINE(StringTrieConcept, (TIndex), (StringIndexConcept)) {};
*/
template <typename TObject>
- struct DefaultIndexStringSpec : StringSpec<TObject> {};
+ struct [[deprecated("Deprecated in favor of StringSpec.")]] DefaultIndexStringSpec : StringSpec<TObject> {};
//////////////////////////////////////////////////////////////////////////////
@@ -1317,13 +1318,13 @@ template <
template <typename TValue>
inline void _setSizeInval(TValue &v) {
- v = MaxValue<TValue>::VALUE;
+ v = std::numeric_limits<TValue>::max();
}
template <typename TValue>
inline bool _isSizeInval(TValue const &v) {
//IOREV _notio_
- return v == MaxValue<TValue>::VALUE;
+ return v == std::numeric_limits<TValue>::max();
}
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/index/index_childtab.h b/include/seqan/index/index_childtab.h
index 91e6af0..d42d151 100644
--- a/include/seqan/index/index_childtab.h
+++ b/include/seqan/index/index_childtab.h
@@ -73,7 +73,7 @@ namespace seqan
stack_updown.push(TPair(0, 0));
stack_nextl.push(TPair(0, 0));
- dest.undefinedValue = TPair(MaxValue<TSize>::VALUE, 0); // undefined value for unused entries
+ dest.undefinedValue = TPair(std::numeric_limits<TSize>::max(), 0); // undefined value for unused entries
resize(dest, length(lcpIn));
beginRead(lcpIn);
beginWrite(dest);
diff --git a/include/seqan/index/index_fm_compressed_sa.h b/include/seqan/index/index_fm_compressed_sa.h
index 784742b..16fbc0c 100644
--- a/include/seqan/index/index_fm_compressed_sa.h
+++ b/include/seqan/index/index_fm_compressed_sa.h
@@ -84,8 +84,8 @@ typedef Tag<FibreSparseString_> const FibreSparseString;
// ----------------------------------------------------------------------------
template <typename TText, typename TSpec, typename TConfig>
-struct DefaultIndexStringSpec<CompressedSA<TText, TSpec, TConfig> > :
- DefaultIndexStringSpec<TText> {};
+struct StringSpec<CompressedSA<TText, TSpec, TConfig> > :
+ StringSpec<TText> {};
// ----------------------------------------------------------------------------
// Metafunction Fibre
@@ -97,7 +97,7 @@ struct Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>
// TODO(esiragusa): Change SparseString spec to be SparseString<TValue, TSpec, TConfig>.
typedef CompressedSA<TText, TSpec, TConfig> TCSA;
typedef typename SAValue<TText>::Type TSAValue_;
- typedef typename DefaultIndexStringSpec<TCSA>::Type TSASpec_;
+ typedef typename StringSpec<TCSA>::Type TSASpec_;
typedef String<TSAValue_, TSASpec_> TSA_;
typedef SparseString<TSA_, TConfig> Type;
};
@@ -305,7 +305,7 @@ void createCompressedSa(CompressedSA<TText, TSpec, TConfig> & compressedSA, TSA
for (TSASize pos = offset; saIt != saItEnd; ++saIt, ++pos)
{
- if (getSeqOffset(getValue(saIt)) % TConfig::SAMPLING == 0)
+ if (getSeqOffset(*saIt) % TConfig::SAMPLING == 0)
setValue(indicators, pos, true);
else
setValue(indicators, pos, false);
@@ -319,7 +319,7 @@ void createCompressedSa(CompressedSA<TText, TSpec, TConfig> & compressedSA, TSA
{
if (getValue(indicators, pos))
{
- assignValue(values, counter, getValue(saIt));
+ assignValue(values, counter, *saIt);
++counter;
}
}
diff --git a/include/seqan/index/index_fm_lf_table.h b/include/seqan/index/index_fm_lf_table.h
index 1ee81ef..8da0a12 100644
--- a/include/seqan/index/index_fm_lf_table.h
+++ b/include/seqan/index/index_fm_lf_table.h
@@ -125,7 +125,7 @@ struct Fibre<LF<TText, TSpec, TConfig>, FibrePrefixSums>
// typedef Tuple<TSize_, ValueSize<TValue_>::VALUE> Type;
typedef typename Size<LF<TText, TSpec, TConfig> >::Type TSize_;
- typedef typename DefaultIndexStringSpec<TText>::Type TSpec_;
+ typedef typename StringSpec<TText>::Type TSpec_;
typedef String<TSize_, TSpec_> Type;
};
@@ -537,7 +537,7 @@ _setSentinelSubstitute(LF<TText, TSpec, TConfig> & lf)
typedef typename Value<TPrefixSums>::Type TValue;
typedef typename Size<TPrefixSums>::Type TSize;
- TValue minOcc = MaxValue<TValue>::VALUE;
+ TValue minOcc = std::numeric_limits<TValue>::max();
TSize ordVal = 0;
for (TSize i = 0; i < length(lf.sums) - 1; ++i)
@@ -577,20 +577,20 @@ _createBwt(LF<TText, TSpec, TConfig> & lf, TBwt & bwt, TOtherText const & text,
TSAIter saItEnd = end(sa, Standard());
TBwtIter bwtIt = begin(bwt, Standard());
- assignValue(bwtIt, back(text));
+ *bwtIt = back(text);
++bwtIt;
for (; saIt != saItEnd; ++saIt, ++bwtIt)
{
- TSAValue pos = getValue(saIt);
+ TSAValue pos = *saIt;
if (pos != 0)
{
- assignValue(bwtIt, getValue(text, pos - 1));
+ *bwtIt = getValue(text, pos - 1);
}
else
{
- assignValue(bwtIt, lf.sentinelSubstitute);
+ *bwtIt = lf.sentinelSubstitute;
lf.sentinels = bwtIt - begin(bwt, Standard());
}
}
@@ -625,7 +625,7 @@ _createBwt(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> & lf, TBwt & bwt, TOt
{
if (length(text[seqNum - i]) > 0)
{
- assignValue(bwtIt, back(text[seqNum - i]));
+ *bwtIt = back(text[seqNum - i]);
setValue(lf.sentinels, bwtIt - bwtItBeg, false);
}
}
@@ -634,16 +634,16 @@ _createBwt(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> & lf, TBwt & bwt, TOt
for (; saIt != saItEnd; ++saIt, ++bwtIt)
{
TSAValue pos; // = SA[i];
- posLocalize(pos, getValue(saIt), stringSetLimits(text));
+ posLocalize(pos, *saIt, stringSetLimits(text));
if (getSeqOffset(pos) != 0)
{
- assignValue(bwtIt, getValue(getValue(text, getSeqNo(pos)), getSeqOffset(pos) - 1));
+ *bwtIt = getValue(getValue(text, getSeqNo(pos)), getSeqOffset(pos) - 1);
setValue(lf.sentinels, bwtIt - bwtItBeg, false);
}
else
{
- assignValue(bwtIt, lf.sentinelSubstitute);
+ *bwtIt = lf.sentinelSubstitute;
setValue(lf.sentinels, bwtIt - bwtItBeg, true);
}
}
diff --git a/include/seqan/index/index_fm_rank_dictionary_base.h b/include/seqan/index/index_fm_rank_dictionary_base.h
index fd6b5a2..6d8a5ba 100644
--- a/include/seqan/index/index_fm_rank_dictionary_base.h
+++ b/include/seqan/index/index_fm_rank_dictionary_base.h
@@ -121,7 +121,7 @@ struct RankDictionary;
// ----------------------------------------------------------------------------
template <typename TValue, template <typename, typename> class TRankDictionary, typename TSpec, typename TConfig>
-struct DefaultIndexStringSpec<RankDictionary<TValue, TRankDictionary<TSpec, TConfig> > >
+struct StringSpec<RankDictionary<TValue, TRankDictionary<TSpec, TConfig> > >
{
typedef typename TConfig::Fibre Type;
};
@@ -255,7 +255,7 @@ createRankDictionary(RankDictionary<TValue, TSpec> & dict, TText const & text)
TTextIterator textBegin = begin(text, Standard());
TTextIterator textEnd = end(text, Standard());
for (TTextIterator textIt = textBegin; textIt != textEnd; ++textIt)
- setValue(dict, textIt - textBegin, value(textIt));
+ setValue(dict, textIt - textBegin, *textIt);
// Update all ranks.
updateRanks(dict);
diff --git a/include/seqan/index/index_fm_rank_dictionary_levels.h b/include/seqan/index/index_fm_rank_dictionary_levels.h
index 2eeeadd..8b0a446 100644
--- a/include/seqan/index/index_fm_rank_dictionary_levels.h
+++ b/include/seqan/index/index_fm_rank_dictionary_levels.h
@@ -354,7 +354,7 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreRanks>
{
typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary_;
typedef RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> > TEntry_;
- typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_;
+ typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_;
typedef String<TEntry_, TFibreSpec_> Type;
};
@@ -364,7 +364,7 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreSuperBlocks>
{
typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary_;
typedef typename RankDictionarySuperBlock_<TValue, Levels<TSpec, TConfig> >::Type TSuperBlocks_;
- typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_;
+ typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_;
typedef String<TSuperBlocks_, TFibreSpec_> Type;
};
@@ -374,7 +374,7 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreUltraBlocks>
{
typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary_;
typedef typename RankDictionaryUltraBlock_<TValue, Levels<TSpec, TConfig> >::Type TUltraBlocks_;
- typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_;
+ typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_;
typedef String<TUltraBlocks_, TFibreSpec_> Type;
};
diff --git a/include/seqan/index/index_fm_rank_dictionary_naive.h b/include/seqan/index/index_fm_rank_dictionary_naive.h
index dcd9ab0..1884c2e 100644
--- a/include/seqan/index/index_fm_rank_dictionary_naive.h
+++ b/include/seqan/index/index_fm_rank_dictionary_naive.h
@@ -61,7 +61,7 @@ struct Fibre<RankDictionary<TValue, Naive<TSpec, TConfig> >, FibreRanks>
{
typedef RankDictionary<TValue, Naive<TSpec, TConfig> > TRankDictionary_;
typedef typename Size<TRankDictionary_>::Type TSize_;
- typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_;
+ typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_;
typedef String<TSize_, TFibreSpec_> Type;
};
diff --git a/include/seqan/index/index_fm_rank_dictionary_wt.h b/include/seqan/index/index_fm_rank_dictionary_wt.h
index 3c75e16..1e4d214 100644
--- a/include/seqan/index/index_fm_rank_dictionary_wt.h
+++ b/include/seqan/index/index_fm_rank_dictionary_wt.h
@@ -375,7 +375,7 @@ inline void _fillStructure(RankDictionary<TValue, WaveletTree<TSpec, TConfig> >
while (true)
{
// decide whether the character is smaller then the pivot element of the current node
- if (ordGreater(getCharacter(it), value(textIt)))
+ if (ordGreater(getCharacter(it), *textIt))
{
// TODO(esiragusa): use resize() & setValue() instead of appendValue().
appendValue(dict.ranks[getPosition(it)], false);
diff --git a/include/seqan/index/index_pizzachili.h b/include/seqan/index/index_pizzachili.h
index 9d5d2e1..53b831b 100644
--- a/include/seqan/index/index_pizzachili.h
+++ b/include/seqan/index/index_pizzachili.h
@@ -274,6 +274,7 @@ indexSolveDependencies(Index<TText, PizzaChili<TSpec> >& me, PizzaChiliCompresse
namespace impl {
template <typename TText, typename TSpec>
+ [[deprecated("The PizzaChiliIndex is outdated and is not maintained anymore.")]]
inline bool
createPizzaChiliIndex(
Index<TText, PizzaChili<TSpec> >& me,
@@ -301,6 +302,7 @@ namespace impl {
} // namespace impl
template <typename TText, typename TSpec>
+[[deprecated("The PizzaChiliIndex is outdated and is not maintained anymore.")]]
inline bool
indexCreate(Index<TText, PizzaChili<TSpec> >& me, PizzaChiliCompressed const) {
typedef
@@ -351,6 +353,7 @@ setIndexText(Index<TText, PizzaChili<TSpec> >& me, TOtherText& text) {
//////////////////////////////////////////////////////////////////////////////
template <typename TText, typename TSpec>
+[[deprecated("The PizzaChiliIndex is outdated and is not maintained anymore.")]]
inline bool open(
Index<TText, PizzaChili<TSpec> >& me,
char const* filename
@@ -368,6 +371,7 @@ inline bool open(
}
template <typename TText, typename TSpec>
+[[deprecated("The PizzaChiliIndex is outdated and is not maintained anymore.")]]
inline bool save(
Index<TText, PizzaChili<TSpec> >& me,
char const* filename
diff --git a/include/seqan/index/index_qgram.h b/include/seqan/index/index_qgram.h
index 670ddca..90ba86f 100644
--- a/include/seqan/index/index_qgram.h
+++ b/include/seqan/index/index_qgram.h
@@ -343,7 +343,7 @@ struct Fibre< Index<TText, TSpec>, FibreCounts> {
typename Size< TText >::Type,
typename Size< Index<TText, TSpec> >::Type
>,
- typename DefaultIndexStringSpec< Index<TText, TSpec> >::Type
+ typename StringSpec< Index<TText, TSpec> >::Type
> Type;
};
@@ -1395,8 +1395,9 @@ void createQGramIndex(TIndex &index)
_qgramRefineSuffixArray(sa, text, shape, dir);
}
-// DEPRECATED
-// better use createQGramIndex(index) (above)
+// DEPRECATED: Use createQGramIndex(index) instead. (above)
+// NOTE: This function is currently still used in the app search join (status 25.10.2016) so the deprecation macro
+// can't be used yet. As soon as the app is altered accordingly the macro shall be applied.
template <
typename TSA,
typename TDir,
@@ -1404,6 +1405,7 @@ typename TBucketMap,
typename TText,
typename TShape,
typename TStepSize >
+/*[[deprecated("Use createQGramIndex(index) instead.")]]*/
void createQGramIndex(
TSA &sa,
TDir &dir,
@@ -1428,8 +1430,9 @@ void createQGramIndex(
_qgramFillSuffixArray(sa, text, shape, dir, bucketMap, stepSize, False());
}
-// DEPRECATED
-// better use createQGramIndex(index) (above)
+// DEPRECATED: Use createQGramIndex(index) instead.
+// NOTE: This function is currently still used in the app search join (status 25.10.2016) so the deprecation macro
+// can't be used yet. As soon as the app is altered accordingly the macro shall be applied.
template <
typename TSA,
typename TDir,
@@ -1437,6 +1440,7 @@ typename TBucketMap,
typename TText,
typename TShape,
typename TStepSize >
+/*[[deprecated("Use createQGramIndex(index) instead.")]]*/
void createQGramIndex(
TSA &sa,
TDir &dir,
diff --git a/include/seqan/index/index_sa_bwtwalk.h b/include/seqan/index/index_sa_bwtwalk.h
index 68267f4..3da5acb 100644
--- a/include/seqan/index/index_sa_bwtwalk.h
+++ b/include/seqan/index/index_sa_bwtwalk.h
@@ -64,7 +64,7 @@ namespace seqan
// Public function
// NOTE: This function uses the supremum value of Value<TSA>::Type as NIL symbol
// for temporary calculations. Therefore, the caller must ensure that
- // length(s) < MaxValue<TValue>::VALUE. Otherwise, behaviour is undefined!
+ // length(s) < std::numeric_limits<TValue>::max(). Otherwise, behaviour is undefined!
template < typename TSA, typename TText, typename TSpec >
inline void createSuffixArray(
TSA &SA,
@@ -89,7 +89,7 @@ namespace seqan
{
value(lexprevpos, p) = predecessor;
value(lexnextpos, p) = successor;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
if (predecessor != NIL) value(lexnextpos, predecessor) = p;
if (successor != NIL) value(lexprevpos, successor) = p;
}
@@ -124,7 +124,7 @@ namespace seqan
TValue predecessor,
TValue successor)
{
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
value(lexxorpos, p) = predecessor ^ successor;
if (predecessor != NIL) value(lexxorpos, predecessor) = getValue(lexxorpos, predecessor) ^ successor ^ p;
if (successor != NIL) value(lexxorpos, successor) = getValue(lexxorpos, successor) ^ predecessor ^ p;
@@ -140,7 +140,7 @@ namespace seqan
{
typedef typename Value<TSA>::Type TValue;
typedef typename Iterator<TSA, Standard>::Type TSaIter;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
if (empty(s)) return;
@@ -174,7 +174,7 @@ namespace seqan
{
typedef typename Value<TSA>::Type TValue;
typedef typename Iterator<TSA, Standard>::Type TSaIter;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
typedef String<TValue> TArray;
if (empty(s)) return;
@@ -208,7 +208,7 @@ namespace seqan
{
typedef typename Value<TSA>::Type TValue;
typedef typename Iterator<TSA, Standard>::Type TSaIter;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
typedef String<TValue> TArray;
if (empty(s)) return;
@@ -380,7 +380,7 @@ namespace seqan
True const &)
{
typedef typename Value<TSA>::Type TValue;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
const TValue FLAGBIT = (TValue)1 << (BitsPerValue<TValue>::VALUE-1);
const TValue NOTFLAGBIT = ~FLAGBIT;
@@ -408,7 +408,7 @@ namespace seqan
TValue &pPlus,
unsigned int cOrd)
{
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
// current char does not exist
// first find pMinus ...
@@ -444,7 +444,7 @@ namespace seqan
typedef typename Value<const TText>::Type TChar;
const unsigned int ALPHABETSIZE = ValueSize<TChar>::VALUE;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
typedef String<TValue, Array<ALPHABETSIZE> > TAlphabetArray;
TAlphabetArray lexfirstpos, lexlastpos;
@@ -539,7 +539,7 @@ namespace seqan
typedef typename Value<const TText>::Type TChar;
const unsigned int ALPHABETSIZE = ValueSize<TChar>::VALUE;
- const TValue NIL = MaxValue<TValue>::VALUE;
+ const TValue NIL = std::numeric_limits<TValue>::max();
typedef String<TValue, Array<ALPHABETSIZE> > TAlphabetArray;
TAlphabetArray lexfirstpos;
diff --git a/include/seqan/index/index_sa_lss.h b/include/seqan/index/index_sa_lss.h
index 312c96c..8c73cac 100644
--- a/include/seqan/index/index_sa_lss.h
+++ b/include/seqan/index/index_sa_lss.h
@@ -256,7 +256,7 @@ struct ContextLss_
for (s=0, i=k-l; i; i>>=1)
++s; /* s is number of bits in old symbol.*/
- e=MaxValue<TValue>::VALUE>>s; /* e is for overflow checking.*/
+ e=std::numeric_limits<TValue>::max()>>s; /* e is for overflow checking.*/
for (b=d=r=0; r<n && d<=e && (c=d<<s|(k-l))<=q; ++r) {
b=b<<s|(x[r]-l+1); /* b is start of x in chunk alphabet.*/
d=c; /* d is max symbol in chunk alphabet.*/
@@ -317,7 +317,7 @@ struct ContextLss_
j=transform(V, I, n, k, l, n);
bucketsort(V, I, n, j); /* bucketsort on first r positions.*/
} else {
- transform(V, I, n, k, l, MaxValue<TValue>::VALUE);
+ transform(V, I, n, k, l, std::numeric_limits<TValue>::max());
for (i=0; i<=n; ++i)
I[i]=i; /* initialize I with suffix numbers.*/
h=0;
diff --git a/include/seqan/index/index_sa_truncated.h b/include/seqan/index/index_sa_truncated.h
index 79cc98b..07fde62 100644
--- a/include/seqan/index/index_sa_truncated.h
+++ b/include/seqan/index/index_sa_truncated.h
@@ -68,22 +68,22 @@ public:
Iter() :
TBase(),
- depth(MaxValue<TDepth>::VALUE)
+ depth(std::numeric_limits<TDepth>::max())
{}
Iter(TIndex &_index) :
TBase(_index),
- depth(MaxValue<TDepth>::VALUE)
+ depth(std::numeric_limits<TDepth>::max())
{}
Iter(TIndex &_index, MinimalCtor) :
TBase(_index, MinimalCtor()),
- depth(MaxValue<TDepth>::VALUE)
+ depth(std::numeric_limits<TDepth>::max())
{}
Iter(TIndex &_index, TVertexDesc const &_vDesc) :
TBase(_index, _vDesc),
- depth(MaxValue<TDepth>::VALUE)
+ depth(std::numeric_limits<TDepth>::max())
{}
Iter(Iter const &_origin):
diff --git a/include/seqan/index/index_wotd.h b/include/seqan/index/index_wotd.h
index a4f6c15..c1afc47 100644
--- a/include/seqan/index/index_wotd.h
+++ b/include/seqan/index/index_wotd.h
@@ -977,7 +977,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexWotd<TSpec> > const), (StringTreeConcept))
TTextIterator itText = begin(text, Standard());
TTextIterator itTextEnd = end(text, Standard());
for (; itText != itTextEnd; ++itText)
- ++buckets[ordValue(getValue(itText))];
+ ++buckets[ordValue(*itText)];
}
@@ -993,7 +993,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexWotd<TSpec> > const), (StringTreeConcept))
TTextIterator itText = begin(text, Standard());
TTextIterator itTextEnd = end(text, Standard());
for (; itText != itTextEnd; ++itText)
- ++buckets[ordValue(getValue(itText))];
+ ++buckets[ordValue(*itText)];
}
}
@@ -1196,7 +1196,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexWotd<TSpec> > const), (StringTreeConcept))
TTextIterator itText = begin(text, Standard());
TTextIterator itTextEnd = end(text, Standard());
for(TSize i = 0; itText != itTextEnd; ++itText, ++i)
- *(saBeg + (*(boundBeg + ordValue(getValue(itText))))++) = i;
+ *(saBeg + (*(boundBeg + ordValue(*itText)))++) = i;
}
index.sentinelOcc = 0;
index.sentinelBound = 0;
@@ -1247,7 +1247,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexWotd<TSpec> > const), (StringTreeConcept))
TTextIterator itTextEnd = end(text, Standard());
for(; itText != itTextEnd; ++itText)
{
- *(saBeg + (*(boundBeg + ordValue(getValue(itText))))++) = localPos;
+ *(saBeg + (*(boundBeg + ordValue(*itText)))++) = localPos;
assignValueI2(localPos, getValueI2(localPos) + 1);
}
}
diff --git a/include/seqan/index/shape_threshold.h b/include/seqan/index/shape_threshold.h
index d4ab53d..d97a41b 100644
--- a/include/seqan/index/shape_threshold.h
+++ b/include/seqan/index/shape_threshold.h
@@ -841,7 +841,7 @@ void computeExactQGramThreshold(
// columns n-1 and n for recursion
TMatrixCol col0; // addressing is colx[errors * statesCount + state]
TMatrixCol col1;
- const TThresh infty = MaxValue<TThresh>::VALUE >> 1;
+ const TThresh infty = std::numeric_limits<TThresh>::max() >> 1;
resize(col0, maxErrors * statesCount, infty);
resize(col1, maxErrors * statesCount);
diff --git a/include/seqan/journaled_string_tree/delta_map.h b/include/seqan/journaled_string_tree/delta_map.h
index fa241fa..c41f986 100644
--- a/include/seqan/journaled_string_tree/delta_map.h
+++ b/include/seqan/journaled_string_tree/delta_map.h
@@ -1049,7 +1049,7 @@ template <typename TConfig, typename TSpec>
constexpr typename Size<DeltaMap<TConfig, TSpec> >::Type
maxSize(DeltaMap<TConfig, TSpec> const & /*deltaMap*/)
{
- return MaxValue<typename Size<DeltaMap<TConfig, TSpec> >::Type>::VALUE;
+ return std::numeric_limits<typename Size<DeltaMap<TConfig, TSpec> >::Type>::max();
}
}
diff --git a/include/seqan/journaled_string_tree/delta_map_iterator.h b/include/seqan/journaled_string_tree/delta_map_iterator.h
index 915c493..cefa4ff 100644
--- a/include/seqan/journaled_string_tree/delta_map_iterator.h
+++ b/include/seqan/journaled_string_tree/delta_map_iterator.h
@@ -200,14 +200,14 @@ inline typename DeltaValue<typename Container<Iter<TDeltaMap, DeltaMapIteratorSp
deltaValue(Iter<TDeltaMap, DeltaMapIteratorSpec> & iter, TTag const & tag)
{
SEQAN_ASSERT(isDeltaType(deltaType(iter), TTag()));
- return deltaValue(container(iter)._deltaStore, getDeltaRecord(value(iter)).i2, tag);
+ return deltaValue(container(iter)._deltaStore, getDeltaRecord(*iter).i2, tag);
}
template <typename TDeltaMap, typename TTag>
inline typename DeltaValue<typename Container<Iter<TDeltaMap, DeltaMapIteratorSpec> const>::Type, TTag>::Type &
deltaValue(Iter<TDeltaMap, DeltaMapIteratorSpec> const & iter, TTag const & tag)
{
- return deltaValue(container(iter)._deltaStore, getDeltaRecord(value(iter)).i2, tag);
+ return deltaValue(container(iter)._deltaStore, getDeltaRecord(*iter).i2, tag);
}
namespace impl
diff --git a/include/seqan/journaled_string_tree/journaled_string_tree_traverser_util.h b/include/seqan/journaled_string_tree/journaled_string_tree_traverser_util.h
index 6e00357..ba32ac8 100644
--- a/include/seqan/journaled_string_tree/journaled_string_tree_traverser_util.h
+++ b/include/seqan/journaled_string_tree/journaled_string_tree_traverser_util.h
@@ -375,11 +375,11 @@ mapBranchPointToVirtual(TIterator & resultIt,
if (it->segmentSource == SOURCE_PATCH) // The iterator has to be at the beginning.
{
TVarIterator itVar = begin(variantStore, Standard()); // TODO(rrahn): Optimize!
- SEQAN_ASSERT_LEQ(getDeltaPosition(*itVar), static_cast<TDeltaMapPos const>(hostPos));
+ SEQAN_ASSERT_LEQ(getDeltaPosition(*itVar), static_cast<TDeltaMapPos>(hostPos));
TDeltaMapPos virtualOffset = 0;
// Now we move to the right until we find the node that we are looking for and reconstruct the offset of the virtual positions.
- while(getDeltaPosition(*itVar) != static_cast<TDeltaMapPos const>(hostPos) && !atEnd(itVar, variantStore))
+ while(getDeltaPosition(*itVar) != static_cast<TDeltaMapPos>(hostPos) && !atEnd(itVar, variantStore))
{
if (getDeltaCoverage(*itVar)[proxyId] != true) // irrelevant variant.
{
@@ -403,7 +403,7 @@ mapBranchPointToVirtual(TIterator & resultIt,
// We assume that the operation begins here!
resultIt._journalEntriesIterator = it;
- if (it->physicalOriginPosition + it->length > static_cast<TDeltaMapPos const>(hostPos))
+ if (it->physicalOriginPosition + it->length > static_cast<TDeltaMapPos>(hostPos))
{
_updateSegmentIterators(resultIt);
if (it->physicalOriginPosition < hostPos)
@@ -412,7 +412,7 @@ mapBranchPointToVirtual(TIterator & resultIt,
}
_updateSegmentIteratorsLeft(resultIt); // Set the iterator to the end of the current original node.
- if (_physicalPosition(resultIt) + 1 == static_cast<TDeltaMapPos const>(hostPos))
+ if (_physicalPosition(resultIt) + 1 == static_cast<TDeltaMapPos>(hostPos))
{
++resultIt;
return;
@@ -426,10 +426,10 @@ mapBranchPointToVirtual(TIterator & resultIt,
f.iter = std::upper_bound(begin(variantStore, Standard()), end(variantStore, Standard()), child,
DeltaMapEntryPosLessThanComparator_());
- SEQAN_ASSERT_LEQ(getDeltaPosition(*f.iter), static_cast<TDeltaMapPos const>(hostPos));
+ SEQAN_ASSERT_LEQ(getDeltaPosition(*f.iter), static_cast<TDeltaMapPos>(hostPos));
// Now we move to the right until we find the node that we are looking for and reconstruct the offset of the virtual positions.
- while (getDeltaPosition(*f.iter) != static_cast<TDeltaMapPos const>(hostPos) && !atEnd(f.iter))
+ while (getDeltaPosition(*f.iter) != static_cast<TDeltaMapPos>(hostPos) && !atEnd(f.iter))
{
if (getDeltaCoverage(*f.iter)[proxyId] != true || isRightEnd(*f.iter)) // irrelevant variant.
{
diff --git a/include/seqan/math/math_rational.h b/include/seqan/math/math_rational.h
index 23a77ad..f334cf8 100644
--- a/include/seqan/math/math_rational.h
+++ b/include/seqan/math/math_rational.h
@@ -90,7 +90,7 @@ public:
Rational() : num(0), den(1) {}
template <typename T>
- Rational(T const & n, SEQAN_CTOR_ENABLE_IF( IsInteger<T> ) ) : num(n), den(1) { (void)dummy; }
+ Rational(T const & n, SEQAN_CTOR_ENABLE_IF( Is<IntegerConcept<T> > ) ) : num(n), den(1) { (void)dummy; }
Rational(param_type n, param_type d) : num(n), den(d) { normalize(); }
// Default copy constructor and assignment are fine
@@ -503,8 +503,8 @@ std::istream& operator>> (std::istream& is, Rational<TInt>& r)
c = is.get();
// read digits as long we can store them
while ('0' <= c && c <= '9' &&
- (n < (TInt)MaxValue<TInt>::VALUE / (TInt)10 - (TInt)9) &&
- (d < (TInt)MaxValue<TInt>::VALUE / (TInt)10))
+ (n < (TInt)std::numeric_limits<TInt>::max() / (TInt)10 - (TInt)9) &&
+ (d < (TInt)std::numeric_limits<TInt>::max() / (TInt)10))
{
n = 10 * n + (c - '0');
d *= 10;
diff --git a/include/seqan/misc/interval_tree.h b/include/seqan/misc/interval_tree.h
index 455f60c..560d199 100644
--- a/include/seqan/misc/interval_tree.h
+++ b/include/seqan/misc/interval_tree.h
@@ -1032,10 +1032,10 @@ _createIntervalTree(TGraph & g, TPropertyMap & pm,
// one list of interval pointers for the intervals to the right of center
TIntervalPointers S_right;
- TValue min1 = maxValue<TValue>();
- TValue min2 = maxValue<TValue>();
- TValue max1 = minValue<TValue>();
- TValue max2 = minValue<TValue>();
+ TValue min1 = std::numeric_limits<TValue>::max();
+ TValue min2 = std::numeric_limits<TValue>::max();
+ TValue max1 = std::numeric_limits<TValue>::min();
+ TValue max2 = std::numeric_limits<TValue>::min();
value(pm, knot).center = center;
@@ -1212,8 +1212,8 @@ _calcIntervalTreeRootCenter(TIntervals & intervals)
TIntervalIterator it = begin(intervals);
TIntervalIterator it_end = end(intervals);
- TValue min = maxValue<TValue>();
- TValue max = minValue<TValue>();
+ TValue min = std::numeric_limits<TValue>::max();
+ TValue max = std::numeric_limits<TValue>::min();
// get min and max
while (it != it_end)
diff --git a/include/seqan/misc/name_store_cache.h b/include/seqan/misc/name_store_cache.h
index 29fe408..1969b34 100644
--- a/include/seqan/misc/name_store_cache.h
+++ b/include/seqan/misc/name_store_cache.h
@@ -71,15 +71,15 @@ struct NameStoreLess_
template <typename TId>
inline bool operator() (TId a, TId b) const
{
- if (a != maxValue(a))
+ if (a != std::numeric_limits<TId>::max())
{
- if (b != maxValue(b))
+ if (b != std::numeric_limits<TId>::max())
return (*nameStore)[a] < (*nameStore)[b];
else
return (*nameStore)[a] < *name;
} else
{
- if (b != maxValue(b))
+ if (b != std::numeric_limits<TId>::max())
return *name < (*nameStore)[b];
else
return false;
@@ -293,22 +293,19 @@ void appendName(NameStoreCache<TCNameStore, TCName> & cache, TName const & name)
cache.nameSet.insert(length(host(cache)) - 1);
}
-// TODO(holtgrew): Add deprecation annotation for compiler warnings.
-
-// deprecated.
// In the future we want to use only one argument either nameStore or nameStoreCache (has a reference to the nameStore)
template <typename TNameStore, typename TName, typename TContext>
+[[deprecated("Use appendName(cache, name) instead.")]]
void appendName(TNameStore &nameStore, TName const & name, TContext &)
{
appendName(nameStore, name);
}
-// deprecated.
template <typename TNameStore, typename TName, typename TCNameStore, typename TCName>
-void appendName(TNameStore &nameStore, TName const & name, NameStoreCache<TCNameStore, TCName> &context)
+[[deprecated("Use appendName(cache, name) instead. (nameStoreCache has a reference to the nameStore)")]]
+void appendName(TNameStore & /*nameStore*/, TName const & name, NameStoreCache<TCNameStore, TCName> &context)
{
- appendValue(nameStore, name, Generous());
- context.nameSet.insert(length(nameStore) - 1);
+ appendName(context, name);
}
// ----------------------------------------------------------------------------
@@ -338,7 +335,7 @@ bool getIdByName(TPos & pos, TNameStore const & nameStore, TName const & name)
for (TNameStoreIter iter = begin(nameStore, Standard()); iter != end(nameStore, Standard()); ++iter)
{
// if the element was found
- if (name == getValue(iter))
+ if (name == *iter)
{
// set the ID
pos = iter - begin(nameStore, Standard());
@@ -368,7 +365,7 @@ getIdByName(TPos & pos, NameStoreCache<TCNameStore, TCName> const & context, TNa
{
context.name = name;
- it = set.find(maxValue<TId>());
+ it = set.find(std::numeric_limits<TId>::max());
}
if (it != set.end())
@@ -379,16 +376,16 @@ getIdByName(TPos & pos, NameStoreCache<TCNameStore, TCName> const & context, TNa
return false;
}
-// deprecated.
template <typename TNameStore, typename TName, typename TPos, typename TContext>
+[[deprecated("Use getIdByName(idx, cache, name) instead.")]]
inline bool
getIdByName(TNameStore const & nameStore, TName const & name, TPos & pos, TContext const & /*not a cache*/)
{
return getIdByName(pos, nameStore, name);
}
-// deprecated.
template<typename TNameStore, typename TName, typename TPos, typename TCNameStore, typename TCName>
+[[deprecated("Use getIdByName(idx, cache, name) instead.")]]
inline bool
getIdByName(TNameStore const & /*nameStore*/, TName const & name, TPos & pos, NameStoreCache<TCNameStore, TCName> const & context)
{
diff --git a/include/seqan/modifier/modifier_padding.h b/include/seqan/modifier/modifier_padding.h
index b02dbb7..83bb805 100644
--- a/include/seqan/modifier/modifier_padding.h
+++ b/include/seqan/modifier/modifier_padding.h
@@ -169,12 +169,24 @@ struct DefaultIteratorSpec< ModifiedString<THost, ModPadding> >
* @datarace Not thread-safe.
*/
+template <typename T>
+bool _isValid(T* value)
+{
+ return value != nullptr;
+}
+
+template <typename T>
+bool _isValid(T const &)
+{
+ return true;
+}
+
template <typename THost, typename TSize, typename TPadding>
inline void expand(ModifiedString<THost, ModPadding> & me,
TSize const newSize,
TPadding const & _padding)
{
- SEQAN_ASSERT(me._host != nullptr);
+ SEQAN_ASSERT(_isValid(me._host));
cargo(me)._numPaddedChar = newSize;
cargo(me)._paddedValue = _padding;
diff --git a/include/seqan/modifier/modifier_view.h b/include/seqan/modifier/modifier_view.h
index 5637708..7631b36 100644
--- a/include/seqan/modifier/modifier_view.h
+++ b/include/seqan/modifier/modifier_view.h
@@ -321,14 +321,14 @@ template <typename THost, typename TFunctor>
inline typename GetValue<ModifiedIterator<THost, ModView<TFunctor> > >::Type
getValue(ModifiedIterator<THost, ModView<TFunctor> > & me)
{
- return cargo(me).func(getValue(host(me)));
+ return cargo(me).func(*host(me));
}
template <typename THost, typename TFunctor>
inline typename GetValue<ModifiedIterator<THost, ModView<TFunctor> > const>::Type
getValue(ModifiedIterator<THost, ModView<TFunctor> > const & me)
{
- return cargo(me).func(getValue(host(me)));
+ return cargo(me).func(*host(me));
}
// --------------------------------------------------------------------------
diff --git a/include/seqan/parse_lm/local_match_store.h b/include/seqan/parse_lm/local_match_store.h
index d5b1387..47fa817 100644
--- a/include/seqan/parse_lm/local_match_store.h
+++ b/include/seqan/parse_lm/local_match_store.h
@@ -103,13 +103,13 @@ public:
TPosition queryEndPos;
LocalMatch() :
- id(MaxValue<TId>::VALUE),
- subjectId(MaxValue<TId>::VALUE),
- subjectBeginPos(MaxValue<TPosition>::VALUE),
- subjectEndPos(MaxValue<TPosition>::VALUE),
- queryId(MaxValue<TId>::VALUE),
- queryBeginPos(MaxValue<TPosition>::VALUE),
- queryEndPos(MaxValue<TPosition>::VALUE)
+ id(std::numeric_limits<TId>::max()),
+ subjectId(std::numeric_limits<TId>::max()),
+ subjectBeginPos(std::numeric_limits<TPosition>::max()),
+ subjectEndPos(std::numeric_limits<TPosition>::max()),
+ queryId(std::numeric_limits<TId>::max()),
+ queryBeginPos(std::numeric_limits<TPosition>::max()),
+ queryEndPos(std::numeric_limits<TPosition>::max())
{}
LocalMatch(TId id_,
@@ -358,16 +358,16 @@ appendLocalMatch(TLocalMatchStore & store,
// Get id for subject and query sequences; Insert sequences into name stores/caches if not already there.
TId subjectId = 0;
- if (!getIdByName(store.sequenceNameStore, subjectName, subjectId, store._sequenceNameStoreCache))
+ if (!getIdByName(subjectId, store.sequenceNameStore, subjectName))
{
subjectId = length(store.sequenceNameStore);
- appendName(store.sequenceNameStore, subjectName, store._sequenceNameStoreCache);
+ appendName(store._sequenceNameStoreCache, subjectName);
}
TId queryId = 0;
- if (!getIdByName(store.sequenceNameStore, queryName, queryId, store._sequenceNameStoreCache))
+ if (!getIdByName(queryId, store.sequenceNameStore, queryName))
{
queryId = length(store.sequenceNameStore);
- appendName(store.sequenceNameStore, queryName, store._sequenceNameStoreCache);
+ appendName(store._sequenceNameStoreCache, queryName);
}
appendLocalMatch(store, subjectId, subjectBeginPos, subjectEndPos, queryId, queryBeginPos, queryEndPos);
diff --git a/include/seqan/pipe/pipe_source.h b/include/seqan/pipe/pipe_source.h
index f2a99f6..d521333 100644
--- a/include/seqan/pipe/pipe_source.h
+++ b/include/seqan/pipe/pipe_source.h
@@ -74,7 +74,7 @@ namespace seqan
in(_cont), cur(), val() {}
inline typename Value<TInput>::Type const & operator*()
- { return val = getValue(cur); }
+ { return val = *cur; }
inline Pipe& operator++()
{
diff --git a/include/seqan/pipe/pool_base.h b/include/seqan/pipe/pool_base.h
index d8d1adf..2f43f56 100644
--- a/include/seqan/pipe/pool_base.h
+++ b/include/seqan/pipe/pool_base.h
@@ -832,11 +832,13 @@ namespace seqan
//////////////////////////////////////////////////////////////////////////////
// auto-disposal interface (deprecated)
+ [[deprecated]]
inline void addListener() {
if (!listeners) return;
++listeners;
}
+ [[deprecated]]
inline void delListener() {
if (!listeners) return;
if (--listeners == 0) {
@@ -918,7 +920,7 @@ namespace seqan
if (reader) reader->end();
delete reader;
reader = NULL;
- delListener();
+ // delListener(); (deprecated)
return true;
}
@@ -969,7 +971,7 @@ namespace seqan
writeBackBuffers = _conf.writeBackBuffers;
writeBackBuckets = _conf.writeBackBuffers;
_partiallyFilled = true;
- listeners = 0;
+ listeners = 0; // (deprecated)
reader = NULL;
writer = NULL;
_ownFile = true;
@@ -1064,8 +1066,8 @@ namespace seqan
return me.clear();
}
- // deprecated
template < typename TValue, typename TSpec >
+ [[deprecated]]
inline typename Size< Pool<TValue, TSpec> >::Type
size(Pool<TValue, TSpec> const &me)
{
diff --git a/include/seqan/platform.h b/include/seqan/platform.h
index 40ab71f..ab0c7ba 100644
--- a/include/seqan/platform.h
+++ b/include/seqan/platform.h
@@ -276,15 +276,23 @@
* @signature typdef (...) __uint8;
*/
+[[deprecated("Use uint64_t instead.")]]
typedef uint64_t __uint64; // nolint
+[[deprecated("Use uint32_t instead.")]]
typedef uint32_t __uint32; // nolint
+[[deprecated("Use uint16_t instead.")]]
typedef uint16_t __uint16; // nolint
+[[deprecated("Use uint8_t instead.")]]
typedef uint8_t __uint8; // nolint
#if !(defined(COMPILER_LINTEL) || defined(STDLIB_VS))
+[[deprecated("Use int64_t instead.")]]
typedef int64_t __int64; // nolint
+[[deprecated("Use int32_t instead.")]]
typedef int32_t __int32; // nolint
+[[deprecated("Use int16_t instead.")]]
typedef int16_t __int16; // nolint
+[[deprecated("Use int8_t instead.")]]
typedef int8_t __int8; // nolint
#endif
@@ -488,41 +496,41 @@ namespace seqan
{
template <typename T>
-constexpr void ensure_little_endian(T &)
+constexpr void enforceLittleEndian(T &)
{}
#if SEQAN_BIG_ENDIAN
-inline void ensure_little_endian(int16_t & in)
+inline void enforceLittleEndian(int16_t & in)
{
in = htole16(in);
}
-inline void ensure_little_endian(uint16_t & in)
+inline void enforceLittleEndian(uint16_t & in)
{
in = htole16(in);
}
-inline void ensure_little_endian(int32_t & in)
+inline void enforceLittleEndian(int32_t & in)
{
in = htole32(in);
}
-inline void ensure_little_endian(uint32_t & in)
+inline void enforceLittleEndian(uint32_t & in)
{
in = htole32(in);
}
-inline void ensure_little_endian(int64_t & in)
+inline void enforceLittleEndian(int64_t & in)
{
in = htole64(in);
}
-inline void ensure_little_endian(uint64_t & in)
+inline void enforceLittleEndian(uint64_t & in)
{
in = htole64(in);
}
-inline void ensure_little_endian(float & in)
+inline void enforceLittleEndian(float & in)
{
uint32_t tmp = htole32(*reinterpret_cast<uint32_t*>(&in));
char *out = reinterpret_cast<char*>(&in);
*out = *reinterpret_cast<char*>(&tmp);
}
-inline void ensure_little_endian(double & in)
+inline void enforceLittleEndian(double & in)
{
uint64_t tmp = htole64(*reinterpret_cast<uint64_t*>(&in));
char *out = reinterpret_cast<char*>(&in);
@@ -534,6 +542,7 @@ inline void ensure_little_endian(double & in)
// DEFAULT PAGESIZE FOR MMAP
#ifndef SEQAN_DEFAULT_PAGESIZE
+ // 64K is supported on all platforms (whereas 4K is not)
#define SEQAN_DEFAULT_PAGESIZE 64 * 1024
#endif
diff --git a/include/seqan/realign/realign_base.h b/include/seqan/realign/realign_base.h
index 6f43e03..3bb23c3 100644
--- a/include/seqan/realign/realign_base.h
+++ b/include/seqan/realign/realign_base.h
@@ -111,8 +111,8 @@ struct ContigAlignmentsInfo_
// Reset everything.
void reset()
{
- minPos = maxValue<TReadPos>();
- maxPos = minValue<TReadPos>();
+ minPos = std::numeric_limits<TReadPos>::max();
+ maxPos = std::numeric_limits<TReadPos>::min();
alignedItBegin = TAlignedReadIter();
alignedItEnd = TAlignedReadIter();
}
@@ -673,9 +673,9 @@ void AnsonMyersRealigner_<TFragmentStore>::run(unsigned contigID, unsigned windo
_checkReadAlignments();
// Perform realignment round until the score does not decrease any more.
- int score = maxValue<int>();
- int oldScore = maxValue<int>();
- for (unsigned roundNo = 0; score == maxValue<int>() || score < oldScore; ++roundNo)
+ int score = std::numeric_limits<int>::max();
+ int oldScore = std::numeric_limits<int>::max();
+ for (unsigned roundNo = 0; score == std::numeric_limits<int>::max() || score < oldScore; ++roundNo)
{
if (options.debug)
std::cerr << "Realignment round " << roundNo << "\n";
diff --git a/include/seqan/rna_io/rna_record.h b/include/seqan/rna_io/rna_record.h
index aea4330..9abdfd9 100644
--- a/include/seqan/rna_io/rna_record.h
+++ b/include/seqan/rna_io/rna_record.h
@@ -120,16 +120,23 @@ class RnaRecord
{
private:
// Constant for an undefined ID.
- static std::uint32_t const undef = UINT32_MAX;
+ static std::uint32_t const _undef = std::numeric_limits<std::uint32_t>::max();
public:
+ // NOTE(marehr): Explicitly define a default constructor, to fix a msvc 2017
+ // (msvc versions before did not have this bug) compiler bug:
+ // error C2248: 'seqan::RnaRecord::_undef': cannot access private member
+ // declared in class 'seqan::RnaRecord'
+ RnaRecord() : recordID{_undef}
+ {}
+
/*!
* @var std::uint32_t RnaRecord::recordID
* @brief Identification of the record.
*
* In an RNA structure file the first record gets ID 0, the following ID 1 and so on.
*/
- std::uint32_t recordID{undef};
+ std::uint32_t recordID{_undef};
/*!
* @var TSizeRna5String RnaRecord::seqLen
@@ -234,7 +241,7 @@ public:
*/
bool hasUndefinedID() const
{
- return recordID == undef;
+ return recordID == _undef;
}
/*!
@@ -244,7 +251,7 @@ public:
*/
void clearID()
{
- recordID = undef;
+ recordID = _undef;
}
};
diff --git a/include/seqan/seeds/banded_chain_alignment_impl.h b/include/seqan/seeds/banded_chain_alignment_impl.h
index a99a14e..970d993 100644
--- a/include/seqan/seeds/banded_chain_alignment_impl.h
+++ b/include/seqan/seeds/banded_chain_alignment_impl.h
@@ -89,9 +89,11 @@ template <typename TDist,
inline bool _checkScoreOverflow(TDist const distance,
Score<TScoreValue, TScoreSpec> const & score)
{
- auto mxScore = _max(scoreMatch(score), std::abs(scoreMismatch(score)));
- return static_cast<decltype(BitsPerValue<TScoreValue>::VALUE)>(bitScanReverse(mxScore) + bitScanReverse(distance))
- <= BitsPerValue<TScoreValue>::VALUE - 1;
+ using TBits = decltype(BitsPerValue<TScoreValue>::VALUE);
+ TScoreValue mxScore = _max(scoreMatch(score), std::abs(scoreMismatch(score)));
+
+ TBits bits = bitScanReverse(mxScore) + bitScanReverse(distance);
+ return bits <= BitsPerValue<TScoreValue>::VALUE - 1;
}
// ----------------------------------------------------------------------------
@@ -1225,7 +1227,7 @@ _computeAlignment(TTraceSet & globalTraceSet,
// Handle case of empty seed set.
if (length(seedSet) < 1)
- return MinValue<TScoreValue>::VALUE;
+ return std::numeric_limits<TScoreValue>::min();
// Find the first anchor that is not covered by the region between the beginning of the matrix and the next anchor
// considering the minbandwidh parameter.
diff --git a/include/seqan/seeds/seeds_extension.h b/include/seqan/seeds/seeds_extension.h
index 9f724f6..ec6bcb8 100644
--- a/include/seqan/seeds/seeds_extension.h
+++ b/include/seqan/seeds/seeds_extension.h
@@ -627,14 +627,14 @@ _extendSeedGappedXDropOneDirection(
return 0;
TScoreValue len = 2 * _max(cols, rows); // number of antidiagonals
- TScoreValue const minErrScore = minValue<TScoreValue>() / len; // minimal allowed error penalty
+ TScoreValue const minErrScore = std::numeric_limits<TScoreValue>::min() / len; // minimal allowed error penalty
setScoreGap(scoringScheme, _max(scoreGap(scoringScheme), minErrScore));
typename Value<TQuerySegment>::Type * tag = 0;
(void)tag;
_extendSeedGappedXDropOneDirectionLimitScoreMismatch(scoringScheme, minErrScore, tag);
TScoreValue gapCost = scoreGap(scoringScheme);
- TScoreValue undefined = minValue<TScoreValue>() - gapCost;
+ TScoreValue undefined = std::numeric_limits<TScoreValue>::min() - gapCost;
// DP matrix is calculated by anti-diagonals
String<TScoreValue> antiDiag1; //smallest anti-diagonal
diff --git a/include/seqan/seeds/seeds_global_chaining.h b/include/seqan/seeds/seeds_global_chaining.h
index 2f49a50..5a6e867 100644
--- a/include/seqan/seeds/seeds_global_chaining.h
+++ b/include/seqan/seeds/seeds_global_chaining.h
@@ -138,7 +138,7 @@ chainSeedsGlobally(
// sparse chaining algorithm expects.
// std::cout << "| " << **it << std::endl;
qualityOfChainEndingIn[i] = seedSize(seeds[i]);
- predecessor[i] = maxValue<unsigned>();
+ predecessor[i] = std::numeric_limits<unsigned>::max();
appendValue(intervalPoints, TIntervalPoint(beginPositionH(seeds[i]), true, i));
appendValue(intervalPoints, TIntervalPoint(endPositionH(seeds[i]), false, i));
}
@@ -177,7 +177,7 @@ chainSeedsGlobally(
// *first* one that compares greater than the reference
// one. Searching for the this one and decrementing the
// result iterator gives the desired result.
- TIntermediateSolution referenceSolution(beginPositionV(seedK), maxValue<TSize>(), maxValue<unsigned>());
+ TIntermediateSolution referenceSolution(beginPositionV(seedK), std::numeric_limits<TSize>::max(), std::numeric_limits<unsigned>::max());
// std::cout << " intermediateSolutions.upper_bound(" << beginPositionV(seedK) << ")" << std::endl;
TIntermediateSolutionsIterator itJ = intermediateSolutions.upper_bound(referenceSolution);
if (itJ == intermediateSolutions.begin()) {
@@ -210,7 +210,7 @@ chainSeedsGlobally(
// value that is > so we have to work around this to get
// >= again...
SEQAN_ASSERT_GT(endPositionV(seedK), 0u);
- TIntermediateSolution referenceSolution(endPositionV(seedK), 0, maxValue<unsigned>());
+ TIntermediateSolution referenceSolution(endPositionV(seedK), 0, std::numeric_limits<unsigned>::max());
TIntermediateSolutionsIterator itSol = intermediateSolutions.upper_bound(referenceSolution);
if (itSol == intermediateSolutions.end()) {
// None found. Insert a new triple for seed k.
@@ -256,7 +256,7 @@ chainSeedsGlobally(
// TODO(holtgrew): We could use two different algorithms for target containers that are strings and those that are lists.
clear(target);
unsigned next = intermediateSolutions.rbegin()->i3;
- while (next != maxValue<unsigned>())
+ while (next != std::numeric_limits<unsigned>::max())
{
appendValue(target, seeds[next]);
next = predecessor[next];
diff --git a/include/seqan/seq_io/bam_sam.h b/include/seqan/seq_io/bam_sam.h
index 53b7f4d..d328fe4 100644
--- a/include/seqan/seq_io/bam_sam.h
+++ b/include/seqan/seq_io/bam_sam.h
@@ -115,7 +115,7 @@ inline int32_t readBamRecord(TIdString & meta,
// BamAlignmentRecordCore.
BamAlignmentRecordCore recordCore;
arrayCopyForward(it, it + sizeof(BamAlignmentRecordCore), reinterpret_cast<char *>(&recordCore));
- ensure_little_endian(recordCore);
+ enforceLittleEndian(recordCore);
it += sizeof(BamAlignmentRecordCore);
clear(meta);
@@ -144,9 +144,9 @@ inline int32_t readBamRecord(TIdString & meta,
{
unsigned char ui = getValue(it);
++it;
- assignValue(sit, Iupac(ui >> 4));
+ *sit = Iupac(ui >> 4);
++sit;
- assignValue(sit, Iupac(ui & 0x0f));
+ *sit = Iupac(ui & 0x0f);
++sit;
}
if (recordCore._l_qseq & 1)
diff --git a/include/seqan/seq_io/sequence_file.h b/include/seqan/seq_io/sequence_file.h
index 9be397a..8c52443 100644
--- a/include/seqan/seq_io/sequence_file.h
+++ b/include/seqan/seq_io/sequence_file.h
@@ -110,7 +110,7 @@ typedef
typedef TagSelector<SeqInFormats> SeqInFormat;
typedef TagSelector<SeqOutFormats> SeqOutFormat;
-// deprecated
+[[deprecated]]
typedef SeqInFormat AutoSeqFormat;
// ============================================================================
@@ -359,7 +359,7 @@ inline void readRecords(TIdStringSet & meta,
TSeqStringSet & seq,
FormattedFile<Fastq, Input, TSpec> & file)
{
- readRecords(meta, seq, file, MaxValue<uint64_t>::VALUE);
+ readRecords(meta, seq, file, std::numeric_limits<uint64_t>::max());
}
// ----------------------------------------------------------------------------
@@ -406,7 +406,7 @@ inline void readRecords(TIdStringSet & meta,
TQualStringSet & qual,
FormattedFile<Fastq, Input, TSpec> & file)
{
- readRecords(meta, seq, qual, file, MaxValue<uint64_t>::VALUE);
+ readRecords(meta, seq, qual, file, std::numeric_limits<uint64_t>::max());
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/sequence/adapt_stl_container.h b/include/seqan/sequence/adapt_stl_container.h
index ee7ea0b..d5128d8 100644
--- a/include/seqan/sequence/adapt_stl_container.h
+++ b/include/seqan/sequence/adapt_stl_container.h
@@ -539,7 +539,8 @@ capacity(std::array<TChar, N> const & me)
// VC2015 implements some C++17 functions which would collide for
// applications that do using namespace std
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf
-#ifndef _MSC_VER
+// Disable those functions for C++17 and upwards (pre-C++17 defines __cplusplus as <=201402L).
+#if !(defined(STDLIB_VS) || __cplusplus > 201402L)
template <typename TContainer>
inline SEQAN_FUNC_ENABLE_IF(Is<StlContainerConcept<TContainer> >, bool)
empty(TContainer const & me)
diff --git a/include/seqan/sequence/sequence_forwards.h b/include/seqan/sequence/sequence_forwards.h
index ac0cebd..829effd 100644
--- a/include/seqan/sequence/sequence_forwards.h
+++ b/include/seqan/sequence/sequence_forwards.h
@@ -135,8 +135,11 @@ template <typename TContainer, typename TPos> inline SEQAN_FUNC_ENABLE_IF(And<Is
template <typename TContainer, typename TPos> inline SEQAN_FUNC_ENABLE_IF(And<Is<StlContainerConcept<TContainer> >, Not<HasSubscriptOperator<TContainer> > >, typename Reference<TContainer>::Type) value(TContainer & me, TPos const pos);
template <typename TContainer, typename TPos> inline SEQAN_FUNC_ENABLE_IF(And<Is<StlContainerConcept<TContainer> >, Not<HasSubscriptOperator<TContainer> > >, typename Reference<TContainer const>::Type) value(TContainer const & me, TPos const pos);
template <typename TContainer, typename TPos> inline SEQAN_FUNC_ENABLE_IF(And<Is<StlContainerConcept<TContainer> >, Not<HasSubscriptOperator<TContainer> > >, typename Value<TContainer>::Type) value(TContainer && me, TPos const pos);
+
+#if !(defined(STDLIB_VS) || __cplusplus > 201402L)
template <typename TContainer> inline SEQAN_FUNC_ENABLE_IF(Is<StlContainerConcept<TContainer> >, bool) empty(TContainer const & me);
template <typename T> inline SEQAN_FUNC_DISABLE_IF(Is<StlContainerConcept<typename RemoveReference<T>::Type> >, bool) empty(T const & me);
+#endif
// --------------------------------------------------------------------------
// Forwards For arrays and pointers.
diff --git a/include/seqan/sequence/string_cstyle.h b/include/seqan/sequence/string_cstyle.h
index 3b3eb55..02b3e97 100644
--- a/include/seqan/sequence/string_cstyle.h
+++ b/include/seqan/sequence/string_cstyle.h
@@ -582,11 +582,10 @@ struct CreateArrayStringExpand_
_deallocateStorage(target, buf, old_target_capacity);
}
}
- assignValue(begin(target, Standard()), 0); //set target length to 0
+ assign(*begin(target, Standard()), 0); //set target length to 0
assign(begin(target, Standard()), source, Insist());
typedef typename Iterator<TTarget>::Type TTargetIterator;
_setEnd(target, TTargetIterator( begin(target) + source_length));
-
}
template <typename TTarget, typename TSource, typename TLimit>
diff --git a/include/seqan/sequence/string_packed.h b/include/seqan/sequence/string_packed.h
index ba0af1f..06d3eb0 100644
--- a/include/seqan/sequence/string_packed.h
+++ b/include/seqan/sequence/string_packed.h
@@ -594,7 +594,7 @@ resize(String<TValue, Packed<THostspec> > & me,
// create WORD
THostValue tmp;
tmp.i = 0;
- __uint64 ord = ordValue(TValue(newValue));
+ uint64_t ord = ordValue(TValue(newValue));
for (unsigned j = 0; j < TTraits::VALUES_PER_HOST_VALUE; ++j)
tmp.i |= ord << (j * TTraits::BITS_PER_VALUE);
@@ -611,7 +611,7 @@ resize(String<TValue, Packed<THostspec> > & me,
TStringSize alreadySet = old_length % TTraits::VALUES_PER_HOST_VALUE;
// clear non-set positions (which may be uninitialized ( != 0 )
- tmp.i = (~static_cast<__uint64>(0) << (64 - alreadySet * TTraits::BITS_PER_VALUE)) >> TTraits::WASTED_BITS;
+ tmp.i = (~static_cast<uint64_t>(0) << (64 - alreadySet * TTraits::BITS_PER_VALUE)) >> TTraits::WASTED_BITS;
host(me)[old_host_length-1].i &= tmp.i;
for (TStringSize i = alreadySet; i < TTraits::VALUES_PER_HOST_VALUE; ++i)
@@ -1063,7 +1063,7 @@ arrayCopyBackward(Iter<TPackedString, Packed<TSpec> > source_begin,
{
--hostIterator(source_end);
--hostIterator(target_begin);
- assignValue(hostIterator(target_begin), getValue(hostIterator(source_end)));
+ *hostIterator(target_begin) = getValue(hostIterator(source_end));
}
}
@@ -1246,7 +1246,7 @@ struct ClearSpaceStringPacked_
typename Size<T>::Type start,
typename Size<T>::Type end)
{
- return _clearSpace_(seq, size, start, end, maxValue<typename Size<T>::Type >());
+ return _clearSpace_(seq, size, start, end, std::numeric_limits<typename Size<T>::Type >::max());
}
template <typename T>
@@ -1753,7 +1753,7 @@ bitScanReverse(String<bool, Packed<THostSpec> > const & obj)
typedef typename THostValue::TBitVector TBitVector;
if (empty(host(obj)))
- return MaxValue<TPosition>::VALUE;
+ return std::numeric_limits<TPosition>::max();
TConstPackedHostIterator it = end(host(obj), Standard()) - 1;
TConstPackedHostIterator itBegin = begin(host(obj), Standard());
@@ -1792,7 +1792,7 @@ bitScanForward(String<bool, Packed<THostSpec> > const & obj)
typedef typename THostValue::TBitVector TBitVector;
if (empty(host(obj)))
- return MaxValue<TPosition>::VALUE;
+ return std::numeric_limits<TPosition>::max();
TConstPackedHostIterator itBegin = begin(host(obj), Standard()) + 1;
TConstPackedHostIterator it = itBegin;
diff --git a/include/seqan/sequence/string_packed_old.h b/include/seqan/sequence/string_packed_old.h
index 13a2e61..60d47c0 100644
--- a/include/seqan/sequence/string_packed_old.h
+++ b/include/seqan/sequence/string_packed_old.h
@@ -701,7 +701,7 @@ struct ClearSpaceStringPacked2_
typename Size<T>::Type start,
typename Size<T>::Type end)
{
- return _clearSpace_(seq, size, start, end, maxValue<typename Size<T>::Type >());
+ return _clearSpace_(seq, size, start, end, std::numeric_limits<typename Size<T>::Type >::max());
}
template <typename T>
diff --git a/include/seqan/sequence/string_set_base.h b/include/seqan/sequence/string_set_base.h
index 3e7eee4..3ae5aea 100644
--- a/include/seqan/sequence/string_set_base.h
+++ b/include/seqan/sequence/string_set_base.h
@@ -1345,7 +1345,7 @@ assign(StringSet<TString, TSpec> & target,
TSourceIterator it = begin(source, Standard());
TSourceIterator itEnd = end(source, Standard());
for (; it != itEnd; ++it)
- appendValue(target, getValue(it), tag);
+ appendValue(target, *it, tag);
}
template <typename TString, typename TSpec, typename TSource>
@@ -1619,6 +1619,7 @@ concat(StringSet<TString, TSpec> const & constMe)
// this function is deprecated and the return value is very ungeneric, e.g. doesn't work if strings are std::string
template <typename TStrings, typename TDelim>
+[[deprecated]]
inline String<typename Value<typename Value<TStrings>::Type>::Type>
concat(TStrings const & strings, TDelim const & delimiter, bool ignoreEmptyStrings = false)
{
@@ -1665,7 +1666,7 @@ inline void prefixSums(TPrefixSums & sums, TText const & text)
// Compute symbol frequencies.
TIter itEnd = end(concat(text), Standard());
for (TIter it = begin(concat(text), Standard()); it != itEnd; goNext(it))
- sums[ordValue(static_cast<TValue>(value(it))) + 1]++;
+ sums[ordValue(static_cast<TValue>(*it)) + 1]++;
// Cumulate symbol frequencies.
partialSum(sums);
diff --git a/include/seqan/sequence/string_set_owner.h b/include/seqan/sequence/string_set_owner.h
index dd33981..abdac6b 100644
--- a/include/seqan/sequence/string_set_owner.h
+++ b/include/seqan/sequence/string_set_owner.h
@@ -328,6 +328,7 @@ erase(StringSet<TString, Owner<Default> > & me, TPos pos, TPosEnd posEnd)
// --------------------------------------------------------------------------
template <typename TString, typename TSpec, typename TId>
+// [[deprecated("Use the subscript operator (operator[]) instead.")]]
inline typename Reference<StringSet<TString, Owner<TSpec> > >::Type
getValueById(StringSet<TString, Owner<TSpec> >& me,
TId const id)
@@ -352,6 +353,7 @@ getValueById(StringSet<TString, Owner<TSpec> > const & me,
// --------------------------------------------------------------------------
template <typename TString, typename TSpec, typename TId>
+// [[deprecated("Use assignValue instead.")]]
inline typename Id<StringSet<TString, Owner<TSpec> > >::Type
assignValueById(StringSet<TString, Owner<TSpec> > & me,
TString& obj,
@@ -372,6 +374,7 @@ assignValueById(StringSet<TString, Owner<TSpec> > & me,
// --------------------------------------------------------------------------
template<typename TString, typename TSpec, typename TId>
+// [[deprecated("Use erase instead.")]]
inline void
removeValueById(StringSet<TString, Owner<TSpec> > & me, TId const id)
{
@@ -385,6 +388,7 @@ removeValueById(StringSet<TString, Owner<TSpec> > & me, TId const id)
// --------------------------------------------------------------------------
template <typename TString, typename TSpec, typename TPos>
+// [[deprecated("ID is the same as the position")]]
inline typename Id<StringSet<TString, Owner<TSpec> > >::Type
positionToId(StringSet<TString, Owner<TSpec> > &,
TPos const pos)
@@ -397,6 +401,7 @@ positionToId(StringSet<TString, Owner<TSpec> > &,
// --------------------------------------------------------------------------
template <typename TString, typename TSpec, typename TPos>
+// [[deprecated("ID is the same as the position")]]
inline typename Id<StringSet<TString, Owner<TSpec> > >::Type
positionToId(StringSet<TString, Owner<TSpec> > const &,
TPos const pos)
@@ -409,6 +414,7 @@ positionToId(StringSet<TString, Owner<TSpec> > const &,
// --------------------------------------------------------------------------
template <typename TString, typename TSpec, typename TId>
+// [[deprecated("ID is the same as the position")]]
inline typename Id<StringSet<TString, Owner<TSpec> > >::Type
idToPosition(StringSet<TString, Owner<TSpec> > const&,
TId const id)
diff --git a/include/seqan/simd.h b/include/seqan/simd.h
index e61f20b..b2f0081 100644
--- a/include/seqan/simd.h
+++ b/include/seqan/simd.h
@@ -86,6 +86,18 @@
#error SEQAN::SIMD (vector extension) is not supported by msvc and windows intel compiler, try compiling with -DSEQAN_UMESIMD_ENABLED
#endif
+// SIMD operations have severe performance issues on <= gcc4.9
+#if defined(SEQAN_SEQANSIMD_ENABLED) && defined(COMPILER_GCC) && (__GNUC__ <= 4)
+ // TODO(marehr): If we switch to jenkins, filter out these warnings
+ #if !(defined(NDEBUG) || defined(SEQAN_ENABLE_TESTING))
+ #pragma message("SIMD acceleration was disabled for <=gcc4.9, because of known performance issues " \
+ "https://github.com/seqan/seqan/issues/2017. Use a more recent gcc compiler.")
+ #endif
+ #undef SEQAN_SIMD_ENABLED
+ #undef SEQAN_SEQANSIMD_ENABLED
+ #undef SEQAN_UMESIMD_ENABLED
+#endif // defined(COMPILER_GCC) && __GNUC__ <= 4
+
// Define maximal size of vector in byte.
#if defined(SEQAN_SEQANSIMD_ENABLED) && defined(__AVX512F__)
// TODO(marehr): If we switch to jenkins, filter out these warnings
diff --git a/include/seqan/simd/simd_base.h b/include/seqan/simd/simd_base.h
index 22ab483..938e37c 100644
--- a/include/seqan/simd/simd_base.h
+++ b/include/seqan/simd/simd_base.h
@@ -226,6 +226,10 @@ max(TSimdVector const & a, TSimdVector const & b);
template <typename TSimdVector>
inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+min(TSimdVector const & a, TSimdVector const & b);
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
operator|(TSimdVector const & a, TSimdVector const & b);
template <typename TSimdVector>
diff --git a/include/seqan/simd/simd_base_seqan_impl_avx2.h b/include/seqan/simd/simd_base_seqan_impl_avx2.h
index 882c975..05d2d80 100644
--- a/include/seqan/simd/simd_base_seqan_impl_avx2.h
+++ b/include/seqan/simd/simd_base_seqan_impl_avx2.h
@@ -194,28 +194,28 @@ inline TSimdVector _createVector(TValue const x, SimdParams_< 32, 4>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
@@ -226,14 +226,14 @@ inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32, int8_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32, int8_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32, uint8_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32, uint8_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x80 = ~0x7F (prevent overflow messages).
@@ -244,14 +244,14 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32,
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16, int16_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16, int16_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16, uint16_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16, uint16_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x8000 = ~0x7FFF (prevent overflow messages).
@@ -262,14 +262,14 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16,
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, int32_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8, int32_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, uint32_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8, uint32_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x80000000 = ~0x7FFFFFFF (prevent overflow messages).
@@ -280,14 +280,14 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, u
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, int64_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4, int64_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, uint64_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4, uint64_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x8000000000000000ul = ~0x7FFFFFFFFFFFFFFFul (prevent overflow messages).
@@ -302,7 +302,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, u
// --------------------------------------------------------------------------
template <typename TSimdVector, int L>
-inline TSimdVector _bitwiseOr(TSimdVector & a, TSimdVector & b, SimdParams_<32, L>)
+inline TSimdVector _bitwiseOr(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, L>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_or_si256(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
@@ -313,32 +313,18 @@ inline TSimdVector _bitwiseOr(TSimdVector & a, TSimdVector & b, SimdParams_<32,
// --------------------------------------------------------------------------
template <typename TSimdVector, int L>
-inline TSimdVector _bitwiseAnd(TSimdVector & a, TSimdVector & b, SimdParams_<32, L>)
+inline TSimdVector _bitwiseAnd(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, L>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_and_si256(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
}
-template <typename TSimdVector>
-inline TSimdVector _bitwiseAnd(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
-{
- return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_and_ps(SEQAN_VECTOR_CAST_(const __m256&, a),
- SEQAN_VECTOR_CAST_(const __m256&, b)));
-}
-
-template <typename TSimdVector>
-inline TSimdVector _bitwiseAnd(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
-{
- return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_and_pd(SEQAN_VECTOR_CAST_(const __m256d&, a),
- SEQAN_VECTOR_CAST_(const __m256d&, b)));
-}
-
// --------------------------------------------------------------------------
// _bitwiseAndNot (256bit)
// --------------------------------------------------------------------------
template <typename TSimdVector, int L>
-inline TSimdVector _bitwiseAndNot(TSimdVector & a, TSimdVector & b, SimdParams_<32, L>)
+inline TSimdVector _bitwiseAndNot(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, L>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_andnot_si256(SEQAN_VECTOR_CAST_(const __m256i&, a),
SEQAN_VECTOR_CAST_(const __m256i&, b)));
@@ -349,28 +335,28 @@ inline TSimdVector _bitwiseAndNot(TSimdVector & a, TSimdVector & b, SimdParams_<
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<32, 32>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<32, 32>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
}
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<32, 16>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<32, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
}
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<32, 8>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<32, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
}
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<32, 4>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<32, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
@@ -381,25 +367,25 @@ inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<32, 4>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<32, 32>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<32, 32>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi8(a, _mm256_set1_epi8(b)));
}
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<32, 16>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<32, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi16(a, _mm256_set1_epi16(b)));
}
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<32, 8>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<32, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi32(a, _mm256_set1_epi32(b)));
}
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<32, 4>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<32, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi64(a, _mm256_set1_epi64x(b)));
}
@@ -409,7 +395,7 @@ inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<32, 4>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_add_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -417,7 +403,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32>)
}
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_add_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -425,7 +411,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_add_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -433,7 +419,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_add_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -445,7 +431,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_sub_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -453,7 +439,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32>)
}
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_sub_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -461,7 +447,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_sub_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -469,7 +455,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_sub_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -481,7 +467,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<32, 32>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const &/*b*/, SimdParams_<32, 32>)
{
SEQAN_SKIP_TEST;
SEQAN_ASSERT_FAIL("AVX2 intrinsics for multiplying 8 bit values not implemented!");
@@ -489,7 +475,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<32, 32
}
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_mullo_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -497,7 +483,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_mullo_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -505,7 +491,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<32, 4>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const &/*b*/, SimdParams_<32, 4>)
{
SEQAN_SKIP_TEST;
SEQAN_ASSERT_FAIL("AVX2 intrinsics for multiplying 64 bit values not implemented!");
@@ -517,7 +503,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<32, 4>
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32, int8_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32, int8_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_max_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -525,7 +511,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32, in
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32, uint8_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32, uint8_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_max_epu8(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -533,7 +519,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 32, ui
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16, int16_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16, int16_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_max_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -541,7 +527,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16, in
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16, uint16_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16, uint16_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_max_epu16(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -549,7 +535,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 16, ui
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, int32_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8, int32_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_max_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -557,7 +543,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, int
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, uint32_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8, uint32_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm256_max_epu32(SEQAN_VECTOR_CAST_(const __m256i&, a),
@@ -565,7 +551,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 8, uin
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, int64_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4, int64_t>)
{
#if defined(__AVX512VL__)
return SEQAN_VECTOR_CAST_(TSimdVector,
@@ -577,7 +563,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, int
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, uint64_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4, uint64_t>)
{
#if defined(__AVX512VL__)
return SEQAN_VECTOR_CAST_(TSimdVector,
@@ -588,6 +574,83 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<32, 4, uin
#endif // defined(__AVX512VL__)
}
+
+// --------------------------------------------------------------------------
+// _min (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32, int8_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 32, uint8_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epu8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16, int16_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 16, uint16_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epu16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8, int32_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 8, uint32_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epu32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4, int64_t>)
+{
+ #if defined(__AVX512VL__)
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+ #else // defined(__AVX512VL__)
+ return blend(a, b, cmpGt(a, b));
+ #endif // defined(__AVX512VL__)
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<32, 4, uint64_t>)
+{
+ #if defined(__AVX512VL__)
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm256_min_epu64(SEQAN_VECTOR_CAST_(const __m256i&, a),
+ SEQAN_VECTOR_CAST_(const __m256i&, b)));
+ #else // defined(__AVX512VL__)
+ return blend(a, b, cmpGt(a, b));
+ #endif // defined(__AVX512VL__)
+}
+
// --------------------------------------------------------------------------
// _blend (256bit)
// --------------------------------------------------------------------------
@@ -606,7 +669,7 @@ inline TSimdVector _blend(TSimdVector const & a, TSimdVector const & b, TSimdVec
// --------------------------------------------------------------------------
template <typename T, typename TSimdVector, int L>
-inline void _storeu(T * memAddr, TSimdVector & vec, SimdParams_<32, L>)
+inline void _storeu(T * memAddr, TSimdVector const & vec, SimdParams_<32, L>)
{
_mm256_storeu_si256((__m256i*)memAddr, SEQAN_VECTOR_CAST_(const __m256i&, vec));
}
diff --git a/include/seqan/simd/simd_base_seqan_impl_sse4.2.h b/include/seqan/simd/simd_base_seqan_impl_sse4.2.h
index 8ceba99..8b0bafc 100644
--- a/include/seqan/simd/simd_base_seqan_impl_sse4.2.h
+++ b/include/seqan/simd/simd_base_seqan_impl_sse4.2.h
@@ -209,7 +209,7 @@ inline TSimdVector _createVector(TValue const x, SimdParams_<16, 2>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -217,7 +217,7 @@ inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -225,7 +225,7 @@ inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -233,7 +233,7 @@ inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
}
template <typename TSimdVector>
-inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2>)
+inline TSimdVector _cmpEq(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -245,7 +245,7 @@ inline TSimdVector _cmpEq(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16, int8_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16, int8_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpgt_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -253,7 +253,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16,
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16, uint8_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16, uint8_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x80 = ~0x7F (prevent overflow messages).
@@ -264,7 +264,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16,
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, int16_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8, int16_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpgt_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -272,7 +272,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, i
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, uint16_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8, uint16_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x8000 = ~0x7FFF (prevent overflow messages).
@@ -283,7 +283,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, u
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, int32_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4, int32_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpgt_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -291,7 +291,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, i
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, uint32_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4, uint32_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x80000000 = ~0x7FFFFFFF (prevent overflow messages).
@@ -302,7 +302,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, u
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, int64_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2, int64_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpgt_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -310,7 +310,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, i
}
template <typename TSimdVector>
-inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, uint64_t>)
+inline TSimdVector _cmpGt(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2, uint64_t>)
{
// There is no unsigned cmpgt, we reduce it to the signed case.
// Note that 0x8000000000000000ul = ~0x7FFFFFFFFFFFFFFFul (prevent overflow messages).
@@ -325,7 +325,7 @@ inline TSimdVector _cmpGt(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, u
// --------------------------------------------------------------------------
template <typename TSimdVector, int L>
-inline TSimdVector _bitwiseOr(TSimdVector & a, TSimdVector & b, SimdParams_<16, L>)
+inline TSimdVector _bitwiseOr(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, L>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_or_si128(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -337,7 +337,7 @@ inline TSimdVector _bitwiseOr(TSimdVector & a, TSimdVector & b, SimdParams_<16,
// --------------------------------------------------------------------------
template <typename TSimdVector, int L>
-inline TSimdVector _bitwiseAnd(TSimdVector & a, TSimdVector & b, SimdParams_<16, L>)
+inline TSimdVector _bitwiseAnd(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, L>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_and_si128(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -349,7 +349,7 @@ inline TSimdVector _bitwiseAnd(TSimdVector & a, TSimdVector & b, SimdParams_<16,
// --------------------------------------------------------------------------
template <typename TSimdVector, int L>
-inline TSimdVector _bitwiseAndNot(TSimdVector & a, TSimdVector & b, SimdParams_<16, L>)
+inline TSimdVector _bitwiseAndNot(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, L>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_andnot_si128(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -361,7 +361,7 @@ inline TSimdVector _bitwiseAndNot(TSimdVector & a, TSimdVector & b, SimdParams_<
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 16>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<16, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -369,7 +369,7 @@ inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 8>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<16, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -377,7 +377,7 @@ inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 4>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<16, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -385,7 +385,7 @@ inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 4>)
}
template <typename TSimdVector>
-inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 2>)
+inline TSimdVector _bitwiseNot(TSimdVector const & a, SimdParams_<16, 2>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -397,25 +397,25 @@ inline TSimdVector _bitwiseNot(TSimdVector & a, SimdParams_<16, 2>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<16, 16>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<16, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi8(a, _mm_set1_epi8(b)));
}
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<16, 8>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<16, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi16(a, _mm_set1_epi16(b)));
}
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<16, 4>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<16, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi32(a, _mm_set1_epi32(b)));
}
template <typename TSimdVector>
-inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<16, 2>)
+inline TSimdVector _divide(TSimdVector const & a, int b, SimdParams_<16, 2>)
{
return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi64(a, _mm_set1_epi64x(b)));
}
@@ -425,7 +425,7 @@ inline TSimdVector _divide(TSimdVector & a, int b, SimdParams_<16, 2>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_add_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -433,7 +433,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_add_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -441,7 +441,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_add_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -449,7 +449,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
}
template <typename TSimdVector>
-inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2>)
+inline TSimdVector _add(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_add_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -461,7 +461,7 @@ inline TSimdVector _add(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_sub_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -469,7 +469,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16>)
}
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_sub_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -477,7 +477,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_sub_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -485,7 +485,7 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
}
template <typename TSimdVector>
-inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2>)
+inline TSimdVector _sub(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_sub_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -497,14 +497,14 @@ inline TSimdVector _sub(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2>)
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<16, 16>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const &/*b*/, SimdParams_<16, 16>)
{
SEQAN_ASSERT_FAIL("SSE intrinsics for multiplying 8 bit values not implemented!");
return a;
}
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_mullo_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -512,7 +512,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8>)
}
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_mullo_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -520,7 +520,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4>)
}
template <typename TSimdVector>
-inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<16, 2>)
+inline TSimdVector _mult(TSimdVector const & a, TSimdVector const &/*b*/, SimdParams_<16, 2>)
{
SEQAN_ASSERT_FAIL("SSE intrinsics for multiplying 64 bit values not implemented!");
return a;
@@ -531,7 +531,7 @@ inline TSimdVector _mult(TSimdVector & a, TSimdVector &/*b*/, SimdParams_<16, 2>
// --------------------------------------------------------------------------
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16, int8_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16, int8_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_max_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -539,7 +539,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16, in
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16, uint8_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16, uint8_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_max_epu8(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -547,7 +547,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 16, ui
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, int16_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8, int16_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_max_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -555,7 +555,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, int
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, uint16_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8, uint16_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_max_epu16(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -563,7 +563,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 8, uin
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, int32_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4, int32_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_max_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -571,7 +571,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, int
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, uint32_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4, uint32_t>)
{
return SEQAN_VECTOR_CAST_(TSimdVector,
_mm_max_epu32(SEQAN_VECTOR_CAST_(const __m128i&, a),
@@ -579,7 +579,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 4, uin
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, int64_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2, int64_t>)
{
#if defined(__AVX512VL__)
return SEQAN_VECTOR_CAST_(TSimdVector,
@@ -591,7 +591,7 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, int
}
template <typename TSimdVector>
-inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, uint64_t>)
+inline TSimdVector _max(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2, uint64_t>)
{
#if defined(__AVX512VL__)
return SEQAN_VECTOR_CAST_(TSimdVector,
@@ -602,6 +602,83 @@ inline TSimdVector _max(TSimdVector & a, TSimdVector & b, SimdParams_<16, 2, uin
#endif // defined(__AVX512VL__)
}
+
+// --------------------------------------------------------------------------
+// _min (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16, int8_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 16, uint8_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epu8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8, int16_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 8, uint16_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epu16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4, int32_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 4, uint32_t>)
+{
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epu32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2, int64_t>)
+{
+#if defined(__AVX512VL__)
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+#else // defined(__AVX512VL__)
+ return blend(a, b, cmpGt(a, b));
+#endif // defined(__AVX512VL__)
+}
+
+template <typename TSimdVector>
+inline TSimdVector _min(TSimdVector const & a, TSimdVector const & b, SimdParams_<16, 2, uint64_t>)
+{
+#if defined(__AVX512VL__)
+ return SEQAN_VECTOR_CAST_(TSimdVector,
+ _mm_min_epu64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+ SEQAN_VECTOR_CAST_(const __m128i&, b)));
+#else // defined(__AVX512VL__)
+ return blend(a, b, cmpGt(a, b));
+#endif // defined(__AVX512VL__)
+}
+
// --------------------------------------------------------------------------
// _blend (128bit)
// --------------------------------------------------------------------------
@@ -620,7 +697,7 @@ inline TSimdVector _blend(TSimdVector const & a, TSimdVector const & b, TSimdVec
// --------------------------------------------------------------------------
template <typename T, typename TSimdVector, int L>
-inline void _storeu(T * memAddr, TSimdVector & vec, SimdParams_<16, L>)
+inline void _storeu(T * memAddr, TSimdVector const & vec, SimdParams_<16, L>)
{
_mm_storeu_si128((__m128i*)memAddr, reinterpret_cast<const __m128i &>(vec));
}
diff --git a/include/seqan/simd/simd_base_seqan_interface.h b/include/seqan/simd/simd_base_seqan_interface.h
index 92114c9..add88d0 100644
--- a/include/seqan/simd/simd_base_seqan_interface.h
+++ b/include/seqan/simd/simd_base_seqan_interface.h
@@ -173,6 +173,18 @@ max(TSimdVector const & a, TSimdVector const & b)
}
// --------------------------------------------------------------------------
+// Function min()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+min(TSimdVector const & a, TSimdVector const & b)
+{
+ typedef typename Value<TSimdVector>::Type TValue;
+ return _min(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue), TValue>());
+}
+
+// --------------------------------------------------------------------------
// Function operator|()
// --------------------------------------------------------------------------
diff --git a/include/seqan/simd/simd_base_umesimd_impl.h b/include/seqan/simd/simd_base_umesimd_impl.h
index ea8f632..4bf54a8 100644
--- a/include/seqan/simd/simd_base_umesimd_impl.h
+++ b/include/seqan/simd/simd_base_umesimd_impl.h
@@ -390,6 +390,17 @@ max(TSimdVector const & a, TSimdVector const & b)
}
// --------------------------------------------------------------------------
+// Function min()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+min(TSimdVector const & a, TSimdVector const & b)
+{
+ return a.min(b);
+}
+
+// --------------------------------------------------------------------------
// Function operator|()
// --------------------------------------------------------------------------
diff --git a/include/seqan/statistics/statistics_markov_model.h b/include/seqan/statistics/statistics_markov_model.h
index d77948d..2390fb6 100644
--- a/include/seqan/statistics/statistics_markov_model.h
+++ b/include/seqan/statistics/statistics_markov_model.h
@@ -643,7 +643,7 @@ String<TValue> _ludcmp(Matrix<TValue,2> &result)
double const TINY = 1.0e-20;
int n = length(result,0);
int i, imax, j, k,d;
- imax = MinValue<int>::VALUE;
+ imax = std::numeric_limits<int>::min();
double big,dum,sum,temp;
String<TValue> vv;
resize(vv, n, 1.0);
diff --git a/include/seqan/store/store_align.h b/include/seqan/store/store_align.h
index f6fa531..5fa7db2 100644
--- a/include/seqan/store/store_align.h
+++ b/include/seqan/store/store_align.h
@@ -196,7 +196,7 @@ TStream & operator<<(TStream & stream, AlignedReadStoreElement<TPos, TGapAnchor,
template <typename TPos, typename TGapAnchor, typename TSpec>
const typename Id<AlignedReadStoreElement<TPos, TGapAnchor, TSpec> >::Type
-AlignedReadStoreElement<TPos, TGapAnchor, TSpec>::INVALID_ID = MaxValue<typename Id<AlignedReadStoreElement<TPos, TGapAnchor, TSpec> >::Type>::VALUE;
+AlignedReadStoreElement<TPos, TGapAnchor, TSpec>::INVALID_ID = std::numeric_limits<typename Id<AlignedReadStoreElement<TPos, TGapAnchor, TSpec> >::Type>::max();
//////////////////////////////////////////////////////////////////////////////
@@ -240,7 +240,7 @@ struct AlignQualityStoreElement
AlignQualityStoreElement():
pairScore(0),
score(0),
- errors(MaxValue<unsigned char>::VALUE) {}
+ errors(std::numeric_limits<unsigned char>::max()) {}
AlignQualityStoreElement(TScore _pairScore, TScore _score, unsigned char _errors):
pairScore(_pairScore),
diff --git a/include/seqan/store/store_all.h b/include/seqan/store/store_all.h
index 51b02dd..f44b20d 100644
--- a/include/seqan/store/store_all.h
+++ b/include/seqan/store/store_all.h
@@ -520,15 +520,15 @@ public:
annotationKeyStoreCache(annotationKeyStore)
{
// ATTENTION: The order of these keywords must correspond to the order of the enums above.
- appendName(annotationTypeStore, "<root>", annotationTypeStoreCache);
- appendName(annotationTypeStore, "<deleted>", annotationTypeStoreCache);
- appendName(annotationTypeStore, "gene", annotationTypeStoreCache);
- appendName(annotationTypeStore, "mRNA", annotationTypeStoreCache);
- appendName(annotationTypeStore, "CDS", annotationTypeStoreCache);
- appendName(annotationTypeStore, "exon", annotationTypeStoreCache);
- appendName(annotationTypeStore, "five_prime_UTR", annotationTypeStoreCache);
- appendName(annotationTypeStore, "intron", annotationTypeStoreCache);
- appendName(annotationTypeStore, "three_prime_UTR", annotationTypeStoreCache);
+ appendName(annotationTypeStoreCache, "<root>");
+ appendName(annotationTypeStoreCache, "<deleted>");
+ appendName(annotationTypeStoreCache, "gene");
+ appendName(annotationTypeStoreCache, "mRNA");
+ appendName(annotationTypeStoreCache, "CDS");
+ appendName(annotationTypeStoreCache, "exon");
+ appendName(annotationTypeStoreCache, "five_prime_UTR");
+ appendName(annotationTypeStoreCache, "intron");
+ appendName(annotationTypeStoreCache, "three_prime_UTR");
_storeClearAnnotations(*this);
}
@@ -717,7 +717,7 @@ _storeAppendRead (
typedef typename Value<typename TFragmentStore::TMatePairStore>::Type TMatePairElement;
// search for readId by name (could be me or my mate)
- bool found = getIdByName(fragStore.readNameStore, qname, readId, fragStore.readNameStoreCache);
+ bool found = getIdByName(readId, fragStore.readNameStoreCache, qname);
// if naming scheme is xx/1, xx/2 or xx/L, xx/R try to look up my mate
if (!found && (flag & 1) == 1 && length(qname) >= 2 && qname[length(qname) - 2] == '/')
@@ -735,7 +735,7 @@ _storeAppendRead (
mate = qname;
back(mate) = (tag == 'L')? 'R': 'L';
}
- found = getIdByName(fragStore.readNameStore, mate, readId, fragStore.readNameStoreCache);
+ found = getIdByName(readId, fragStore.readNameStoreCache, mate);
}
if (found)
@@ -758,7 +758,7 @@ _storeAppendRead (
// set sequence and mate pair ID in new read store element
readId = appendRead(fragStore, readSeq, matePairId);
// add the identifier to the read name store
- appendName(fragStore.readNameStore, qname, fragStore.readNameStoreCache);
+ appendName(fragStore.readNameStoreCache, qname);
// set the ID in the mate pair store
fragStore.matePairStore[matePairId].readId[inPair] = readId;
return true;
@@ -790,7 +790,7 @@ _storeAppendRead (
else
appendRead(fragStore, readSeq);
- appendName(fragStore.readNameStore, qname, fragStore.readNameStoreCache);
+ appendName(fragStore.readNameStoreCache, qname);
return true;
}
@@ -810,13 +810,13 @@ _storeAppendContig (
typedef FragmentStore<TSpec, TConfig> TFragmentStore;
typedef typename Value<typename TFragmentStore::TContigStore>::Type TContigElement;
- if (!getIdByName(fragStore.contigNameStore, rName, contigId, fragStore.contigNameStoreCache))
+ if (!getIdByName(contigId, fragStore.contigNameStoreCache, rName))
{
// if the contig is not in the store yet
// set the ID on the last entry after appending
contigId = length(fragStore.contigStore);
// append contig store
- appendName(fragStore.contigNameStore, rName, fragStore.contigNameStoreCache);
+ appendName(fragStore.contigNameStoreCache, rName);
appendValue(fragStore.contigStore, TContigElement());
// std::cout << "added contig:" << rName << std::endl;
}
@@ -837,12 +837,12 @@ _storeAppendAnnotationName (
TTypeId typeId)
{
SEQAN_ASSERT_EQ(length(fragStore.annotationStore), length(fragStore.annotationNameStore));
- if (!empty(annotationName) && getIdByName(fragStore.annotationNameStore, annotationName, annotationId, fragStore.annotationNameStoreCache))
+ if (!empty(annotationName) && getIdByName(annotationId, fragStore.annotationNameStoreCache, annotationName))
{
do
{
// allow different annotations to have the same name (but different typeId)
- if (typeId == maxValue<TTypeId>() || fragStore.annotationStore[annotationId].typeId == typeId)
+ if (typeId == std::numeric_limits<TTypeId>::max() || fragStore.annotationStore[annotationId].typeId == typeId)
return;
++annotationId;
} while (annotationId < length(fragStore.annotationNameStore) && fragStore.annotationNameStore[annotationId] == annotationName);
@@ -851,7 +851,7 @@ _storeAppendAnnotationName (
// set the ID on the last entry after appending
annotationId = length(fragStore.annotationNameStore);
// append to annotationName store
- appendName(fragStore.annotationNameStore, annotationName, fragStore.annotationNameStoreCache);
+ appendName(fragStore.annotationNameStoreCache, annotationName);
// we also need to append an annotation to store the typeId in case of duplicate annotation names
resize(fragStore.annotationStore, length(fragStore.annotationStore) + 1);
back(fragStore.annotationStore).typeId = typeId;
@@ -864,7 +864,7 @@ _storeAppendAnnotationName (
TId & annotationId,
TName & annotationName)
{
- _storeAppendAnnotationName(fragStore, annotationId, annotationName, maxValue<TId>());
+ _storeAppendAnnotationName(fragStore, annotationId, annotationName, std::numeric_limits<TId>::max());
}
template <typename TSpec, typename TConfig, typename TId, typename TName>
@@ -874,14 +874,14 @@ _storeAppendType (
TId & typeId,
TName & annotationType)
{
- if (!getIdByName(fragStore.annotationTypeStore, annotationType, typeId, fragStore.annotationTypeStoreCache))
+ if (!getIdByName(typeId, fragStore.annotationTypeStoreCache, annotationType))
{
// if the annotation type name is not in the store yet
// set the ID on the last entry after appending
typeId = length(fragStore.annotationTypeStore);
// append to annotationType store
if (!empty(annotationType))
- appendName(fragStore.annotationTypeStore, annotationType, fragStore.annotationTypeStoreCache);
+ appendName(fragStore.annotationTypeStoreCache, annotationType);
// std::cout << "added type:" << annotationType << std::endl;
}
}
@@ -893,14 +893,14 @@ _storeAppendKey (
TId & keyId,
TName & annotationKey)
{
- if (!getIdByName(fragStore.annotationKeyStore, annotationKey, keyId, fragStore.annotationKeyStoreCache))
+ if (!getIdByName(keyId, fragStore.annotationKeyStoreCache, annotationKey))
{
// if the key name is not in the store yet
// set the ID on the last entry after appending
keyId = length(fragStore.annotationKeyStore);
// append to annotationKey store
if (!empty(annotationKey))
- appendName(fragStore.annotationKeyStore, annotationKey, fragStore.annotationKeyStoreCache);
+ appendName(fragStore.annotationKeyStoreCache, annotationKey);
// std::cout << "added key:" << annotationKey << std::endl;
}
}
@@ -937,7 +937,7 @@ annotationGetValueByKey (
typedef typename Size<TValues>::Type TKeyId;
TKeyId keyId = 0;
- if (!getIdByName(fragStore.annotationKeyStore, key, keyId, fragStore.annotationKeyStoreCache))
+ if (!getIdByName(keyId, fragStore.annotationKeyStoreCache, key))
return false;
if (keyId >= length(annotation.values))
@@ -963,7 +963,7 @@ annotationGetValueIdByKey (
static const typename Value<typename TAnnotation::TValues const>::Type emptyString;
TKeyId keyId = 0;
- if (getIdByName(fragStore.annotationKeyStore, key, keyId, fragStore.annotationKeyStoreCache))
+ if (getIdByName(keyId, fragStore.annotationKeyStoreCache, key))
if (keyId < length(annotation.values) && !empty(annotation.values[keyId]))
return keyId;
return TAnnotation::INVALID_ID;
diff --git a/include/seqan/store/store_annotation.h b/include/seqan/store/store_annotation.h
index 85b6946..595d3a3 100644
--- a/include/seqan/store/store_annotation.h
+++ b/include/seqan/store/store_annotation.h
@@ -164,11 +164,11 @@ struct AnnotationStoreElement
template <typename TPos, typename TSpec>
const typename Id<AnnotationStoreElement<TPos, TSpec> >::Type
-AnnotationStoreElement<TPos, TSpec>::INVALID_ID = MaxValue<typename Id<AnnotationStoreElement<TPos, TSpec> >::Type>::VALUE;
+AnnotationStoreElement<TPos, TSpec>::INVALID_ID = std::numeric_limits<typename Id<AnnotationStoreElement<TPos, TSpec> >::Type>::max();
template <typename TPos, typename TSpec>
const TPos
-AnnotationStoreElement<TPos, TSpec>::INVALID_POS = MaxValue<TPos>::VALUE;
+AnnotationStoreElement<TPos, TSpec>::INVALID_POS = std::numeric_limits<TPos>::max();
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/store/store_contig.h b/include/seqan/store/store_contig.h
index a5b59e8..bdc518c 100644
--- a/include/seqan/store/store_contig.h
+++ b/include/seqan/store/store_contig.h
@@ -155,7 +155,7 @@ struct ContigStoreElement
template <typename TContigSeq_, typename TGapAnchor_, typename TSpec_>
const typename Id<ContigStoreElement<TContigSeq_, TGapAnchor_, TSpec_> >::Type
-ContigStoreElement<TContigSeq_, TGapAnchor_, TSpec_>::INVALID_ID = MaxValue<typename Id<ContigStoreElement<TContigSeq_, TGapAnchor_, TSpec_> >::Type>::VALUE;
+ContigStoreElement<TContigSeq_, TGapAnchor_, TSpec_>::INVALID_ID = std::numeric_limits<typename Id<ContigStoreElement<TContigSeq_, TGapAnchor_, TSpec_> >::Type>::max();
//////////////////////////////////////////////////////////////////////////////
@@ -192,13 +192,11 @@ struct ContigFile
static const TId INVALID_ID;
CharString fileName;
- AutoSeqFormat format;
TId firstContigId; // first sequence of the file corresponds to this contigId
inline bool operator==(ContigFile const & other) const
{
return fileName == other.fileName &&
- format == other.format &&
firstContigId == other.firstContigId;
}
};
@@ -207,7 +205,7 @@ struct ContigFile
template <typename TSpec_>
const typename Id<ContigFile<TSpec_> >::Type
-ContigFile<TSpec_>::INVALID_ID = MaxValue<typename Id<ContigFile<TSpec_> >::Type>::VALUE;
+ContigFile<TSpec_>::INVALID_ID = std::numeric_limits<typename Id<ContigFile<TSpec_> >::Type>::max();
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/store/store_io_sam.h b/include/seqan/store/store_io_sam.h
index af153d3..e14eab6 100644
--- a/include/seqan/store/store_io_sam.h
+++ b/include/seqan/store/store_io_sam.h
@@ -416,7 +416,7 @@ _readAlignments(
// sync sizes of alignQualityStore and alignedReadTagStore with alignedReadStore
TAlignQuality q;
- q.score = maxValue(q.score);
+ q.score = std::numeric_limits<decltype(q.score)>::max();
resize(fragStore.alignQualityStore, length(fragStore.alignedReadStore), q);
resize(fragStore.alignedReadTagStore, length(fragStore.alignedReadStore));
@@ -898,14 +898,14 @@ setPrimaryMatch(BamAlignmentRecord & record,
// Retrieve number of errors from quality store.
int errors = -1;
- if (alignQuality.errors != MaxValue<unsigned char>::VALUE)
+ if (alignQuality.errors != std::numeric_limits<unsigned char>::max())
errors = alignQuality.errors;
// Use record.qual as a temporary for the md string.
alignAndGetCigarString(record.cigar, record.qual, store.contigStore[alignedRead.contigId],
store.readSeqStore[alignedRead.readId], alignedRead, errors, functor);
- if (alignQuality.errors != MaxValue<unsigned char>::VALUE)
+ if (alignQuality.errors != std::numeric_limits<unsigned char>::max())
{
// if (errors > (int)alignQuality.errors)
// std::cerr << "WARNING: More errors in the alignment (" << errors << ") than given in NM tag / alignQuality ("
diff --git a/include/seqan/store/store_io_ucsc.h b/include/seqan/store/store_io_ucsc.h
index 43794e8..585f830 100644
--- a/include/seqan/store/store_io_ucsc.h
+++ b/include/seqan/store/store_io_ucsc.h
@@ -58,7 +58,7 @@ _storeAnnotationRecord(
TId transId = TAnnotation::INVALID_ID;
_storeAppendAnnotationName(fragStore, transId, record.transName, (TId) TFragmentStore::ANNO_MRNA);
TId cdsId = length(fragStore.annotationStore);
- appendName(fragStore.annotationNameStore, record.proteinName, fragStore.annotationNameStoreCache);
+ appendName(fragStore.annotationNameStoreCache, record.proteinName);
resize(fragStore.annotationStore, cdsId + 1 + length(record.exonBegin), Generous());
resize(fragStore.annotationNameStore, cdsId + 1 + length(record.exonBegin), Generous());
diff --git a/include/seqan/store/store_matepair.h b/include/seqan/store/store_matepair.h
index 9a4318c..b72ae5e 100644
--- a/include/seqan/store/store_matepair.h
+++ b/include/seqan/store/store_matepair.h
@@ -115,7 +115,7 @@ struct MatePairStoreElement
template <typename TSpec>
const typename Id<MatePairStoreElement<TSpec> >::Type
-MatePairStoreElement<TSpec>::INVALID_ID = MaxValue<typename Id<MatePairStoreElement<TSpec> >::Type>::VALUE;
+MatePairStoreElement<TSpec>::INVALID_ID = std::numeric_limits<typename Id<MatePairStoreElement<TSpec> >::Type>::max();
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/store/store_read.h b/include/seqan/store/store_read.h
index 607f13e..723eeed 100644
--- a/include/seqan/store/store_read.h
+++ b/include/seqan/store/store_read.h
@@ -92,7 +92,7 @@ struct ReadStoreElement
template <typename TSpec>
const typename Id<ReadStoreElement<TSpec> >::Type
-ReadStoreElement<TSpec>::INVALID_ID = MaxValue<typename Id<ReadStoreElement<TSpec> >::Type>::VALUE;
+ReadStoreElement<TSpec>::INVALID_ID = std::numeric_limits<typename Id<ReadStoreElement<TSpec> >::Type>::max();
//////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/stream.h b/include/seqan/stream.h
index ae0d6da..ddc2d3b 100644
--- a/include/seqan/stream.h
+++ b/include/seqan/stream.h
@@ -89,6 +89,12 @@
#include <seqan/stream/stream_compressor.h>
#include <seqan/stream/buffered_stream.h>
+#if SEQAN_HAS_BZIP2 && !SEQAN_HAS_ZLIB
+#error "-DSEQAN_HAS_BZIP2 is defined, but -DSEQAN_HAS_ZLIB not. \
+Since BZip2 depends on ZLIB, this would cause hard-to-track compiler errors. \
+Either disable -DSEQAN_HAS_BZIP2 or define -DSEQAN_HAS_ZLIB"
+#endif
+
#if SEQAN_HAS_ZLIB
#include <zlib.h>
#include <seqan/stream/iostream_zutil.h>
diff --git a/include/seqan/stream/lexical_cast.h b/include/seqan/stream/lexical_cast.h
index 173dd97..0cb6011 100644
--- a/include/seqan/stream/lexical_cast.h
+++ b/include/seqan/stream/lexical_cast.h
@@ -149,7 +149,7 @@ lexicalCast(TInteger & target, TSource const & source)
return false;
// overflow detection
- if (SEQAN_UNLIKELY(val > MaxValue<TInteger>::VALUE / 10))
+ if (SEQAN_UNLIKELY(val > std::numeric_limits<TInteger>::max() / 10))
return false;
val *= 10;
@@ -189,7 +189,7 @@ lexicalCast(TInteger & target, TSource const & source)
return false;
// overflow detection
- if (SEQAN_UNLIKELY(val > MaxValue<TInteger>::VALUE / 10))
+ if (SEQAN_UNLIKELY(val > std::numeric_limits<TInteger>::max() / 10))
return false;
val *= 10;
@@ -213,12 +213,12 @@ lexicalCast(TInteger & target, TSource const & source)
return false;
// overflow detection
- if (SEQAN_UNLIKELY(val < MinValue<TInteger>::VALUE / 10))
+ if (SEQAN_UNLIKELY(val < std::numeric_limits<TInteger>::min() / 10))
return false;
val *= 10;
// overflow detection
- if (SEQAN_UNLIKELY(MinValue<TInteger>::VALUE - val > -(TInteger)digit))
+ if (SEQAN_UNLIKELY(std::numeric_limits<TInteger>::min() - val > -(TInteger)digit))
return false;
val -= digit;
}
diff --git a/include/seqan/stream/stream_compressor.h b/include/seqan/stream/stream_compressor.h
index e820b4b..9eaa158 100644
--- a/include/seqan/stream/stream_compressor.h
+++ b/include/seqan/stream/stream_compressor.h
@@ -280,7 +280,7 @@ inline uint16_t
_bgzfUnpack16(char const * buffer)
{
uint16_t tmp = *reinterpret_cast<uint16_t const *>(buffer);
- ensure_little_endian(tmp);
+ enforceLittleEndian(tmp);
return tmp;
}
@@ -288,7 +288,7 @@ inline uint32_t
_bgzfUnpack32(char const * buffer)
{
uint32_t tmp = *reinterpret_cast<uint32_t const *>(buffer);
- ensure_little_endian(tmp);
+ enforceLittleEndian(tmp);
return tmp;
}
@@ -299,14 +299,14 @@ _bgzfUnpack32(char const * buffer)
inline void
_bgzfPack16(char * buffer, uint16_t value)
{
- ensure_little_endian(value);
+ enforceLittleEndian(value);
*reinterpret_cast<uint16_t *>(buffer) = value;
}
inline void
_bgzfPack32(char * buffer, uint32_t value)
{
- ensure_little_endian(value);
+ enforceLittleEndian(value);
*reinterpret_cast<uint32_t *>(buffer) = value;
}
diff --git a/include/seqan/stream/tokenization.h b/include/seqan/stream/tokenization.h
index 96c8ca3..cb9c8d5 100644
--- a/include/seqan/stream/tokenization.h
+++ b/include/seqan/stream/tokenization.h
@@ -407,7 +407,7 @@ inline std::enable_if_t<std::is_arithmetic<TValue>::value>
readRawPod(TValue & value, TFwdIterator &srcIter)
{
readRawPodImpl(value, srcIter);
- ensure_little_endian(value);
+ enforceLittleEndian(value);
}
template <typename TValue, typename TFwdIterator>
@@ -489,7 +489,7 @@ inline void writeWrappedString(TTarget & target, TSequence const & seq, TSize li
TIter iter = begin(seq, Rooted());
TSeqSize charsLeft = length(seq);
TSeqSize charsPerLine;
- TSeqSize lineLength_ = (lineLength == 0)? maxValue<TSeqSize>() : lineLength;
+ TSeqSize lineLength_ = (lineLength == 0)? std::numeric_limits<TSeqSize>::max() : lineLength;
do
{
@@ -651,7 +651,7 @@ strSplit(TResult & result,
}
for (TIter it = itBeg; it != itEnd; ++it)
- if (sep(getValue(it)))
+ if (sep(*it))
{
if (allowEmptyStrings || itFrom != it)
{
@@ -660,7 +660,7 @@ strSplit(TResult & result,
{
if (!allowEmptyStrings)
{
- while (it != itEnd && sep(getValue(it)))
+ while (it != itEnd && sep(*it))
++it;
}
else
@@ -684,7 +684,7 @@ inline SEQAN_FUNC_ENABLE_IF(And<Is<ContainerConcept<TResult> >,
Is<ContainerConcept<typename Value<TResult>::Type > > >, void)
strSplit(TResult & result, TSequence const & sequence, TFunctor const & sep, bool const allowEmptyStrings)
{
- strSplit(result, sequence, sep, allowEmptyStrings, maxValue<typename Size<TSequence>::Type>());
+ strSplit(result, sequence, sep, allowEmptyStrings, std::numeric_limits<typename Size<TSequence>::Type>::max());
}
template <typename TResult, typename TSequence, typename TFunctor>
diff --git a/include/seqan/system/file_async.h b/include/seqan/system/file_async.h
index 6bb1b11..f70723c 100644
--- a/include/seqan/system/file_async.h
+++ b/include/seqan/system/file_async.h
@@ -813,20 +813,17 @@ public:
struct AiocbWrapper :
public aiocb
{
- AiocbWrapper()
- {}
+ AiocbWrapper() = default;
+ AiocbWrapper(AiocbWrapper &&) = default;
AiocbWrapper(AiocbWrapper & other, Move) :
aiocb(other)
{}
- AiocbWrapper(AiocbWrapper && other) :
- aiocb(other)
- {}
-
+ AiocbWrapper & operator=(AiocbWrapper &&) = default;
private:
- AiocbWrapper(AiocbWrapper const &)
- {}
+ AiocbWrapper(AiocbWrapper const &) = delete;
+ AiocbWrapper & operator=(AiocbWrapper const &) = delete;
};
template <>
diff --git a/include/seqan/tabix_io/tabix_index_tbi.h b/include/seqan/tabix_io/tabix_index_tbi.h
index a91f1bd..ffe3dc0 100644
--- a/include/seqan/tabix_io/tabix_index_tbi.h
+++ b/include/seqan/tabix_io/tabix_index_tbi.h
@@ -134,7 +134,7 @@ public:
colEnd(3),
meta('#'),
skip(0),
- unalignedCount(maxValue<uint64_t>()),
+ unalignedCount(std::numeric_limits<uint64_t>::max()),
_nameStoreCache(_nameStore)
{}
@@ -145,7 +145,7 @@ public:
colEnd(3),
meta('#'),
skip(0),
- unalignedCount(maxValue<uint64_t>()),
+ unalignedCount(std::numeric_limits<uint64_t>::max()),
_nameStoreCache(_nameStore)
{
if (!open(*this, fileName))
@@ -281,7 +281,7 @@ jumpToRegion(FormattedFile<TFileFormat, Input, TSpec> & fileIn,
// ------------------------------------------------------------------------
// Compute offset in BGZF file.
// ------------------------------------------------------------------------
- uint64_t offset = MaxValue<uint64_t>::VALUE;
+ uint64_t offset = std::numeric_limits<uint64_t>::max();
// Retrieve the candidate bin identifiers for [posBeg, posEnd).
String<uint16_t> candidateBins;
@@ -377,7 +377,7 @@ jumpToRegion(FormattedFile<TFileFormat, Input, TSpec> & fileIn,
break; // Cannot find overlapping any more.
}
- if (offset != MaxValue<uint64_t>::VALUE)
+ if (offset != std::numeric_limits<uint64_t>::max())
{
setPosition(fileIn, offset);
@@ -522,7 +522,7 @@ open(TabixIndex & index, char const * filename)
if (!atEnd(iter))
readRawPod(index.unalignedCount, iter);
else
- index.unalignedCount = maxValue<uint64_t>();
+ index.unalignedCount = std::numeric_limits<uint64_t>::max();
return true;
}
diff --git a/manual/source/Infrastructure/Use/CustomBuildSystem.rst b/manual/source/Infrastructure/Use/CustomBuildSystem.rst
index 1ed31a0..cd58c59 100644
--- a/manual/source/Infrastructure/Use/CustomBuildSystem.rst
+++ b/manual/source/Infrastructure/Use/CustomBuildSystem.rst
@@ -35,6 +35,31 @@ For XCode on macOS OpenMP is not yet available.
With Visual Studio OpenMP is switched on by default.
+Compiler specifics
+------------------
+
+Intel Compiler
+^^^^^^^^^^^^^^
+
+The Intel Compiler does not ship a c++ standard library on its own and will use
+the one pre-installed on the system (e.g., the one from g++). This can be a
+problem [especially for cluster users through the use of a module system], if
+the standard library by a default g++ installation is to old.
+
+Please check with the following command which g++ version is being used and make
+sure it matches the supported gcc versions.
+
+.. code-block:: console
+
+ # icpc -v
+ icpc version 17.0.2 (gcc version 5.4.0 compatibility)
+
+If you have multiple g++ installations, you can choose the standard library by
+``icpc -gxx-name=g++-5.4.0 -gcc-name=gcc-5.4.0 …``.
+
+You may have to add the path of the library to ```$LD_LIBRARY_PATH`` for the
+linker.
+
Operating System specifics
--------------------------
diff --git a/manual/source/Infrastructure/Use/FindSeqAnCMake.rst b/manual/source/Infrastructure/Use/FindSeqAnCMake.rst
index 3ae1d83..ec4deae 100644
--- a/manual/source/Infrastructure/Use/FindSeqAnCMake.rst
+++ b/manual/source/Infrastructure/Use/FindSeqAnCMake.rst
@@ -269,6 +269,30 @@ Required additions to C++ compiler flags are in the following variable:
Please note that these variables include whatever has been added by the dependencies mentioned above so **do not add** e.g. ``${OpenMP_CXX_FLAGS}`` yourself!
+Intel Compiler specifics
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The Intel Compiler does not ship a c++ standard library on its own and will use
+the one pre-installed on the system (e.g., the one from g++). This can be a
+problem [especially for cluster users through the use of a module system], if
+the standard library by a default g++ installation is to old.
+
+Please check with the following command which g++ version is being used and make
+sure it matches the supported gcc versions.
+
+.. code-block:: console
+
+ # icpc -v
+ icpc version 17.0.2 (gcc version 5.4.0 compatibility)
+
+If you have multiple g++ installations, you can choose the standard library by
+``icpc -gxx-name=g++-5.4.0 -gcc-name=gcc-5.4.0 …``. Use
+``cmake -DCMAKE_CXX_FLAGS="-gxx-name=g++-5.4.0 -gcc-name=gcc-5.4.0" …``
+to propagate those options through cmake.
+
+You may have to add the path of the library to ```$LD_LIBRARY_PATH`` for the
+linker.
+
Static builds
^^^^^^^^^^^^^
diff --git a/manual/source/Tutorial/DataStructures/Indices/StringIndices.rst b/manual/source/Tutorial/DataStructures/Indices/StringIndices.rst
index 29dcd06..8a31f62 100644
--- a/manual/source/Tutorial/DataStructures/Indices/StringIndices.rst
+++ b/manual/source/Tutorial/DataStructures/Indices/StringIndices.rst
@@ -47,6 +47,22 @@ We will now show how we can create the different indices in SeqAn before we show
All the mentioned indices belong to the generic :dox:`Index` class.
A SeqAn index needs two pieces of information: the type of the :dox:`String` or :dox:`StringSet` to be indexed and the index specialization, such as :dox:`IndexEsa` or :dox:`FMIndex`.
+.. important::
+
+ Indices based on suffix arrays (also including the FM index) are built using secondary memory.
+ When building large indices, it is therefore possible to run out of disk space (in which case an exception will be
+ thrown).
+ To circumvent this, the directory used for temporary storage can be changed by specifying the TMPDIR environment variable (on UNIX)
+ respectively TEMP environment variable (on Windows):
+
+ .. code-block:: console
+
+ # export TMPDIR=/somewhere/else/with/more/space
+
+ .. code-block:: console
+
+ # SET TEMP=C:\somewhere\else\with\more\space
+
The following code snippet creates an enhanced suffix array index of a string of type :dox:`Dna5`.
.. includefrags:: demos/tutorial/indices/base.cpp
diff --git a/tests/align/CMakeLists.txt b/tests/align/CMakeLists.txt
index 214d76c..b65f2db 100644
--- a/tests/align/CMakeLists.txt
+++ b/tests/align/CMakeLists.txt
@@ -72,6 +72,12 @@ if (ALIGN_SIMD_TEST)
# Add dependencies found by find_package (SeqAn).
target_link_libraries (test_align_simd ${SEQAN_LIBRARIES})
+ # note(marehr): there is a bug when using <=clang3.8 with gcc4.9's stdlib,
+ # where the default -ftemplate-depth=256 of clang is insufficient.
+ # test_align_simd_avx2 needs a depth of at least 266.
+ if (COMPILER_CLANG)
+ target_compile_options(test_align_simd PRIVATE -ftemplate-depth=1024)
+ endif()
endif()
# Add CXX flags found by find_package (SeqAn).
diff --git a/tests/align/test_align_simd.h b/tests/align/test_align_simd.h
index 7da774c..dff2770 100644
--- a/tests/align/test_align_simd.h
+++ b/tests/align/test_align_simd.h
@@ -253,7 +253,7 @@ struct LocalAlignTester_
int const lDiag,
int const uDiag)
{
- if (lDiag == seqan::MinValue<int>::VALUE && uDiag == seqan::MaxValue<int>::VALUE)
+ if (lDiag == std::numeric_limits<int>::min() && uDiag == std::numeric_limits<int>::max())
return localAlignment(align, score);
else
return localAlignment(align, score, lDiag, uDiag);
@@ -272,7 +272,7 @@ struct GlobalAlignTester_
int const lDiag,
int const uDiag)
{
- if (lDiag == seqan::MinValue<int>::VALUE && uDiag == seqan::MaxValue<int>::VALUE)
+ if (lDiag == std::numeric_limits<int>::min() && uDiag == std::numeric_limits<int>::max())
return globalAlignment(align, score, config);
else
return globalAlignment(align, score, config, lDiag, uDiag);
@@ -293,7 +293,7 @@ struct GlobalAlignScoreTester_
int const lDiag,
int const uDiag)
{
- if (lDiag == seqan::MinValue<int>::VALUE && uDiag == seqan::MaxValue<int>::VALUE)
+ if (lDiag == std::numeric_limits<int>::min() && uDiag == std::numeric_limits<int>::max())
return globalAlignmentScore(strH, strV, score, config);
else
return globalAlignmentScore(strH, strV, score, config, lDiag, uDiag);
@@ -370,8 +370,8 @@ void testAlignSimd(TFunctor const &,
seqan::Score<TScoreValue, TScoreSpec> const & score,
TAlignConfig const & config,
TSimdLength const & /*tag*/,
- int const lDiag = seqan::MinValue<int>::VALUE,
- int const uDiag = seqan::MaxValue<int>::VALUE)
+ int const lDiag = std::numeric_limits<int>::min(),
+ int const uDiag = std::numeric_limits<int>::max())
{
auto sets = impl::test_align_simd::TestSequences_<TAlphabet, TSimdLength>::getSequences();
@@ -440,8 +440,8 @@ void testAlignSimdScore(TTester const &,
seqan::Score<TScoreValue, TScoreSpec> const & score,
TAlignConfig const & config,
TSimdLength const & /*tag*/,
- int const lDiag = seqan::MinValue<int>::VALUE,
- int const uDiag = seqan::MaxValue<int>::VALUE)
+ int const lDiag = std::numeric_limits<int>::min(),
+ int const uDiag = std::numeric_limits<int>::max())
{
auto sets = impl::test_align_simd::TestSequences_<TAlphabet, TSimdLength>::getSequences();
diff --git a/tests/align/test_alignment_algorithms_band_position.h b/tests/align/test_alignment_algorithms_band_position.h
index 579ba14..13b2faf 100644
--- a/tests/align/test_alignment_algorithms_band_position.h
+++ b/tests/align/test_alignment_algorithms_band_position.h
@@ -67,7 +67,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case1)
-static_cast<int>(length(strV)) - 1), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- int testScore = +MinValue<int>::VALUE;
+ int testScore = +std::numeric_limits<int>::min();
SEQAN_ASSERT_EQ(score, testScore);
std::stringstream ssH;
@@ -89,7 +89,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case1)
-static_cast<int>(length(strV)) - 1), TDPProfileOverlap());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- int testScore = +MinValue<int>::VALUE;
+ int testScore = +std::numeric_limits<int>::min();
SEQAN_ASSERT_EQ(score, testScore);
std::stringstream ssH;
@@ -132,7 +132,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case2)
-static_cast<int>(length(strV))), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- int testScore = +MinValue<int>::VALUE;
+ int testScore = +std::numeric_limits<int>::min();
SEQAN_ASSERT_EQ(score, testScore);
std::stringstream ssH;
@@ -194,7 +194,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case3)
DPBandConfig<BandOn>(-static_cast<int>(length(strV)) - 1, -3), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- int testScore = +MinValue<int>::VALUE;
+ int testScore = +std::numeric_limits<int>::min();
SEQAN_ASSERT_EQ(score, testScore);
std::stringstream ssH;
@@ -256,7 +256,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case4)
DPBandConfig<BandOn>(-static_cast<int>(length(strV)) - 1, 0), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- int testScore = +MinValue<int>::VALUE;
+ int testScore = +std::numeric_limits<int>::min();
SEQAN_ASSERT_EQ(score, testScore);
std::stringstream ssH;
@@ -570,7 +570,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case9)
DPBandConfig<BandOn>(-static_cast<int>(length(strV)), -3), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -631,7 +631,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case10)
DPBandConfig<BandOn>(-static_cast<int>(length(strV)), 0), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -943,7 +943,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case15)
DPBandConfig<BandOn>(-3, 0), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1492,7 +1492,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case24)
DPBandConfig<BandOn>(length(strH) - length(strV), 6), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1555,7 +1555,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case25)
DPBandConfig<BandOn>(length(strH) - length(strV), length(strH)), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1618,7 +1618,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case26)
DPBandConfig<BandOn>(length(strH) - length(strV), length(strH) + 1), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1680,7 +1680,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case27)
DPBandConfig<BandOn>(6, length(strH)), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1742,7 +1742,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case28)
DPBandConfig<BandOn>(6, length(strH) + 1), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1803,7 +1803,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case29)
DPBandConfig<BandOn>(length(strH), length(strH) + 1), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1864,7 +1864,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case30)
DPBandConfig<BandOn>(length(strH) + 1, length(strH) + 1), TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1884,7 +1884,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case30)
DPBandConfig<BandOn>(length(strH) + 1, length(strH) + 1), TDPProfileOverlap());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
@@ -1925,7 +1925,7 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_band_position_case31)
TDPProfile());
_adaptTraceSegmentsTo(row(align, 0), row(align, 1), traces);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
std::stringstream ssH;
std::stringstream ssV;
diff --git a/tests/align/test_alignment_dp_cell.h b/tests/align/test_alignment_dp_cell.h
index 6a53e85..dae0602 100644
--- a/tests/align/test_alignment_dp_cell.h
+++ b/tests/align/test_alignment_dp_cell.h
@@ -83,7 +83,7 @@ void testDPCellDefaultInfinity(TGapCosts const &)
int result1 = DPCellDefaultInfinity<TDPCell>::VALUE;
int result2 = DPCellDefaultInfinity<TDPConstCell>::VALUE;
- int test = MinValue<int>::VALUE / 2;
+ int test = std::numeric_limits<int>::min() / 2;
SEQAN_ASSERT_EQ(result1, test);
SEQAN_ASSERT_EQ(result2, test);
}
diff --git a/tests/align/test_alignment_dp_matrix_navigator.h b/tests/align/test_alignment_dp_matrix_navigator.h
index e5919b3..9172cea 100644
--- a/tests/align/test_alignment_dp_matrix_navigator.h
+++ b/tests/align/test_alignment_dp_matrix_navigator.h
@@ -703,7 +703,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
SEQAN_ASSERT_EQ(dpScoreMatrixNavigator._ptrDataContainer, &dpMatrix);
SEQAN_ASSERT_EQ(dpScoreMatrixNavigator._activeColIterator - begin(dpMatrix, Standard()), 0);
@@ -746,7 +746,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
_goNextCell(dpScoreMatrixNavigator, MetaColumnDescriptor<DPInitialColumn, PartialColumnMiddle>(), FirstCell());
@@ -781,7 +781,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
_goNextCell(dpScoreMatrixNavigator, MetaColumnDescriptor<DPInitialColumn, PartialColumnBottom>(), FirstCell());
@@ -816,7 +816,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
_goNextCell(dpScoreMatrixNavigator, MetaColumnDescriptor<DPInitialColumn, FullColumn>(), FirstCell());
@@ -852,7 +852,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
// Need to update iterator just for the test.
dpScoreMatrixNavigator._activeColIterator += 3;
@@ -890,7 +890,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
// Need to update Iterator just for the test.
dpScoreMatrixNavigator._activeColIterator += 2;
@@ -928,7 +928,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
// Need to update Iterator just for the test.
dpScoreMatrixNavigator._activeColIterator += 2;
@@ -968,7 +968,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
dpScoreMatrixNavigator._activeColIterator += 2;
@@ -1005,7 +1005,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
dpScoreMatrixNavigator._activeColIterator += 3;
@@ -1042,7 +1042,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
dpScoreMatrixNavigator._activeColIterator += 2;
@@ -1080,7 +1080,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
dpScoreMatrixNavigator._activeColIterator += 2;
@@ -1119,7 +1119,7 @@ void testAlignmentDPMatrixNavigatorScoreMarixSparseGoNext()
{
_init(dpScoreMatrixNavigator, dpMatrix, DPBandConfig<BandOff>());
- assignValue(dpScoreMatrixNavigator._activeColIterator, 0);
+ *dpScoreMatrixNavigator._activeColIterator = 0;
dpScoreMatrixNavigator._activeColIterator += 2;
diff --git a/tests/arg_parse/test_arg_parse_ctd_support.h b/tests/arg_parse/test_arg_parse_ctd_support.h
index cd59ad1..a9f02b4 100644
--- a/tests/arg_parse/test_arg_parse_ctd_support.h
+++ b/tests/arg_parse/test_arg_parse_ctd_support.h
@@ -96,8 +96,7 @@ SEQAN_DEFINE_TEST(test_arg_parse_ctd_support)
ofstream.close();
// compare ctd to expected
- seqan::CharString goldPath = SEQAN_PATH_TO_ROOT();
- append(goldPath, "/tests/arg_parse/test_app.ctd");
+ seqan::CharString goldPath = getAbsolutePath("/tests/arg_parse/test_app.ctd");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPath), toCString(goldPath)));
}
diff --git a/tests/bam_io/test_bam_file.h b/tests/bam_io/test_bam_file.h
index 54d41bd..b5b91fa 100644
--- a/tests/bam_io/test_bam_file.h
+++ b/tests/bam_io/test_bam_file.h
@@ -49,8 +49,7 @@
void testBamIOBamFileReadHeader(char const * pathFragment)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, pathFragment);
+ seqan::CharString filePath = seqan::getAbsolutePath(pathFragment);
seqan::BamFileIn bamIO(toCString(filePath));
seqan::BamHeader header;
@@ -85,8 +84,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_read_header)
// Issue 489 reports a problems with reading/writing comment lines in SAM header.
SEQAN_DEFINE_TEST(test_bam_io_sam_file_issue_489)
{
- seqan::CharString inFilePath = SEQAN_PATH_TO_ROOT();
- append(inFilePath, "/tests/bam_io/sam_with_comments.sam");
+ seqan::CharString inFilePath = seqan::getAbsolutePath("/tests/bam_io/sam_with_comments.sam");
seqan::CharString tmpPath = SEQAN_TEMP_FILENAME();
append(tmpPath, ".sam");
@@ -119,8 +117,7 @@ SEQAN_DEFINE_TEST(test_bam_io_sam_file_issue_489)
void testBamIOBamFileReadRecords(char const * pathFragment)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, pathFragment);
+ seqan::CharString filePath = seqan::getAbsolutePath(pathFragment);
seqan::BamFileIn bamIO(toCString(filePath));
seqan::BamHeader header;
@@ -210,8 +207,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_read_records)
SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_read_ex1)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/bam_io/ex1.bam");
+ seqan::CharString filePath = seqan::getAbsolutePath("/tests/bam_io/ex1.bam");
seqan::BamFileIn bamIO(toCString(filePath));
seqan::BamHeader header;
@@ -243,8 +239,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_read_ex1)
void testBamIOBamFileWriteHeader(char const * pathFragmentExpected)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, pathFragmentExpected);
+ seqan::CharString filePath = seqan::getAbsolutePath(pathFragmentExpected);
seqan::CharString tmpPath = SEQAN_TEMP_FILENAME();
if (seqan::endsWith(pathFragmentExpected, ".bam"))
@@ -298,8 +293,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_write_header)
void testBamIOBamFileWriteRecords(char const * pathFragmentExpected)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, pathFragmentExpected);
+ seqan::CharString filePath = seqan::getAbsolutePath(pathFragmentExpected);
seqan::CharString tmpPath = SEQAN_TEMP_FILENAME();
if (seqan::endsWith(pathFragmentExpected, ".bam"))
@@ -413,8 +407,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_write_records)
SEQAN_DEFINE_TEST(test_bam_io_bam_file_sam_file_size)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/bam_io/small.sam");
+ seqan::CharString filePath = seqan::getAbsolutePath("/tests/bam_io/small.sam");
seqan::BamFileIn bamFile(toCString(filePath));
@@ -442,8 +435,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_sam_file_size)
SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_file_size)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/bam_io/small.bam");
+ seqan::CharString filePath = seqan::getAbsolutePath("/tests/bam_io/small.bam");
seqan::BamFileIn bamFile(toCString(filePath));
@@ -473,7 +465,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_file_seek)
{
typedef seqan::Position<seqan::BamFileIn>::Type TPosition;
- std::string filePath = (std::string)SEQAN_PATH_TO_ROOT() + "/apps/ngs_roi/example/example.bam";
+ std::string filePath = seqan::getAbsolutePath("/apps/ngs_roi/example/example.bam");
seqan::BamFileIn bamFile(filePath.c_str());
diff --git a/tests/bam_io/test_bam_index.h b/tests/bam_io/test_bam_index.h
index 48aabda..80196da 100644
--- a/tests/bam_io/test_bam_index.h
+++ b/tests/bam_io/test_bam_index.h
@@ -44,11 +44,9 @@ using namespace seqan;
SEQAN_DEFINE_TEST(test_bam_io_bam_index_build)
{
- CharString expectedBaiFilename = SEQAN_PATH_TO_ROOT();
- append(expectedBaiFilename, "/tests/bam_io/small.bam.bai");
+ CharString expectedBaiFilename = getAbsolutePath("/tests/bam_io/small.bam.bai");
- CharString bamFilename = SEQAN_PATH_TO_ROOT();
- append(bamFilename, "/tests/bam_io/small.bam");
+ CharString bamFilename = getAbsolutePath("/tests/bam_io/small.bam");
CharString tmpOutPath = SEQAN_TEMP_FILENAME();
append(tmpOutPath, ".bai");
@@ -63,8 +61,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_index_build)
SEQAN_DEFINE_TEST(test_bam_io_bam_index_open)
{
- CharString baiFilename = SEQAN_PATH_TO_ROOT();
- append(baiFilename, "/tests/bam_io/small.bam.bai");
+ CharString baiFilename = getAbsolutePath("/tests/bam_io/small.bam.bai");
BamIndex<Bai> baiIndex;
SEQAN_ASSERT(open(baiIndex, toCString(baiFilename)));
@@ -80,8 +77,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_index_open)
SEQAN_ASSERT_EQ(getUnalignedCount(baiIndex), 0u);
// File has same contents as in the SAM test.
- CharString bamFilename = SEQAN_PATH_TO_ROOT();
- append(bamFilename, "/tests/bam_io/small.bam");
+ CharString bamFilename = getAbsolutePath("/tests/bam_io/small.bam");
BamFileIn bamFile(toCString(bamFilename));
@@ -101,8 +97,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_index_open)
SEQAN_DEFINE_TEST(test_bam_io_bam_index_save)
{
- CharString baiFilename = SEQAN_PATH_TO_ROOT();
- append(baiFilename, "/tests/bam_io/small.bam.bai");
+ CharString baiFilename = getAbsolutePath("/tests/bam_io/small.bam.bai");
CharString tmpOutPath = SEQAN_TEMP_FILENAME();
append(tmpOutPath, ".bai");
diff --git a/tests/bam_io/test_bam_io.cpp b/tests/bam_io/test_bam_io.cpp
index 7d97118..33234c3 100644
--- a/tests/bam_io/test_bam_io.cpp
+++ b/tests/bam_io/test_bam_io.cpp
@@ -37,6 +37,7 @@
#include <seqan/stream.h>
#include "test_bam_alignment_record.h"
+#include "test_bam_file.h"
#include "test_bam_header_record.h"
#include "test_bam_io_context.h"
#include "test_bam_sam_conversion.h"
@@ -48,7 +49,6 @@
#if SEQAN_HAS_ZLIB
#include "test_bam_index.h"
-#include "test_bam_file.h"
#endif
SEQAN_BEGIN_TESTSUITE(test_bam_io)
diff --git a/tests/bam_io/test_bam_sam_conversion.h b/tests/bam_io/test_bam_sam_conversion.h
index ac71e2b..50607df 100644
--- a/tests/bam_io/test_bam_sam_conversion.h
+++ b/tests/bam_io/test_bam_sam_conversion.h
@@ -124,6 +124,9 @@ SEQAN_DEFINE_TEST(test_assign_tags_bam_to_sam_type_I)
SEQAN_DEFINE_TEST(test_assign_tags_bam_to_sam_type_f)
{
+#if defined (__arm__) && defined(__ARM_PCS_VFP) // NOTE(h-2): armhf CRASHES here for unknown reasons
+ return;
+#endif
using namespace seqan;
CharString bamTags;
@@ -132,7 +135,7 @@ SEQAN_DEFINE_TEST(test_assign_tags_bam_to_sam_type_f)
arrayCopy(DATA, DATA + 7, &bamTags[0]);
CharString samTags;
assignTagsBamToSam(samTags, bamTags);
-#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // floaing point madness
+#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // rounding errors on non-x86
SEQAN_ASSERT_EQ(CharString("XX:f:0.5"), CharString(samTags));
#endif
}
@@ -251,7 +254,7 @@ SEQAN_DEFINE_TEST(test_assign_tags_bam_to_sam_type_Bf)
arrayCopy(DATA, DATA + 16, &bamTags[0]);
CharString samTags;
assignTagsBamToSam(samTags, bamTags);
-#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // floaing point madness
+#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // rounding errors on non-x86
SEQAN_ASSERT_EQ(CharString("XX:B:f,0.5,0.5"), CharString(samTags));
#endif
}
@@ -297,7 +300,7 @@ SEQAN_DEFINE_TEST(test_assign_tags_sam_to_bam_type_f)
resize(expected, 7);
char const * DATA = "XXf\x00\x00\x00\x3f";
arrayCopy(DATA, DATA + 7, begin(expected, Standard()));
-#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // floaing point madness
+#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // rounding errors on non-x86
SEQAN_ASSERT_EQ(expected, CharString(bamTags));
#endif
}
@@ -425,7 +428,7 @@ SEQAN_DEFINE_TEST(test_assign_tags_sam_to_bam_type_Bf)
resize(expected, 16);
char const * DATA = "XXBf\2\0\0\0\x00\x00\x00\x3f\x00\x00\x00\x3f";
arrayCopy(DATA, DATA + 16, begin(expected, Standard()));
-#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // floaing point madness
+#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) // rounding errors on non-x86
SEQAN_ASSERT_EQ(expected, CharString(bamTags));
#endif
}
diff --git a/tests/bam_io/test_read_bam.h b/tests/bam_io/test_read_bam.h
index 871c8f9..53f7a49 100644
--- a/tests/bam_io/test_read_bam.h
+++ b/tests/bam_io/test_read_bam.h
@@ -50,9 +50,8 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_read_header)
// File has same contents as in the SAM test.
CharString bamFilename;
- append(bamFilename, SEQAN_PATH_TO_ROOT());
- //append(bamFilename, "/tests/bam_io/small.bam");
- append(bamFilename, "/tests/bam_io/test_small.bam");
+ append(bamFilename, getAbsolutePath("/tests/bam_io/test_small.bam"));
+ //append(bamFilename, getAbsolutPath("/tests/bam_io/small.bam"));
String<char, MMap<> > in;
open(in, toCString(bamFilename));
@@ -105,9 +104,8 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_read_alignment)
// -----------------------------------------------------------------------
CharString bamFilename;
- append(bamFilename, SEQAN_PATH_TO_ROOT());
- //append(bamFilename, "/tests/bam_io/small.bam");
- append(bamFilename, "/tests/bam_io/test_small.bam");
+ append(bamFilename, getAbsolutePath("/tests/bam_io/test_small.bam"));
+ //append(bamFilename, getAbsolutePath("/tests/bam_io/small.bam"));
String<char, MMap<> > in;
open(in, toCString(bamFilename));
diff --git a/tests/bam_io/test_write_bam.h b/tests/bam_io/test_write_bam.h
index 4780c7f..281f8a1 100644
--- a/tests/bam_io/test_write_bam.h
+++ b/tests/bam_io/test_write_bam.h
@@ -75,8 +75,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_write_header)
// Compare results.
CharString bamFilename;
- append(bamFilename, SEQAN_PATH_TO_ROOT());
- append(bamFilename, "/tests/bam_io/header_uncompressed.bam");
+ append(bamFilename, getAbsolutePath("/tests/bam_io/header_uncompressed.bam"));
String<char, MMap<> > EXPECTED;
open(EXPECTED, toCString(bamFilename));
@@ -136,8 +135,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_write_alignment)
write(text, record, bamIOContext, Bam());
CharString bamFilename;
- append(bamFilename, SEQAN_PATH_TO_ROOT());
- append(bamFilename, "/tests/bam_io/alignment_uncompressed.bam");
+ append(bamFilename, getAbsolutePath("/tests/bam_io/alignment_uncompressed.bam"));
String<char, MMap<> > EXPECTED;
open(EXPECTED, toCString(bamFilename));
diff --git a/tests/basic/test_basic.cpp b/tests/basic/test_basic.cpp
index b1b73d9..c8774aa 100644
--- a/tests/basic/test_basic.cpp
+++ b/tests/basic/test_basic.cpp
@@ -338,7 +338,6 @@ SEQAN_BEGIN_TESTSUITE(test_basic)
// SEQAN_CALL_TEST(test_basic_conversions);
SEQAN_CALL_TEST(test_basic_alphabet_extreme_values);
// SEQAN_CALL_TEST(test_basic_simple_types);
- SEQAN_CALL_TEST(test_basic_suprema_infima);
SEQAN_CALL_TEST(test_basic_concepts_integer_concept);
}
diff --git a/tests/basic/test_basic_alphabet.cpp b/tests/basic/test_basic_alphabet.cpp
index fd31cd5..b3d9ec7 100644
--- a/tests/basic/test_basic_alphabet.cpp
+++ b/tests/basic/test_basic_alphabet.cpp
@@ -55,9 +55,9 @@ SEQAN_BEGIN_TESTSUITE(test_basic_alphabet)
// Test Math Functions
// -----------------------------------------------------------------------
- SEQAN_CALL_TEST(test_basic_alphabet_math_metafunctions);
- SEQAN_CALL_TEST(test_basic_alphabet_math_min_value);
- SEQAN_CALL_TEST(test_basic_alphabet_math_max_value);
+ // SEQAN_CALL_TEST(test_basic_alphabet_math_metafunctions); //deprecated
+ // SEQAN_CALL_TEST(test_basic_alphabet_math_min_value); //deprecated
+ // SEQAN_CALL_TEST(test_basic_alphabet_math_max_value); //deprecated
// -----------------------------------------------------------------------
// Test Adaptions of Builtin Types
diff --git a/tests/basic/test_basic_alphabet.h b/tests/basic/test_basic_alphabet.h
index 1ae1696..87c8d9a 100644
--- a/tests/basic/test_basic_alphabet.h
+++ b/tests/basic/test_basic_alphabet.h
@@ -456,20 +456,11 @@ void TestExtremeValuesSigned()
long double maxVal = -minVal - 1;
-/*
- std::cout << std::endl << "Max/Min of " << typeid(T).name() << std::endl;
- std::cout << maxVal << " == " << MaxValue<T>::VALUE << "(" << (double)MaxValue<T>::VALUE << ") " << maxValue<T>() << std::endl;
- std::cout << minVal << " == " << MinValue<T>::VALUE << "(" << (double)MinValue<T>::VALUE << ") " << minValue<T>() << std::endl;
-*/
-
bool isSigned = IsSameType< typename MakeSigned_<T>::Type, T >::VALUE;
SEQAN_ASSERT(isSigned);
- SEQAN_ASSERT_EQ(maxValue<T>(), MaxValue<T>::VALUE);
- SEQAN_ASSERT_EQ(minValue<T>(), MinValue<T>::VALUE);
-
- long double maxDelta = maxVal - MaxValue<T>::VALUE;
- long double minDelta = minVal - (long double)MinValue<T>::VALUE;
+ long double maxDelta = maxVal - std::numeric_limits<T>::max();
+ long double minDelta = minVal - (long double)std::numeric_limits<T>::min();
SEQAN_ASSERT(maxDelta <= maxVal/1000);
SEQAN_ASSERT(-maxVal/1000 <= maxDelta);
SEQAN_ASSERT(minDelta <= maxVal/1000);
@@ -484,22 +475,13 @@ void TestExtremeValuesUnsigned()
maxVal = 2*maxVal;
maxVal = maxVal - 1;
-/*
- std::cout << std::endl << "Max/Min of " << typeid(T).name() << std::endl;
- std::cout << maxVal << " == " << MaxValue<T>::VALUE << "(" << (double)MaxValue<T>::VALUE << ") " << maxValue<T>() << std::endl;
- std::cout << 0 << " == " << MinValue<T>::VALUE << "(" << (double)MinValue<T>::VALUE << ") " << minValue<T>() << std::endl;
-*/
-
bool isUnsigned = IsSameType< typename MakeUnsigned_<T>::Type, T >::VALUE;
SEQAN_ASSERT(isUnsigned);
- SEQAN_ASSERT_EQ(maxValue<T>(), MaxValue<T>::VALUE);
- SEQAN_ASSERT_EQ(minValue<T>(), MinValue<T>::VALUE);
-
- long double maxDelta = maxVal - MaxValue<T>::VALUE;
+ long double maxDelta = maxVal - std::numeric_limits<T>::max();
SEQAN_ASSERT_LEQ(maxDelta, maxVal/1000);
SEQAN_ASSERT_LEQ(-maxVal/1000, maxDelta);
- SEQAN_ASSERT_EQ((T)0, MinValue<T>::VALUE);
+ SEQAN_ASSERT_EQ((T)0, std::numeric_limits<T>::min());
}
SEQAN_DEFINE_TEST(test_basic_alphabet_extreme_values)
@@ -547,30 +529,6 @@ SEQAN_DEFINE_TEST(test_basic_array_functions)
TestArrayFunctions<long double>(3.1, 1.2);
}
-SEQAN_DEFINE_TEST(test_basic_suprema_infima)
-{
- using namespace seqan;
-
- // These tests are only here to instantiate the MaxValue and
- // MinValue Metafunctions for double and float.
- {
- double x = MaxValue<double>::VALUE;
- SEQAN_ASSERT_GT(x, 0);
- }
- {
- double x = MinValue<double>::VALUE;
- SEQAN_ASSERT_LT(x, 0);
- }
- {
- float x = MaxValue<float>::VALUE;
- SEQAN_ASSERT_GT(x, 0);
- }
- {
- float x = MinValue<float>::VALUE;
- SEQAN_ASSERT_LT(x, 0);
- }
-}
-
SEQAN_DEFINE_TEST(test_basic_alphabet_value_size)
{
SEQAN_ASSERT_EQ(+ValueSize<bool>::VALUE, 2u);
diff --git a/tests/basic/test_basic_alphabet_adapt_builtins.h b/tests/basic/test_basic_alphabet_adapt_builtins.h
index b0e6705..7d01a6c 100644
--- a/tests/basic/test_basic_alphabet_adapt_builtins.h
+++ b/tests/basic/test_basic_alphabet_adapt_builtins.h
@@ -70,19 +70,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_bool)
SEQAN_ASSERT_EQ(b, true);
}
- // Ordered Alphabet Concept
- {
- bool b = false, c = true;
-
- SEQAN_ASSERT_EQ(minValue(bool()), false);
- SEQAN_ASSERT_EQ(minValue<bool>(), false);
- SEQAN_ASSERT_EQ(+(MinValue<bool>::VALUE), 0/*false*/);
- SEQAN_ASSERT_EQ(maxValue(bool()), true);
- SEQAN_ASSERT_EQ(maxValue<bool>(), true);
- SEQAN_ASSERT_EQ(+(MaxValue<bool>::VALUE), 1/*true*/);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
bool b = false;
@@ -114,19 +101,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_char)
SEQAN_ASSERT_EQ(b, true);
}
- // Ordered Alphabet Concept
- {
- char b = false, c = true;
- SEQAN_ASSERT_EQ(minValue(char()), '\0');
- SEQAN_ASSERT_EQ(minValue<char>(), '\0');
- SEQAN_ASSERT_EQ(+(MinValue<char>::VALUE), '\0');
- // TODO(holtgrew): Is the following correct?
- SEQAN_ASSERT_EQ(maxValue(char()), char(-1));
- SEQAN_ASSERT_EQ(maxValue<char>(), char(-1));
- SEQAN_ASSERT_EQ(+(MaxValue<char>::VALUE), char(-1));
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
char b = 0;
@@ -168,19 +142,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_short)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- short b = 0, c = 42;
-
- SEQAN_ASSERT_LEQ(minValue(short()), -32768);
- SEQAN_ASSERT_LEQ(minValue<short>(), -32768);
- SEQAN_ASSERT_LEQ(+(MinValue<short>::VALUE), -32768);
- SEQAN_ASSERT_GEQ(maxValue(short()), 32767);
- SEQAN_ASSERT_GEQ(maxValue<short>(), 32767);
- SEQAN_ASSERT_GEQ(+(MaxValue<short>::VALUE), 32767);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
short b = 0;
@@ -214,21 +175,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- int b = 0, c = 42;
-
- // note(marehr): -2147483648 would produce the compiler warning C4146:
- // unary minus operator applied to unsigned type, result still unsigned
- SEQAN_ASSERT_EQ(minValue(int()), -2147483647 - 1);
- SEQAN_ASSERT_EQ(minValue<int>(), -2147483647 - 1);
- SEQAN_ASSERT_EQ(+(MinValue<int>::VALUE), -2147483647 - 1);
- SEQAN_ASSERT_EQ(maxValue(int()), 2147483647);
- SEQAN_ASSERT_EQ(maxValue<int>(), 2147483647);
- SEQAN_ASSERT_EQ(+(MaxValue<int>::VALUE), 2147483647);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
int b = 0;
@@ -262,19 +208,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_long)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- long b = 0, c = 42;
-
- SEQAN_ASSERT_LEQ(minValue(long()), +(MinValue<int>::VALUE));
- SEQAN_ASSERT_LEQ(minValue<long>(), +(MinValue<int>::VALUE));
- SEQAN_ASSERT_LEQ(+(MinValue<long>::VALUE), +(MinValue<int>::VALUE));
- SEQAN_ASSERT_GEQ(maxValue(long()), +(MaxValue<int>::VALUE));
- SEQAN_ASSERT_GEQ(maxValue<long>(), +(MaxValue<int>::VALUE));
- SEQAN_ASSERT_GEQ(+(MaxValue<long>::VALUE), +(MaxValue<int>::VALUE));
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
long b = 0;
@@ -317,19 +250,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int8)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- int8_t b = 0, c = 42;
-
- SEQAN_ASSERT_EQ(minValue(int8_t()), -128);
- SEQAN_ASSERT_EQ(minValue<int8_t>(), -128);
- SEQAN_ASSERT_EQ(+(MinValue<int8_t>::VALUE), -128);
- SEQAN_ASSERT_GEQ(maxValue(int8_t()), 127);
- SEQAN_ASSERT_GEQ(maxValue<int8_t>(), 127);
- SEQAN_ASSERT_GEQ(+(MaxValue<int8_t>::VALUE), 127);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
int8_t b = 0;
@@ -363,19 +283,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_uint8)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- uint8_t b = 0, c = 42;
-
- SEQAN_ASSERT_EQ(minValue(uint8_t()), 0u);
- SEQAN_ASSERT_EQ(minValue<uint8_t>(), 0u);
- SEQAN_ASSERT_EQ(+(MinValue<uint8_t>::VALUE), 0);
- SEQAN_ASSERT_EQ(maxValue(uint8_t()), 255u);
- SEQAN_ASSERT_EQ(maxValue<uint8_t>(), 255u);
- SEQAN_ASSERT_EQ(+(MaxValue<uint8_t>::VALUE), 255);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
uint8_t b = 0;
@@ -408,19 +315,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int16)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- int16_t b = 0, c = 42;
-
- SEQAN_ASSERT_EQ(minValue(int16_t()), -32768);
- SEQAN_ASSERT_EQ(minValue<int16_t>(), -32768);
- SEQAN_ASSERT_EQ(+(MinValue<int16_t>::VALUE), -32768);
- SEQAN_ASSERT_EQ(maxValue(int16_t()), 32767);
- SEQAN_ASSERT_EQ(maxValue<int16_t>(), 32767);
- SEQAN_ASSERT_EQ(+(MaxValue<int16_t>::VALUE), 32767);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
int16_t b = 0;
@@ -454,19 +348,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_uint16)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- uint16_t b = 0, c = 42;
-
- SEQAN_ASSERT_EQ(minValue(uint16_t()), 0u);
- SEQAN_ASSERT_EQ(minValue<uint16_t>(), 0u);
- SEQAN_ASSERT_EQ(+(MinValue<uint16_t>::VALUE), 0);
- SEQAN_ASSERT_EQ(maxValue(uint16_t()), 65535u);
- SEQAN_ASSERT_EQ(maxValue<uint16_t>(), 65535u);
- SEQAN_ASSERT_EQ(+(MaxValue<uint16_t>::VALUE), 65535);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
uint16_t b = 0;
@@ -499,21 +380,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int32)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- int32_t b = 0, c = 42;
-
- // note(marehr): -2147483648 would produce the compiler warning C4146:
- // unary minus operator applied to unsigned type, result still unsigned
- SEQAN_ASSERT_EQ(minValue(int32_t()), -2147483647 - 1);
- SEQAN_ASSERT_EQ(minValue<int32_t>(), -2147483647 - 1);
- SEQAN_ASSERT_EQ(+(MinValue<int32_t>::VALUE), -2147483647 - 1);
- SEQAN_ASSERT_EQ(maxValue(int32_t()), 2147483647);
- SEQAN_ASSERT_EQ(maxValue<int32_t>(), 2147483647);
- SEQAN_ASSERT_EQ(+(MaxValue<int32_t>::VALUE), 2147483647);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
int32_t b = 0;
@@ -547,19 +413,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_uint32)
SEQAN_ASSERT_EQ(b, 1u);
}
- // Ordered Alphabet Concept
- {
- uint32_t b = 0, c = 42;
-
- SEQAN_ASSERT_EQ(minValue(uint32_t()), 0u);
- SEQAN_ASSERT_EQ(minValue<uint32_t>(), 0u);
- SEQAN_ASSERT_EQ(+(MinValue<uint32_t>::VALUE), 0u);
- SEQAN_ASSERT_EQ(maxValue(uint32_t()), 4294967295u);
- SEQAN_ASSERT_EQ(maxValue<uint32_t>(), 4294967295u);
- SEQAN_ASSERT_EQ(+(MaxValue<uint32_t>::VALUE), 4294967295u);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
uint32_t b = 0;
@@ -592,19 +445,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int64)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- int64_t b = 0, c = 42;
-
- SEQAN_ASSERT_LT(minValue((int64_t)(0)), minValue((int32_t)(0)));
- SEQAN_ASSERT_LT(minValue<int64_t>(), minValue<int32_t>());
- SEQAN_ASSERT_LT(+(MinValue<int64_t>::VALUE), +(MinValue<int32_t>::VALUE));
- SEQAN_ASSERT_GT(maxValue((int64_t)(0)), maxValue((int32_t)(0)));
- SEQAN_ASSERT_GT(maxValue<int64_t>(), maxValue<int32_t>());
- SEQAN_ASSERT_GT(+(MaxValue<int64_t>::VALUE), +(MaxValue<int32_t>::VALUE));
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
int64_t b = 0;
@@ -638,19 +478,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_uint64)
SEQAN_ASSERT_EQ(b, 1u);
}
- // Ordered Alphabet Concept
- {
- uint64_t b = 0, c = 42;
-
- SEQAN_ASSERT_EQ(minValue(uint64_t()), 0u);
- SEQAN_ASSERT_EQ(minValue<uint64_t>(), 0u);
- SEQAN_ASSERT_EQ(+(MinValue<uint64_t>::VALUE), 0u);
- SEQAN_ASSERT_GT(maxValue(uint64_t()), maxValue(uint32_t()));
- SEQAN_ASSERT_GT(maxValue<uint64_t>(), maxValue<uint32_t>());
- SEQAN_ASSERT_GT(+(MaxValue<uint64_t>::VALUE), +(MaxValue<uint32_t>::VALUE));
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet
{
uint64_t b = 0;
@@ -684,19 +511,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_float)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- float b = 0, c = 42;
-
- SEQAN_ASSERT_LT(minValue(float()), 0);
- SEQAN_ASSERT_LT(minValue<float>(), 0);
- SEQAN_ASSERT_LT(+(MinValue<float>::VALUE), 0);
- SEQAN_ASSERT_GT(maxValue(float()), 0);
- SEQAN_ASSERT_GT(maxValue<float>(), 0);
- SEQAN_ASSERT_GT(+(MaxValue<float>::VALUE), 0);
- SEQAN_ASSERT(b < c);
- }
-
// Finite Ordered Alphabet - Not Applicable
// Alphabet With Gaps - Not Applicable
// Alphabet With Unknown Value - Not Applicable
@@ -716,19 +530,6 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_double)
SEQAN_ASSERT_EQ(b, 1);
}
- // Ordered Alphabet Concept
- {
- double b = 0, c = 42;
-
- SEQAN_ASSERT_LT(minValue(double()), 0);
- SEQAN_ASSERT_LT(minValue<double>(), 0);
- SEQAN_ASSERT_LT(+(MinValue<double>::VALUE), 0);
- SEQAN_ASSERT_GT(maxValue(double()), 0);
- SEQAN_ASSERT_GT(maxValue<double>(), 0);
- SEQAN_ASSERT_GT(+(MaxValue<double>::VALUE), 0);
- SEQAN_ASSERT(b < c);
- }
-
// Alphabet With Gaps - Not Applicable
// Alphabet With Unknown Value - Not Applicable
// Alphabet With Qualities - Not Applicable
diff --git a/tests/basic/test_basic_alphabet_math.h b/tests/basic/test_basic_alphabet_math.h
index 918c124..6b342ed 100644
--- a/tests/basic/test_basic_alphabet_math.h
+++ b/tests/basic/test_basic_alphabet_math.h
@@ -61,34 +61,37 @@ struct MyNumber_
{}
};
-inline MyNumber_ const &
-infimumValueImpl(MyNumber_ * /*tag*/)
+namespace seqan
{
- static const MyNumber_ result(-1);
- return result;
-}
+template <>
+struct MinValue<MyNumber_>
+{
+ static const MyNumber_ VALUE;
+};
-inline MyNumber_ const &
-supremumValueImpl(MyNumber_ * /*tag*/)
+const MyNumber_ MinValue<MyNumber_>::VALUE = MyNumber_(-1);
+
+template <>
+struct MaxValue<MyNumber_>
{
- static const MyNumber_ result(1);
- return result;
+ static const MyNumber_ VALUE;
+};
+
+const MyNumber_ MaxValue<MyNumber_>::VALUE = MyNumber_(1);
}
SEQAN_DEFINE_TEST(test_basic_alphabet_math_min_value)
{
using namespace seqan;
- SEQAN_ASSERT_EQ(minValue<MyNumber_>().value, -1);
- SEQAN_ASSERT_EQ(minValue(MyNumber_()).value, -1);
+ SEQAN_ASSERT_EQ(MinValue<MyNumber_>::VALUE.value, -1);
}
SEQAN_DEFINE_TEST(test_basic_alphabet_math_max_value)
{
using namespace seqan;
- SEQAN_ASSERT_EQ(maxValue<MyNumber_>().value, 1);
- SEQAN_ASSERT_EQ(maxValue(MyNumber_()).value, 1);
+ SEQAN_ASSERT_EQ(MaxValue<MyNumber_>::VALUE.value, 1);
}
#endif // #ifndef SEQAN_TESTS_BASIC_TEST_BASIC_ALPHABET_MATH_H_
diff --git a/tests/basic/test_basic_alphabet_residue.h b/tests/basic/test_basic_alphabet_residue.h
index 4db2bd0..a7145db 100644
--- a/tests/basic/test_basic_alphabet_residue.h
+++ b/tests/basic/test_basic_alphabet_residue.h
@@ -102,13 +102,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_dna)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<Dna>::VALUE, Dna('T'));
- SEQAN_ASSERT_EQ(maxValue<Dna>(), Dna('T'));
- SEQAN_ASSERT_EQ(maxValue(Dna()), Dna('T'));
-
- SEQAN_ASSERT_EQ(MinValue<Dna>::VALUE, Dna('A'));
- SEQAN_ASSERT_EQ(minValue<Dna>(), Dna('A'));
- SEQAN_ASSERT_EQ(minValue(Dna()), Dna('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Dna>::max(), Dna('T'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Dna>::min(), Dna('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -133,13 +128,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_dna5)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<Dna5>::VALUE, Dna5('N'));
- SEQAN_ASSERT_EQ(maxValue<Dna5>(), Dna5('N'));
- SEQAN_ASSERT_EQ(maxValue(Dna5()), Dna5('N'));
-
- SEQAN_ASSERT_EQ(MinValue<Dna5>::VALUE, Dna5('A'));
- SEQAN_ASSERT_EQ(minValue<Dna5>(), Dna5('A'));
- SEQAN_ASSERT_EQ(minValue(Dna5()), Dna5('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Dna5>::max(), Dna5('N'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Dna5>::min(), Dna5('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -169,13 +159,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_dna_q)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<DnaQ>::VALUE, DnaQ('T'));
- SEQAN_ASSERT_EQ(maxValue<DnaQ>(), DnaQ('T'));
- SEQAN_ASSERT_EQ(maxValue(DnaQ()), DnaQ('T'));
-
- SEQAN_ASSERT_EQ(MinValue<DnaQ>::VALUE, DnaQ('A'));
- SEQAN_ASSERT_EQ(minValue<DnaQ>(), DnaQ('A'));
- SEQAN_ASSERT_EQ(minValue(DnaQ()), DnaQ('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<DnaQ>::max(), DnaQ('T'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<DnaQ>::min(), DnaQ('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -205,13 +190,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_dna5_q)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<Dna5Q>::VALUE, Dna5Q('N'));
- SEQAN_ASSERT_EQ(maxValue<Dna5Q>(), Dna5Q('N'));
- SEQAN_ASSERT_EQ(maxValue(Dna5Q()), Dna5Q('N'));
-
- SEQAN_ASSERT_EQ(MinValue<Dna5Q>::VALUE, Dna5Q('A'));
- SEQAN_ASSERT_EQ(minValue<Dna5Q>(), Dna5Q('A'));
- SEQAN_ASSERT_EQ(minValue(Dna5Q()), Dna5Q('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Dna5Q>::max(), Dna5Q('N'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Dna5Q>::min(), Dna5Q('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -246,13 +226,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_rna)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<Rna>::VALUE, Rna('U'));
- SEQAN_ASSERT_EQ(maxValue<Rna>(), Rna('U'));
- SEQAN_ASSERT_EQ(maxValue(Rna()), Rna('U'));
-
- SEQAN_ASSERT_EQ(MinValue<Rna>::VALUE, Rna('A'));
- SEQAN_ASSERT_EQ(minValue<Rna>(), Rna('A'));
- SEQAN_ASSERT_EQ(minValue(Rna()), Rna('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Rna>::max(), Rna('U'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Rna>::min(), Rna('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -277,13 +252,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_rna5)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<Rna5>::VALUE, Rna5('N'));
- SEQAN_ASSERT_EQ(maxValue<Rna5>(), Rna5('N'));
- SEQAN_ASSERT_EQ(maxValue(Rna5()), Rna5('N'));
-
- SEQAN_ASSERT_EQ(MinValue<Rna5>::VALUE, Rna5('A'));
- SEQAN_ASSERT_EQ(minValue<Rna5>(), Rna5('A'));
- SEQAN_ASSERT_EQ(minValue(Rna5()), Rna5('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Rna5>::max(), Rna5('N'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Rna5>::min(), Rna5('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -313,13 +283,8 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_iupac)
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<Iupac>::VALUE, Iupac('N'));
- SEQAN_ASSERT_EQ(maxValue<Iupac>(), Iupac('N'));
- SEQAN_ASSERT_EQ(maxValue(Iupac()), Iupac('N'));
-
- SEQAN_ASSERT_EQ(MinValue<Iupac>::VALUE, Iupac('U'));
- SEQAN_ASSERT_EQ(minValue<Iupac>(), Iupac('U'));
- SEQAN_ASSERT_EQ(minValue(Iupac()), Iupac('U'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Iupac>::max(), Iupac('N'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<Iupac>::min(), Iupac('U'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
@@ -355,14 +320,9 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_amino_acid)
SEQAN_ASSERT_EQ(+(BitsPerValue<AminoAcid>::VALUE), 5);
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<AminoAcid>::VALUE, 26u);
- SEQAN_ASSERT_EQ(MaxValue<AminoAcid>::VALUE, AminoAcid('*'));
- SEQAN_ASSERT_EQ(maxValue<AminoAcid>(), AminoAcid('*'));
- SEQAN_ASSERT_EQ(maxValue(AminoAcid()), AminoAcid('*'));
-
- SEQAN_ASSERT_EQ(MinValue<AminoAcid>::VALUE, AminoAcid('A'));
- SEQAN_ASSERT_EQ(minValue<AminoAcid>(), AminoAcid('A'));
- SEQAN_ASSERT_EQ(minValue(AminoAcid()), AminoAcid('A'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<AminoAcid>::max(), 26u);
+ SEQAN_ASSERT_EQ(std::numeric_limits<AminoAcid>::max(), AminoAcid('*'));
+ SEQAN_ASSERT_EQ(std::numeric_limits<AminoAcid>::min(), AminoAcid('A'));
// Finited Ordered Alphabet Concept Metafunctions / Type Queries
diff --git a/tests/basic/test_basic_concept.cpp b/tests/basic/test_basic_concept.cpp
index 8f96601..6f4aa1a 100644
--- a/tests/basic/test_basic_concept.cpp
+++ b/tests/basic/test_basic_concept.cpp
@@ -38,11 +38,13 @@
#include <seqan/sequence.h>
#include "test_basic_fundamental_concepts.h"
+#include "test_basic_concepts.h"
SEQAN_BEGIN_TESTSUITE(test_basic_concept)
{
SEQAN_CALL_TEST(test_basic_concepts_concept_impl);
SEQAN_CALL_TEST(test_basic_concepts_concept_refine);
+
+ SEQAN_CALL_TEST(test_basic_concepts_move_construtible_concept);
}
SEQAN_END_TESTSUITE
-
diff --git a/tests/basic/test_basic_concepts.h b/tests/basic/test_basic_concepts.h
index a82af76..b3a039b 100644
--- a/tests/basic/test_basic_concepts.h
+++ b/tests/basic/test_basic_concepts.h
@@ -87,4 +87,43 @@ SEQAN_DEFINE_TEST(test_basic_concepts_integer_concept)
// BOOST_CONCEPT_ASSERT((boost::Integer<double>));
}
+SEQAN_DEFINE_TEST(test_basic_concepts_move_construtible_concept)
+{
+ using namespace seqan;
+
+ struct TestMoveable
+ {
+ TestMoveable() = default;
+
+ TestMoveable(TestMoveable && other)
+ {
+ ignoreUnusedVariableWarning(other);
+ }
+ };
+
+ struct TestNotMoveable
+ {
+ TestNotMoveable() = default;
+
+ TestNotMoveable(TestNotMoveable const & other)
+ {
+ ignoreUnusedVariableWarning(other);
+ }
+ };
+
+ struct TestNotCopyableAndMoveable
+ {
+ TestNotCopyableAndMoveable() = default;
+
+ TestNotCopyableAndMoveable(TestNotCopyableAndMoveable const &) = delete;
+ TestNotCopyableAndMoveable(TestNotCopyableAndMoveable &&) = delete;
+ };
+
+ SEQAN_CONCEPT_ASSERT((MoveConstructible<char>));
+ SEQAN_CONCEPT_ASSERT((MoveConstructible<TestMoveable>));
+ SEQAN_CONCEPT_ASSERT((MoveConstructible<TestNotMoveable>));
+ //NOTE: Fails compiling because of deleted copy and move c'tor, which is the expected behavior.
+ //SEQAN_CONCEPT_ASSERT((MoveConstructible<TestNotCopyableAndMoveable>));
+}
+
#endif // #ifndef TESTS_BASIC_TEST_BASIC_CONCEPTS_H_
diff --git a/tests/basic/test_basic_exception.h b/tests/basic/test_basic_exception.h
index f5fe6b9..cc6a86f 100644
--- a/tests/basic/test_basic_exception.h
+++ b/tests/basic/test_basic_exception.h
@@ -43,7 +43,7 @@ SEQAN_DEFINE_TEST(test_basic_exception_try_catch)
{
SEQAN_THROW(Exception());
}
- SEQAN_CATCH(Exception)
+ SEQAN_CATCH(Exception &)
{
return;
}
@@ -57,7 +57,7 @@ SEQAN_DEFINE_TEST(test_basic_exception_bad_alloc)
{
SEQAN_THROW(BadAlloc());
}
- SEQAN_CATCH(BadAlloc)
+ SEQAN_CATCH(BadAlloc &)
{
return;
}
@@ -71,7 +71,7 @@ SEQAN_DEFINE_TEST(test_basic_exception_runtime_error)
{
SEQAN_THROW(RuntimeError("Throwing a RuntimeError."));
}
- SEQAN_CATCH(RuntimeError)
+ SEQAN_CATCH(RuntimeError &)
{
return;
}
diff --git a/tests/basic/test_basic_iterator.h b/tests/basic/test_basic_iterator.h
index e130c41..f17518d 100644
--- a/tests/basic/test_basic_iterator.h
+++ b/tests/basic/test_basic_iterator.h
@@ -276,7 +276,7 @@ SEQAN_DEFINE_TEST(test_basic_iterator_adapt_pointer_transport_value)
resetCDStructStatics();
CDStruct * ptr = &cs1;
- assignValue(ptr, cs2);
+ *ptr = cs2;
SEQAN_ASSERT_EQ(ptr->copiedFrom, -1);
SEQAN_ASSERT_EQ(ptr->movedFrom, -1);
diff --git a/tests/bed_io/test_bed_io.cpp b/tests/bed_io/test_bed_io.cpp
index f2cde99..0489d31 100644
--- a/tests/bed_io/test_bed_io.cpp
+++ b/tests/bed_io/test_bed_io.cpp
@@ -385,8 +385,7 @@ SEQAN_DEFINE_TEST(test_bed_write_bed12_record)
SEQAN_DEFINE_TEST(test_bed_bed_file_read)
{
- seqan::CharString inPath = SEQAN_PATH_TO_ROOT();
- append(inPath, "/tests/bed_io/example.bed");
+ seqan::CharString inPath = getAbsolutePath("/tests/bed_io/example.bed");
seqan::BedFileIn bedStream(toCString(inPath));
@@ -410,7 +409,7 @@ SEQAN_DEFINE_TEST(test_bed_bed_file_read)
SEQAN_DEFINE_TEST(test_bed_bed_file_write)
{
- seqan::CharString tmpPath = SEQAN_PATH_TO_ROOT();
+ seqan::CharString tmpPath = SEQAN_TEMP_FILENAME();
append(tmpPath, ".bed");
seqan::BedFileOut bedStream(toCString(tmpPath));
@@ -431,8 +430,7 @@ SEQAN_DEFINE_TEST(test_bed_bed_file_write)
close(bedStream);
- seqan::CharString goldPath(SEQAN_PATH_TO_ROOT());
- append(goldPath, "/tests/bed_io/example.bed");
+ seqan::CharString goldPath(getAbsolutePath("/tests/bed_io/example.bed"));
SEQAN_ASSERT(seqan::_compareTextFiles(toCString(tmpPath), toCString(goldPath)));
}
diff --git a/tests/blast/test_blast_input.h b/tests/blast/test_blast_input.h
index 0e2e621..0e922d2 100644
--- a/tests/blast/test_blast_input.h
+++ b/tests/blast/test_blast_input.h
@@ -46,7 +46,7 @@ using namespace seqan;
inline void
_test_blast_read_tabular_match_lowlevel(std::string const & path)
{
- std::string inPath = std::string(SEQAN_PATH_TO_ROOT()) + std::string(path);
+ std::string inPath = seqan::getAbsolutePath(path.c_str());
std::ifstream ifstream(toCString(inPath),
std::ios_base::in | std::ios_base::binary);
@@ -159,8 +159,7 @@ void _testReadTabularWithoutComments(TContext &,
{
typedef BlastMatchField<> TField;
- std::string inPath = std::string(SEQAN_PATH_TO_ROOT());
- inPath += path;
+ std::string inPath = seqan::getAbsolutePath(path.c_str());
BlastRecord<> r;
@@ -366,8 +365,7 @@ void _testReadTabularWithComments(TContext &,
{
typedef BlastMatchField<> TField;
- std::string inPath = std::string(SEQAN_PATH_TO_ROOT());
- inPath += path;
+ std::string inPath = seqan::getAbsolutePath(path.c_str());
BlastRecord<> r;
diff --git a/tests/consensus/test_consensus.h b/tests/consensus/test_consensus.h
index 31d0257..8bca0ab 100644
--- a/tests/consensus/test_consensus.h
+++ b/tests/consensus/test_consensus.h
@@ -250,8 +250,7 @@ SEQAN_DEFINE_TEST(test_consensus_host_weightedconsensus_score)
SEQAN_DEFINE_TEST(test_consensus_write_celera_cgb)
{
// Get path to input files.
- seqan::CharString inPathSam = SEQAN_PATH_TO_ROOT();
- append(inPathSam, "/tests/consensus/toy.sam");
+ seqan::CharString inPathSam = seqan::getAbsolutePath("/tests/consensus/toy.sam");
// Get path to temporary file.
seqan::CharString outPathCgb = SEQAN_TEMP_FILENAME();
@@ -266,16 +265,14 @@ SEQAN_DEFINE_TEST(test_consensus_write_celera_cgb)
fCgbOut.close();
// Compare result.
- seqan::CharString goldPathCgb = SEQAN_PATH_TO_ROOT();
- append(goldPathCgb, "/tests/consensus/sam_to_cgb_result.cgb");
+ seqan::CharString goldPathCgb = seqan::getAbsolutePath("/tests/consensus/sam_to_cgb_result.cgb");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPathCgb), toCString(goldPathCgb)));
}
SEQAN_DEFINE_TEST(test_consensus_write_celera_frg)
{
// Get path to input files.
- seqan::CharString inPathSam = SEQAN_PATH_TO_ROOT();
- append(inPathSam, "/tests/consensus/toy.sam");
+ seqan::CharString inPathSam = seqan::getAbsolutePath("/tests/consensus/toy.sam");
// Get path to temporary file.
seqan::CharString outPathFrg = SEQAN_TEMP_FILENAME();
@@ -290,18 +287,15 @@ SEQAN_DEFINE_TEST(test_consensus_write_celera_frg)
fFrgOut.close();
// Compare result.
- seqan::CharString goldPathFrg = SEQAN_PATH_TO_ROOT();
- append(goldPathFrg, "/tests/consensus/sam_to_frg_result.frg");
+ seqan::CharString goldPathFrg = seqan::getAbsolutePath("/tests/consensus/sam_to_frg_result.frg");
SEQAN_ASSERT(seqan::_compareTextFiles(toCString(outPathFrg), toCString(goldPathFrg)));
}
SEQAN_DEFINE_TEST(test_consensus_write_fasta_read_format)
{
// Get path to input files.
- seqan::CharString inPathSam = SEQAN_PATH_TO_ROOT();
- append(inPathSam, "/tests/consensus/toy.sam");
- seqan::CharString inPathFasta = SEQAN_PATH_TO_ROOT();
- append(inPathFasta, "/tests/consensus/toy.fa");
+ seqan::CharString inPathSam = seqan::getAbsolutePath("/tests/consensus/toy.sam");
+ seqan::CharString inPathFasta = seqan::getAbsolutePath( "/tests/consensus/toy.fa");
// Get path to temporary file.
seqan::CharString outPathFasta = SEQAN_TEMP_FILENAME();
@@ -317,16 +311,14 @@ SEQAN_DEFINE_TEST(test_consensus_write_fasta_read_format)
fFastaOut.close();
// Compare result.
- seqan::CharString goldPathFasta = SEQAN_PATH_TO_ROOT();
- append(goldPathFasta, "/tests/consensus/sam_to_fasta_read_result.fa");
+ seqan::CharString goldPathFasta = seqan::getAbsolutePath("/tests/consensus/sam_to_fasta_read_result.fa");
SEQAN_ASSERT(seqan::_compareTextFiles(toCString(outPathFasta), toCString(goldPathFasta)));
}
SEQAN_DEFINE_TEST(test_consensus_convert_simple_read_file)
{
// Get path to input files.
- seqan::CharString inPathFasta = SEQAN_PATH_TO_ROOT();
- append(inPathFasta, "/tests/consensus/simulated_reads.fasta");
+ seqan::CharString inPathFasta = seqan::getAbsolutePath("/tests/consensus/simulated_reads.fasta");
std::string filePath(toCString(inPathFasta));
// Get path to temporary file.
std::string outPathSam = (std::string)SEQAN_TEMP_FILENAME() + ".sam";
@@ -343,8 +335,7 @@ SEQAN_DEFINE_TEST(test_consensus_convert_simple_read_file)
close(fSamOut);
// Compare result.
- seqan::CharString goldPathSam = SEQAN_PATH_TO_ROOT();
- append(goldPathSam, "/tests/consensus/reads_to_sam_read_result.sam");
+ seqan::CharString goldPathSam = seqan::getAbsolutePath("/tests/consensus/reads_to_sam_read_result.sam");
SEQAN_ASSERT(seqan::_compareTextFiles(outPathSam.c_str(), toCString(goldPathSam)));
}
diff --git a/tests/consensus/test_consensus_realign.h b/tests/consensus/test_consensus_realign.h
index 12bcc28..12de360 100644
--- a/tests/consensus/test_consensus_realign.h
+++ b/tests/consensus/test_consensus_realign.h
@@ -48,8 +48,7 @@ SEQAN_DEFINE_TEST(test_consensus_realign_one_contig_small)
//
// There are many superfluous gaps in the SAM file that we will get rid of below.
seqan::FragmentStore<> store;
- seqan::CharString samPath = SEQAN_PATH_TO_ROOT();
- append(samPath, "/tests/consensus/small_example.sam");
+ seqan::CharString samPath = seqan::getAbsolutePath("/tests/consensus/small_example.sam");
seqan::BamFileIn fSamIn(toCString(samPath));
readRecords(store, fSamIn);
@@ -61,7 +60,7 @@ SEQAN_DEFINE_TEST(test_consensus_realign_one_contig_small)
seqan::Score<int, seqan::WeightedConsensusScore<
seqan::Score<int, seqan::FractionalScore>,
seqan::Score<int, seqan::ConsensusScore> > > combinedScore;
- reAlign(store, combinedScore, 0, 1, 30, false);
+ reAlignment(store, 0, 1, 30, false);
layoutAlignment(layout, store);
std::stringstream ss;
diff --git a/tests/gff_io/test_gff_io.h b/tests/gff_io/test_gff_io.h
index 342840c..7fae00b 100644
--- a/tests/gff_io/test_gff_io.h
+++ b/tests/gff_io/test_gff_io.h
@@ -44,8 +44,7 @@ using namespace seqan;
SEQAN_DEFINE_TEST(test_store_io_read_record_context_gff)
{
- CharString gffPath = SEQAN_PATH_TO_ROOT();
- append(gffPath, "/tests/gff_io/example.gff");
+ CharString gffPath = getAbsolutePath("/tests/gff_io/example.gff");
String<char, MMap<> > inString;
open(inString, toCString(gffPath));
@@ -102,8 +101,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_record_context_gff)
SEQAN_DEFINE_TEST(test_store_io_write_record_context_gff)
{
- CharString gffPath = SEQAN_PATH_TO_ROOT();
- append(gffPath, "/tests/gff_io/example.gff");
+ CharString gffPath = getAbsolutePath("/tests/gff_io/example.gff");
String<char, MMap<> > inString;
open(inString, toCString(gffPath));
@@ -125,8 +123,7 @@ SEQAN_DEFINE_TEST(test_store_io_write_record_context_gff)
++count;
}
- String<char> goldPath = SEQAN_PATH_TO_ROOT();
- append(goldPath, "/tests/gff_io/example_context.gff");
+ String<char> goldPath = getAbsolutePath("/tests/gff_io/example_context.gff");
String<char, MMap<> > goldString;
open(goldString, toCString(goldPath));
@@ -135,10 +132,8 @@ SEQAN_DEFINE_TEST(test_store_io_write_record_context_gff)
SEQAN_DEFINE_TEST(test_store_io_comment_processing_context_gff)
{
- CharString gffPath = SEQAN_PATH_TO_ROOT();
-
// slightly modified version of "example.gff". 3 lines of comments are included.
- append(gffPath, "/tests/gff_io/example_with_comments.gff");
+ CharString gffPath = getAbsolutePath("/tests/gff_io/example_with_comments.gff");
String<char, MMap<> > inString;
open(inString, toCString(gffPath));
@@ -196,8 +191,7 @@ SEQAN_DEFINE_TEST(test_store_io_comment_processing_context_gff)
// Complex GTF format, from pseudogenes.org
SEQAN_DEFINE_TEST(test_store_io_read_record_gtf_pseudogenes)
{
- CharString gtfPath = SEQAN_PATH_TO_ROOT();
- append(gtfPath, "/tests/gff_io/example_pseudogenes.gtf");
+ CharString gtfPath = getAbsolutePath("/tests/gff_io/example_pseudogenes.gtf");
String<char, MMap<> > inString;
open(inString, toCString(gtfPath));
@@ -263,8 +257,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_record_gtf_pseudogenes)
SEQAN_DEFINE_TEST(test_store_io_read_record_context_gtf)
{
- CharString gtfPath = SEQAN_PATH_TO_ROOT();
- append(gtfPath, "/tests/gff_io/example.gtf");
+ CharString gtfPath = getAbsolutePath("/tests/gff_io/example.gtf");
String<char, MMap<> > inString;
open(inString, toCString(gtfPath));
@@ -320,8 +313,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_record_context_gtf)
SEQAN_DEFINE_TEST(test_store_io_write_record_context_gtf)
{
- CharString gtfPath = SEQAN_PATH_TO_ROOT();
- append(gtfPath, "/tests/gff_io/example.gtf");
+ CharString gtfPath = getAbsolutePath("/tests/gff_io/example.gtf");
String<char, MMap<> > inString;
open(inString, toCString(gtfPath));
@@ -347,8 +339,7 @@ SEQAN_DEFINE_TEST(test_store_io_write_record_context_gtf)
appendValue(temp, 'A');
}
- String<char> goldPath = SEQAN_PATH_TO_ROOT();
- append(goldPath, "/tests/gff_io/example_context.gtf");
+ String<char> goldPath = getAbsolutePath("/tests/gff_io/example_context.gtf");
String<char, MMap<> > goldString;
open(goldString, toCString(goldPath));
@@ -357,8 +348,7 @@ SEQAN_DEFINE_TEST(test_store_io_write_record_context_gtf)
SEQAN_DEFINE_TEST(test_store_io_gff_stream_read_record_gff)
{
- CharString gffPath = SEQAN_PATH_TO_ROOT();
- append(gffPath, "/tests/gff_io/example.gff");
+ CharString gffPath = getAbsolutePath("/tests/gff_io/example.gff");
GffFileIn gffStream(toCString(gffPath));
@@ -411,8 +401,7 @@ SEQAN_DEFINE_TEST(test_store_io_gff_stream_read_record_gff)
SEQAN_DEFINE_TEST(test_store_io_gff_stream_read_record_gtf)
{
- CharString gffPath = SEQAN_PATH_TO_ROOT();
- append(gffPath, "/tests/gff_io/example.gtf");
+ CharString gffPath = getAbsolutePath("/tests/gff_io/example.gtf");
GffFileIn gffStream(toCString(gffPath));
@@ -463,8 +452,7 @@ SEQAN_DEFINE_TEST(test_store_io_gff_stream_read_record_gtf)
SEQAN_DEFINE_TEST(test_store_io_gff_stream_write_record_gff)
{
- CharString gtfPath = SEQAN_PATH_TO_ROOT();
- append(gtfPath, "/tests/gff_io/example.gff");
+ CharString gtfPath = getAbsolutePath("/tests/gff_io/example.gff");
GffFileIn inStream(toCString(gtfPath));
@@ -487,8 +475,7 @@ SEQAN_DEFINE_TEST(test_store_io_gff_stream_write_record_gff)
SEQAN_DEFINE_TEST(test_store_io_gff_stream_write_record_gtf)
{
- CharString gtfPath = SEQAN_PATH_TO_ROOT();
- append(gtfPath, "/tests/gff_io/example.gtf");
+ CharString gtfPath = getAbsolutePath("/tests/gff_io/example.gtf");
GffFileIn inStream(toCString(gtfPath));
diff --git a/tests/index/test_index_creation.h b/tests/index/test_index_creation.h
index 97c622c..6852e16 100644
--- a/tests/index/test_index_creation.h
+++ b/tests/index/test_index_creation.h
@@ -138,7 +138,7 @@ SEQAN_DEFINE_TEST(testIndexCreation)
TArray child, childExt;
TText bwt;
- std::string path = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/index/m_tuberculosis_h37rv.fa";
+ std::string path = getAbsolutePath("/tests/index/m_tuberculosis_h37rv.fa");
SeqFileIn inputFile(path.c_str());
CharString id;
@@ -241,12 +241,12 @@ SEQAN_DEFINE_TEST(testIndexCreation)
resize(child, size);
for(unsigned i=0; i<size; ++i)
- child[i] = maxValue<unsigned>();
+ child[i] = std::numeric_limits<unsigned>::max();
createChildtab(child, lcp);
unsigned undefs=0;
for(unsigned i=0; i<size; ++i)
- if (child[i] == maxValue<unsigned>()) ++undefs;
+ if (child[i] == std::numeric_limits<unsigned>::max()) ++undefs;
if (undefs) std::cout << undefs << " undefined values";
resize(childExt, size);
diff --git a/tests/index/test_index_helpers.h b/tests/index/test_index_helpers.h
index 9df599c..a4b8683 100644
--- a/tests/index/test_index_helpers.h
+++ b/tests/index/test_index_helpers.h
@@ -60,7 +60,7 @@ void generateText(TText & text, unsigned textLength = 100000)
{
typedef typename Value<TText>::Type TChar;
- int minChar = MinValue<TChar>::VALUE;
+ int minChar = std::numeric_limits<TChar>::min();
unsigned alphabetSize = ValueSize<TChar>::VALUE;
std::mt19937 rng(time(nullptr));
@@ -96,7 +96,7 @@ void generateText(std::mt19937 & rng, TText & text, unsigned textLength = 100000
{
typedef typename Value<TText>::Type TChar;
- int minChar = MinValue<TChar>::VALUE;
+ int minChar = std::numeric_limits<TChar>::min();
unsigned alphabetSize = ValueSize<TChar>::VALUE;
resize(text, textLength);
@@ -114,7 +114,7 @@ void generateText(StringSet<TText, TConfig> & text, unsigned numSeq = 1000, unsi
{
typedef typename Value<TText>::Type TChar;
- int minChar = MinValue<TChar>::VALUE;
+ int minChar = std::numeric_limits<TChar>::min();
unsigned alphabetSize = ValueSize<TChar>::VALUE;
std::mt19937 rng(SEED);
@@ -138,7 +138,7 @@ void generatePattern(StringSet<TText> & pattern, TText const & text, unsigned pa
{
typedef typename Value<TText>::Type TChar;
- int minChar = MinValue<TChar>::VALUE;
+ int minChar = std::numeric_limits<TChar>::min();
unsigned alphabetSize = ValueSize<TChar>::VALUE;
std::mt19937 rng(SEED);
diff --git a/tests/index/test_qgram_index.h b/tests/index/test_qgram_index.h
index 280d3af..b83285b 100644
--- a/tests/index/test_qgram_index.h
+++ b/tests/index/test_qgram_index.h
@@ -211,23 +211,18 @@ void testGappedQGramIndex()
*/
SEQAN_DEFINE_TEST(testUngappedQGramIndex)
{
- String<Dna> text = "CTGAACCCTAAACCCT";
- int q = 2;
- Shape<Dna,SimpleShape> shape;
- resize(shape, q);
+ typedef String<Dna> TString;
+ typedef Shape<Dna, UngappedShape<2> > TShape;
+ typedef Index<TString, IndexQGram<TShape> > TIndex;
+ typedef Position<TString>::Type TPosition;
- typedef Position<String<Dna> >::Type TPosition;
- String<TPosition> pos;
- resize(pos, length(text) - q + 1);
+ TString text("CTGAACCCTAAACCCT");
- String<TPosition> dir;
- int pos_size = _intPow((unsigned)ValueSize<Dna>::VALUE, q);
- pos_size += 1;
- resize(dir, pos_size);
-
- Nothing nothing;
- createQGramIndex(pos, dir, nothing, text, shape, 1);
+ TIndex index(text);
+ indexCreate(index, QGramSADir());
+ String<TPosition> pos(getFibre(index, QGramSA()));
+ String<TPosition> dir(getFibre(index, QGramDir()));
SEQAN_ASSERT(dir[0] == 0);
SEQAN_ASSERT(dir[1] == 3);
diff --git a/tests/index/test_sa_bwtwalk.h b/tests/index/test_sa_bwtwalk.h
index 1691509..17845f1 100644
--- a/tests/index/test_sa_bwtwalk.h
+++ b/tests/index/test_sa_bwtwalk.h
@@ -115,7 +115,7 @@ SEQAN_DEFINE_TEST(testBWTWalk)
//# endif
//#endif
- std::string path = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/index/m_tuberculosis_h37rv.fa";
+ std::string path = getAbsolutePath("/tests/index/m_tuberculosis_h37rv.fa");
SeqFileIn inputFile(path.c_str());
CharString text, id;
diff --git a/tests/journaled_string_tree/test_delta_map.h b/tests/journaled_string_tree/test_delta_map.h
index 95decc0..c76bc0a 100644
--- a/tests/journaled_string_tree/test_delta_map.h
+++ b/tests/journaled_string_tree/test_delta_map.h
@@ -262,9 +262,9 @@ SEQAN_DEFINE_TEST(test_delta_map_find)
DeltaMap<TestDeltaMapConfig> deltaMap;
createMock(deltaMap);
- SEQAN_ASSERT_EQ(value(find(deltaMap, 2, DeltaTypeSnp())), deltaMap._entries[3]);
- SEQAN_ASSERT_EQ(value(find(deltaMap, 1, DeltaTypeSV())), deltaMap._entries[2]);
- SEQAN_ASSERT_EQ(value(find(deltaMap, 20, DeltaTypeDel())), deltaMap._entries[8]);
+ SEQAN_ASSERT_EQ(*find(deltaMap, 2, DeltaTypeSnp()), deltaMap._entries[3]);
+ SEQAN_ASSERT_EQ(*find(deltaMap, 1, DeltaTypeSV()), deltaMap._entries[2]);
+ SEQAN_ASSERT_EQ(*find(deltaMap, 20, DeltaTypeDel()), deltaMap._entries[8]);
SEQAN_ASSERT(find(deltaMap, 1, DeltaTypeIns()) == end(deltaMap, Standard()));
SEQAN_ASSERT(find(deltaMap, 6, DeltaTypeSnp()) == end(deltaMap, Standard()));
}
@@ -355,19 +355,19 @@ _testDeltaMapIterator(TMap & deltaMap)
unsigned counter = 0;
for (; it != end(deltaMap, Standard()); ++it, ++counter)
- SEQAN_ASSERT_EQ(value(it), deltaMap._entries[counter]);
+ SEQAN_ASSERT_EQ(*(it), deltaMap._entries[counter]);
SEQAN_ASSERT_EQ(counter, size(deltaMap));
for (; it != begin(deltaMap, Standard()); --it, --counter)
- SEQAN_ASSERT_EQ(value(it - 1), deltaMap._entries[counter - 1]);
+ SEQAN_ASSERT_EQ(*(it - 1), deltaMap._entries[counter - 1]);
SEQAN_ASSERT_EQ(counter, 0u);
for (; !(it == end(deltaMap, Standard())); it++, ++counter)
- SEQAN_ASSERT_EQ(value(it), deltaMap._entries[counter]);
+ SEQAN_ASSERT_EQ(*(it), deltaMap._entries[counter]);
SEQAN_ASSERT_EQ(counter, size(deltaMap));
for (; !(it == begin(deltaMap, Standard())); it--, --counter)
- SEQAN_ASSERT_EQ(value(it - 1), deltaMap._entries[counter - 1]);
+ SEQAN_ASSERT_EQ(*(it - 1), deltaMap._entries[counter - 1]);
SEQAN_ASSERT_EQ(counter, 0u);
}
diff --git a/tests/journaled_string_tree/test_journaled_string_tree.h b/tests/journaled_string_tree/test_journaled_string_tree.h
index 7d81e79..10bcdf9 100644
--- a/tests/journaled_string_tree/test_journaled_string_tree.h
+++ b/tests/journaled_string_tree/test_journaled_string_tree.h
@@ -290,7 +290,7 @@ SEQAN_DEFINE_TEST(test_journaled_string_tree_max_size)
typedef typename Member<JournaledStringTree<Dna5String>, JstDeltaMapMember>::Type TDeltaMap;
typedef typename Size<TDeltaMap>::Type TSize;
- SEQAN_ASSERT_EQ(maxSize(jst), MaxValue<TSize>::VALUE);
+ SEQAN_ASSERT_EQ(maxSize(jst), std::numeric_limits<TSize>::max());
}
#endif // TESTS_JOURNALED_STRING_TREE_TEST_JOURNALED_STRING_TREE_H_
diff --git a/tests/misc/test_misc.cpp b/tests/misc/test_misc.cpp
index 63aff88..b36fb58 100644
--- a/tests/misc/test_misc.cpp
+++ b/tests/misc/test_misc.cpp
@@ -64,13 +64,13 @@ SEQAN_DEFINE_TEST(test_misc_terminal_get_terminal_size)
{
using namespace seqan;
- unsigned cols = maxValue<unsigned>(), rows = maxValue<unsigned>();
+ unsigned cols = std::numeric_limits<unsigned>::max(), rows = std::numeric_limits<unsigned>::max();
bool succ = getTerminalSize(cols, rows);
#if !defined(STDLIB_VS)
SEQAN_ASSERT(succ);
- SEQAN_ASSERT_NEQ(cols, maxValue<unsigned>());
- SEQAN_ASSERT_NEQ(rows, maxValue<unsigned>());
+ SEQAN_ASSERT_NEQ(cols, std::numeric_limits<unsigned>::max());
+ SEQAN_ASSERT_NEQ(rows, std::numeric_limits<unsigned>::max());
#else // #if !defined(STDLIB_VS)
SEQAN_ASSERT_NOT(succ);
#endif // #if !defined(STDLIB_VS)
diff --git a/tests/parse_lm/test_parse_lm.h b/tests/parse_lm/test_parse_lm.h
index 5e4aada..692e989 100644
--- a/tests/parse_lm/test_parse_lm.h
+++ b/tests/parse_lm/test_parse_lm.h
@@ -48,7 +48,7 @@ SEQAN_DEFINE_TEST(test_parse_lm_local_match_constructor)
// Default constructor.
{
TLocalMatch localMatch;
- unsigned const maxU = MaxValue<unsigned>::VALUE;
+ unsigned const maxU = std::numeric_limits<unsigned>::max();
SEQAN_ASSERT_EQ(maxU, localMatch.id);
SEQAN_ASSERT_EQ(maxU, localMatch.subjectId);
diff --git a/tests/rna_io/CMakeLists.txt b/tests/rna_io/CMakeLists.txt
index d450d1e..fb2e9a7 100644
--- a/tests/rna_io/CMakeLists.txt
+++ b/tests/rna_io/CMakeLists.txt
@@ -15,7 +15,9 @@ message (STATUS "Configuring tests/rna_io")
# ----------------------------------------------------------------------------
# Search SeqAn and select dependencies.
-find_package (SeqAn REQUIRED)
+if (NOT "${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
+ find_package (SeqAn REQUIRED)
+endif ()
# ----------------------------------------------------------------------------
# Build Setup
diff --git a/tests/roi_io/test_roi_io.cpp b/tests/roi_io/test_roi_io.cpp
index a671ffa..df34312 100644
--- a/tests/roi_io/test_roi_io.cpp
+++ b/tests/roi_io/test_roi_io.cpp
@@ -90,8 +90,7 @@ SEQAN_DEFINE_TEST(test_roi_write_roi_record)
SEQAN_DEFINE_TEST(test_roi_roi_file_read)
{
- seqan::CharString inPath = SEQAN_PATH_TO_ROOT();
- append(inPath, "/tests/roi_io/example.roi");
+ seqan::CharString inPath = seqan::getAbsolutePath("/tests/roi_io/example.roi");
seqan::RoiFileIn roiFileIn(toCString(inPath));
@@ -129,7 +128,7 @@ SEQAN_DEFINE_TEST(test_roi_roi_file_read)
SEQAN_DEFINE_TEST(test_roi_roi_file_write)
{
- seqan::CharString tmpPath = SEQAN_PATH_TO_ROOT();
+ seqan::CharString tmpPath = SEQAN_TEMP_FILENAME();
append(tmpPath, ".roi");
seqan::RoiFileOut roiFileOut(toCString(tmpPath));
@@ -162,8 +161,7 @@ SEQAN_DEFINE_TEST(test_roi_roi_file_write)
close(roiFileOut);
- seqan::CharString goldPath(SEQAN_PATH_TO_ROOT());
- append(goldPath, "/tests/roi_io/example.roi");
+ seqan::CharString goldPath(seqan::getAbsolutePath("/tests/roi_io/example.roi"));
SEQAN_ASSERT(seqan::_compareTextFiles(toCString(tmpPath), toCString(goldPath)));
}
diff --git a/tests/score/test_score.cpp b/tests/score/test_score.cpp
index 9dc358a..bea5056 100644
--- a/tests/score/test_score.cpp
+++ b/tests/score/test_score.cpp
@@ -125,8 +125,7 @@ SEQAN_DEFINE_TEST(test_score_matrix) {
// Define path to BLOSUM62 matrix that we want to load.
// TODO(holtgrew): It should be easier to construct these paths.
- String<char> pathToTestSrc = SEQAN_PATH_TO_ROOT();
- append(pathToTestSrc, "/tests/score/");
+ String<char> pathToTestSrc = getAbsolutePath("/tests/score/");
String<char> pathToBlosum62(pathToTestSrc);
append(pathToBlosum62, "BLOSUM62");
@@ -251,8 +250,7 @@ SEQAN_DEFINE_TEST(test_score_matrix) {
SEQAN_DEFINE_TEST(test_score_matrix_file) {
// TODO(holtgrew): It should be easier to construct these paths.
// The path to the directory with the test's sources and fixtures.
- String<char> pathToTestSrc = SEQAN_PATH_TO_ROOT();
- append(pathToTestSrc, "/tests/score/");
+ String<char> pathToTestSrc = getAbsolutePath("/tests/score/");
// Load fixture BLOSUM62 matrix.
// TODO(holtgrew): Should be done in a function.
@@ -479,8 +477,7 @@ SEQAN_DEFINE_TEST(test_score_matrix_data) {
typedef Score<TValue, ScoreMatrix<AminoAcid, ScoreMatrixFile> > TScore;
// TODO(holtgrew): It should be easier to construct these paths.
- String<char> pathToTestSrc = SEQAN_PATH_TO_ROOT();
- append(pathToTestSrc, "/tests/score/");
+ String<char> pathToTestSrc = getAbsolutePath("/tests/score/");
// Test with BLOSUM30.
{
diff --git a/tests/seeds/test_align_banded_chain_impl.cpp b/tests/seeds/test_align_banded_chain_impl.cpp
index af04e69..220a0a4 100644
--- a/tests/seeds/test_align_banded_chain_impl.cpp
+++ b/tests/seeds/test_align_banded_chain_impl.cpp
@@ -66,7 +66,7 @@ void testBandedChainAlignmentEmptyChain(TGapCosts const &)
scoreScheme = Score<int,Simple>(5, -3, -1, -5);
int score = bandedChainAlignment(align, seedSet, scoreScheme, alignConfig, 5);
- SEQAN_ASSERT_EQ(score, MinValue<int>::VALUE);
+ SEQAN_ASSERT_EQ(score, std::numeric_limits<int>::min());
SEQAN_ASSERT_EQ(row(align,0), seqH);
SEQAN_ASSERT_EQ(row(align,1), seqV);
}
diff --git a/tests/seq_io/test_fai_index.h b/tests/seq_io/test_fai_index.h
index c05984b..a13cf27 100644
--- a/tests/seq_io/test_fai_index.h
+++ b/tests/seq_io/test_fai_index.h
@@ -39,8 +39,7 @@
SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_build)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(build(faiIndex, toCString(filePath)), true);
@@ -54,8 +53,7 @@ SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_build)
SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_write)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(build(faiIndex, toCString(filePath)), true);
@@ -64,15 +62,13 @@ SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_write)
seqan::CharString tmpOut = SEQAN_TEMP_FILENAME();
SEQAN_ASSERT_EQ(save(faiIndex, toCString(tmpOut)), true);
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/adeno_genome.fa.fai");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/adeno_genome.fa.fai");
SEQAN_ASSERT_MSG(seqan::_compareTextFiles(toCString(pathToExpected), toCString(tmpOut)), "Output should match example.");
}
SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_read)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(open(faiIndex, toCString(filePath)), true);
@@ -86,8 +82,7 @@ SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_read)
SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_read_sequence)
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(open(faiIndex, toCString(filePath)), true);
@@ -102,8 +97,7 @@ SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_read_region)
{
// From integers.
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(open(faiIndex, toCString(filePath)), true);
@@ -114,8 +108,7 @@ SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_read_region)
}
// From integers, over the end of the sequence.
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(open(faiIndex, toCString(filePath)), true);
@@ -126,8 +119,7 @@ SEQAN_DEFINE_TEST(test_seq_io_genomic_fai_index_read_region)
}
// From GenomicRegion.
{
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/adeno_genome.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/adeno_genome.fa");
seqan::FaiIndex faiIndex;
SEQAN_ASSERT_EQ(open(faiIndex, toCString(filePath)), true);
diff --git a/tests/seq_io/test_sequence_file.h b/tests/seq_io/test_sequence_file.h
index ccd0712..5c95d0a 100644
--- a/tests/seq_io/test_sequence_file.h
+++ b/tests/seq_io/test_sequence_file.h
@@ -47,8 +47,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_type_gz_fasta)
{
#if SEQAN_HAS_ZLIB
// Build path to file.
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/test_dna.fa.gz");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/test_dna.fa.gz");
// Create SequenceStream object.
SeqFileIn seqIO(toCString(filePath));
@@ -62,8 +61,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_type_bz2_fasta)
{
#if SEQAN_HAS_BZIP2
// Build path to file.
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/test_dna.fa.bz2");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/test_dna.fa.bz2");
// Create SequenceStream object.
SeqFileIn seqIO(toCString(filePath));
@@ -80,8 +78,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_type_bz2_fasta)
SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_format_text_fasta)
{
// Build path to file.
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/test_dna.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/test_dna.fa");
// Create SequenceStream object.
SeqFileIn seqIO(toCString(filePath));
@@ -93,8 +90,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_format_text_fasta)
SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_format_text_fastq)
{
// Build path to file.
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/test_dna.fq");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/test_dna.fq");
// Create SequenceStream object.
SeqFileIn seqIO(toCString(filePath));
@@ -111,8 +107,7 @@ template <typename TId, typename TSeq>
void testSeqIOSequenceFileReadRecordTextFasta()
{
// Build path to file.
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/test_dna.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/test_dna.fa");
// Create SequenceStream object.
SeqFileIn seqIO(toCString(filePath));
@@ -147,8 +142,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_read_record_text_fasta)
SEQAN_DEFINE_TEST(test_seq_io_sequence_file_read_all_text_fasta)
{
// Build path to file.
- seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
- append(filePath, "/tests/seq_io/test_dna.fa");
+ seqan::CharString filePath = getAbsolutePath("/tests/seq_io/test_dna.fa");
// Create SequenceStream object.
SeqFileIn seqIO(toCString(filePath));
@@ -196,8 +190,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_write_record_text_fasta)
close(seqIO); // Make sure we can read this later.
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/test_dna.fa");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/test_dna.fa");
SEQAN_ASSERT_MSG(seqan::_compareTextFilesAlt(toCString(pathToExpected), toCString(filePath)), "Output should match example.");
}
@@ -224,8 +217,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_write_all_text_fasta)
close(seqIO); // Make sure we can read this later.
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/test_dna.fa");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/test_dna.fa");
SEQAN_ASSERT_MSG(seqan::_compareTextFilesAlt(toCString(pathToExpected), toCString(filePath)), "Output should match example.");
}
@@ -234,8 +226,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_write_record_text_fastq_no_qual)
// Build path to file.
seqan::CharString filePath = SEQAN_TEMP_FILENAME();
append(filePath, ".fq");
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/test_dna.fq");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/test_dna.fq");
// Create SequenceStream object.
SeqFileIn seqIn(toCString(pathToExpected));
@@ -281,8 +272,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_write_record_text_fastq_with_qual)
close(seqIO); // Make sure we can read this later.
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/test_dna.fq");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/test_dna.fq");
SEQAN_ASSERT_MSG(seqan::_compareTextFilesAlt(toCString(pathToExpected), toCString(filePath)), "Output should match example.");
}
@@ -309,8 +299,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_write_all_text_fastq_no_qual)
close(seqIO); // Make sure we can read this later.
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/test_dna.fq");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/test_dna.fq");
SEQAN_ASSERT_MSG(seqan::_compareTextFilesAlt(toCString(pathToExpected), toCString(filePath)), "Output should match example.");
}
@@ -341,8 +330,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_write_all_text_fastq_with_qual)
close(seqIO); // Make sure we can read this later.
- seqan::CharString pathToExpected = SEQAN_PATH_TO_ROOT();
- append(pathToExpected, "/tests/seq_io/test_dna.fq");
+ seqan::CharString pathToExpected = getAbsolutePath("/tests/seq_io/test_dna.fq");
SEQAN_ASSERT_MSG(seqan::_compareTextFilesAlt(toCString(pathToExpected), toCString(filePath)), "Output should match example.");
}
diff --git a/tests/sequence/test_sequence.h b/tests/sequence/test_sequence.h
index d8dc2c6..36c19f1 100755
--- a/tests/sequence/test_sequence.h
+++ b/tests/sequence/test_sequence.h
@@ -1400,39 +1400,20 @@ std::cout << __LINE__ << std::endl;
std::cout << __LINE__ << std::endl;
}
-// Test of getValue().
-template <typename TString>
-void testSequenceGetValue(TString & /*Tag*/)
-{
- typedef typename Value<TString>::Type TValue;
-
- // In contrast to value(), getValue() does not return a reference but a copy.
- // We test this using the variable value_.
- TString string;
- assign(string, "ACGT");
- TValue dummy_ = 'T';
- TValue & value_ = dummy_;
- SEQAN_ASSERT_EQ(value_, TValue('T'));
-
- value_ = getValue(string, 0);
- SEQAN_ASSERT_EQ(value_, TValue('A'));
-
- value_ = 'T';
- SEQAN_ASSERT_EQ(getValue(string, 0), TValue('A'));
-}
-
SEQAN_TYPED_TEST(StringTestCommon, GetValue)
{
- CountingChar::clear();
-
- typename TestFixture::TString str;
- testSequenceGetValue(str);
-
- //TODO
-// typename TestFixture::TString const constStr;
-// testSequenceGetValue(constStr);
+ SEQAN_SKIP_TEST; // getValue() is deprecated.
- testConstructDeconstruct(str);
+// CountingChar::clear();
+//
+// typename TestFixture::TString str;
+// testSequenceGetValue(str);
+//
+// //TODO
+//// typename TestFixture::TString const constStr;
+//// testSequenceGetValue(constStr);
+//
+// testConstructDeconstruct(str);
}
// Test of insert().
@@ -1536,9 +1517,9 @@ void testSequenceIter(TString & /*Tag*/)
TIterator iterator = iter(string, 0);
TStandardIterator standardIterator = iter(string, 0);
TRootedIterator rootedIterator = iter(string, 0);
- SEQAN_ASSERT_EQ(getValue(iterator), getValue(string, 0));
- SEQAN_ASSERT_EQ(getValue(standardIterator), getValue(string, 0));
- SEQAN_ASSERT_EQ(getValue(rootedIterator), getValue(string, 0));
+ SEQAN_ASSERT_EQ(*iterator, getValue(string, 0));
+ SEQAN_ASSERT_EQ(*standardIterator, getValue(string, 0));
+ SEQAN_ASSERT_EQ(*rootedIterator, getValue(string, 0));
}
// Test on a non empty string.
@@ -1548,9 +1529,9 @@ void testSequenceIter(TString & /*Tag*/)
TIterator iterator = iter(string, 3);
TStandardIterator standardIterator = iter(string, 3);
TRootedIterator rootedIterator = iter(string, 3);
- SEQAN_ASSERT_EQ(getValue(iterator), getValue(string, 3));
- SEQAN_ASSERT_EQ(getValue(standardIterator), getValue(string, 3));
- SEQAN_ASSERT_EQ(getValue(rootedIterator), getValue(string, 3));
+ SEQAN_ASSERT_EQ(*iterator, getValue(string, 3));
+ SEQAN_ASSERT_EQ(*standardIterator, getValue(string, 3));
+ SEQAN_ASSERT_EQ(*rootedIterator, getValue(string, 3));
}
}
diff --git a/tests/sequence/test_string_packed_extension.h b/tests/sequence/test_string_packed_extension.h
index e91005b..652369a 100644
--- a/tests/sequence/test_string_packed_extension.h
+++ b/tests/sequence/test_string_packed_extension.h
@@ -628,7 +628,7 @@ void testStringPackedExtensionBitScanForward()
{
TBitString str;
- SEQAN_ASSERT_EQ(bitScanForward(str), MaxValue<TPosition>::VALUE);
+ SEQAN_ASSERT_EQ(bitScanForward(str), std::numeric_limits<TPosition>::max());
}
}
@@ -662,7 +662,7 @@ void testStringPackedExtensionBitScanReverse()
{
TBitString str;
- SEQAN_ASSERT_EQ(bitScanForward(str), MaxValue<TPosition>::VALUE);
+ SEQAN_ASSERT_EQ(bitScanForward(str), std::numeric_limits<TPosition>::max());
}
}
diff --git a/tests/sequence/test_string_set.h b/tests/sequence/test_string_set.h
index 4b7c313..550c0af 100755
--- a/tests/sequence/test_string_set.h
+++ b/tests/sequence/test_string_set.h
@@ -1353,50 +1353,19 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Front)
// testConstructDeconstruct(strSet);
}
-// Test of getValue().
-template <typename TStringSet>
-void testStringSetGetValue(TStringSet & /*Tag*/)
-{
- using namespace seqan;
-
- typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
- typedef typename TestStringSetValue_<TStringSet>::Type TString;
-
- // In contrast to value(), getValue() does not return a reference but a copy.
- // We test this using the variable value_.
- TString str("CG");
- TString str2("ACGT");
- TString str3("CGACGT");
-
- TNonConstStringSet nonConstStringSet;
- appendValue(nonConstStringSet, str);
- appendValue(nonConstStringSet, str2);
- appendValue(nonConstStringSet, str3);
- TStringSet stringSet(nonConstStringSet);
- SEQAN_ASSERT(TString(getValue(stringSet, 1)) == TString(str2));
-}
-
-// TODO(singer): No appendValue for string sets of packed strings
-template <typename TValue, typename TStringSetSpec>
-void testStringSetGetValue(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-template <typename TValue, typename TStringSetSpec>
-void testStringSetGetValue(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-template <typename TValue, typename TStringSetSpec>
-void testStringSetGetValue(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-template <typename TValue, typename TStringSetSpec>
-void testStringSetGetValue(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-
SEQAN_TYPED_TEST(StringSetTestCommon, GetValue)
{
- CountingChar::clear();
+ SEQAN_SKIP_TEST; // getValue() is deprecated.
- typename TestFixture::TStringSet strSet;
- testStringSetGetValue(strSet);
-
- typename TestFixture::TStringSet const constStrSet;
- testStringSetGetValue(constStrSet);
-
-// testConstructDeconstruct(strSet);
+// CountingChar::clear();
+//
+// typename TestFixture::TStringSet strSet;
+// testStringSetGetValue(strSet);
+//
+// typename TestFixture::TStringSet const constStrSet;
+// testStringSetGetValue(constStrSet);
+//
+//// testConstructDeconstruct(strSet);
}
// TODO (singer): not defined for const string sets.
@@ -1544,10 +1513,10 @@ void testStringSetIter(TStringSet & /*Tag*/)
TIterator iterator = iter(stringSet, 0);
TStandardIterator standardIterator = iter(stringSet, 0);
TRootedIterator rootedIterator = iter(stringSet, 0);
- SEQAN_ASSERT(TString(getValue(iterator)) == "AAAA");
- SEQAN_ASSERT(getValue(iterator) == getValue(stringSet, 0));
- SEQAN_ASSERT(getValue(standardIterator) == getValue(stringSet, 0));
- SEQAN_ASSERT(getValue(rootedIterator) == getValue(stringSet, 0));
+ SEQAN_ASSERT(TString(*iterator) == "AAAA");
+ SEQAN_ASSERT(*iterator == getValue(stringSet, 0));
+ SEQAN_ASSERT(*standardIterator == getValue(stringSet, 0));
+ SEQAN_ASSERT(*rootedIterator == getValue(stringSet, 0));
}
// Test on a non empty stringSet.
@@ -1565,10 +1534,10 @@ void testStringSetIter(TStringSet & /*Tag*/)
TIterator iterator = iter(stringSet, 3);
TStandardIterator standardIterator = iter(stringSet, 3);
TRootedIterator rootedIterator = iter(stringSet, 3);
- SEQAN_ASSERT(TString(getValue(iterator)) == "TTTT");
- SEQAN_ASSERT(getValue(iterator) == getValue(stringSet, 3));
- SEQAN_ASSERT(getValue(standardIterator) == getValue(stringSet, 3));
- SEQAN_ASSERT(getValue(rootedIterator) == getValue(stringSet, 3));
+ SEQAN_ASSERT(TString(*iterator) == "TTTT");
+ SEQAN_ASSERT(*iterator == getValue(stringSet, 3));
+ SEQAN_ASSERT(*standardIterator == getValue(stringSet, 3));
+ SEQAN_ASSERT(*rootedIterator == getValue(stringSet, 3));
}
}
diff --git a/tests/simd/CMakeLists.txt b/tests/simd/CMakeLists.txt
index 02e17c9..030c4ca 100644
--- a/tests/simd/CMakeLists.txt
+++ b/tests/simd/CMakeLists.txt
@@ -15,7 +15,10 @@ message (STATUS "Configuring tests/simd")
# ----------------------------------------------------------------------------
# Search SeqAn and select dependencies.
-find_package (SeqAn REQUIRED)
+if (NOT "${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
+ find_package (SeqAn REQUIRED)
+endif ()
+
include (SeqAnSimdUtility)
# ----------------------------------------------------------------------------
diff --git a/tests/simd/test_simd_vector.h b/tests/simd/test_simd_vector.h
index d9e3c24..822f271 100644
--- a/tests/simd/test_simd_vector.h
+++ b/tests/simd/test_simd_vector.h
@@ -193,7 +193,7 @@ SEQAN_DEFINE_TEST(test_simd_types)
static_assert(LENGTH<SimdVector<uint32_t, 4>::Type>::VALUE == 4, "128bit register fits 4 int's");
SimdVector<uint32_t, 4>::Type a128 = {0, 1, 2, 3};
for (uint32_t i = 0; i < 4; ++i) {
- // std::cout << i << ": " << a128[i] << " = " << i << std::endl;
+ // std::cout << "DEBUG: " << i << ": " << a128[i] << " = " << i << std::endl;
SEQAN_ASSERT_EQ(a128[i], i);
}
@@ -212,7 +212,7 @@ SEQAN_DEFINE_TEST(test_simd_types)
static_assert(LENGTH<SimdVector<uint32_t, 8>::Type>::VALUE == 8, "256bit register fits 8 int's");
SimdVector<uint32_t, 8>::Type a256 = {0, 1, 2, 3, 4, 5, 6, 7};
for (uint32_t i = 0; i < 8; ++i) {
- // std::cout << i << ": " << a256[i] << " = " << i << std::endl;
+ // std::cout << "DEBUG: " << i << ": " << a256[i] << " = " << i << std::endl;
SEQAN_ASSERT_EQ(a256[i], i);
}
#endif
@@ -231,7 +231,7 @@ SEQAN_DEFINE_TEST(test_simd_types)
static_assert(LENGTH<SimdVector<uint32_t, 16>::Type>::VALUE == 16, "512bit register fits 16 int's");
SimdVector<uint32_t, 16>::Type a512 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
for (uint32_t i = 0; i < 16; ++i) {
- // std::cout << i << ": " << a512[i] << " = " << i << std::endl;
+ // std::cout << "DEBUG: " << i << ": " << a512[i] << " = " << i << std::endl;
SEQAN_ASSERT_EQ(a512[i], i);
}
#endif
@@ -299,7 +299,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, ClearVector)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)a[i] << " = " << 0 << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)a[i] << " = " << 0 << std::endl;
SEQAN_ASSERT_EQ(a[i], zero);
}
}
@@ -316,7 +316,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, CreateVector)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)a[i] << " = " << 23 << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)a[i] << " = " << 23 << std::endl;
SEQAN_ASSERT_EQ(a[i], scalar);
}
}
@@ -334,7 +334,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, FillVectorConstant)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)a[i] << " = " << i << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)a[i] << " = " << i << std::endl;
SEQAN_ASSERT_EQ(a[i], static_cast<TValue>(5));
}
}
@@ -360,7 +360,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, FillVector)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)a[i] << " = " << i << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)a[i] << " = " << i << std::endl;
SEQAN_ASSERT_EQ(a[i], static_cast<TValue>(i));
}
}
@@ -389,7 +389,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, CmpEqual)
{
TValue a_i = (i == 1) ? 23 : (-3 + i * 3);
TValue b_i = (i == 1) ? 23 : (length - i);
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " == " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " == " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] == b[i] ? true_ : false_);
SEQAN_ASSERT_EQ(c[i], a_i == b_i ? true_ : false_);
}
@@ -414,7 +414,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, CmpGt)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " > " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " > " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] > b[i] ? true_ : false_);
SEQAN_ASSERT_EQ(c[i], a_i > b_i ? true_ : false_);
}
@@ -435,12 +435,33 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Max)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = max (" << (int)a[i] << ", " << (int)b[i] << ")" << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = max (" << (int)a[i] << ", " << (int)b[i] << ")" << std::endl;
SEQAN_ASSERT_EQ(c[i], std::max(a[i], b[i]));
SEQAN_ASSERT_EQ(c[i], std::max(a_i, b_i));
}
}
+SEQAN_TYPED_TEST(SimdVectorTestCommon, Min)
+{
+ using namespace seqan;
+ using TSimdVector = typename TestFixture::TSimdVector;
+ using TValue = typename TestFixture::TValue;
+ constexpr auto length = TestFixture::LENGTH;
+
+ TSimdVector a{0u}, b{0u};
+ fillVectors(a, b);
+
+ auto c = min(a, b);
+
+ for (auto i = 0; i < length; ++i)
+ {
+ TValue a_i = -3 + i * 3, b_i = length - i;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = min (" << (int)a[i] << ", " << (int)b[i] << ")" << std::endl;
+ SEQAN_ASSERT_EQ(c[i], std::min(a[i], b[i]));
+ SEQAN_ASSERT_EQ(c[i], std::min(a_i, b_i));
+ }
+}
+
SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseOr)
{
using namespace seqan;
@@ -456,7 +477,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseOr)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " | " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " | " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] | b[i]);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i | b_i));
}
@@ -478,7 +499,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseOrAssign)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " | " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " | " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] | b[i]);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i | b_i));
}
@@ -499,7 +520,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseAnd)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " & " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " & " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] & b[i]);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i & b_i));
}
@@ -521,7 +542,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseAndAssign)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " & " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " & " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] & b[i]);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i & b_i));
}
@@ -542,7 +563,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseNot)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = ~" << (int)a[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = ~" << (int)a[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(~a[i]));
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(~a_i));
}
@@ -563,7 +584,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Addition)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " + " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " + " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a[i] + b[i]));
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i + b_i));
}
@@ -584,7 +605,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Subtraction)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " - " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " - " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a[i] - b[i]));
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i - b_i));
}
@@ -605,7 +626,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Multiplication)
for (size_t i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " * " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " * " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a[i] * b[i]));
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i * b_i));
}
@@ -626,7 +647,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Division)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " / " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " / " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] / b[i]);
SEQAN_ASSERT_EQ(c[i], a_i / b_i);
}
@@ -646,7 +667,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, BitwiseAndNot)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = (~" << (int)a[i] << ") & " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = (~" << (int)a[i] << ") & " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(~a[i] & b[i]));
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(~(-3 + i * 3) & (length - i)));
}
@@ -671,7 +692,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, ShiftRightLogical)
for (auto i = 0; i < length; ++i)
{
TValue a_i = i * 3;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " >> " << (int)2 << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " >> " << (int)2 << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] >> 2);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a_i >> 2));
}
@@ -692,7 +713,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Blend)
for (auto i = 0; i < length; ++i)
{
TValue a_i = -3 + i * 3, b_i = length - i;
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " > " << (int)b[i] << " ? " << (int)a[i] << " : " << (int)b[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << " > " << (int)b[i] << " ? " << (int)a[i] << " : " << (int)b[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i] > b[i] ? (TValue)a[i] : (TValue)b[i]);
SEQAN_ASSERT_EQ(c[i], a_i > b_i ? a_i : b_i);
}
@@ -713,7 +734,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Storeu)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i]);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(-3 + i * 3));
}
@@ -735,7 +756,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Load)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[i]);
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(-3 + i * 3));
}
@@ -758,7 +779,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Gather)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[idx[i]]);
SEQAN_ASSERT_EQ(c[i], a[length - i - 1]);
}
@@ -779,7 +800,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, ShuffleConstant1)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << ", idx: " << (int)idx[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << ", idx: " << (int)idx[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[idx[i]]);
SEQAN_ASSERT_EQ(c[i], a[1]);
}
@@ -800,7 +821,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, ShuffleConstant2)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << ", idx: " << (int)idx[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << ", idx: " << (int)idx[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[idx[i]]);
SEQAN_ASSERT_EQ(c[i], a[length-2]);
}
@@ -822,7 +843,7 @@ SEQAN_TYPED_TEST(SimdVectorTestCommon, Shuffle)
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << ", idx: " << (int)idx[i] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (int)c[i] << " = " << (int)a[idx[i]] << ", idx: " << (int)idx[i] << std::endl;
SEQAN_ASSERT_EQ(c[i], a[idx[i]]);
SEQAN_ASSERT_EQ(c[i], a[length - i - 1]);
}
@@ -849,7 +870,7 @@ inline void test_gather_array()
for (auto i = 0; i < length; ++i)
{
- // std::cout << i << " / " << length << ": " << (TValue)c[i] << " = " << (TValue)a[idx[i]] << std::endl;
+ // std::cout << "DEBUG: " << i << " / " << length << ": " << (TValue)c[i] << " = " << (TValue)a[idx[i]] << std::endl;
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a[idx[i]]));
SEQAN_ASSERT_EQ(c[i], static_cast<TValue>(a[length - i - 1]));
}
diff --git a/tests/statistics/test_statistics_base.h b/tests/statistics/test_statistics_base.h
index ec27381..ba4395e 100644
--- a/tests/statistics/test_statistics_base.h
+++ b/tests/statistics/test_statistics_base.h
@@ -159,8 +159,7 @@ SEQAN_DEFINE_TEST(test_statistics_statistics)
MarkovModel<TAlphabet> mmNew(1);
- std::string buffer = SEQAN_PATH_TO_ROOT();
- buffer +="/tests/statistics/zscore_human_mm.3";
+ std::string buffer = getAbsolutePath("/tests/statistics/zscore_human_mm.3");
FILE *fd = fopen(buffer.c_str(), "r");
read(fd, mm);
fclose(fd);
diff --git a/tests/store/test_store_io.h b/tests/store/test_store_io.h
index 358c636..de8331d 100644
--- a/tests/store/test_store_io.h
+++ b/tests/store/test_store_io.h
@@ -45,8 +45,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_ucsc_known_genes)
{
// The file contains 13 annotations in total which will be checked line
// after line.
- seqan::CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/store/example_knownGene.txt");
+ seqan::CharString ucscPath = seqan::getAbsolutePath("/tests/store/example_knownGene.txt");
UcscFileIn fin(toCString(ucscPath));
seqan::FragmentStore<> store;
@@ -56,10 +55,10 @@ SEQAN_DEFINE_TEST(test_store_io_read_ucsc_known_genes)
it = begin(store, AnnotationTree<>());
SEQAN_ASSERT_EQ(getType(it), "<root>");
- SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, maxValue(getAnnotation(it).beginPos));
- SEQAN_ASSERT_EQ(getAnnotation(it).endPos, maxValue(getAnnotation(it).endPos));
+ SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, std::numeric_limits<decltype(getAnnotation(it).beginPos)>::max());
+ SEQAN_ASSERT_EQ(getAnnotation(it).endPos, std::numeric_limits<decltype(getAnnotation(it).endPos)>::max());
SEQAN_ASSERT_EQ(value(it), 0u);
- SEQAN_ASSERT_EQ(getAnnotation(it).parentId, maxValue(getAnnotation(it).parentId));
+ SEQAN_ASSERT_EQ(getAnnotation(it).parentId, std::numeric_limits<decltype(getAnnotation(it).parentId)>::max());
SEQAN_ASSERT_EQ(getParentName(it), "<root>");
goNext(it);
@@ -166,10 +165,8 @@ SEQAN_DEFINE_TEST(test_store_io_read_ucsc_known_genes_and_isoforms)
{
// The file contains 13 annotations in total which will be checked line
// after line.
- seqan::CharString ucscGenesPath = SEQAN_PATH_TO_ROOT();
- append(ucscGenesPath, "/tests/store/example_knownGene.txt");
- seqan::CharString ucscIsoformsPath = SEQAN_PATH_TO_ROOT();
- append(ucscIsoformsPath, "/tests/store/example_knownIsoforms.txt");
+ seqan::CharString ucscGenesPath = getAbsolutePath("/tests/store/example_knownGene.txt");
+ seqan::CharString ucscIsoformsPath = getAbsolutePath("/tests/store/example_knownIsoforms.txt");
UcscFileIn finGenes(toCString(ucscGenesPath));
UcscFileIn finIsoforms(toCString(ucscIsoformsPath));
@@ -181,10 +178,10 @@ SEQAN_DEFINE_TEST(test_store_io_read_ucsc_known_genes_and_isoforms)
it = begin(store, AnnotationTree<>());
SEQAN_ASSERT_EQ(getType(it), "<root>");
- SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, maxValue(getAnnotation(it).beginPos));
- SEQAN_ASSERT_EQ(getAnnotation(it).endPos, maxValue(getAnnotation(it).endPos));
+ SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, std::numeric_limits<decltype(getAnnotation(it).beginPos)>::max());
+ SEQAN_ASSERT_EQ(getAnnotation(it).endPos, std::numeric_limits<decltype(getAnnotation(it).endPos)>::max());
SEQAN_ASSERT_EQ(value(it), 0u);
- SEQAN_ASSERT_EQ(getAnnotation(it).parentId, maxValue(getAnnotation(it).parentId));
+ SEQAN_ASSERT_EQ(getAnnotation(it).parentId, std::numeric_limits<decltype(getAnnotation(it).parentId)>::max());
SEQAN_ASSERT_EQ(getParentName(it), "<root>");
goNext(it);
@@ -325,8 +322,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_ucsc_known_genes_and_isoforms)
SEQAN_DEFINE_TEST(test_store_io_write_ucsc_known_genes)
{
- seqan::CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/store/example_knownGene.txt");
+ seqan::CharString ucscPath = getAbsolutePath("/tests/store/example_knownGene.txt");
UcscFileIn fin(toCString(ucscPath));
seqan::FragmentStore<> store;
@@ -338,16 +334,14 @@ SEQAN_DEFINE_TEST(test_store_io_write_ucsc_known_genes)
writeRecords(fout, store);
close(fout);
- seqan::CharString goldPath = SEQAN_PATH_TO_ROOT();
- append(goldPath, "/tests/store/example_knownGene.txt");
+ seqan::CharString goldPath = getAbsolutePath("/tests/store/example_knownGene.txt");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPath), toCString(goldPath)));
}
SEQAN_DEFINE_TEST(test_store_io_read_gff)
{
- seqan::CharString gffPath = SEQAN_PATH_TO_ROOT();
- append(gffPath, "/tests/store/example.gff");
+ seqan::CharString gffPath = getAbsolutePath("/tests/store/example.gff");
GffFileIn f(toCString(gffPath));
typedef typename seqan::FragmentStore<>::TAnnotationStoreElement::TId TId;
@@ -360,10 +354,10 @@ SEQAN_DEFINE_TEST(test_store_io_read_gff)
it = begin(store, AnnotationTree<>());
SEQAN_ASSERT_EQ(getType(it), "<root>");
- SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, maxValue(getAnnotation(it).beginPos));
- SEQAN_ASSERT_EQ(getAnnotation(it).endPos, maxValue(getAnnotation(it).endPos));
+ SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, std::numeric_limits<decltype(getAnnotation(it).beginPos)>::max());
+ SEQAN_ASSERT_EQ(getAnnotation(it).endPos, std::numeric_limits<decltype(getAnnotation(it).endPos)>::max());
SEQAN_ASSERT_EQ(value(it), 0u);
- SEQAN_ASSERT_EQ(getAnnotation(it).parentId, maxValue<TId>());
+ SEQAN_ASSERT_EQ(getAnnotation(it).parentId, std::numeric_limits<TId>::max());
SEQAN_ASSERT_EQ(getParentName(it), "<root>");
goNext(it);
@@ -393,8 +387,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_gff)
SEQAN_DEFINE_TEST(test_store_io_write_gff)
{
- seqan::CharString goldPath = SEQAN_PATH_TO_ROOT();
- append(goldPath, "/tests/store/example.gff");
+ seqan::CharString goldPath = getAbsolutePath("/tests/store/example.gff");
GffFileIn fin(toCString(goldPath));
seqan::FragmentStore<> store;
@@ -413,8 +406,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_gtf)
{
typedef typename seqan::FragmentStore<>::TAnnotationStoreElement::TId TId;
- seqan::CharString gtfPath = SEQAN_PATH_TO_ROOT();
- append(gtfPath, "/tests/store/example.gtf");
+ seqan::CharString gtfPath = getAbsolutePath("/tests/store/example.gtf");
GffFileIn fin(toCString(gtfPath));
seqan::FragmentStore<> store;
@@ -424,10 +416,10 @@ SEQAN_DEFINE_TEST(test_store_io_read_gtf)
it = begin(store, AnnotationTree<>());
SEQAN_ASSERT_EQ(getType(it), "<root>");
- SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, maxValue(getAnnotation(it).beginPos));
- SEQAN_ASSERT_EQ(getAnnotation(it).endPos, maxValue(getAnnotation(it).endPos));
+ SEQAN_ASSERT_EQ(getAnnotation(it).beginPos, std::numeric_limits<decltype(getAnnotation(it).beginPos)>::max());
+ SEQAN_ASSERT_EQ(getAnnotation(it).endPos, std::numeric_limits<decltype(getAnnotation(it).endPos)>::max());
SEQAN_ASSERT_EQ(value(it), 0u);
- SEQAN_ASSERT_EQ(getAnnotation(it).parentId, maxValue<TId>());
+ SEQAN_ASSERT_EQ(getAnnotation(it).parentId, std::numeric_limits<TId>::max());
SEQAN_ASSERT_EQ(getParentName(it), "<root>");
goNext(it);
@@ -529,8 +521,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_gtf)
SEQAN_DEFINE_TEST(test_store_io_write_gtf)
{
- seqan::CharString goldPath = SEQAN_PATH_TO_ROOT();
- append(goldPath, "/tests/store/example.gtf");
+ seqan::CharString goldPath = getAbsolutePath("/tests/store/example.gtf");
GffFileIn fin(toCString(goldPath));
seqan::FragmentStore<> store;
@@ -551,11 +542,11 @@ SEQAN_DEFINE_TEST(test_store_io_sam)
FragmentStore<> store;
// 1. LOAD CONTIGS
- std::string goldPathRef = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.fa";
+ std::string goldPathRef = getAbsolutePath("/tests/store/ex1.fa");
loadContigs(store, toCString(goldPathRef));
// 2. LOAD SAM ALIGNMENTS
- std::string goldPathSam = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.copy.sam";
+ std::string goldPathSam = getAbsolutePath("/tests/store/ex1.copy.sam");
BamFileIn inFile(toCString(goldPathSam));
readRecords(store, inFile);
@@ -573,11 +564,11 @@ SEQAN_DEFINE_TEST(test_store_io_sam2)
FragmentStore<> store;
// 1. LOAD CONTIGS
- std::string goldPathRef = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.fa";
+ std::string goldPathRef = getAbsolutePath("/tests/store/ex1.fa");
loadContigs(store, toCString(goldPathRef));
// 2. LOAD SAM ALIGNMENTS
- std::string goldPathSam = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.copy.sam";
+ std::string goldPathSam = getAbsolutePath("/tests/store/ex1.copy.sam");
BamFileIn inFile(toCString(goldPathSam));
readRecords(store, inFile);
@@ -595,7 +586,7 @@ void _appendReadAlignments(TFragStore &store, char const *fileName)
{
using namespace seqan;
- std::string str = (std::string)SEQAN_PATH_TO_ROOT() + fileName;
+ std::string str = getAbsolutePath(fileName);
BamFileIn inFile(str.c_str());
readRecords(store, inFile);
}
@@ -612,7 +603,8 @@ void _writeStore(TFragStore &store, std::string const &outPath, char const *suff
printAlignment(file, layout, store, 1, 0, 1030, 0, 36);
file.close();
- std::string goldPathTxt = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.splitmerge" + suffix;
+ std::string goldFileName = (std::string)"/tests/store/ex1.splitmerge" + (std::string)suffix;
+ std::string goldPathTxt = seqan::getAbsolutePath(goldFileName.c_str());
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPathTxt), toCString(goldPathTxt)));
}
@@ -623,7 +615,7 @@ SEQAN_DEFINE_TEST(test_store_io_split_sam)
FragmentStore<> store;
// 1. LOAD CONTIGS
- std::string fastaFileName = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.fa";
+ std::string fastaFileName = seqan::getAbsolutePath("/tests/store/ex1.fa");
loadContigs(store, toCString(fastaFileName));
std::string outPath = (std::string)SEQAN_TEMP_FILENAME();
@@ -642,7 +634,7 @@ SEQAN_DEFINE_TEST(test_store_io_split_sam)
writeRecords(outFile, store);
close(outFile);
- std::string goldPathSam = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.splitmerge.sam";
+ std::string goldPathSam = seqan::getAbsolutePath("/tests/store/ex1.splitmerge.sam");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPathSam), toCString(goldPathSam)));
}
@@ -654,11 +646,11 @@ SEQAN_DEFINE_TEST(test_store_io_read_bam)
FragmentStore<> store;
// 1. LOAD CONTIGS
- std::string fastaFileName = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.fa";
+ std::string fastaFileName = seqan::getAbsolutePath("/tests/store/ex1.fa");
loadContigs(store, toCString(fastaFileName));
// 2. LOAD BAM ALIGNMENTS
- std::string bamFileName = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.bam";
+ std::string bamFileName = seqan::getAbsolutePath("/tests/store/ex1.bam");
// Read reference Sam from file.
{
@@ -678,8 +670,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_bam)
close(outFile);
// 4. COMPARE BOTH SAM FILES
- CharString samFileName = SEQAN_PATH_TO_ROOT();
- append(samFileName, "/tests/store/ex1.copy.sam");
+ CharString samFileName = seqan::getAbsolutePath("/tests/store/ex1.copy.sam");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(samFileName), toCString(outFileName)));
}
@@ -690,7 +681,7 @@ SEQAN_DEFINE_TEST(test_store_io_read_bam)
SEQAN_DEFINE_TEST(test_store_io_read_amos)
{
// Get path to input file.
- std::string inPath = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/toy.amos";
+ std::string inPath = seqan::getAbsolutePath("/tests/store/toy.amos");
// Get path to temporary file.
std::string outPathSam = (std::string)SEQAN_TEMP_FILENAME() + ".sam";
std::string outPathFasta = (std::string)SEQAN_TEMP_FILENAME() + ".fa";
@@ -718,11 +709,9 @@ SEQAN_DEFINE_TEST(test_store_io_read_amos)
SEQAN_ASSERT_EQ(length(store.matePairStore), 1u);
SEQAN_ASSERT_EQ(length(store.alignedReadStore), 12u);
- seqan::CharString goldPathSam = SEQAN_PATH_TO_ROOT();
- append(goldPathSam, "/tests/store/amos_to_sam_result.sam");
+ seqan::CharString goldPathSam = seqan::getAbsolutePath("/tests/store/amos_to_sam_result.sam");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPathSam), toCString(goldPathSam)));
- seqan::CharString goldPathFasta = SEQAN_PATH_TO_ROOT();
- append(goldPathFasta, "/tests/store/amos_to_sam_result.fasta");
+ seqan::CharString goldPathFasta = seqan::getAbsolutePath("/tests/store/amos_to_sam_result.fasta");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPathFasta), toCString(goldPathFasta)));
@@ -732,8 +721,8 @@ SEQAN_DEFINE_TEST(test_store_io_read_amos)
SEQAN_DEFINE_TEST(test_store_io_write_amos)
{
// Get path to input files.
- std::string inPathSam = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.copy.sam";
- std::string inPathFasta = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/ex1.fa";
+ std::string inPathSam = seqan::getAbsolutePath("/tests/store/ex1.copy.sam");
+ std::string inPathFasta = seqan::getAbsolutePath("/tests/store/ex1.fa");
// Get path to temporary file.
std::string outPathAmos = SEQAN_TEMP_FILENAME();
@@ -749,8 +738,7 @@ SEQAN_DEFINE_TEST(test_store_io_write_amos)
fAmosOut.close();
// Compare result.
- seqan::CharString goldPathAmos = SEQAN_PATH_TO_ROOT();
- append(goldPathAmos, "/tests/store/sam_to_amos_result.amos");
+ seqan::CharString goldPathAmos = seqan::getAbsolutePath("/tests/store/sam_to_amos_result.amos");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(toCString(outPathAmos), toCString(goldPathAmos)));
}
@@ -758,7 +746,7 @@ SEQAN_DEFINE_TEST(test_store_io_write_amos)
SEQAN_DEFINE_TEST(test_store_io_readwrite_amos)
{
// Get path to input files.
- std::string goldPathAmos = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/store/toy.amos";
+ std::string goldPathAmos = seqan::getAbsolutePath("/tests/store/toy.amos");
// Get path to temporary file.
std::string outPathAmos = SEQAN_TEMP_FILENAME();
diff --git a/tests/store/test_store_io_bam.h b/tests/store/test_store_io_bam.h
index 0489589..e9df78d 100644
--- a/tests/store/test_store_io_bam.h
+++ b/tests/store/test_store_io_bam.h
@@ -44,15 +44,15 @@ SEQAN_DEFINE_TEST(test_store_io_bam_read)
/*
// Construct name to reference FASTA files.
char fastaBuffer[1023];
- strcpy(fastaBuffer, SEQAN_PATH_TO_ROOT());
+ strcpy(fastaBuffer, getAbsolutePath(""));
strcat(fastaBuffer, "/projects/tests/store/toy.fa");
// Construct file name to SAM file.
char samBuffer[1023];
- strcpy(samBuffer, SEQAN_PATH_TO_ROOT());
+ strcpy(samBuffer, getAbsolutePath(""));
strcat(samBuffer, "/projects/tests/store/toy.sam");
// Construct file name to BAM file.
char bamBuffer[1023];
- strcpy(bamBuffer, SEQAN_PATH_TO_ROOT());
+ strcpy(bamBuffer, getAbsolutePath(""));
strcat(bamBuffer, "/projects/tests/store/toy.bam");
// Load FragmentStore from SAM and BAM file.
@@ -117,12 +117,12 @@ SEQAN_DEFINE_TEST(test_store_io_bam_write)
{
// Construct name to reference FASTA files.
char fastaBuffer[1023];
- strcpy(fastaBuffer, SEQAN_PATH_TO_ROOT());
+ strcpy(fastaBuffer, getAbsolutePath(""));
strcat(fastaBuffer, "/projects/tests/store/toy.fa");
// strcat(fastaBuffer, "/projects/tests/store/ex1.fa");
// Construct file name to SAM file.
char samBuffer[1023];
- strcpy(samBuffer, SEQAN_PATH_TO_ROOT());
+ strcpy(samBuffer, getAbsolutePath(""));
strcat(samBuffer, "/projects/tests/store/toy.sam");
// strcat(samBuffer, "/projects/tests/store/ex1.sam");
// Construct path to a temporary output file.
diff --git a/tests/stream/test_stream_lexical_cast.h b/tests/stream/test_stream_lexical_cast.h
index f8c40f9..19c0d78 100644
--- a/tests/stream/test_stream_lexical_cast.h
+++ b/tests/stream/test_stream_lexical_cast.h
@@ -197,7 +197,7 @@ SEQAN_TYPED_TEST(LexicalCastTest, FloatingPointSource)
assign(this->source, "-123.45");
bool success = lexicalCast(this->target, this->source);
- SEQAN_ASSERT(success ^ IsIntegral<typename TestFixture::TTarget>::VALUE);
+ SEQAN_ASSERT(success ^ Is<IntegerConcept<typename TestFixture::TTarget> >::Type::VALUE);
if (success) SEQAN_ASSERT_LT(this->target + reciprocal, epsilon);
}
@@ -232,7 +232,7 @@ SEQAN_TYPED_TEST(LexicalCastTest, Exception)
{
this->target = lexicalCast<typename TestFixture::TTarget>(this->source);
}
- catch (BadLexicalCast)
+ catch (BadLexicalCast &)
{
return;
}
diff --git a/tests/stream/test_stream_tokenization.h b/tests/stream/test_stream_tokenization.h
index 4fdcece..533b6cb 100644
--- a/tests/stream/test_stream_tokenization.h
+++ b/tests/stream/test_stream_tokenization.h
@@ -203,7 +203,7 @@ SEQAN_TYPED_TEST(TokenizationTest, read)
// check EOF-handling
clear(buf);
readUntil(buf, ctx.iter, EqualsChar<'*'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), '*');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '*');
clear(buf);
SEQAN_ASSERT_EQ(read(buf,ctx.iter, 3), 1);
@@ -222,14 +222,14 @@ SEQAN_TYPED_TEST(TokenizationTest, ReadIgnoring)
// skip to where we want to go
readUntil(buf, ctx.iter, IsInAlphabet<Dna5>());
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
readUntil(buf2, ctx.iter, NotFunctor<OrFunctor<IsInAlphabet<Dna5>, IsWhitespace> >(), IsWhitespace());
SEQAN_ASSERT_EQ(buf2, "AAAACCCGGGTTTTCG");
- SEQAN_ASSERT_EQ(value(ctx.iter), 'f');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'f');
readUntil(buf, ctx.iter, IsInAlphabet<Dna5>());
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
clear(buf2);
readUntil(buf2, ctx.iter, EqualsChar<'_'>(), NotFunctor<IsInAlphabet<Dna5> >());
@@ -246,16 +246,16 @@ SEQAN_TYPED_TEST(TokenizationTest, ReadUntil_ReadLine)
CharString buf;
// skip to where we want to go
readUntil(buf, ctx.iter, EqualsChar<'A'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
clear(buf);
readLine(buf, ctx.iter);
SEQAN_ASSERT_EQ(buf, "AAAACCCGGGTTT");
- SEQAN_ASSERT_EQ(value(ctx.iter), ' ');
+ SEQAN_ASSERT_EQ(*(ctx.iter), ' ');
clear(buf);
readLine(buf, ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), '\a');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\a');
clear(buf);
readUntil(buf, ctx.iter, EqualsChar<'1'>());
@@ -263,12 +263,12 @@ SEQAN_TYPED_TEST(TokenizationTest, ReadUntil_ReadLine)
clear(buf);
readLine(buf, ctx.iter);
SEQAN_ASSERT_EQ(buf, "123gogogo ");
- SEQAN_ASSERT_EQ(value(ctx.iter), 'T');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'T');
// check EOF-handling
clear(buf);
readUntil(buf, ctx.iter, EqualsChar<'*'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), '*');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '*');
clear(buf);
readLine(buf, ctx.iter);
@@ -283,35 +283,35 @@ SEQAN_TYPED_TEST(TokenizationTest, SkipUntil)
SEQAN_ASSERT_NOT(atEnd(ctx.iter));
skipUntil(ctx.iter, EqualsChar<'.'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), '.');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '.');
skipUntil(ctx.iter, IsBlank());
- SEQAN_ASSERT_EQ(value(ctx.iter), ' ');
+ SEQAN_ASSERT_EQ(*(ctx.iter), ' ');
skipUntil(ctx.iter, EqualsChar<'A'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
skipUntil(ctx.iter, IsWhitespace());
- SEQAN_ASSERT_EQ(value(ctx.iter), '\n');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\n');
skipUntil(ctx.iter, EqualsChar<'A'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
skipUntil(ctx.iter, IsBlank());
- SEQAN_ASSERT_EQ(value(ctx.iter), ' ');
+ SEQAN_ASSERT_EQ(*(ctx.iter), ' ');
skipUntil(ctx.iter, EqualsChar<'A'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
skipUntil(ctx.iter, IsWhitespace());
- SEQAN_ASSERT_EQ(value(ctx.iter), '\n');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\n');
skipUntil(ctx.iter, IsGraph()); // skip over \a
- SEQAN_ASSERT_EQ(value(ctx.iter), '1');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '1');
// check EOF-handling
skipUntil(ctx.iter, EqualsChar<'*'>());
- SEQAN_ASSERT_EQ(value(ctx.iter), '*');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '*');
skipUntil(ctx.iter, IsWhitespace());
SEQAN_ASSERT(atEnd(ctx.iter));
@@ -324,37 +324,37 @@ SEQAN_TYPED_TEST(TokenizationTest, SkipLine)
SEQAN_ASSERT_NOT(atEnd(ctx.iter));
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), ' ');
+ SEQAN_ASSERT_EQ(*(ctx.iter), ' ');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), '\a');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\a');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), 'T');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'T');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), 'e');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'e');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), 'e');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'e');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), '\n');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\n');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), '\v');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\v');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), '\r');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\r');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), '\n');
+ SEQAN_ASSERT_EQ(*(ctx.iter), '\n');
skipLine(ctx.iter);
- SEQAN_ASSERT_EQ(value(ctx.iter), 'A');
+ SEQAN_ASSERT_EQ(*(ctx.iter), 'A');
skipLine(ctx.iter);
SEQAN_ASSERT(atEnd(ctx.iter));
diff --git a/tests/stream/test_stream_virtual_stream.h b/tests/stream/test_stream_virtual_stream.h
index 81d0bc3..23ba0a5 100644
--- a/tests/stream/test_stream_virtual_stream.h
+++ b/tests/stream/test_stream_virtual_stream.h
@@ -76,8 +76,7 @@ IIIIIIII\n";
SEQAN_TYPED_TEST(VStreamTest, Construct)
{
- CharString fileName = SEQAN_PATH_TO_ROOT();
- append(fileName, "/tests/seq_io/test_dna.fq");
+ CharString fileName = getAbsolutePath("/tests/seq_io/test_dna.fq");
append(fileName, FileExtensions<typename TestFixture::Type>::VALUE[0]);
VirtualStream<char, Input> vstream(toCString(fileName), OPEN_RDONLY);
SEQAN_ASSERT((bool)vstream);
@@ -89,8 +88,7 @@ SEQAN_TYPED_TEST(VStreamTest, Construct)
SEQAN_TYPED_TEST(VStreamTest, OpenClose)
{
- CharString fileName = SEQAN_PATH_TO_ROOT();
- append(fileName, "/tests/seq_io/test_dna.fq");
+ CharString fileName = getAbsolutePath("/tests/seq_io/test_dna.fq");
append(fileName, FileExtensions<typename TestFixture::Type>::VALUE[0]);
VirtualStream<char, Input> vstream;
@@ -111,8 +109,7 @@ SEQAN_TYPED_TEST(VStreamTest, OpenClose)
SEQAN_TYPED_TEST(VStreamTest, Decompression)
{
typedef typename TestFixture::Type TCompressionTag;
- CharString fileName = SEQAN_PATH_TO_ROOT();
- append(fileName, "/tests/seq_io/test_dna.fq");
+ CharString fileName = getAbsolutePath("/tests/seq_io/test_dna.fq");
append(fileName, FileExtensions<TCompressionTag>::VALUE[0]);
VirtualStream<char, Input> vstream(toCString(fileName), OPEN_RDONLY);
SEQAN_ASSERT((bool)vstream);
@@ -123,8 +120,7 @@ SEQAN_TYPED_TEST(VStreamTest, Decompression)
close(vstream);
SEQAN_ASSERT_NOT((bool)vstream);
- fileName = SEQAN_PATH_TO_ROOT();
- append(fileName, "/tests/seq_io/test_dna.fa");
+ fileName = getAbsolutePath("/tests/seq_io/test_dna.fa");
append(fileName, FileExtensions<TCompressionTag>::VALUE[0]);
open(vstream, toCString(toCString(fileName)), OPEN_RDONLY);
@@ -164,8 +160,7 @@ SEQAN_TYPED_TEST(VStreamTest, Compression)
SEQAN_TYPED_TEST(VStreamTest, AutoDetection)
{
typedef typename TestFixture::Type TCompressionTag;
- CharString fileName = SEQAN_PATH_TO_ROOT();
- append(fileName, "/tests/seq_io/test_dna.fq");
+ CharString fileName = getAbsolutePath("/tests/seq_io/test_dna.fq");
append(fileName, FileExtensions<TCompressionTag>::VALUE[0]);
std::fstream file(toCString(fileName), std::ios::in | std::ios::binary);
diff --git a/tests/tabix_io/test_tabix_io.h b/tests/tabix_io/test_tabix_io.h
index b076e4c..a0f1ac8 100644
--- a/tests/tabix_io/test_tabix_io.h
+++ b/tests/tabix_io/test_tabix_io.h
@@ -43,11 +43,11 @@
#include <seqan/tabix_io.h>
+#if SEQAN_HAS_ZLIB
SEQAN_DEFINE_TEST(test_tabix_io_read_indexed_vcf)
{
// Open TABIX file
- seqan::CharString vcfPath = SEQAN_PATH_TO_ROOT();
- append(vcfPath, "/tests/tabix_io/test.vcf.gz");
+ seqan::CharString vcfPath = seqan::getAbsolutePath("/tests/tabix_io/test.vcf.gz");
seqan::VcfFileIn vcfFile(toCString(vcfPath));
// Read header (to get the contig names)
@@ -116,5 +116,12 @@ SEQAN_DEFINE_TEST(test_tabix_io_read_indexed_vcf)
SEQAN_ASSERT_NOT(atEnd(vcfFile));
}
+#else // SEQAN_HAS_ZLIB
+SEQAN_DEFINE_TEST(test_tabix_io_read_indexed_vcf)
+{
+ SEQAN_SKIP_TEST;
+}
+#endif // SEQAN_HAS_ZLIB
+
#endif // SEQAN_TESTS_TABIX_TEST_TABIX_IO_H_
diff --git a/tests/translation/test_translation.h b/tests/translation/test_translation.h
index 88ec7a9..50bbdbb 100644
--- a/tests/translation/test_translation.h
+++ b/tests/translation/test_translation.h
@@ -620,9 +620,10 @@ SEQAN_DEFINE_TEST(test_translation_stringset_multiframe_parallel)
SEQAN_DEFINE_TEST(test_translation_stringset_multiframe_concatdirect_parallel)
{
-
+#ifndef __alpha__ // NOTE(h-2): fails on alpha for unknown reasons
test_translation_stringset_multiframe_impl0<Owner<ConcatDirect<> >,
Parallel>();
+#endif
}
#endif // SEQAN_TESTS_BASIC_TEST_TRANSLATION_H_
diff --git a/tests/ucsc_io/test_ucsc_io.cpp b/tests/ucsc_io/test_ucsc_io.cpp
index 2c28ef9..7a2fec3 100755
--- a/tests/ucsc_io/test_ucsc_io.cpp
+++ b/tests/ucsc_io/test_ucsc_io.cpp
@@ -48,8 +48,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_read_record_ucsc_known_genes)
{
// The file contains 13 annotations in total which will be checked line
// after line.
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/ucsc_io/example_knownGene.txt");
+ CharString ucscPath = getAbsolutePath("/tests/ucsc_io/example_knownGene.txt");
String<char, MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(ucscPath)));
@@ -104,8 +103,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_read_record_ucsc_known_isoforms)
{
// The file contains 13 annotations in total which will be checked line
// after line.
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/ucsc_io/example_knownIsoforms.txt");
+ CharString ucscPath = getAbsolutePath("/tests/ucsc_io/example_knownIsoforms.txt");
String<char, MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(ucscPath)));
@@ -136,8 +134,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_read_record_ucsc_known_isoforms)
SEQAN_DEFINE_TEST(test_ucsc_io_write_record_ucsc_known_genes)
{
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/store/example_knownGene.txt");
+ CharString ucscPath = getAbsolutePath("/tests/store/example_knownGene.txt");
String<char, MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(ucscPath)));
@@ -157,8 +154,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_write_record_ucsc_known_genes)
SEQAN_DEFINE_TEST(test_ucsc_io_write_record_ucsc_known_isoforms)
{
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/store/example_knownIsoforms.txt");
+ CharString ucscPath = getAbsolutePath("/tests/store/example_knownIsoforms.txt");
String<char, MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(ucscPath)));
@@ -180,8 +176,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_ucsc_file_in_read_record_ucsc_known_genes)
{
// The file contains 13 annotations in total which will be checked line
// after line.
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/ucsc_io/example_with_errors_knownGene.txt");
+ CharString ucscPath = getAbsolutePath("/tests/ucsc_io/example_with_errors_knownGene.txt");
UcscFileIn ucscFileIn(toCString(ucscPath));
UcscRecord record;
@@ -231,8 +226,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_ucsc_file_in_read_record_ucsc_known_isoforms)
{
// The file contains 13 annotations in total which will be checked line
// after line.
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/ucsc_io/example_knownIsoforms.txt");
+ CharString ucscPath = getAbsolutePath("/tests/ucsc_io/example_knownIsoforms.txt");
UcscFileIn ucscFileIn(toCString(ucscPath));
@@ -259,8 +253,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_ucsc_file_in_read_record_ucsc_known_isoforms)
SEQAN_DEFINE_TEST(test_ucsc_io_ucsc_file_out_write_record_ucsc_known_genes)
{
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/store/example_knownGene.txt");
+ CharString ucscPath = getAbsolutePath("/tests/store/example_knownGene.txt");
String<char, MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(ucscPath)));
@@ -281,8 +274,7 @@ SEQAN_DEFINE_TEST(test_ucsc_io_ucsc_file_out_write_record_ucsc_known_genes)
SEQAN_DEFINE_TEST(test_ucsc_io_ucsc_file_out_write_record_ucsc_known_isoforms)
{
- CharString ucscPath = SEQAN_PATH_TO_ROOT();
- append(ucscPath, "/tests/store/example_knownIsoforms.txt");
+ CharString ucscPath = getAbsolutePath("/tests/store/example_knownIsoforms.txt");
String<char, MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(ucscPath)));
diff --git a/tests/vcf_io/test_vcf_io.h b/tests/vcf_io/test_vcf_io.h
index 33ab5db..c9d1852 100644
--- a/tests/vcf_io/test_vcf_io.h
+++ b/tests/vcf_io/test_vcf_io.h
@@ -44,8 +44,7 @@
SEQAN_DEFINE_TEST(test_vcf_io_read_vcf_header)
{
- seqan::CharString vcfPath = SEQAN_PATH_TO_ROOT();
- append(vcfPath, "/tests/vcf_io/example.vcf");
+ seqan::CharString vcfPath = seqan::getAbsolutePath("/tests/vcf_io/example.vcf");
seqan::String<char, seqan::MMap<> > mmapString;
SEQAN_ASSERT(open(mmapString, toCString(vcfPath)));
@@ -106,8 +105,7 @@ SEQAN_DEFINE_TEST(test_vcf_io_read_vcf_header)
SEQAN_DEFINE_TEST(test_vcf_io_read_vcf_record)
{
- seqan::CharString vcfPath = SEQAN_PATH_TO_ROOT();
- append(vcfPath, "/tests/vcf_io/example_records_with_errors.vcf");
+ seqan::CharString vcfPath = seqan::getAbsolutePath("/tests/vcf_io/example_records_with_errors.vcf");
seqan::String<char, seqan::MMap<> > mmapString;
open(mmapString, toCString(vcfPath));
@@ -171,8 +169,7 @@ SEQAN_DEFINE_TEST(test_vcf_io_read_vcf_record)
SEQAN_DEFINE_TEST(test_vcf_io_vcf_file_read_record)
{
- seqan::CharString vcfPath = SEQAN_PATH_TO_ROOT();
- append(vcfPath, "/tests/vcf_io/example.vcf");
+ seqan::CharString vcfPath = seqan::getAbsolutePath("/tests/vcf_io/example.vcf");
seqan::VcfFileIn vcfStream(toCString(vcfPath));
seqan::VcfHeader header;
@@ -322,14 +319,14 @@ SEQAN_DEFINE_TEST(test_vcf_io_write_vcf_header)
writeHeader(iter, vcfHeader, vcfIOContext, seqan::Vcf());
file.close();
- std::string goldPath = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/vcf_io/vcf_header.vcf";
+ std::string goldPath = seqan::getAbsolutePath("/tests/vcf_io/vcf_header.vcf");
SEQAN_ASSERT(seqan::_compareTextFilesAlt(tmpPath.c_str(), goldPath.c_str()));
}
SEQAN_DEFINE_TEST(test_vcf_io_write_vcf_record)
{
- std::string goldPath = (std::string)SEQAN_PATH_TO_ROOT() + "/tests/vcf_io/example_records.vcf";
+ std::string goldPath = seqan::getAbsolutePath("/tests/vcf_io/example_records.vcf");
std::string tmpPath = (std::string)SEQAN_TEMP_FILENAME() + ".vcf";
std::ifstream file(goldPath.c_str());
@@ -462,8 +459,7 @@ SEQAN_DEFINE_TEST(test_vcf_io_vcf_file_write_record)
close(vcfStream);
- seqan::CharString goldPath(SEQAN_PATH_TO_ROOT());
- append(goldPath, "/tests/vcf_io/example.vcf");
+ seqan::CharString goldPath(seqan::getAbsolutePath("/tests/vcf_io/example.vcf"));
SEQAN_ASSERT(seqan::_compareTextFilesAlt(tmpPath.c_str(), toCString(goldPath)));
}
diff --git a/util/cmake/SeqAnBuildSystem.cmake b/util/cmake/SeqAnBuildSystem.cmake
index e705b0e..e642f81 100644
--- a/util/cmake/SeqAnBuildSystem.cmake
+++ b/util/cmake/SeqAnBuildSystem.cmake
@@ -44,6 +44,12 @@
# SEQAN_RELEASE_LIBRARY
# APP:${app_name}
+# require python 2.7, not python3
+set(PythonInterp_FIND_VERSION 2.7)
+set(PythonInterp_FIND_VERSION_MAJOR 2)
+set(PythonInterp_FIND_VERSION_MINOR 7)
+set(PythonInterp_FIND_VERSION_COUNT 2)
+
include (SeqAnUsabilityAnalyzer)
include (CheckCXXCompilerFlag)
@@ -784,9 +790,15 @@ function (seqan_register_demos PREFIX)
(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.6.0))
set (SKIP TRUE)
# bug in visual studio
- elseif ((ENTRY MATCHES "queue_example.cpp") AND
- COMPILER_MSVC)
+ elseif ((ENTRY MATCHES "queue_example.cpp") AND COMPILER_MSVC)
set (SKIP TRUE)
+ # all demos/* that require ZLIB[_FOUND]
+ elseif (NOT ZLIB_FOUND)
+ if ((ENTRY MATCHES "tabix_io/tabix_vcf.cpp") OR
+ (ENTRY MATCHES "sam_and_bam_io/example7.cpp") OR
+ (ENTRY MATCHES "unassigned_or_unused/bamutil.cpp"))
+ set (SKIP TRUE)
+ endif()
endif ()
if (SKIP)
diff --git a/util/cmake/SeqAnContribs.cmake b/util/cmake/SeqAnContribs.cmake
index 16c3e6a..bac9029 100644
--- a/util/cmake/SeqAnContribs.cmake
+++ b/util/cmake/SeqAnContribs.cmake
@@ -35,83 +35,68 @@
# ============================================================================
if (WIN32)
- # For all contrib versions...
- foreach (_SEQAN_CONTRIB_VERSION D20170601 D20160115)
+# For all contrib versions...
+foreach (_SEQAN_CONTRIB_VERSION D20170601 D20160115)
set (_SEQAN_CONTRIB_DIR "seqan-contrib-${_SEQAN_CONTRIB_VERSION}")
- # Determine architecture for the precompiled contribs.
- if (CMAKE_SIZEOF_VOID_P EQUAL 8)
- set (CONTRIB_ARCH "x64")
- else ()
- set (CONTRIB_ARCH "x86")
- endif ()
+ # Determine architecture for the precompiled contribs.
+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set (CONTRIB_ARCH "x64")
+ else ()
+ set (CONTRIB_ARCH "x86")
+ endif ()
- # Try to figure out where the user installed the contrib. We expect
- # it to be either in C:\, or one of the Program Files dirs.
- #
- # First, look into Program Files on 64 bit.
- if (DEFINED ENV{ProgramW6432})
- if (IS_DIRECTORY "$ENV{ProgramW6432}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- set (SEQAN_CONTRIB_BASE "$ENV{ProgramW6432}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- endif (IS_DIRECTORY "$ENV{ProgramW6432}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- endif (DEFINED ENV{ProgramW6432})
- # Try out Program Files for 32bit Windows.
- if (NOT DEFINED SEQAN_CONTRIB_BASE)
- if (IS_DIRECTORY "$ENV{ProgramFiles}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- set (SEQAN_CONTRIB_BASE "$ENV{ProgramFiles}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- endif (IS_DIRECTORY "$ENV{ProgramFiles}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- endif (NOT DEFINED SEQAN_CONTRIB_BASE)
- # Try out on C:/.
- if (NOT DEFINED SEQAN_CONTRIB_BASE)
- if (IS_DIRECTORY C:\\${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH})
- set (SEQAN_CONTRIB_BASE "C:\\${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- elseif ()
- set (SEQAN_CONTRIB_BASE "C:\\${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- endif ()
- endif (NOT DEFINED SEQAN_CONTRIB_BASE)
- # Try to fall back to x64 on C:\ (MinGW is only available as 32 bit).
- set (CONTRIB_ARCH "x64")
- if (NOT DEFINED SEQAN_CONTRIB_BASE)
- if (IS_DIRECTORY "C:\\${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
- set (SEQAN_CONTRIB_BASE "C:\\${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
+ # Try to figure out where the user installed the contrib. We expect
+ # it to be either in C:\, or one of the Program Files dirs.
+ #
+ # First, look into Program Files on 64 bit.
+ # Then look into C:\\ and finally check special environment variable.
+
+ set(_paths "$ENV{ProgramW6432}" "$ENV{ProgramFiles}" "C:" "$ENV{SEQAN_WIN_CONTRIB_DIRECTORY}")
+
+ foreach(path ${_paths})
+ set(path "${path}/${_SEQAN_CONTRIB_DIR}-${CONTRIB_ARCH}")
+ # message("Path is ${path}")
+ if (IS_DIRECTORY "${path}")
+ set (SEQAN_CONTRIB_BASE "${path}")
+ break ()
endif ()
- endif ()
+ endforeach ()
- # Debug help.
- #if (NOT DEFINED SEQAN_CONTRIB_BASE)
- # message("SEQAN_CONTRIB_BASE is undefined!")
- #else (NOT DEFINED SEQAN_CONTRIB_BASE)
- # message("SEQAN_CONTRIB_BASE is ${SEQAN_CONTRIB_BASE}")
- #endif (NOT DEFINED SEQAN_CONTRIB_BASE)
+ # Debug help.
+ # if (NOT DEFINED SEQAN_CONTRIB_BASE)
+ # message("SEQAN_CONTRIB_BASE is undefined!")
+ # else (NOT DEFINED SEQAN_CONTRIB_BASE)
+ # message("SEQAN_CONTRIB_BASE is ${SEQAN_CONTRIB_BASE}")
+ # endif (NOT DEFINED SEQAN_CONTRIB_BASE)
- # Try to figure out the generator.
- if (IS_DIRECTORY ${SEQAN_CONTRIB_BASE})
- if (CMAKE_GENERATOR MATCHES "^Visual Studio .*")
- string (REGEX REPLACE "^Visual Studio ([0-9]+).*$" "\\1" SEQAN_CONTRIB_VARIANT ${CMAKE_GENERATOR})
- set (SEQAN_CONTRIB_VARIANT "vs${SEQAN_CONTRIB_VARIANT}")
- elseif (MINGW)
- set (SEQAN_CONTRIB_VARIANT mingw)
- endif (CMAKE_GENERATOR MATCHES "^Visual Studio .*")
+ # Try to figure out the generator.
+ if (IS_DIRECTORY ${SEQAN_CONTRIB_BASE})
+ if (CMAKE_GENERATOR MATCHES "^Visual Studio .*")
+ string (REGEX REPLACE "^Visual Studio ([0-9]+).*$" "\\1" SEQAN_CONTRIB_VARIANT ${CMAKE_GENERATOR})
+ set (SEQAN_CONTRIB_VARIANT "vs${SEQAN_CONTRIB_VARIANT}")
+ elseif (MINGW)
+ set (SEQAN_CONTRIB_VARIANT mingw)
+ endif (CMAKE_GENERATOR MATCHES "^Visual Studio .*")
#message(STATUS "SEQAN_CONTRIB_BASE is ${SEQAN_CONTRIB_BASE}")
#message(STATUS "SEQAN_CONTRIB_VARIANT is ${SEQAN_CONTRIB_VARIANT}")
- # Compose contrib path.
- set(SEQAN_CONTRIB_PATH "${SEQAN_CONTRIB_BASE}/${SEQAN_CONTRIB_VARIANT}")
+ # Compose contrib path.
+ set(SEQAN_CONTRIB_PATH "${SEQAN_CONTRIB_BASE}/${SEQAN_CONTRIB_VARIANT}")
- # Extend CMAKE_PREFIX_PATH.
- if (IS_DIRECTORY ${SEQAN_CONTRIB_PATH})
- set (CMAKE_PREFIX_PATH ${SEQAN_CONTRIB_PATH} ${CMAKE_PREFIX_PATH})
- endif (IS_DIRECTORY ${SEQAN_CONTRIB_PATH})
- endif (IS_DIRECTORY ${SEQAN_CONTRIB_BASE})
+ # Extend CMAKE_PREFIX_PATH.
+ if (IS_DIRECTORY ${SEQAN_CONTRIB_PATH})
+ set (CMAKE_PREFIX_PATH ${SEQAN_CONTRIB_PATH} ${CMAKE_PREFIX_PATH})
+ endif (IS_DIRECTORY ${SEQAN_CONTRIB_PATH})
+ endif (IS_DIRECTORY ${SEQAN_CONTRIB_BASE})
- message(STATUS "CMAKE_PREFIX_PATH is \"${CMAKE_PREFIX_PATH}\".")
+ message(STATUS "CMAKE_PREFIX_PATH is \"${CMAKE_PREFIX_PATH}\".")
- # Break out if contribs could be found.
- if (DEFINED SEQAN_CONTRIB_BASE)
+ # Break out if contribs could be found.
+ if (DEFINED SEQAN_CONTRIB_BASE)
break () # found contribs at current path
- endif (DEFINED SEQAN_CONTRIB_BASE)
+ endif (DEFINED SEQAN_CONTRIB_BASE)
- endforeach () # all contrib versions.
+endforeach () # all contrib versions.
endif (WIN32)
-
diff --git a/util/cmake/SeqAnSimdUtility.cmake b/util/cmake/SeqAnSimdUtility.cmake
index 4d22d6f..e48d46c 100644
--- a/util/cmake/SeqAnSimdUtility.cmake
+++ b/util/cmake/SeqAnSimdUtility.cmake
@@ -88,7 +88,6 @@
# (e.g. sse4, avx2, avx512_knl, avx512_skx, avx512_cnl)
#
-find_package (SeqAn CONFIG REQUIRED)
find_package (SDE)
find_package (Umesimd)
@@ -185,18 +184,22 @@ set(SEQAN_SIMD_AVX512_KNL_SOURCE
"#include <cstdint>
#include <immintrin.h>
#include <iostream>
+#include <random>
int main() {
+ std::random_device r;
+ std::default_random_engine e(r());
+ std::uniform_int_distribution<int64_t> d(1, 10);
+
alignas(64) uint64_t s[]{9,9,9,9,9,9,9,9};
alignas(64) uint64_t t[]{0,0,0,0,0,0,0,0};
// gcc 4.9 does not know _mm512_cmpgt_epu64_mask
- volatile auto a = _mm512_setr_epi64(7,6,5,4,3,2,1,0);
+ volatile auto a = _mm512_setr_epi64(d(e),d(e),d(e),d(e),d(e),d(e),d(e),d(e));
volatile auto m = _mm512_cmpgt_epu64_mask(a, _mm512_set1_epi64(4)); // m = a > 4
volatile auto z = _mm512_mask_load_epi64(a, m, s); // (a > 4) ? s : a
_mm512_store_epi64(t, z);
- // (9, 9, 9, 4, 3, 2, 1, 0)
std::cout << \"(\" << t[0] << \", \" << t[1] << \", \" << t[2] << \", \" << t[3] << \", ...)\" << std::endl;
return 0;
}")
@@ -206,6 +209,7 @@ set(SEQAN_SIMD_AVX512_CNL_SOURCE "${SEQAN_SIMD_AVX512_KNL_SOURCE}")
set(SEQAN_SIMD_SEQANSIMD_SOURCE
"#include <cstdint>
+#include <iostream>
using int32x4_t = int32_t __attribute__ ((__vector_size__(4 * sizeof(int32_t)))); // SSE4 = 128bit
using int32x8_t = int32_t __attribute__ ((__vector_size__(8 * sizeof(int32_t)))); // AVX2 = 256bit
@@ -266,7 +270,12 @@ int main() {
auto z = x + y;
// gcc 4.9 bug
- constexpr auto length = LENGTH<int32x8_t>::VALUE;
+ constexpr auto length1 = LENGTH<int32x4_t>::VALUE;
+ constexpr auto length2 = LENGTH<int32x8_t>::VALUE;
+ static_assert(length1 == 4u, \"\");
+ static_assert(length2 == 8u, \"\");
+ std::cout << \"length1: \" << length1 << std::endl;
+ std::cout << \"length2: \" << length2 << std::endl;
// icc 16.0.0, 16.0.1 bug
assign(a, 0, 4);
@@ -395,6 +404,7 @@ macro(detect_simd_support)
endforeach()
# test seqan simd
+ set(CMAKE_REQUIRED_FLAGS "")
check_cxx_source_compiles("${SEQAN_SIMD_SEQANSIMD_SOURCE}" SEQAN_SIMD_SEQANSIMD_SUPPORTED)
# try-compile known compiler crashes/errors with seqan-simd and exclude them
@@ -522,10 +532,11 @@ macro(add_simd_platform_tests target)
set(umesimd_test_blacklist "")
if (COMPILER_CLANG)
- # clang >=4.0.0
- if (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0) AND (";${SEQAN_SIMD_COMPILER_SUPPORTS_SEQANSIMD};" MATCHES ";avx512_skx;"))
- message(AUTHOR_WARNING "Clang >=4.0.0 reevaluate if AVX512_skx (seqan-simd only) binaries are working. "
- "At least https://llvm.org/bugs/show_bug.cgi?id=31731 seems to be fixed")
+ # clang 4.x
+ if (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0) AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) AND (";${SEQAN_SIMD_COMPILER_SUPPORTS_SEQANSIMD};" MATCHES ";avx512_skx;"))
+ message(AUTHOR_WARNING "Clang 4.x; reevaluate if AVX512_skx (seqan-simd only) binaries are working. "
+ "An earlier version had an Internal Compiler Error (https://llvm.org/bugs/show_bug.cgi?id=31731), "
+ "which was fixed, the produced binaries might work now. (clang 5.0 is known to work)")
# clang =3.9.0
elseif (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.9) AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.9.1)
# Build the executables, but don't execute them, because clang <= 3.9.x
@@ -583,10 +594,10 @@ macro(add_simd_platform_tests target)
set(seqansimd_compile_blacklist ${seqansimd_compile_blacklist} ${_simd_intrinsics_blacklist} ${_simd_seqansimd_blacklist})
set(umesimd_compile_blacklist ${umesimd_compile_blacklist} ${_simd_intrinsics_blacklist})
- if (UMESIMD_FOUND AND umesimd_test_blacklist)
+ if (UMESIMD_FOUND AND umesimd_test_blacklist AND seqansimd_test_blacklist)
message(STATUS "Disable test `${target}` for seqan-simd and ume-simd and the following simd extensions ${seqansimd_test_blacklist} and ${umesimd_test_blacklist}")
message(STATUS "\tReason: ${reason_for_disabled_test}")
- elseif (UMESIMD_FOUND AND umesimd_test_blacklist AND seqansimd_test_blacklist)
+ elseif (UMESIMD_FOUND AND umesimd_test_blacklist)
message(STATUS "Disable test `${target}` for ume-simd and the following simd extensions ${umesimd_test_blacklist}")
message(STATUS "\tReason: ${reason_for_disabled_test}")
elseif (seqansimd_test_blacklist)
diff --git a/util/cmake/seqan-config.cmake b/util/cmake/seqan-config.cmake
index f075feb..55e9691 100644
--- a/util/cmake/seqan-config.cmake
+++ b/util/cmake/seqan-config.cmake
@@ -298,12 +298,9 @@ if ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux") OR (${CMAKE_SYSTEM_NAME} STREQUAL "k
set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} rt)
endif ()
+# some OSes don't link pthread fully when building statically so we explicitly include whole archive
if (UNIX AND NOT APPLE)
- if ((CMAKE_CXX_FLAGS MATCHES "-static") OR (SEQAN_CXX_FLAGS MATCHES "-static") OR (CMAKE_EXE_LINKER_FLAGS MATCHES "-static"))
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--whole-archive -lpthread -Wl,--no-whole-archive")
- else ()
- set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} pthread)
- endif ()
endif ()
if ((${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") OR (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"))
@@ -352,6 +349,15 @@ if (NOT _SEQAN_FIND_BZIP2 EQUAL -1)
find_package(BZip2 QUIET)
endif ()
+if (NOT ZLIB_FOUND AND BZIP2_FOUND)
+ # NOTE(marehr): iostream_bzip2 uses the type `uInt`, which is defined by
+ # `zlib`. Therefore, `bzip2` will cause a ton of errors without `zlib`.
+ message(AUTHOR_WARNING "Disabling BZip2 [which was successfully found], "
+ "because ZLIB was not found. BZip2 is depending on ZLIB.")
+ unset(BZIP2_FOUND)
+ unset(SEQAN_HAS_BZIP2)
+endif ()
+
if (BZIP2_FOUND)
set (SEQAN_HAS_BZIP2 TRUE) # deprecated: use BZIP2_FOUND instead
set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} ${BZIP2_LIBRARIES})
diff --git a/util/py_lib/CMakeLists.txt b/util/py_lib/CMakeLists.txt
index ef4b578..3509a07 100644
--- a/util/py_lib/CMakeLists.txt
+++ b/util/py_lib/CMakeLists.txt
@@ -9,6 +9,11 @@
# ===========================================================================
# Look for Python and stop if it could not be found.
+# require python 2.7, not python3
+set(PythonInterp_FIND_VERSION 2.7)
+set(PythonInterp_FIND_VERSION_MAJOR 2)
+set(PythonInterp_FIND_VERSION_MINOR 7)
+set(PythonInterp_FIND_VERSION_COUNT 2)
find_package (PythonInterp)
if (NOT PYTHONINTERP_FOUND)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/seqan2.git
More information about the debian-med-commit
mailing list