SeqAn3  3.2.0-rc.1
The Modern C++ library for sequence analysis.
hit.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2022, 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 
16 #pragma once
17 
18 #include <variant>
19 
24 
25 namespace seqan3::search_cfg
26 {
27 
34 {
35 public:
39  constexpr hit_all() = default;
40  constexpr hit_all(hit_all const &) = default;
41  constexpr hit_all(hit_all &&) = default;
42  constexpr hit_all & operator=(hit_all const &) = default;
43  constexpr hit_all & operator=(hit_all &&) = default;
44  ~hit_all() = default;
45 
47 
50  static constexpr detail::search_config_id id{detail::search_config_id::hit};
51 };
52 
59 {
60 public:
64  constexpr hit_all_best() = default;
65  constexpr hit_all_best(hit_all_best const &) = default;
66  constexpr hit_all_best(hit_all_best &&) = default;
67  constexpr hit_all_best & operator=(hit_all_best const &) = default;
68  constexpr hit_all_best & operator=(hit_all_best &&) = default;
69  ~hit_all_best() = default;
70 
72 
75  static constexpr seqan3::detail::search_config_id id{seqan3::detail::search_config_id::hit};
76 };
77 
84 {
85 public:
89  constexpr hit_single_best() = default;
90  constexpr hit_single_best(hit_single_best const &) = default;
91  constexpr hit_single_best(hit_single_best &&) = default;
92  constexpr hit_single_best & operator=(hit_single_best const &) = default;
93  constexpr hit_single_best & operator=(hit_single_best &&) = default;
94  ~hit_single_best() = default;
95 
97 
100  static constexpr seqan3::detail::search_config_id id{seqan3::detail::search_config_id::hit};
101 };
102 
110 {
111 public:
113  uint8_t stratum{};
114 
118  constexpr hit_strata() = default;
119  constexpr hit_strata(hit_strata const &) = default;
120  constexpr hit_strata(hit_strata &&) = default;
121  constexpr hit_strata & operator=(hit_strata const &) = default;
122  constexpr hit_strata & operator=(hit_strata &&) = default;
123  ~hit_strata() = default;
124 
128  hit_strata(uint32_t stratum) : stratum{static_cast<uint8_t>(stratum)}
129  {}
131 
134  static constexpr detail::search_config_id id{detail::search_config_id::hit};
135 };
136 
143 {
144 public:
151 
155  hit() = default;
156  hit(hit const &) = default;
157  hit(hit &&) = default;
158  hit & operator=(hit const &) = default;
159  hit & operator=(hit &&) = default;
160  ~hit() = default;
161 
172  template <typename hit_config_t>
173  requires pack_traits::contains<hit_config_t, hit_all, hit_all_best, hit_single_best, hit_strata>
174  explicit hit(hit_config_t hit_config) noexcept : hit_variant{std::move(hit_config)}
175  {}
176 
178  template <typename hit_config_t>
179  requires pack_traits::contains<hit_config_t, hit_all, hit_all_best, hit_single_best, hit_strata>
180  hit & operator=(hit_config_t hit_config) noexcept
181  {
182  hit_variant = std::move(hit_config);
183  return *this;
184  }
186 
189 
192  static constexpr detail::search_config_id id{detail::search_config_id::hit};
193 };
194 
195 } // namespace seqan3::search_cfg
Configuration element to receive all hits with the lowest number of errors within the error bounds.
Definition: hit.hpp:59
constexpr hit_all_best & operator=(hit_all_best const &)=default
Defaulted.
constexpr hit_all_best(hit_all_best const &)=default
Defaulted.
constexpr hit_all_best(hit_all_best &&)=default
Defaulted.
constexpr hit_all_best()=default
Defaulted.
~hit_all_best()=default
Defaulted.
constexpr hit_all_best & operator=(hit_all_best &&)=default
Defaulted.
Configuration element to receive all hits within the error bounds.
Definition: hit.hpp:34
constexpr hit_all & operator=(hit_all &&)=default
Defaulted.
constexpr hit_all & operator=(hit_all const &)=default
Defaulted.
constexpr hit_all()=default
Defaulted.
constexpr hit_all(hit_all &&)=default
Defaulted.
constexpr hit_all(hit_all const &)=default
Defaulted.
~hit_all()=default
Defaulted.
Configuration element to receive a single best hit with the lowest number of errors within the error ...
Definition: hit.hpp:84
constexpr hit_single_best & operator=(hit_single_best &&)=default
Defaulted.
~hit_single_best()=default
Defaulted.
constexpr hit_single_best()=default
Defaulted.
constexpr hit_single_best(hit_single_best &&)=default
Defaulted.
constexpr hit_single_best(hit_single_best const &)=default
Defaulted.
constexpr hit_single_best & operator=(hit_single_best const &)=default
Defaulted.
Configuration element to receive all hits with the best number of errors plus the given stratum....
Definition: hit.hpp:110
constexpr hit_strata(hit_strata const &)=default
Defaulted.
constexpr hit_strata(hit_strata &&)=default
Defaulted.
uint8_t stratum
The stratum value [default: 0].
Definition: hit.hpp:113
constexpr hit_strata()=default
Defaulted.
~hit_strata()=default
Defaulted.
constexpr hit_strata & operator=(hit_strata const &)=default
Defaulted.
hit_strata(uint32_t stratum)
Initialises the strata config.
Definition: hit.hpp:128
constexpr hit_strata & operator=(hit_strata &&)=default
Defaulted.
A dynamic configuration element to configure the hit strategy at runtime.
Definition: hit.hpp:143
hit & operator=(hit &&)=default
Defaulted.
requires pack_traits::contains< hit_config_t, hit_all, hit_all_best, hit_single_best, hit_strata > hit(hit_config_t hit_config) noexcept
Sets the given configuration element to the dynamic hit configuration element.
Definition: hit.hpp:174
hit & operator=(hit const &)=default
Defaulted.
hit(hit &&)=default
Defaulted.
hit_variant_type hit_variant
A std::variant over the valid hit configuration elements.
Definition: hit.hpp:188
~hit()=default
Defaulted.
hit(hit const &)=default
Defaulted.
requires pack_traits::contains< hit_config_t, hit_all, hit_all_best, hit_single_best, hit_strata > hit & operator=(hit_config_t hit_config) noexcept
Sets the given configuration element to the dynamic hit configuration element.
Definition: hit.hpp:180
hit()=default
Defaulted.
Provides seqan3::detail::empty_type.
requires requires
The rank_type of the semi-alphabet; defined as the return type of seqan3::to_rank....
Definition: alphabet/concept.hpp:164
A special sub namespace for the search configurations.
Provides seqan3::pipeable_config_element.
Adds pipe interface to configuration elements.
Definition: pipeable_config_element.hpp:32
Provides various traits for template packs.