26 #ifndef MLN_CORE_INTERNAL_COMPLEX_NEIGHBORHOOD_BASE_HH
27 # define MLN_CORE_INTERNAL_COMPLEX_NEIGHBORHOOD_BASE_HH
34 # include <mln/core/concept/neighborhood.hh>
35 # include <mln/core/site_set/complex_psite.hh>
36 # include <mln/core/image/complex_neighborhood_piter.hh>
38 # include <mln/core/internal/neighb_base.hh>
44 template <
typename I,
typename G,
typename N>
45 class complex_neighborhood_fwd_piter;
46 template <
typename I,
typename G,
typename N>
47 class complex_neighborhood_bkd_piter;
51 template <
typename W,
typename E>
52 class complex_neighborhood_base;
63 template <
typename W,
typename E>
64 class complex_neighborhood_base :
public Neighborhood<E>
69 typedef typename W::complex_fwd_iter complex_fwd_iter;
70 typedef typename W::complex_bkd_iter complex_bkd_iter;
77 typedef mln_geom(W) G;
79 typedef mln_psite(W) psite;
81 typedef mln_site(W) site;
86 complex_neighborhood_fwd_piter<complex_fwd_iter, G, E> fwd_niter;
91 complex_neighborhood_bkd_piter<complex_bkd_iter, G, E> bkd_niter;
94 typedef fwd_niter niter;
102 const W& win() const;
105 bool is_valid() const;
114 # ifndef MLN_INCLUDE_ONLY
116 template <
typename W,
typename E>
119 complex_neighborhood_base<W, E>::win()
const
124 template <
typename W,
typename E>
127 complex_neighborhood_base<W, E>::is_valid()
const
129 return win().is_valid();
132 # endif // ! MLN_INCLUDE_ONLY
138 #endif // ! MLN_CORE_INTERNAL_COMPLEX_NEIGHBORHOOD_BASE_HH