27 #ifndef MLN_TOPO_ADJ_HIGHER_DIM_CONNECTED_N_FACE_ITER_HH
28 # define MLN_TOPO_ADJ_HIGHER_DIM_CONNECTED_N_FACE_ITER_HH
38 # include <mln/topo/internal/complex_relative_iterator_base.hh>
39 # include <mln/topo/algebraic_face.hh>
49 template <
unsigned D>
class complex;
70 adj_higher_dim_connected_n_face_fwd_iter<D> >,
84 template <
typename Fref>
107 template <
unsigned D>
111 adj_higher_dim_connected_n_face_bkd_iter<D> >,
125 template <
typename Fref>
144 template <
unsigned D>
158 # ifndef MLN_INCLUDE_ONLY
164 template <
unsigned D>
170 template <
unsigned D>
171 template <
typename Fref>
183 template <
unsigned D>
186 adj_higher_dim_connected_n_face_fwd_iter<D>::update_adj_faces_()
188 mln_precondition(this->c_);
190 this->update_adj_faces__(*this->c_, this->adj_faces_);
198 template <
unsigned D>
200 adj_higher_dim_connected_n_face_bkd_iter<D>::adj_higher_dim_connected_n_face_bkd_iter()
204 template <
unsigned D>
205 template <
typename Fref>
207 adj_higher_dim_connected_n_face_bkd_iter<D>::adj_higher_dim_connected_n_face_bkd_iter(
const Fref& f_ref)
212 template <
unsigned D>
215 adj_higher_dim_connected_n_face_bkd_iter<D>::update_adj_faces_()
217 mln_precondition(this->c_);
219 this->update_adj_faces__(*this->c_, this->adj_faces_);
234 template <
unsigned D>
237 adj_higher_dim_connected_n_face_iterator<D>::update_adj_faces__(
const topo::face<D>& center,
248 std::set< algebraic_face<D> > faces_set;
249 typedef std::vector< algebraic_face<D> > faces_t;
252 faces_t shared_higher_faces = center.higher_dim_adj_faces();
253 for (
typename faces_t::const_iterator slf = shared_higher_faces.begin();
254 slf != shared_higher_faces.end(); ++slf)
258 faces_t adj_n_faces = slf->lower_dim_adj_faces();
259 for (
typename faces_t::const_iterator af = adj_n_faces.begin();
260 af != adj_n_faces.end(); ++af)
266 faces_set.find(*af) == faces_set.end())
268 adj_faces.push_back(*af);
269 faces_set.insert(*af);
277 # endif // ! MLN_INCLUDE_ONLY
283 #endif // ! MLN_TOPO_ADJ_HIGHER_DIM_CONNECTED_N_FACE_ITER_HH