MARLEY (Model of Argon Reaction Low Energy Yields) v2.0.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
Loading...
Searching...
No Matches
marley::IteratorToMember< It, R > Class Template Reference

Template class that creates an iterator to a class member based on an iterator to the class object. More...

#include <IteratorToMember.hh>

Public Types

typedef std::iterator_traits< It >::difference_type difference_type
 
typedef std::iterator_traits< It >::iterator_category iterator_category
 
typedef R * pointer
 
typedef R & reference
 
typedef std::iterator_traits< It >::value_type T
 Type pointed to by original iterator.
 
typedef R value_type
 

Public Member Functions

 IteratorToMember (It from, R T::*memptr)
 Construction from an iterator and a pointer to member.
 
bool operator!= (const IteratorToMember< It, R > &rhs) const
 
reference operator* () const
 
IteratorToMember operator+ (difference_type n) const
 
IteratorToMemberoperator++ ()
 
IteratorToMember operator++ (int)
 Postfix operator++ (dummy argument)
 
IteratorToMemberoperator+= (difference_type n)
 
difference_type operator- (const IteratorToMember< It, R > &rhs) const
 
IteratorToMember operator- (difference_type n) const
 
IteratorToMemberoperator-- ()
 
IteratorToMember operator-- (int)
 Postfix operator-- (see note about the postfix operator++)
 
IteratorToMemberoperator-= (difference_type n)
 
pointer operator-> () const
 
bool operator== (const IteratorToMember< It, R > &rhs) const
 
reference operator[] (difference_type n) const
 

Public Attributes

It m_it
 

Protected Attributes

value_type T::* m_memptr
 

Detailed Description

template<typename It, typename R>
class marley::IteratorToMember< It, R >

Template class that creates an iterator to a class member based on an iterator to the class object.

The IteratorToMember class is based on this code.

Template Parameters
Ittype of the original iterator
Rtype of the class member we want to point to

Definition at line 29 of file IteratorToMember.hh.

Member Typedef Documentation

◆ difference_type

template<typename It, typename R>
typedef std::iterator_traits<It>::difference_type marley::IteratorToMember< It, R >::difference_type

Definition at line 40 of file IteratorToMember.hh.

◆ iterator_category

template<typename It, typename R>
typedef std::iterator_traits<It>::iterator_category marley::IteratorToMember< It, R >::iterator_category

Definition at line 38 of file IteratorToMember.hh.

◆ pointer

template<typename It, typename R>
typedef R* marley::IteratorToMember< It, R >::pointer

Definition at line 42 of file IteratorToMember.hh.

◆ reference

template<typename It, typename R>
typedef R& marley::IteratorToMember< It, R >::reference

Definition at line 43 of file IteratorToMember.hh.

◆ T

template<typename It, typename R>
typedef std::iterator_traits<It>::value_type marley::IteratorToMember< It, R >::T

Type pointed to by original iterator.

Definition at line 36 of file IteratorToMember.hh.

◆ value_type

template<typename It, typename R>
typedef R marley::IteratorToMember< It, R >::value_type

Definition at line 41 of file IteratorToMember.hh.

Constructor & Destructor Documentation

◆ IteratorToMember()

template<typename It, typename R>
marley::IteratorToMember< It, R >::IteratorToMember ( It from,
R T::* memptr )
inline

Construction from an iterator and a pointer to member.

Parameters
fromIterator to the object
memptrPointer to the member of interest

Definition at line 48 of file IteratorToMember.hh.

49 : m_it(from), m_memptr(memptr){}
Template class that creates an iterator to a class member based on an iterator to the class object.

Referenced by operator++(), and operator--().

Member Function Documentation

◆ operator!=()

template<typename It, typename R>
bool marley::IteratorToMember< It, R >::operator!= ( const IteratorToMember< It, R > & rhs) const
inline

Definition at line 75 of file IteratorToMember.hh.

76 { return m_it != rhs.m_it; }

◆ operator*()

template<typename It, typename R>
IteratorToMember< It, R >::reference marley::IteratorToMember< It, R >::operator* ( ) const
inline

Definition at line 88 of file IteratorToMember.hh.

89 { return (*m_it).*m_memptr; }

◆ operator+()

template<typename It, typename R>
IteratorToMember< It, R > marley::IteratorToMember< It, R >::operator+ ( difference_type n) const
inline

Definition at line 125 of file IteratorToMember.hh.

126 { return IteratorToMember<It, R>(m_it + n, m_memptr); }
IteratorToMember(It from, R T::*memptr)
Construction from an iterator and a pointer to member.

◆ operator++() [1/2]

template<typename It, typename R>
IteratorToMember< It, R > & marley::IteratorToMember< It, R >::operator++ ( )
inline

Definition at line 104 of file IteratorToMember.hh.

105 { ++m_it; return *this; }

◆ operator++() [2/2]

template<typename It, typename R>
IteratorToMember< It, R > marley::IteratorToMember< It, R >::operator++ ( int )
inline

Postfix operator++ (dummy argument)

Note
The standard behavior for this operator is to return the un-incremented value while incrementing the operand. See discussion here.

Definition at line 139 of file IteratorToMember.hh.

140 {
141 auto result = IteratorToMember<It, R>(*this);
142 ++m_it;
143 return result;
144 }

References IteratorToMember().

◆ operator+=()

template<typename It, typename R>
IteratorToMember< It, R > & marley::IteratorToMember< It, R >::operator+= ( difference_type n)
inline

Definition at line 115 of file IteratorToMember.hh.

116 { m_it += n; return *this; }

◆ operator-() [1/2]

template<typename It, typename R>
difference_type marley::IteratorToMember< It, R >::operator- ( const IteratorToMember< It, R > & rhs) const
inline

Definition at line 69 of file IteratorToMember.hh.

70 { return m_it - rhs.m_it; }

◆ operator-() [2/2]

template<typename It, typename R>
IteratorToMember< It, R > marley::IteratorToMember< It, R >::operator- ( difference_type n) const
inline

Definition at line 130 of file IteratorToMember.hh.

131 { return IteratorToMember<It, R>(m_it - n, m_memptr); }

◆ operator--() [1/2]

template<typename It, typename R>
IteratorToMember< It, R > & marley::IteratorToMember< It, R >::operator-- ( )
inline

Definition at line 110 of file IteratorToMember.hh.

111 { --m_it; return *this; }

◆ operator--() [2/2]

template<typename It, typename R>
IteratorToMember< It, R > marley::IteratorToMember< It, R >::operator-- ( int )
inline

Postfix operator-- (see note about the postfix operator++)

Definition at line 149 of file IteratorToMember.hh.

150 {
151 auto result = IteratorToMember<It, R>(*this);
152 --m_it;
153 return result;
154 }

References IteratorToMember().

◆ operator-=()

template<typename It, typename R>
IteratorToMember< It, R > & marley::IteratorToMember< It, R >::operator-= ( difference_type n)
inline

Definition at line 120 of file IteratorToMember.hh.

121 { m_it -= n; return *this; }

◆ operator->()

template<typename It, typename R>
IteratorToMember< It, R >::pointer marley::IteratorToMember< It, R >::operator-> ( ) const
inline

Definition at line 93 of file IteratorToMember.hh.

94 { return &((*m_it).*m_memptr); }

◆ operator==()

template<typename It, typename R>
bool marley::IteratorToMember< It, R >::operator== ( const IteratorToMember< It, R > & rhs) const
inline

Definition at line 72 of file IteratorToMember.hh.

73 { return m_it == rhs.m_it; }

◆ operator[]()

template<typename It, typename R>
IteratorToMember< It, R >::reference marley::IteratorToMember< It, R >::operator[] ( difference_type n) const
inline

Definition at line 98 of file IteratorToMember.hh.

99 { return m_it[n].*m_memptr; }

Member Data Documentation

◆ m_it

template<typename It, typename R>
It marley::IteratorToMember< It, R >::m_it

Definition at line 78 of file IteratorToMember.hh.

◆ m_memptr

template<typename It, typename R>
value_type T::* marley::IteratorToMember< It, R >::m_memptr
protected

Definition at line 81 of file IteratorToMember.hh.


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