26 #ifndef MLN_CORE_MIXED_NEIGHB_HH
27 # define MLN_CORE_MIXED_NEIGHB_HH
40 # include <mln/core/neighb.hh>
41 # include <mln/core/internal/neighb_base.hh>
42 # include <mln/core/internal/neighb_niter_base.hh>
43 # include <mln/core/internal/site_relative_iterator_base.hh>
44 # include <mln/core/internal/neighb_niter_impl.hh>
51 template <
typename W>
class mixed_neighb_fwd_niter;
52 template <
typename W>
class mixed_neighb_bkd_niter;
53 template <
typename W>
class mixed_neighb;
64 from_to_(
const mln::mixed_neighb<W>& from, W&
to);
68 from_to_(
const W& from, mln::mixed_neighb<W>&
to);
80 :
public internal::neighb_base<W,mixed_neighb<W> >,
81 private mlc_is_a(W, Window)::check_t
83 typedef internal::neighb_base<W,mixed_neighb<W> > super_;
88 typedef mixed_neighb_fwd_niter<W> fwd_niter;
91 typedef mixed_neighb_bkd_niter<W> bkd_niter;
94 typedef fwd_niter niter;
101 mixed_neighb(
const W& win);
108 template <
typename W>
109 class mixed_neighb_fwd_niter
110 :
public internal::neighb_niter_base<W,mixed_neighb<W>,
111 mln_fwd_qiter(W),neighb_fwd_niter<W> >
114 internal::neighb_niter_base<W,mixed_neighb<W>,
115 mln_fwd_qiter(W),neighb_fwd_niter<W> > super_;
118 mixed_neighb_fwd_niter();
120 template <
typename P>
121 mixed_neighb_fwd_niter(
const mixed_neighb<W>& nbh,
122 const mln_target(W)& nbh_site_set,
131 template <
typename W>
132 class mixed_neighb_bkd_niter
133 :
public internal::neighb_niter_base<W,mixed_neighb<W>,
134 mln_bkd_qiter(W),neighb_bkd_niter<W> >
137 internal::neighb_niter_base<W,mixed_neighb<W>,
138 mln_bkd_qiter(W),neighb_bkd_niter<W> > super_;
141 mixed_neighb_bkd_niter();
143 template <
typename P>
144 mixed_neighb_bkd_niter(
const mixed_neighb<W>& nbh,
145 const mln_target(W)& nbh_site_set,
152 # ifndef MLN_INCLUDE_ONLY
156 template <
typename W>
158 mixed_neighb<W>::mixed_neighb()
162 template <
typename W>
164 mixed_neighb<W>::mixed_neighb(
const W& win)
178 template <
typename W>
180 from_to_(
const mln::mixed_neighb<W>& from, W&
to)
185 template <
typename W>
187 from_to_(
const W& from, mln::mixed_neighb<W>& to)
189 to.change_window(from);
201 template <
typename W>
203 mixed_neighb_fwd_niter<W>::mixed_neighb_fwd_niter()
207 template <
typename W>
208 template <
typename P>
210 mixed_neighb_fwd_niter<W>::mixed_neighb_fwd_niter(
const mixed_neighb<W>& nbh,
211 const mln_target(W)& nbh_site_set,
215 this->i_.init_(nbh.win(), nbh_site_set, c);
222 template <
typename W>
224 mixed_neighb_bkd_niter<W>::mixed_neighb_bkd_niter()
228 template <
typename W>
229 template <
typename P>
231 mixed_neighb_bkd_niter<W>::mixed_neighb_bkd_niter(
const mixed_neighb<W>& nbh,
232 const mln_target(W)& nbh_site_set,
236 this->i_.init_(nbh.win(), nbh_site_set, c);
240 # endif // ! MLN_INCLUDE_ONLY
245 #endif // ! MLN_CORE_MIXED_NEIGHB_HH