27 #ifndef MLN_TOPO_N_FACE_ITER_HH
28 # define MLN_TOPO_N_FACE_ITER_HH
35 # include <mln/topo/internal/complex_set_iterator_base.hh>
36 # include <mln/topo/face.hh>
51 template <
unsigned D>
class complex;
57 template <
typename F,
typename E>
58 class complex_set_iterator_base;
110 void set_n (
unsigned n);
115 void invalidate_face_id_();
132 template <
unsigned D>
168 void set_n (
unsigned n);
173 void invalidate_face_id_();
181 # ifndef MLN_INCLUDE_ONLY
187 template <
unsigned D>
194 template <
unsigned D>
199 mln_precondition(n <= D);
205 template <
unsigned D>
213 template <
unsigned D>
220 if (f_.face_id() + 1 < f_.cplx().nfaces_of_dim(n()))
226 invalidate_face_id_();
230 template <
unsigned D>
233 n_face_fwd_iter<D>::invalidate_face_id_()
235 f_.set_face_id(f_.cplx().nfaces_of_dim(n()));
238 template <
unsigned D>
246 template <
unsigned D>
251 mln_precondition(n <= D);
260 template <
unsigned D>
267 template <
unsigned D>
272 mln_precondition(n <= D);
278 template <
unsigned D>
283 f_.set_face_id(f_.cplx().nfaces_of_dim(n()) - 1);
286 template <
unsigned D>
293 if (f_.face_id() > 0)
299 invalidate_face_id_();
303 template <
unsigned D>
306 n_face_bkd_iter<D>::invalidate_face_id_()
308 f_.set_face_id(f_.cplx().nfaces_of_dim(n()));
311 template <
unsigned D>
319 template <
unsigned D>
324 mln_precondition(n <= D);
328 # endif // ! MLN_INCLUDE_ONLY
334 #endif // ! MLN_TOPO_N_FACE_ITER_HH