Gaudi::details::masked_iterator< ITERATOR, MASK > Class Template Reference

"masked" iterator iterates ober "masked" intries in the cotainner/range More...

#include <GaudiKernel/SmartRanges.h>

Inheritance diagram for Gaudi::details::masked_iterator< ITERATOR, MASK >:
Collaboration diagram for Gaudi::details::masked_iterator< ITERATOR, MASK >:

Public Member Functions

 masked_iterator (const MASK &mask, ITERATOR b)
 
 masked_iterator (MASK &&mask, ITERATOR b)
 
 masked_iterator ()
 

Private Member Functions

void increment ()
 
std::iterator_traits< ITERATOR >::reference dereference () const
 
bool equal (const masked_iterator &other) const
 

Private Attributes

ITERATOR m_iterator
 
MASK m_mask
 
size_t m_index
 

Friends

class boost::iterator_core_access
 

Detailed Description

template<class ITERATOR, class MASK>
class Gaudi::details::masked_iterator< ITERATOR, MASK >

"masked" iterator iterates ober "masked" intries in the cotainner/range

Definition at line 45 of file SmartRanges.h.

Constructor & Destructor Documentation

template<class ITERATOR , class MASK >
Gaudi::details::masked_iterator< ITERATOR, MASK >::masked_iterator ( const MASK &  mask,
ITERATOR  b 
)
inline

Definition at line 55 of file SmartRanges.h.

56  : m_iterator ( b )
57  , m_mask ( mask )
58  , m_index ( mask.find_first() )
59  {
60  if ( MASK::npos != m_index ) { std::advance ( m_iterator , m_index ) ; }
61  }
T advance(T...args)
template<class ITERATOR , class MASK >
Gaudi::details::masked_iterator< ITERATOR, MASK >::masked_iterator ( MASK &&  mask,
ITERATOR  b 
)
inline

Definition at line 63 of file SmartRanges.h.

64  : m_iterator ( b )
65  , m_mask ( mask )
66  , m_index ( mask.find_first() )
67  {
68  if ( MASK::npos != m_index ) { std::advance ( m_iterator , m_index ) ; }
69  }
T advance(T...args)
template<class ITERATOR , class MASK >
Gaudi::details::masked_iterator< ITERATOR, MASK >::masked_iterator ( )
inline

Definition at line 71 of file SmartRanges.h.

72  : m_iterator ()
73  , m_mask ()
74  , m_index ( MASK::npos )
75  {}

Member Function Documentation

template<class ITERATOR , class MASK >
std::iterator_traits<ITERATOR>::reference Gaudi::details::masked_iterator< ITERATOR, MASK >::dereference ( ) const
inlineprivate

Definition at line 88 of file SmartRanges.h.

88 { return *m_iterator ; }
template<class ITERATOR , class MASK >
bool Gaudi::details::masked_iterator< ITERATOR, MASK >::equal ( const masked_iterator< ITERATOR, MASK > &  other) const
inlineprivate

Definition at line 90 of file SmartRanges.h.

91  { return m_index == other.m_index ; }
template<class ITERATOR , class MASK >
void Gaudi::details::masked_iterator< ITERATOR, MASK >::increment ( )
inlineprivate

Definition at line 80 of file SmartRanges.h.

81  {
82  const size_t m = m_mask.find_next( m_index ) ;
83  if ( m != MASK::npos ) { std::advance ( m_iterator , m - m_index ) ; }
84  m_index = m ;
85  }
T advance(T...args)
constexpr double m
Definition: SystemOfUnits.h:93

Friends And Related Function Documentation

template<class ITERATOR , class MASK >
friend class boost::iterator_core_access
friend

Definition at line 79 of file SmartRanges.h.

Member Data Documentation

template<class ITERATOR , class MASK >
size_t Gaudi::details::masked_iterator< ITERATOR, MASK >::m_index
private

Definition at line 97 of file SmartRanges.h.

template<class ITERATOR , class MASK >
ITERATOR Gaudi::details::masked_iterator< ITERATOR, MASK >::m_iterator
private

Definition at line 95 of file SmartRanges.h.

template<class ITERATOR , class MASK >
MASK Gaudi::details::masked_iterator< ITERATOR, MASK >::m_mask
private

Definition at line 96 of file SmartRanges.h.


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