27 #ifndef MLN_CORE_NEIGHB_HH
28 # define MLN_CORE_NEIGHB_HH
38 # include <mln/core/internal/neighb_base.hh>
39 # include <mln/core/internal/neighb_niter_base.hh>
40 # include <mln/core/internal/site_relative_iterator_base.hh>
41 # include <mln/core/internal/neighb_niter_impl.hh>
48 template <
typename W>
class neighb_fwd_niter;
49 template <
typename W>
class neighb_bkd_niter;
50 template <
typename W>
class neighb;
77 :
public internal::neighb_base<W,neighb<W> >
79 typedef internal::neighb_base<W,neighb<W> > super_;
104 template <
typename W>
105 class neighb_fwd_niter
106 :
public internal::neighb_niter_base<W,neighb<W>,
107 mln_fwd_qiter(W),neighb_fwd_niter<W> >
110 internal::neighb_niter_base<W,neighb<W>,
111 mln_fwd_qiter(W),neighb_fwd_niter<W> > super_;
116 template <
typename P>
117 neighb_fwd_niter(
const neighb<W>& nbh,
const P& c);
125 template <
typename W>
126 class neighb_bkd_niter
127 :
public internal::neighb_niter_base<W,neighb<W>,
128 mln_bkd_qiter(W),neighb_bkd_niter<W> >
131 internal::neighb_niter_base<W,neighb<W>,
132 mln_bkd_qiter(W),neighb_bkd_niter<W> > super_;
137 template <
typename P>
138 neighb_bkd_niter(
const neighb<W>& nbh,
const P& c);
144 # ifndef MLN_INCLUDE_ONLY
148 template <
typename W>
154 template <
typename W>
170 template <
typename W>
177 template <
typename W>
181 to.change_window(from);
193 template <
typename W>
195 neighb_fwd_niter<W>::neighb_fwd_niter()
199 template <
typename W>
200 template <
typename P>
202 neighb_fwd_niter<W>::neighb_fwd_niter(
const neighb<W>& nbh,
const P& c)
205 this->i_.init_(nbh.win(), c);
212 template <
typename W>
214 neighb_bkd_niter<W>::neighb_bkd_niter()
218 template <
typename W>
219 template <
typename P>
221 neighb_bkd_niter<W>::neighb_bkd_niter(
const neighb<W>& nbh,
const P& c)
224 this->i_.init_(nbh.win(), c);
228 # endif // ! MLN_INCLUDE_ONLY
233 #endif // ! MLN_CORE_NEIGHB_HH