Awali
Another Weighted Automata library
Public Types | Public Member Functions | Data Fields
awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator Struct Reference

Composite iterator. More...

#include <zip_maps.hh>

Public Types

using iterators_t = std::tuple< typename std::remove_reference< Maps >::type::const_iterator... >
 
using key_t = typename std::remove_const< typename std::tuple_element< 0, values_t >::type::first_type >::type
 Common key type. More...
 
using mapped_t = std::tuple< const typename std::remove_reference< Maps >::type::mapped_type &... >
 Tuple of mapped types. More...
 
using ranges_t = std::tuple< std::pair< typename std::remove_reference< Maps >::type::const_iterator, typename std::remove_reference< Maps >::type::const_iterator >... >
 
using references_t = std::tuple< const typename std::remove_reference< Maps >::type::value_type &... >
 
using values_t = std::tuple< typename std::remove_reference< Maps >::type::value_type... >
 

Public Member Functions

 iterator (zipped_maps &zip, typename std::remove_reference< Maps >::type::const_iterator... is, typename std::remove_reference< Maps >::type::const_iterator... ends)
 
std::pair< key_t, mapped_tdereference_ (as_pair)
 
values_t dereference_ (as_tuple)
 
std::pair< key_t, mapped_tdereference_as_pair ()
 Return as <k1, <v1, v2...>>. More...
 
references_t dereference_as_tuple ()
 Return as <<k1, v1>, <k1, v2>, ...>. More...
 
bool operator!= (const iterator &that) const
 
auto operator* () -> decltype(this->dereference_(Dereference()))
 
iteratoroperator++ ()
 Advance to next position. More...
 

Data Fields

iterators_t ends_
 The genuine ends. More...
 
iterators_t is_
 The current position. More...
 
bool is_done_
 Whether we reached the end. More...
 
zipped_mapszip_
 The maps etc. More...
 

Detailed Description

template<typename Dereference = as_tuple, typename... Maps>
struct awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator

Composite iterator.

Member Typedef Documentation

◆ iterators_t

template<typename Dereference = as_tuple, typename... Maps>
using awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::iterators_t = std::tuple<typename std::remove_reference<Maps>::type::const_iterator...>

◆ key_t

template<typename Dereference = as_tuple, typename... Maps>
using awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::key_t = typename std::remove_const<typename std::tuple_element<0, values_t>::type::first_type>::type

Common key type.

◆ mapped_t

template<typename Dereference = as_tuple, typename... Maps>
using awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::mapped_t = std::tuple<const typename std::remove_reference<Maps>::type::mapped_type&...>

Tuple of mapped types.

◆ ranges_t

template<typename Dereference = as_tuple, typename... Maps>
using awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::ranges_t = std::tuple<std::pair<typename std::remove_reference<Maps>::type::const_iterator, typename std::remove_reference<Maps>::type::const_iterator>...>

◆ references_t

template<typename Dereference = as_tuple, typename... Maps>
using awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::references_t = std::tuple<const typename std::remove_reference<Maps>::type::value_type&...>

◆ values_t

template<typename Dereference = as_tuple, typename... Maps>
using awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::values_t = std::tuple<typename std::remove_reference<Maps>::type::value_type...>

Constructor & Destructor Documentation

◆ iterator()

template<typename Dereference = as_tuple, typename... Maps>
awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::iterator ( zipped_maps zip,
typename std::remove_reference< Maps >::type::const_iterator...  is,
typename std::remove_reference< Maps >::type::const_iterator...  ends 
)

Member Function Documentation

◆ dereference_() [1/2]

template<typename Dereference = as_tuple, typename... Maps>
std::pair<key_t, mapped_t> awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::dereference_ ( as_pair  )

◆ dereference_() [2/2]

template<typename Dereference = as_tuple, typename... Maps>
values_t awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::dereference_ ( as_tuple  )

◆ dereference_as_pair()

template<typename Dereference = as_tuple, typename... Maps>
std::pair<key_t, mapped_t> awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::dereference_as_pair ( )

Return as <k1, <v1, v2...>>.

◆ dereference_as_tuple()

template<typename Dereference = as_tuple, typename... Maps>
references_t awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::dereference_as_tuple ( )

Return as <<k1, v1>, <k1, v2>, ...>.

◆ operator!=()

template<typename Dereference = as_tuple, typename... Maps>
bool awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::operator!= ( const iterator that) const

◆ operator*()

template<typename Dereference = as_tuple, typename... Maps>
auto awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::operator* ( ) -> decltype(this->dereference_(Dereference()))

◆ operator++()

template<typename Dereference = as_tuple, typename... Maps>
iterator& awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::operator++ ( )

Advance to next position.

Field Documentation

◆ ends_

template<typename Dereference = as_tuple, typename... Maps>
iterators_t awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::ends_

The genuine ends.

◆ is_

template<typename Dereference = as_tuple, typename... Maps>
iterators_t awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::is_

The current position.

◆ is_done_

template<typename Dereference = as_tuple, typename... Maps>
bool awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::is_done_

Whether we reached the end.

◆ zip_

template<typename Dereference = as_tuple, typename... Maps>
zipped_maps& awali::sttc::internal::zipped_maps< Dereference, Maps >::iterator::zip_

The maps etc.


The documentation for this struct was generated from the following file: