27 #ifndef MLN_CORE_SITE_SET_P_EDGES_HH
28 # define MLN_CORE_SITE_SET_P_EDGES_HH
34 # include <mln/core/concept/function.hh>
35 # include <mln/core/concept/graph.hh>
36 # include <mln/core/internal/site_set_base.hh>
37 # include <mln/core/site_set/p_graph_piter.hh>
38 # include <mln/core/site_set/p_edges_psite.hh>
39 # include <mln/util/graph.hh>
40 # include <mln/util/internal/id2element.hh>
42 # include <mln/metal/equal.hh>
49 template <
typename G,
typename F>
class p_edges;
54 template <
typename G,
typename F>
55 struct site_set_< p_edges<G, F> >
58 typedef trait::site_set::nsites::known
nsites;
59 typedef trait::site_set::bbox::unknown
bbox;
60 typedef trait::site_set::contents::fixed
contents;
61 typedef trait::site_set::arity::unique
arity;
70 template <
typename G,
typename F = util::
internal::
id2element<G,util::edge<G> > >
114 template <
typename F2>
152 bool has(const psite&
p) const;
155 template <typename G2>
156 bool has(const util::
edge<G2>& e) const;
169 const G&
graph() const;
186 template <typename G, typename F>
195 template <typename G, typename F>
202 # ifndef MLN_INCLUDE_ONLY
208 template <
typename G,
typename F>
214 template <
typename G,
typename F>
219 mlc_equal(F, F_REF)::check();
226 template <
typename G,
typename F>
235 template <
typename G,
typename F>
236 template <
typename F2>
241 mlc_converts_to(F2,F)::check();
248 template <
typename G,
typename F>
256 template <
typename G,
typename F>
261 return this->g_.e_nmax();
264 template <
typename G,
typename F>
269 return g_.is_valid();
272 template <
typename G,
typename F>
280 template <
typename G,
typename F>
289 template <
typename G,
typename F>
290 template <
typename G2>
296 return e.
graph().is_subgraph_of(g_) && g_.has(e) && e.
is_valid();
309 template <
typename G,
typename F>
319 template <
typename G,
typename F>
328 template <
typename G,
typename F>
336 template <
typename G,
typename F>
343 template <
typename G,
typename F>
352 # endif // ! MLN_INCLUDE_ONLY
354 #endif // ! MLN_CORE_SITE_SET_P_EDGES_HH