32 #if defined(HyperRectDomain_Iterator_RECURSES)
33 #error Recursive header files inclusion detected in HyperRectDomain_Iterator.h
34 #else // defined(HyperRectDomain_Iterator_RECURSES)
36 #define HyperRectDomain_Iterator_RECURSES
38 #if !defined HyperRectDomain_Iterator_h
40 #define HyperRectDomain_Iterator_h
46 #include "DGtal/base/Common.h"
51 template<
typename _Iterator>
53 :
public iterator<typename iterator_traits<_Iterator>::iterator_category,
54 typename iterator_traits<_Iterator>::value_type,
55 typename iterator_traits<_Iterator>::difference_type,
56 typename iterator_traits<_Iterator>::pointer,
57 typename iterator_traits<_Iterator>::reference>
65 typedef typename iterator_traits<_Iterator>::difference_type
67 typedef typename iterator_traits<_Iterator>::reference
reference;
68 typedef typename iterator_traits<_Iterator>::pointer
pointer;
135 {
return *(*
this + __n); }
137 template<
typename _Iterator>
141 {
return __x.
base() == __y.
base(); }
142 template<
typename _Iterator>
146 {
return !(__x == __y); }
157 template<
typename TPo
int>
172 ASSERT( lower <= upper );
173 ASSERT( lower <= p && p <= upper );
219 if ( myCurrentPos < TPoint::dimension )
222 while (( myCurrentPos < TPoint::dimension - 1 ) &&
262 if ( myCurrentPos < TPoint::dimension )
265 while (( myCurrentPos < TPoint::dimension - 1 ) &&
305 template<
typename TPo
int>
316 #ifdef CPP11_INITIALIZER_LIST
319 std::initializer_list<Dimension> subDomain)
322 ASSERT( lower <= upper );
323 ASSERT( lower <= p && p <= upper );
324 ASSERT( subDomain.size() <= TPoint::dimension );
326 for (
const unsigned int *c = subDomain.begin();
327 c != subDomain.end(); ++c )
329 ASSERT( *c <= TPoint::dimension );
338 const std::vector<Dimension> &subDomain)
341 ASSERT( lower <= upper );
342 ASSERT( lower <= p && p <= upper );
343 ASSERT( subDomain.size() <= TPoint::dimension );
345 for (
typename std::vector<Dimension>::const_iterator it = subDomain.begin();
346 it != subDomain.end(); ++it )
348 ASSERT( *it <= TPoint::dimension );
501 #endif // !defined HyperRectDomain_Iterator_h
503 #undef HyperRectDomain_Iterator_RECURSES
504 #endif // else defined(HyperRectDomain_Iterator_RECURSES)