27 #ifndef MLN_CORE_INTERNAL_SITE_ITERATOR_BASE_HH
28 # define MLN_CORE_INTERNAL_SITE_ITERATOR_BASE_HH
35 # include <mln/core/concept/site_iterator.hh>
36 # include <mln/core/concept/pseudo_site.hh>
56 template <
typename S,
typename E>
57 struct site_iterator_base : Site_Iterator<E>,
58 proxy_impl< const mln_psite(S)&, E>
64 typedef mln_site(S) site;
67 const mln_site(S)& to_site() const;
80 const mln_psite(S)& subj_();
94 typedef proxy_impl< const mln_psite(S)&, E> super_;
98 #ifndef MLN_INCLUDE_ONLY
100 template <
typename S,
typename E>
102 site_iterator_base<S, E>::site_iterator_base()
107 template <
typename S,
typename E>
110 site_iterator_base<S, E>::to_site()
const
112 mln_precondition(exact(*this).is_valid());
113 return this->get_subject();
116 template <
typename S,
typename E>
119 site_iterator_base<S, E>::subj_()
121 return exact(
this)->p_hook_();
124 template <
typename S,
typename E>
127 site_iterator_base<S, E>::target_()
132 #endif // ! MLN_INCLUDE_ONLY
139 #endif // ! MLN_CORE_INTERNAL_SITE_ITERATOR_BASE_HH