OTB  9.0.0
Orfeo Toolbox
List of all members
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > Class Template Reference

#include <otbPixelComponentIterator.h>

+ Collaboration diagram for otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >:

Public Types

C++ std typedefs
using difference_type = std::ptrdiff_t
 
using value_type = std::conditional_t< is_mutable, InternalPixelType, InternalPixelType const >
 
using pointer = value_type *
 
using reference = value_type &
 
using const_reference = value_type const &
 
using iterator_category = std::forward_iterator_tag
 

Public Member Functions

Constructions & Destruction
 This class follows the rule of 0/5
 PixelComponentIterator ()=default
 
 ~PixelComponentIterator ()=default
 
 PixelComponentIterator (PixelComponentIterator const &)=default
 
 PixelComponentIterator (PixelComponentIterator &&)=default
 
PixelComponentIteratoroperator= (PixelComponentIterator const &)=default
 
PixelComponentIteratoroperator= (PixelComponentIterator &&)=default
 
template<bool IsConst_ = is_const, class = std::enable_if_t<IsConst_>>
 PixelComponentIterator (PixelComponentIterator< PixelType, MutableTag > const &rhs)
 
template<bool IsConst_ = is_const, class = std::enable_if_t<IsConst_>>
 PixelComponentIterator (PixelComponentIterator< PixelType, MutableTag > &&rhs)
 
 PixelComponentIterator (PixelType &pixel, std::vcl_size_t component=0)
 

ITK Constants and Typedefs

using PixelType = TPixel
 
using InternalPixelType = std::remove_reference_t< decltype(std::declval< PixelType >()[0])>
 
using Self = PixelComponentIterator
 
using ConstMut_IntPixelType = std::conditional_t< is_const, std::add_const_t< InternalPixelType >, InternalPixelType >
 
using SubPixelComponentIteratorType = PixelComponentIterator< ConstMut_IntPixelType, ConstOrMutable >
 
using ComponentType = typename SubPixelComponentIteratorType::ComponentType
 
static constexpr bool is_const = std::is_same<ConstOrMutable, ConstTag>::value
 
static constexpr bool is_mutable = std::is_same<ConstOrMutable, MutableTag>::value
 
static constexpr bool is_scalar_array = std::is_arithmetic<InternalPixelType>::value
 
 itkTypeMacroNoParent (PixelComponentIterator)
 

Comparison

Comparison operators. They are all hidden friends. As a consequence, they need to be defined within the class definition.

bool is_at_end () const noexcept
 
bool operator== (PixelComponentIterator const &lhs, PixelComponentIterator const &rhs) noexcept
 
bool operator!= (PixelComponentIterator const &lhs, PixelComponentIterator const &rhs) noexcept
 
bool operator<= (PixelComponentIterator const &lhs, PixelComponentIterator const &rhs) noexcept
 
bool operator< (PixelComponentIterator const &lhs, PixelComponentIterator const &rhs) noexcept
 
bool operator>= (PixelComponentIterator const &lhs, PixelComponentIterator const &rhs) noexcept
 
bool operator> (PixelComponentIterator const &lhs, PixelComponentIterator const &rhs) noexcept
 

Iterator Interface

NotNull< PixelType * > m_pixel
 
std::vcl_size_t m_component
 
SubPixelComponentIteratorType m_subiter
 
Selfoperator++ ()
 
Self operator++ (int)
 
decltype(auto) operator* ()
 
decltype(auto) operator* () const
 
auto size () const
 
template<bool IsMutable_ = is_mutable, class = std::enable_if_t<IsMutable_>>
decltype(auto) get_current_pixel ()
 
decltype(auto) get_current_pixel () const
 

Detailed Description

template<typename TPixel, typename ConstOrMutable>
class otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >

Component Iterator specialization for array pixel types. Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

Definition at line 69 of file otbPixelComponentIterator.h.

Member Typedef Documentation

◆ ComponentType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::ComponentType = typename SubPixelComponentIteratorType::ComponentType

Pixel Type.

Definition at line 90 of file otbPixelComponentIterator.h.

◆ const_reference

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::const_reference = value_type const&

Definition at line 102 of file otbPixelComponentIterator.h.

◆ ConstMut_IntPixelType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::ConstMut_IntPixelType = std::conditional_t<is_const, std::add_const_t<InternalPixelType>, InternalPixelType>

Pixel Type.

Definition at line 88 of file otbPixelComponentIterator.h.

◆ difference_type

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::difference_type = std::ptrdiff_t

Definition at line 98 of file otbPixelComponentIterator.h.

◆ InternalPixelType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::InternalPixelType = std::remove_reference_t<decltype(std::declval<PixelType>()[0])>

Pixel Type.

Definition at line 84 of file otbPixelComponentIterator.h.

◆ iterator_category

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::iterator_category = std::forward_iterator_tag

Definition at line 103 of file otbPixelComponentIterator.h.

◆ PixelType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelType = TPixel

Pixel Type.

Definition at line 83 of file otbPixelComponentIterator.h.

◆ pointer

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::pointer = value_type *

Definition at line 100 of file otbPixelComponentIterator.h.

◆ reference

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::reference = value_type &

Definition at line 101 of file otbPixelComponentIterator.h.

◆ Self

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::Self = PixelComponentIterator

Pixel Type.

Definition at line 87 of file otbPixelComponentIterator.h.

◆ SubPixelComponentIteratorType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::SubPixelComponentIteratorType = PixelComponentIterator<ConstMut_IntPixelType, ConstOrMutable>

Pixel Type.

Definition at line 89 of file otbPixelComponentIterator.h.

◆ value_type

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::value_type = std::conditional_t<is_mutable, InternalPixelType, InternalPixelType const>

Definition at line 99 of file otbPixelComponentIterator.h.

Constructor & Destructor Documentation

◆ PixelComponentIterator() [1/6]

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelComponentIterator ( )
default

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

◆ ~PixelComponentIterator()

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::~PixelComponentIterator ( )
default

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

◆ PixelComponentIterator() [2/6]

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelComponentIterator ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  )
default

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

◆ PixelComponentIterator() [3/6]

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelComponentIterator ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > &&  )
default

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

◆ PixelComponentIterator() [4/6]

template<typename TPixel , typename ConstOrMutable >
template<bool IsConst_ = is_const, class = std::enable_if_t<IsConst_>>
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelComponentIterator ( PixelComponentIterator< PixelType, MutableTag > const &  rhs)
inline

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

Definition at line 126 of file otbPixelComponentIterator.h.

◆ PixelComponentIterator() [5/6]

template<typename TPixel , typename ConstOrMutable >
template<bool IsConst_ = is_const, class = std::enable_if_t<IsConst_>>
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelComponentIterator ( PixelComponentIterator< PixelType, MutableTag > &&  rhs)
inline

Conversion move constructor. Move converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

Definition at line 137 of file otbPixelComponentIterator.h.

◆ PixelComponentIterator() [6/6]

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::PixelComponentIterator ( PixelType pixel,
std::vcl_size_t  component = 0 
)
inlineexplicit

Init Constructor. Constructs a PixelComponentIterator from a pixel

Parameters
[in,out]pixelPixel over which components are iterated

Definition at line 149 of file otbPixelComponentIterator.h.

Member Function Documentation

◆ get_current_pixel() [1/2]

template<typename TPixel , typename ConstOrMutable >
template<bool IsMutable_ = is_mutable, class = std::enable_if_t<IsMutable_>>
decltype(auto) otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::get_current_pixel ( )
inlineprivate

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 278 of file otbPixelComponentIterator.h.

◆ get_current_pixel() [2/2]

template<typename TPixel , typename ConstOrMutable >
decltype(auto) otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::get_current_pixel ( ) const
inlineprivate

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 283 of file otbPixelComponentIterator.h.

◆ is_at_end()

template<typename TPixel , typename ConstOrMutable >
bool otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::is_at_end ( ) const
inlinenoexcept

Definition at line 167 of file otbPixelComponentIterator.h.

◆ itkTypeMacroNoParent()

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::itkTypeMacroNoParent ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >  )

Run-time type information (and related methods).

◆ operator*() [1/2]

template<typename TPixel , typename ConstOrMutable >
decltype(auto) otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::operator* ( )
inline

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 241 of file otbPixelComponentIterator.h.

◆ operator*() [2/2]

template<typename TPixel , typename ConstOrMutable >
decltype(auto) otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::operator* ( ) const
inline

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 254 of file otbPixelComponentIterator.h.

◆ operator++() [1/2]

template<typename TPixel , typename ConstOrMutable >
Self& otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::operator++ ( )
inline

Pre-increments the iterator.

Precondition
! is_at_end()

Definition at line 210 of file otbPixelComponentIterator.h.

◆ operator++() [2/2]

template<typename TPixel , typename ConstOrMutable >
Self otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::operator++ ( int  )
inline

Post-increments the iterator.

Definition at line 233 of file otbPixelComponentIterator.h.

◆ operator=() [1/2]

template<typename TPixel , typename ConstOrMutable >
PixelComponentIterator& otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::operator= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > &&  )
default

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

◆ operator=() [2/2]

template<typename TPixel , typename ConstOrMutable >
PixelComponentIterator& otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::operator= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  )
default

Conversion constructor. Converts from mutable to const iterator

See also
https://quuxplusone.github.io/blog/2018/12/01/const-iterator-antipatterns/

◆ size()

template<typename TPixel , typename ConstOrMutable >
auto otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::size ( ) const
inline

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 270 of file otbPixelComponentIterator.h.

References otb::mpl::GetNumberOfComponents().

Friends And Related Function Documentation

◆ operator!=

template<typename TPixel , typename ConstOrMutable >
bool operator!= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  rhs 
)
friend

Definition at line 179 of file otbPixelComponentIterator.h.

◆ operator<

template<typename TPixel , typename ConstOrMutable >
bool operator< ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  rhs 
)
friend

Definition at line 191 of file otbPixelComponentIterator.h.

◆ operator<=

template<typename TPixel , typename ConstOrMutable >
bool operator<= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  rhs 
)
friend

Definition at line 182 of file otbPixelComponentIterator.h.

◆ operator==

template<typename TPixel , typename ConstOrMutable >
bool operator== ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  rhs 
)
friend

Definition at line 172 of file otbPixelComponentIterator.h.

◆ operator>

template<typename TPixel , typename ConstOrMutable >
bool operator> ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  rhs 
)
friend

Definition at line 200 of file otbPixelComponentIterator.h.

◆ operator>=

template<typename TPixel , typename ConstOrMutable >
bool operator>= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > > const &  rhs 
)
friend

Definition at line 198 of file otbPixelComponentIterator.h.

Member Data Documentation

◆ is_const

template<typename TPixel , typename ConstOrMutable >
constexpr bool otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::is_const = std::is_same<ConstOrMutable, ConstTag>::value
staticconstexpr

Pixel Type.

Definition at line 79 of file otbPixelComponentIterator.h.

◆ is_mutable

template<typename TPixel , typename ConstOrMutable >
constexpr bool otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::is_mutable = std::is_same<ConstOrMutable, MutableTag>::value
staticconstexpr

Pixel Type.

Definition at line 80 of file otbPixelComponentIterator.h.

◆ is_scalar_array

template<typename TPixel , typename ConstOrMutable >
constexpr bool otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::is_scalar_array = std::is_arithmetic<InternalPixelType>::value
staticconstexpr

Pixel Type.

Definition at line 85 of file otbPixelComponentIterator.h.

◆ m_component

template<typename TPixel , typename ConstOrMutable >
std::vcl_size_t otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::m_component
private

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 289 of file otbPixelComponentIterator.h.

◆ m_pixel

template<typename TPixel , typename ConstOrMutable >
NotNull<PixelType*> otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::m_pixel
private

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 288 of file otbPixelComponentIterator.h.

◆ m_subiter

template<typename TPixel , typename ConstOrMutable >
SubPixelComponentIteratorType otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< mpl::is_array_v< std::decay_t< TPixel > > > >::m_subiter
private

Iterator to subcomponents. In array cases, components can be array-like pixels like std::complex<>

Definition at line 294 of file otbPixelComponentIterator.h.


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