27 #ifndef MLN_CORE_IMAGE_GRAPH_ELT_WINDOW_IF_HH
28 # define MLN_CORE_IMAGE_GRAPH_ELT_WINDOW_IF_HH
36 # include <mln/core/concept/window.hh>
37 # include <mln/core/internal/neighborhood_base.hh>
38 # include <mln/core/internal/graph_window_base.hh>
39 # include <mln/core/internal/is_masked_impl_selector.hh>
40 # include <mln/core/image/graph_window_if_piter.hh>
47 template <
typename G,
typename S,
typename I>
class graph_elt_window_if;
48 template <
typename G,
typename F>
class p_edges;
49 template <
typename G,
typename F>
class p_vertices;
55 template <
typename G,
typename S,
typename I,
typename E>
64 template <
typename G,
typename S>
67 template <
typename G,
typename F>
70 typedef mln_edge_nbh_edge_fwd_iter(G) nbh_fwd_iter_;
71 typedef mln_edge_nbh_edge_bkd_iter(G) nbh_bkd_iter_;
74 template <
typename G,
typename F>
77 typedef mln_vertex_nbh_vertex_fwd_iter(G) nbh_fwd_iter_;
78 typedef mln_vertex_nbh_vertex_bkd_iter(G) nbh_bkd_iter_;
88 template <
typename G,
typename S,
typename I>
91 typedef trait::window::size::unknown
size;
92 typedef trait::window::support::irregular
support;
93 typedef trait::window::definition::varying
definition;
105 template <
typename G,
typename S,
typename I>
108 graph_elt_window_if<G,S,I> >,
109 public internal::graph_window_if_iter_dispatch<G,S>,
110 private mlc_is(mln_value(I), bool)::check_t
113 typedef internal::graph_window_if_iter_dispatch<G,S> super_;
115 typedef typename super_::nbh_fwd_iter_ nbh_fwd_iter_;
116 typedef typename super_::nbh_bkd_iter_ nbh_bkd_iter_;
157 const I&
mask() const;
172 # ifndef MLN_INCLUDE_ONLY
175 template <
typename G,
typename S,
typename I>
182 template <
typename G,
typename S,
typename I>
190 template <
typename G,
typename S,
typename I>
199 template <
typename G,
typename S,
typename I>
204 mln_precondition(
exact(mask).is_valid());
208 template <
typename G,
typename S,
typename I>
213 return mask_.is_valid();
217 # endif // ! MLN_INCLUDE_ONLY
223 #endif // ! MLN_CORE_IMAGE_GRAPH_ELT_WINDOW_IF_HH