26 #ifndef MLN_TOPO_FACE_ITER_HH
27 # define MLN_TOPO_FACE_ITER_HH
34 # include <mln/topo/internal/complex_set_iterator_base.hh>
35 # include <mln/topo/face.hh>
36 # include <mln/topo/face_iter.hh>
48 template <
unsigned D>
class complex;
53 template <
typename F,
typename E>
54 class complex_set_iterator_base;
70 :
public internal::complex_set_iterator_base< topo::face<D>, face_fwd_iter<D> >
75 typedef internal::complex_set_iterator_base< topo::face<D>,
self_ > super_;
78 using super_::is_valid;
79 using super_::invalidate;
111 template <
unsigned D>
113 :
public internal::complex_set_iterator_base< topo::face<D>, face_bkd_iter<D> >
118 typedef internal::complex_set_iterator_base< topo::face<D>,
self_ > super_;
121 using super_::is_valid;
122 using super_::invalidate;
147 # ifndef MLN_INCLUDE_ONLY
153 template <
unsigned D>
160 template <
unsigned D>
166 mln_postcondition(!is_valid());
169 template <
unsigned D>
178 template <
unsigned D>
185 if (f_.face_id() + 1 < f_.cplx().nfaces_of_dim(f_.n()))
205 template <
unsigned D>
212 template <
unsigned D>
218 mln_postcondition(!is_valid());
221 template <
unsigned D>
227 f_.set_face_id(f_.cplx().template nfaces_of_static_dim<D>() - 1);
230 template <
unsigned D>
237 if (f_.face_id() > 0)
245 f_.set_face_id(f_.cplx().nfaces_of_dim(f_.n()) - 1);
252 # endif // ! MLN_INCLUDE_ONLY
258 #endif // ! MLN_TOPO_FACE_ITER_HH