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

#include <otbPixelComponentIterator.h>

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

Public Types

C++ std typedefs
using difference_type = std::ptrdiff_t
 
using value_type = std::conditional_t< is_mutable, PixelType, PixelType 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) noexcept
 
template<bool IsConst_ = is_const, class = std::enable_if_t<IsConst_>>
 PixelComponentIterator (PixelComponentIterator< PixelType, MutableTag > &&rhs) noexcept
 
 PixelComponentIterator (PixelType &pixel, std::vcl_size_t component=0) noexcept
 

ITK Constants and Typedefs

using PixelType = TPixel
 
using ComponentType = PixelType
 
using Self = PixelComponentIterator
 
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++ () noexcept
 
Self operator++ (int) noexcept
 
decltype(auto) operator* () const noexcept
 
decltype(auto) operator* () noexcept
 
bool end () const noexcept
 
constexpr std::vcl_size_t size () const noexcept
 

Detailed Description

template<typename TPixel, typename ConstOrMutable>
class otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >

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

Member Typedef Documentation

◆ ComponentType

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::ComponentType = PixelType

Pixel Type.

Definition at line 505 of file otbPixelComponentIterator.h.

◆ const_reference

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

Definition at line 519 of file otbPixelComponentIterator.h.

◆ difference_type

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

Definition at line 515 of file otbPixelComponentIterator.h.

◆ iterator_category

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

Definition at line 520 of file otbPixelComponentIterator.h.

◆ PixelType

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

Pixel Type.

Definition at line 503 of file otbPixelComponentIterator.h.

◆ pointer

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

Definition at line 517 of file otbPixelComponentIterator.h.

◆ reference

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

Definition at line 518 of file otbPixelComponentIterator.h.

◆ Self

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

Pixel Type.

Definition at line 507 of file otbPixelComponentIterator.h.

◆ value_type

template<typename TPixel , typename ConstOrMutable >
using otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::value_type = std::conditional_t<is_mutable, PixelType, PixelType const>

Definition at line 516 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< std::is_arithmetic< 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< std::is_arithmetic< 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< std::is_arithmetic< TPixel >::value > >::PixelComponentIterator ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< 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< std::is_arithmetic< TPixel >::value > >::PixelComponentIterator ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< 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< std::is_arithmetic< TPixel >::value > >::PixelComponentIterator ( PixelComponentIterator< PixelType, MutableTag > const &  rhs)
inlinenoexcept

Conversion constructor. Converts from mutable to const iterator

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

Definition at line 543 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< std::is_arithmetic< TPixel >::value > >::PixelComponentIterator ( PixelComponentIterator< PixelType, MutableTag > &&  rhs)
inlinenoexcept

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 553 of file otbPixelComponentIterator.h.

◆ PixelComponentIterator() [6/6]

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::PixelComponentIterator ( PixelType pixel,
std::vcl_size_t  component = 0 
)
inlineexplicitnoexcept

Init Constructor. Constructs a PixelComponentIterator from a pixel

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

Definition at line 564 of file otbPixelComponentIterator.h.

Member Function Documentation

◆ end()

template<typename TPixel , typename ConstOrMutable >
bool otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::end ( ) const
inlinenoexcept

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 652 of file otbPixelComponentIterator.h.

◆ is_at_end()

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

Definition at line 579 of file otbPixelComponentIterator.h.

◆ itkTypeMacroNoParent()

template<typename TPixel , typename ConstOrMutable >
otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::itkTypeMacroNoParent ( PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< 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< std::is_arithmetic< TPixel >::value > >::operator* ( ) const
inlinenoexcept

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 642 of file otbPixelComponentIterator.h.

◆ operator*() [2/2]

template<typename TPixel , typename ConstOrMutable >
decltype(auto) otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::operator* ( )
inlinenoexcept

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 646 of file otbPixelComponentIterator.h.

◆ operator++() [1/2]

template<typename TPixel , typename ConstOrMutable >
Self& otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::operator++ ( )
inlinenoexcept

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 614 of file otbPixelComponentIterator.h.

◆ operator++() [2/2]

template<typename TPixel , typename ConstOrMutable >
Self otb::internals::PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > >::operator++ ( int  )
inlinenoexcept

Post-increment the iterator.

Definition at line 624 of file otbPixelComponentIterator.h.

◆ operator=() [1/2]

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

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 654 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< std::is_arithmetic< TPixel >::value > > const &  lhs,
PixelComponentIterator< TPixel, ConstOrMutable, typename std::enable_if_t< std::is_arithmetic< TPixel >::value > > const &  rhs 
)
friend

Definition at line 589 of file otbPixelComponentIterator.h.

◆ operator<

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

Definition at line 597 of file otbPixelComponentIterator.h.

◆ operator<=

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

Definition at line 592 of file otbPixelComponentIterator.h.

◆ operator==

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

Definition at line 584 of file otbPixelComponentIterator.h.

◆ operator>

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

Definition at line 604 of file otbPixelComponentIterator.h.

◆ operator>=

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

Definition at line 602 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< std::is_arithmetic< TPixel >::value > >::is_const = std::is_same<ConstOrMutable, ConstTag>::value
staticconstexpr

Pixel Type.

Definition at line 499 of file otbPixelComponentIterator.h.

◆ is_mutable

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

Pixel Type.

Definition at line 500 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< std::is_arithmetic< TPixel >::value > >::m_component
private

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 661 of file otbPixelComponentIterator.h.

◆ m_pixel

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

Pre-increment the iterator.

Precondition
! is_at_end()

Definition at line 660 of file otbPixelComponentIterator.h.


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