29 #if defined(ArrayImageIterator_RECURSES)
30 #error Recursive header files inclusion detected in ArrayImageIterator.h
31 #else // defined(ArrayImageIterator_RECURSES)
33 #define ArrayImageIterator_RECURSES
35 #if !defined ArrayImageIterator_h
37 #define ArrayImageIterator_h
42 #include <type_traits>
43 #include <boost/iterator/iterator_facade.hpp>
44 #include <DGtal/kernel/domains/Linearizer.h>
73 typename TIterableClass
76 :
public boost::iterator_facade <
77 ArrayImageIterator<TIterableClass>,
78 typename TIterableClass::Value,
79 std::random_access_iterator_tag,
80 decltype( ((TIterableClass*)nullptr)->dereference( TIterableClass::Point::diagonal(0), typename TIterableClass::Point::Coordinate(0) ) )
140 template <
typename TOtherIterableClass >
143 typename std::enable_if< std::is_convertible<TOtherIterableClass*, IterableClass*>::value >::type* = 0
150 template <
typename TOtherIterableClass >
153 typename std::enable_if< std::is_convertible<TOtherIterableClass*, IterableClass*>::value >::type* = 0
165 template < typename TOtherIterableClass >
166 typename std::enable_if<
167 std::is_convertible<TOtherIterableClass*,
IterableClass*>::value,
179 template < typename TOtherIterableClass >
180 typename std::enable_if<
181 std::is_convertible<TOtherIterableClass*,
IterableClass*>::value,
230 friend class
boost::iterator_core_access;
259 void advance( std::ptrdiff_t n );
270 template <typename TIterableClass>
279 #include "DGtal/images/ArrayImageIterator.ih"
284 #endif // !defined ArrayImageIterator_h
286 #undef ArrayImageIterator_RECURSES
287 #endif // else defined(ArrayImageIterator_RECURSES)