27 #ifndef MLN_CORE_INTERNAL_NEIGHBORHOOD_BASE_HH
28 # define MLN_CORE_INTERNAL_NEIGHBORHOOD_BASE_HH
37 # include <mln/core/concept/neighborhood.hh>
38 # include <mln/core/concept/window.hh>
46 template <
typename W>
class neighb;
49 template <
unsigned n,
typename W,
typename F>
57 template <
typename W,
typename E>
63 template <
typename W,
typename F,
typename E>
74 W win = internal::force_exact<E>(*this).win().window_(1);
85 W win = internal::force_exact<E>(*this).win().window_(0);
95 template <
typename W,
typename E>
102 unsigned size()
const;
106 unsigned delta()
const;
110 const mln_dpsite(W)&
dp(
unsigned i)
const;
122 template <
typename W,
typename E>
147 # ifndef MLN_INCLUDE_ONLY
152 template <
typename W,
typename E>
158 template <
typename W,
typename E>
168 template <
typename W,
typename E>
173 mlc_is(mln_trait_window_size(W),
174 trait::window::size::fixed)::check();
175 return exact(
this)->win().size();
178 template <
typename W,
typename E>
183 mlc_is(mln_trait_window_support(W),
184 trait::window::support::regular)::check();
185 mlc_is_not(mln_trait_window_definition(W),
186 trait::window::definition::varying)::check();
187 return exact(
this)->win().delta();
190 template <
typename W,
typename E>
195 mlc_is(mln_trait_window_support(W),
196 trait::window::support::regular)::check();
197 mlc_is(mln_trait_window_definition(W),
198 trait::window::definition::unique)::check();
199 return exact(
this)->win().dp(i);
202 # endif // ! MLN_INCLUDE_ONLY
209 #endif // ! MLN_CORE_INTERNAL_NEIGHBORHOOD_BASE_HH