 |
SeqAn3
3.0.2
The Modern C++ library for sequence analysis.
|
|
Go to the documentation of this file.
42 template <
typename algorithm_executor_type>
45 static_assert(!std::is_const_v<algorithm_executor_type>,
46 "Cannot create an algorithm stream over a const buffer.");
49 using optional_type = decltype(std::declval<algorithm_executor_type>().next_result());
51 using algorithm_result_type =
typename optional_type::value_type;
81 algorithm_executor_ptr{std::make_unique<algorithm_executor_type>(
std::move(algorithm_executor))}
112 constexpr std::default_sentinel_t
end() noexcept
114 return std::default_sentinel;
118 constexpr std::default_sentinel_t
end()
const =
delete;
132 if (!algorithm_executor_ptr)
135 if (
auto opt = algorithm_executor_ptr->next_result(); opt.has_value())
148 algorithm_result_type cache{};
156 template <
typename algorithm_executor_type>
165 template <
typename algorithm_executor_type>
211 return range_ptr->cache;
217 return &range_ptr->cache;
227 assert(range_ptr !=
nullptr);
229 at_end = !range_ptr->next();
245 std::default_sentinel_t
const &) noexcept
251 friend constexpr
bool operator==(std::default_sentinel_t
const & lhs,
259 std::default_sentinel_t
const & rhs) noexcept
261 return !(lhs == rhs);
265 friend constexpr
bool operator!=(std::default_sentinel_t
const & lhs,
algorithm_result_generator_range(algorithm_executor_type const &algorithm_executor)=delete
Explicit deletion to forbid copy construction of the underlying executor.
constexpr friend bool operator==(std::default_sentinel_t const &lhs, algorithm_range_iterator const &rhs) noexcept
Checks whether lhs is equal to rhs.
Definition: algorithm_result_generator_range.hpp:251
constexpr friend bool operator!=(std::default_sentinel_t const &lhs, algorithm_range_iterator const &rhs) noexcept
Checks whether lhs is not equal to rhs.
Definition: algorithm_result_generator_range.hpp:265
constexpr std::default_sentinel_t end() noexcept
Returns a sentinel signaling the end of the algorithm range.
Definition: algorithm_result_generator_range.hpp:112
pointer operator->() const noexcept
Returns a pointer to the current algorithm result.
Definition: algorithm_result_generator_range.hpp:215
algorithm_result_generator_range(algorithm_result_generator_range &&)=default
Defaulted.
algorithm_result_generator_range & operator=(algorithm_result_generator_range &&)=default
Defaulted.
constexpr std::default_sentinel_t end() const =delete
This range is not const-iterable.
auto const move
A view that turns lvalue-references into rvalue-references.
Definition: move.hpp:68
algorithm_result_generator_range()=default
Defaulted.
bool next()
Receives the next algorithm result from the executor buffer.
Definition: algorithm_result_generator_range.hpp:130
The iterator of seqan3::detail::algorithm_result_generator_range.
Definition: algorithm_result_generator_range.hpp:167
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
algorithm_result_generator_range & operator=(algorithm_result_generator_range const &)=delete
This is a move-only type.
Exposes the reference of another type.
Definition: pre.hpp:106
constexpr friend bool operator!=(algorithm_range_iterator const &lhs, std::default_sentinel_t const &rhs) noexcept
Checks whether *this is not equal to the sentinel.
Definition: algorithm_result_generator_range.hpp:258
Adaptations of concepts from the Ranges TS.
constexpr algorithm_range_iterator begin()
Returns an iterator to the first element of the algorithm range.
Definition: algorithm_result_generator_range.hpp:96
SeqAn specific customisations in the standard namespace.
algorithm_result_generator_range(algorithm_executor_type &&algorithm_executor)
Constructs a new algorithm range by taking ownership over the passed algorithm buffer.
Definition: algorithm_result_generator_range.hpp:80
algorithm_result_generator_range(algorithm_executor_type &&) -> algorithm_result_generator_range< std::remove_reference_t< algorithm_executor_type >>
Deduces from the passed algorithm_executor_type.
algorithm_result_generator_range(algorithm_result_generator_range const &)=delete
This is a move-only type.
constexpr algorithm_range_iterator() noexcept=default
Defaulted.
algorithm_result_type value_type
Value type of container elements.
Definition: algorithm_result_generator_range.hpp:175
void operator++(int)
Returns an iterator incremented by one.
Definition: algorithm_result_generator_range.hpp:234
algorithm_range_iterator begin() const =delete
This range is not const-iterable.
~algorithm_result_generator_range()=default
Defaulted.
An input range over the algorithm results generated by the underlying algorithm executor.
Definition: algorithm_result_generator_range.hpp:44