26 #ifndef MLN_CORE_IMAGE_COMPLEX_WINDOWS_HH
27 # define MLN_CORE_IMAGE_COMPLEX_WINDOWS_HH
32 # include <mln/core/internal/complex_window_base.hh>
33 # include <mln/core/internal/complex_window_p_base.hh>
35 # include <mln/topo/complex_iterators.hh>
51 # define mln_gen_complex_window_with_base(Win, Fwd_Complex_Iter, Bkd_Complex_Iter, Base) \
53 template <unsigned D, typename G> struct Win; \
58 template <unsigned D, typename G> \
59 struct window_< Win <D, G> > \
60 : window_< Base < D, G, \
61 Fwd_Complex_Iter<D>, \
62 Bkd_Complex_Iter <D>, \
69 template <unsigned D, typename G> \
72 Fwd_Complex_Iter <D>, \
73 Bkd_Complex_Iter <D>, \
94 # define mln_gen_complex_window(Win, Fwd_Complex_Iter, Bkd_Complex_Iter) \
95 mln_gen_complex_window_with_base(Win, \
98 mln::internal::complex_window_base)
115 # define mln_gen_complex_window_p(Win, Fwd_Complex_Iter, Bkd_Complex_Iter) \
116 mln_gen_complex_window_with_base(Win, \
119 mln::internal::complex_window_p_base)
132 mln_gen_complex_window(complex_lower_window,
133 topo::adj_lower_face_fwd_iter,
213 # undef mln_gen_complex_window_p
214 # undef mln_gen_complex_window
215 # undef mln_gen_complex_window_from_base
217 #endif // ! MLN_CORE_IMAGE_COMPLEX_WINDOWS_HH