27 #ifndef MLN_UTIL_INTERNAL_GRAPH_NBH_ITER_HH
28 # define MLN_UTIL_INTERNAL_GRAPH_NBH_ITER_HH
30 # include <mln/core/concept/proxy.hh>
31 # include <mln/util/internal/graph_nbh_iter_base.hh>
32 # include <mln/util/vertex.hh>
33 # include <mln/util/edge.hh>
54 vertex_nbh_vertex_fwd_iterator<G> >
96 vertex_nbh_vertex_bkd_iterator<G> >
112 template <
typename C>
139 template <
typename G>
144 vertex_nbh_edge_fwd_iterator<G> >
160 template <
typename C>
183 template <
typename G>
188 vertex_nbh_edge_bkd_iterator<G> >
204 template <
typename C>
231 template <
typename G>
236 edge_nbh_edge_fwd_iterator<G> >
252 template <
typename C>
275 template <
typename G>
280 edge_nbh_edge_bkd_iterator<G> >
297 template <
typename C>
319 # ifndef MLN_INCLUDE_ONLY
325 template <
typename G>
331 template <
typename G>
332 template <
typename C>
339 template <
typename G>
344 return this->c_->is_valid() && this->i_ < this->c_->nmax_nbh_vertices();
347 template <
typename G>
355 template <
typename G>
363 template <
typename G>
368 this->elt_.update_id(this->c_->ith_nbh_vertex(this->i_));
375 template <
typename G>
381 template <
typename G>
382 template <
typename C>
389 template <
typename G>
394 return this->c_->is_valid() && this->i_ < this->c_->nmax_nbh_vertices();
397 template <
typename G>
402 return this->c_->nmax_nbh_vertices() - 1;
405 template <
typename G>
413 template <
typename G>
418 this->elt_.update_id(this->c_->ith_nbh_vertex(this->i_));
426 template <
typename G>
432 template <
typename G>
433 template <
typename C>
440 template <
typename G>
445 return this->c_->is_valid() && this->i_ < this->c_->nmax_nbh_edges();
448 template <
typename G>
456 template <
typename G>
464 template <
typename G>
469 this->elt_.update_id(this->c_->ith_nbh_edge(this->i_));
476 template <
typename G>
482 template <
typename G>
483 template <
typename C>
490 template <
typename G>
495 return this->c_->is_valid() && this->i_ < this->c_->nmax_nbh_edges();
498 template <
typename G>
503 return this->c_->nmax_nbh_edges() - 1;
506 template <
typename G>
514 template <
typename G>
519 this->elt_.update_id(this->c_->ith_nbh_edge(this->i_));
528 template <
typename G>
534 template <
typename G>
535 template <
typename C>
542 template <
typename G>
547 return this->c_->is_valid() && this->i_ < this->c_->nmax_nbh_edges();
550 template <
typename G>
558 template <
typename G>
566 template <
typename G>
576 while (e_id == this->c_->id())
578 this->i_ = next_id_();
579 e_id = this->c_->ith_nbh_edge(this->i_);
582 this->elt_.update_id(e_id);
589 template <
typename G>
595 template <
typename G>
596 template <
typename C>
603 template <
typename G>
608 return this->c_->is_valid() && this->i_ < this->c_->nmax_nbh_edges();
611 template <
typename G>
616 return this->c_->nmax_nbh_edges() - 1;
619 template <
typename G>
627 template <
typename G>
635 unsigned e_id = this->c_->ith_nbh_edge(this->i_);
636 while (e_id == this->c_->id())
638 this->i_ = next_id_();
639 e_id = this->c_->ith_nbh_edge(this->i_);
642 this->elt_.update_id(e_id);
645 # endif // !MLN_INCLUDE_ONLY
652 #endif // ! MLN_UTIL_INTERNAL_GRAPH_NBH_ITER_HH