26 #ifndef MLN_CORE_INTERNAL_NEIGHB_NITER_BASE_HH
27 # define MLN_CORE_INTERNAL_NEIGHB_NITER_BASE_HH
33 # include <mln/core/internal/site_relative_iterator_base.hh>
34 # include <mln/core/internal/neighb_niter_impl.hh>
44 template <
typename W,
typename N,
typename I,
typename E>
45 class neighb_niter_base
46 :
public internal::site_relative_iterator_base< N,
49 public internal::neighb_niter_impl<W,E>
57 neighb_niter_base(
const N& nbh,
const P& c);
60 bool is_valid_()
const;
72 mln_psite(W) compute_p_() const;
81 # ifndef MLN_INCLUDE_ONLY
86 template <
typename W,
typename N,
typename I,
typename E>
88 neighb_niter_base<W,N,I,E>::neighb_niter_base()
92 template <
typename W,
typename N,
typename I,
typename E>
95 neighb_niter_base<W,N,I,E>::neighb_niter_base(
const N& nbh,
const P& c)
97 this->change_target(nbh);
102 template <
typename W,
typename N,
typename I,
typename E>
105 neighb_niter_base<W,N,I,E>::is_valid_()
const
107 return i_.is_valid();
110 template <
typename W,
typename N,
typename I,
typename E>
113 neighb_niter_base<W,N,I,E>::invalidate_()
118 template <
typename W,
typename N,
typename I,
typename E>
121 neighb_niter_base<W,N,I,E>::do_start_()
126 template <
typename W,
typename N,
typename I,
typename E>
129 neighb_niter_base<W,N,I,E>::do_next_()
134 template <
typename W,
typename N,
typename I,
typename E>
137 neighb_niter_base<W,N,I,E>::compute_p_()
const
139 return i_.compute_p_();
143 # endif // ! MLN_INCLUDE_ONLY
151 #endif // ! MLN_CORE_INTERNAL_NEIGHB_NITER_BASE_HH