26 #ifndef MLN_CORE_SITE_SET_P_IF_PITER_HH
27 # define MLN_CORE_SITE_SET_P_IF_PITER_HH
34 # include <mln/core/internal/piter_adaptor.hh>
35 # include <mln/core/site_set/p_if.hh>
49 template <
typename Pi,
typename S,
typename F>
51 :
public internal::piter_adaptor_< Pi,
59 p_if_piter_(
const p_if<S,F>& s);
68 void pi_change_target_(
const p_if<S,F>& s);
71 typedef p_if_piter_<Pi,S,F> self_;
72 typedef internal::piter_adaptor_<Pi, p_if<S,F>, self_> super_;
81 # ifndef MLN_INCLUDE_ONLY
83 template <
typename Pi,
typename S,
typename F>
85 p_if_piter_<Pi,S,F>::p_if_piter_()
89 template <
typename Pi,
typename S,
typename F>
91 p_if_piter_<Pi,S,F>::p_if_piter_(
const p_if<S,F>& s)
93 this->change_target(s);
96 template <
typename Pi,
typename S,
typename F>
99 p_if_piter_<Pi,S,F>::start_()
102 while (pi_.is_valid() && ! s_->pred(pi_))
106 template <
typename Pi,
typename S,
typename F>
109 p_if_piter_<Pi,S,F>::next_()
113 while (pi_.is_valid() && ! s_->pred(pi_));
116 template <
typename Pi,
typename S,
typename F>
119 p_if_piter_<Pi,S,F>::pi_change_target_(
const p_if<S,F>& s)
121 pi_.change_target(s.overset());
124 # endif // ! MLN_INCLUDE_ONLY
129 #endif // ! MLN_CORE_SITE_SET_P_IF_PITER_HH