13#if !defined(ULTRA_GP_INDIVIDUAL_H)
14# error "Don't include this file directly, include the specific .h instead"
17#if !defined(ULTRA_GP_INDIVIDUAL_EXON_VIEW_TCC)
18#define ULTRA_GP_INDIVIDUAL_EXON_VIEW_TCC
34class exon_view :
public std::ranges::view_interface<exon_view>
38 using iterator = internal::basic_exon_iterator<false>;
45 explicit exon_view(gp::individual &ind) noexcept : ind_(std::addressof(ind))
64class const_exon_view :
public std::ranges::view_interface<const_exon_view>
67 using iterator = internal::basic_exon_iterator<true>;
68 using sentinel = std::default_sentinel_t;
70 explicit const_exon_view(
const gp::individual &ind) noexcept
71 : ind_(std::addressof(ind))
74 [[nodiscard]] iterator begin()
const {
return iterator(*ind_); }
75 [[nodiscard]] sentinel end()
const noexcept {
return {}; }
78 const gp::individual *ind_;
83static_assert(std::ranges::input_range<const_exon_view>);
84static_assert(!std::ranges::forward_range<const_exon_view>);
exon_view(gp::individual &ind) noexcept
Definition individual_exon_view.tcc:45
internal::basic_exon_iterator< false > iterator
Iterator type iterating over mutable active genes.
Definition individual_exon_view.tcc:38
sentinel end() const noexcept
Definition individual_exon_view.tcc:52
std::default_sentinel_t sentinel
Sentinel marking the end of the exon traversal.
Definition individual_exon_view.tcc:41
iterator begin() const
Definition individual_exon_view.tcc:49