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

#include <otbPixelComponentIterator.h>

+ Collaboration diagram for otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >:

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< typename PixelType::value_type >
 
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 = InternalPixelType
 
static constexpr bool is_const = std::is_same<ConstOrMutable, ConstTag>::value
 
static constexpr bool is_mutable = std::is_same<ConstOrMutable, MutableTag>::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
 
Selfoperator++ ()
 
Self operator++ (int)
 
decltype(auto) operator* ()
 
decltype(auto) operator* () const
 
constexpr std::vcl_size_t size () const noexcept
 
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< boost::is_complex< std::decay_t< TPixel > >::value > >

Component Iterator specialization for complex 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 302 of file otbPixelComponentIterator.h.

Member Typedef Documentation

◆ ComponentType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::ComponentType = InternalPixelType

Pixel Type.

Definition at line 322 of file otbPixelComponentIterator.h.

◆ const_reference

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

Definition at line 334 of file otbPixelComponentIterator.h.

◆ ConstMut_IntPixelType

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

Pixel Type.

Definition at line 320 of file otbPixelComponentIterator.h.

◆ difference_type

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::difference_type = std::ptrdiff_t

Definition at line 330 of file otbPixelComponentIterator.h.

◆ InternalPixelType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::InternalPixelType = std::remove_reference_t<typename PixelType::value_type>

Pixel Type.

Definition at line 317 of file otbPixelComponentIterator.h.

◆ iterator_category

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::iterator_category = std::forward_iterator_tag

Definition at line 335 of file otbPixelComponentIterator.h.

◆ PixelType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::PixelType = TPixel

Pixel Type.

Definition at line 315 of file otbPixelComponentIterator.h.

◆ pointer

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::pointer = value_type *

Definition at line 332 of file otbPixelComponentIterator.h.

◆ reference

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::reference = value_type &

Definition at line 333 of file otbPixelComponentIterator.h.

◆ Self

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::Self = PixelComponentIterator

Pixel Type.

Definition at line 319 of file otbPixelComponentIterator.h.

◆ SubPixelComponentIteratorType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::SubPixelComponentIteratorType = PixelComponentIterator<ConstMut_IntPixelType, ConstOrMutable>

Pixel Type.

Definition at line 321 of file otbPixelComponentIterator.h.

◆ value_type

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

Definition at line 331 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< boost::is_complex< std::decay_t< TPixel > >::value > >::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< boost::is_complex< std::decay_t< TPixel > >::value > >::~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< boost::is_complex< std::decay_t< TPixel > >::value > >::PixelComponentIterator ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > > 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< boost::is_complex< std::decay_t< TPixel > >::value > >::PixelComponentIterator ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > > &&  )
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< boost::is_complex< std::decay_t< TPixel > >::value > >::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 358 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< boost::is_complex< std::decay_t< TPixel > >::value > >::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 368 of file otbPixelComponentIterator.h.

◆ PixelComponentIterator() [6/6]

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::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 379 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< boost::is_complex< std::decay_t< TPixel > >::value > >::get_current_pixel ( )
inlineprivate

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 472 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< boost::is_complex< std::decay_t< TPixel > >::value > >::get_current_pixel ( ) const
inlineprivate

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 477 of file otbPixelComponentIterator.h.

◆ is_at_end()

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

Definition at line 396 of file otbPixelComponentIterator.h.

◆ itkTypeMacroNoParent()

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::itkTypeMacroNoParent ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >  )

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< boost::is_complex< std::decay_t< TPixel > >::value > >::operator* ( )
inline

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 449 of file otbPixelComponentIterator.h.

◆ operator*() [2/2]

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

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 456 of file otbPixelComponentIterator.h.

◆ operator++() [1/2]

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

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 431 of file otbPixelComponentIterator.h.

◆ operator++() [2/2]

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

Post-increment the iterator.

Definition at line 441 of file otbPixelComponentIterator.h.

◆ operator=() [1/2]

template<typename TPixel , typename ConstOrMutable >
PixelComponentIterator& otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::operator= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > > &&  )
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< boost::is_complex< std::decay_t< TPixel > >::value > >::operator= ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > > 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 >
constexpr std::vcl_size_t otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::size ( ) const
inlineconstexprnoexcept

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 465 of file otbPixelComponentIterator.h.

Friends And Related Function Documentation

◆ operator!=

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

Definition at line 406 of file otbPixelComponentIterator.h.

◆ operator<

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

Definition at line 414 of file otbPixelComponentIterator.h.

◆ operator<=

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

Definition at line 409 of file otbPixelComponentIterator.h.

◆ operator==

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

Definition at line 401 of file otbPixelComponentIterator.h.

◆ operator>

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

Definition at line 421 of file otbPixelComponentIterator.h.

◆ operator>=

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

Definition at line 419 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< boost::is_complex< std::decay_t< TPixel > >::value > >::is_const = std::is_same<ConstOrMutable, ConstTag>::value
staticconstexpr

Pixel Type.

Definition at line 311 of file otbPixelComponentIterator.h.

◆ is_mutable

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

Pixel Type.

Definition at line 312 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< boost::is_complex< std::decay_t< TPixel > >::value > >::m_component
private

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 484 of file otbPixelComponentIterator.h.

◆ m_pixel

template<typename TPixel , typename ConstOrMutable >
NotNull<PixelType*> otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< boost::is_complex< std::decay_t< TPixel > >::value > >::m_pixel
private

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 483 of file otbPixelComponentIterator.h.


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