SeqAn3  3.0.1
The Modern C++ library for sequence analysis.
align_config_mode.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik
4 // This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5 // shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6 // -----------------------------------------------------------------------------------------------------
7 
15 #pragma once
16 
19 
20 namespace seqan3::detail
21 {
24 struct global_alignment_type
25 {
28  static constexpr detail::align_config_id id{detail::align_config_id::global};
29 };
30 
33 struct local_alignment_type
34 {
37  static constexpr detail::align_config_id id{detail::align_config_id::local};
38 };
39 
40 } // namespace seqan3::detail
41 
42 namespace seqan3
43 {
44 
54 inline constexpr detail::global_alignment_type global_alignment;
55 
65 inline constexpr detail::local_alignment_type local_alignment;
66 
67 } // namespace seqan3
68 
69 namespace seqan3::align_cfg
70 {
71 
89 template <typename mode_type>
91  requires std::same_as<remove_cvref_t<mode_type>, detail::global_alignment_type> ||
92  std::same_as<remove_cvref_t<mode_type>, detail::local_alignment_type>
94 struct mode : public pipeable_config_element<mode<mode_type>, mode_type>
95 {
98  static constexpr detail::align_config_id id{mode_type::id};
99 };
100 
105 template <typename mode_type>
107 mode(mode_type) -> mode<mode_type>;
109 } // namespace seqan3::align_cfg
seqan3::align_cfg::mode
Sets the alignment mode.
Definition: align_config_mode.hpp:94
seqan3::field::id
The identifier, usually a string.
pipeable_config_element.hpp
Provides seqan3::pipeable_config_element.
same_as
The concept std::same_as<T, U> is satisfied if and only if T and U denote the same type.
seqan3
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:36
seqan3::align_cfg
A special sub namespace for the alignment configurations.
Definition: align_config_aligned_ends.hpp:514
seqan3::local_alignment
constexpr detail::local_alignment_type local_alignment
Helper variable to select the local alignment.
Definition: align_config_mode.hpp:65
seqan3::pipeable_config_element
Adds pipe interface to configuration elements.
Definition: pipeable_config_element.hpp:30
seqan3::global_alignment
constexpr detail::global_alignment_type global_alignment
Helper variable to select the global alignment.
Definition: align_config_mode.hpp:54
detail.hpp
Provides some utility functions for the alignment configurations.