27 #ifndef MLN_CORE_SITE_SET_P_VERTICES_PSITE_HH
28 # define MLN_CORE_SITE_SET_P_VERTICES_PSITE_HH
34 # include <mln/core/concept/pseudo_site.hh>
35 # include <mln/core/internal/graph_psite_base.hh>
36 # include <mln/util/vertex.hh>
43 template <
typename G,
typename F>
class p_vertices;
47 template <
typename Subject,
typename E>
struct subject_impl;
52 template <
typename G,
typename F>
72 template <
typename G,
typename F>
77 template <
typename G,
typename F>
82 template <
typename G,
typename F>
93 template <
typename G,
typename F,
typename E>
101 const E& exact_()
const;
104 template <
typename G,
typename F,
typename E>
108 p_vertices_psite<G,F> >&, E >
116 # ifndef MLN_INCLUDE_ONLY
118 template <
typename G,
typename F>
124 template <
typename G,
typename F>
131 template <
typename G,
typename F>
138 template <
typename G,
typename F>
140 const util::vertex<G>&
150 template <
typename G,
typename F>
152 operator==(
const p_vertices_psite<G,F>& lhs,
const p_vertices_psite<G,F>&
rhs)
154 mln_assertion(lhs.target_() == rhs.target_());
155 return lhs.id() == rhs.id();
158 template <
typename G,
typename F>
160 operator!=(
const p_vertices_psite<G,F>& lhs,
const p_vertices_psite<G,F>& rhs)
162 mln_assertion(lhs.target_() == rhs.target_());
163 return lhs.id() != rhs.id();
166 template <
typename G,
typename F>
168 operator<(const p_vertices_psite<G,F>& lhs,
const p_vertices_psite<G,F>&
rhs)
170 mln_assertion(lhs.target_() == rhs.target_());
171 return lhs.id() < rhs.id();
182 template <
typename G,
typename F,
typename E>
187 return internal::force_exact<const E>(*this);
190 template <
typename G,
typename F,
typename E>
192 const util::vertex<G>&
195 return exact_().get_subject().v();
201 # endif // ! MLN_INCLUDE_ONLY
206 #endif // ! MLN_CORE_SITE_SET_P_VERTICES_PSITE_HH