Vcsn
2.2
Be Rational
|
Provide a range that allows to iterate over the cross product of the provided ranges. More...
#include <cross.hh>
Classes | |
struct | cross_iterator |
Composite iterator. More... | |
Public Types | |
using | sequences_t = std::tuple< Sequences... > |
Type of the tuple of all the maps. More... | |
template<std::size_t... I> | |
using | seq = vcsn::detail::index_sequence< I... > |
Type of index sequences. More... | |
using | indices_t = vcsn::detail::make_index_sequence< sizeof...(Sequences)> |
Index sequence for our sequences. More... | |
template<typename Seq > | |
using | seq_t = std::remove_reference_t< Seq > |
The type of the underlying sequences, without reference. More... | |
using | value_type = std::tuple< typename seq_t< Sequences >::value_type... > |
The type of the members. More... | |
using | const_iterators_t = std::tuple< typename seq_t< Sequences >::const_iterator... > |
Tuple of const_iterators. More... | |
using | iterators_t = std::tuple< typename seq_t< Sequences >::iterator... > |
Tuple of iterators. More... | |
using | iterator = cross_iterator< value_type, iterators_t > |
Mutable iterator. More... | |
using | const_iterator = cross_iterator< const value_type, const_iterators_t > |
Const iterator. More... | |
Public Member Functions | |
cross_sequences (sequences_t sequences) | |
cross_sequences (Sequences...sequences) | |
const_iterator | cbegin () const |
const_iterator | cend () const |
const_iterator | begin () const |
const_iterator | end () const |
iterator | begin () |
iterator | end () |
bool | empty () const |
Whether the sequence is empty. More... | |
Static Public Attributes | |
static constexpr size_t | size = sizeof...(Sequences) |
Number of sequences. More... | |
Private Member Functions | |
template<std::size_t... I> | |
const_iterator | cbegin_ (seq< I... >) const |
template<std::size_t... I> | |
const_iterator | cend_ (seq< I... >) const |
template<std::size_t... I> | |
iterator | begin_ (seq< I... >) |
template<std::size_t... I> | |
iterator | end_ (seq< I... >) |
Private Attributes | |
sequences_t | sequences_ |
The sequences we iterate upon. More... | |
Provide a range that allows to iterate over the cross product of the provided ranges.
E.g., {a,b,c} x {1,2} -> {(a,1), (a,2), (b,1), (b,2), (c,1), (c,2)}.
using vcsn::cross_sequences< Sequences >::const_iterator = cross_iterator<const value_type, const_iterators_t> |
using vcsn::cross_sequences< Sequences >::const_iterators_t = std::tuple<typename seq_t<Sequences>::const_iterator...> |
using vcsn::cross_sequences< Sequences >::indices_t = vcsn::detail::make_index_sequence<sizeof...(Sequences)> |
using vcsn::cross_sequences< Sequences >::iterator = cross_iterator<value_type, iterators_t> |
using vcsn::cross_sequences< Sequences >::iterators_t = std::tuple<typename seq_t<Sequences>::iterator...> |
using vcsn::cross_sequences< Sequences >::seq = vcsn::detail::index_sequence<I...> |
using vcsn::cross_sequences< Sequences >::seq_t = std::remove_reference_t<Seq> |
using vcsn::cross_sequences< Sequences >::sequences_t = std::tuple<Sequences...> |
using vcsn::cross_sequences< Sequences >::value_type = std::tuple<typename seq_t<Sequences>::value_type...> |
|
inline |
|
inline |
|
inline |
Definition at line 217 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin().
Referenced by vcsn::cross_sequences< Sequences >::begin_().
|
inline |
Definition at line 227 of file cross.hh.
References vcsn::cross_sequences< Sequences >::begin_().
|
inlineprivate |
Definition at line 261 of file cross.hh.
References vcsn::cross_sequences< Sequences >::begin(), vcsn::cross_sequences< Sequences >::end(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::begin().
|
inline |
Definition at line 206 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin_().
Referenced by vcsn::cross_sequences< Sequences >::begin(), vcsn::cross_sequences< Sequences >::cbegin_(), and vcsn::cross_sequences< Sequences >::empty().
|
inlineprivate |
Definition at line 247 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin(), vcsn::cross_sequences< Sequences >::cend(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::cbegin().
|
inline |
Definition at line 212 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cend_().
Referenced by vcsn::cross_sequences< Sequences >::cbegin_(), vcsn::cross_sequences< Sequences >::cend_(), vcsn::cross_sequences< Sequences >::empty(), and vcsn::cross_sequences< Sequences >::end().
|
inlineprivate |
Definition at line 254 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cend(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::cend().
|
inline |
Whether the sequence is empty.
Definition at line 239 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin(), and vcsn::cross_sequences< Sequences >::cend().
|
inline |
Definition at line 222 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cend().
Referenced by vcsn::cross_sequences< Sequences >::begin_(), and vcsn::cross_sequences< Sequences >::end_().
|
inline |
Definition at line 233 of file cross.hh.
References vcsn::cross_sequences< Sequences >::end_().
|
inlineprivate |
Definition at line 268 of file cross.hh.
References vcsn::cross_sequences< Sequences >::end(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::end().
|
private |
The sequences we iterate upon.
Definition at line 275 of file cross.hh.
Referenced by vcsn::cross_sequences< Sequences >::begin_(), vcsn::cross_sequences< Sequences >::cbegin_(), vcsn::cross_sequences< Sequences >::cend_(), and vcsn::cross_sequences< Sequences >::end_().
|
static |