27 #ifndef MLN_CORE_SITE_SET_P_GRAPH_PITER_HH
28 # define MLN_CORE_SITE_SET_P_GRAPH_PITER_HH
34 # include <mln/core/internal/site_set_iterator_base.hh>
41 template <
typename S,
typename I>
class graph_psite;
44 template <
typename G>
class edge;
45 template <
typename G>
class vertex;
58 template <
typename S,
typename I>
94 const typename S::graph_t&
graph()
const;
126 template <
typename S,
typename I,
typename E>
129 typedef typename S::graph_t graph_t;
131 const graph_t& graph()
const;
136 const E& exact_()
const;
139 template <
typename S,
typename I,
typename E>
143 mln_q_subject(I) element();
153 # ifndef MLN_INCLUDE_ONLY
159 template <
typename S,
typename I>
161 p_graph_piter<S,I>::p_graph_piter()
163 mln_postcondition(! this->is_valid());
166 template <
typename S,
typename I>
168 p_graph_piter<S,I>::p_graph_piter(
const S& pv)
172 mln_postcondition(! this->
is_valid());
175 template <
typename S,
typename I>
180 return iter_.is_valid();
183 template <
typename S,
typename I>
191 template <
typename S,
typename I>
197 if (this->is_valid())
201 template <
typename S,
typename I>
207 if (this->is_valid())
211 template <
typename S,
typename I>
214 p_graph_piter<S,I>::element()
216 return this->subj_();
219 template <
typename S,
typename I>
221 const typename S::graph_t&
227 template <
typename S,
typename I>
235 template <
typename S,
typename I>
243 template <
typename S,
typename I>
246 p_graph_piter<S,I>::update_()
248 mln_precondition(this->is_valid());
250 p_.update_id(iter_.id());
260 template <
typename S,
typename I,
typename E>
265 return internal::force_exact<const E>(*this);
268 template <
typename S,
typename I,
typename E>
273 return exact_().get_subject().graph();
276 template <
typename S,
typename I,
typename E>
281 return exact_().get_subject().id();
284 template <
typename S,
typename I,
typename E>
286 util::edge<typename S::graph_t>
289 return exact_().get_subject().element().edge_with(v);
292 template <
typename S,
typename I,
typename E>
297 return internal::force_exact<E>(*this);
300 template <
typename S,
typename I,
typename E>
305 return exact_().get_subject().element();
310 # endif // ! MLN_INCLUDE_ONLY
315 #endif // ! MLN_CORE_SITE_SET_P_GRAPH_PITER_HH