Classes | Namespaces | Typedefs | Functions
NestedIterator.h File Reference

Iterators recursing though nested collections. More...

#include <type_traits>
#include <iterator>

Go to the source code of this file.

Classes

struct  lar::details::type_traits::has_const_iterator_struct< T, bool >
 
struct  lar::has_const_iterator< T >
 
class  lar::Identity< T >
 Functor returning the object specified as argument. More...
 
class  lar::PairSecond< T >
 
class  lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >
 Internal helper class: actual implementation of nested iterator. More...
 
struct  lar::details::type_traits::has_const_iterator_struct< T, bool >
 
struct  lar::details::type_traits::has_const_iterator_struct< T, true >
 
class  lar::Identity< T >
 Functor returning the object specified as argument. More...
 
class  lar::PairSecond< T >
 
class  lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >
 Internal helper class: actual implementation of nested iterator. More...
 
struct  lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::BeginPositionTag
 
struct  lar::deep_const_fwd_iterator_nested< ITER, INNERCONTEXTRACT >::EndPositionTag
 

Namespaces

 lar
 LArSoft-specific namespace.
 
 lar::details
 Namespace hiding implementation details.
 
 lar::details::type_traits
 

Typedefs

template<typename CITER , typename INNERCONTEXTRACT = Identity<typename CITER::value_type>>
using lar::double_fwd_const_iterator = deep_const_fwd_iterator_nested< CITER, INNERCONTEXTRACT >
 

Functions

template<typename T >
constexpr auto lar::details::type_traits::has_const_iterator_helper (T *=nullptr) -> decltype(typename T::const_iterator(), bool())
 
constexpr bool lar::details::type_traits::has_const_iterator_helper (...)
 
template<typename CITER , typename INNERCONTEXTRACT >
void std::swap (lar::deep_const_fwd_iterator_nested< CITER, INNERCONTEXTRACT > &a, lar::deep_const_fwd_iterator_nested< CITER, INNERCONTEXTRACT > &b)
 

Detailed Description

Iterators recursing though nested collections.

Author
Gianluca Petrillo (petri.nosp@m.llo@.nosp@m.fnal..nosp@m.gov)
Date
August 22th, 2014

This header is currently a draft with reduced (essential) functionality. Its ambition is to become general enough to be used transparently.

Definition in file NestedIterator.h.

Function Documentation

template<typename CITER , typename INNERCONTEXTRACT >
void std::swap ( lar::deep_const_fwd_iterator_nested< CITER, INNERCONTEXTRACT > &  a,
lar::deep_const_fwd_iterator_nested< CITER, INNERCONTEXTRACT > &  b 
)
inline

Definition at line 381 of file NestedIterator.h.

385  { a.swap(b); }
void swap(iterator_type &with)
Swaps this with the specified iterator.