27 #ifndef MLN_CORE_INTERNAL_P_COMPLEX_PITER_BASE_HH
28 # define MLN_CORE_INTERNAL_P_COMPLEX_PITER_BASE_HH
34 # include <mln/core/internal/site_set_iterator_base.hh>
59 template <
typename I,
typename S,
typename P,
typename E>
108 template <
typename I,
typename S,
typename P,
typename E>
111 operator<<(std::ostream& ostr, const p_complex_piter_base_<I, S, P, E>&
p);
115 # ifndef MLN_INCLUDE_ONLY
121 template <
typename I,
typename S,
typename P,
typename E>
125 mln_postcondition(!this->is_valid());
128 template <
typename I,
typename S,
typename P,
typename E>
132 this->change_target(pc);
133 mln_postcondition(!this->is_valid());
136 template <
typename I,
typename S,
typename P,
typename E>
141 iter_.set_cplx(pc.cplx());
144 template <
typename I,
typename S,
typename P,
typename E>
149 return iter_.is_valid();
152 template <
typename I,
typename S,
typename P,
typename E>
160 template <
typename I,
typename S,
typename P,
typename E>
166 if (this->is_valid())
170 template <
typename I,
typename S,
typename P,
typename E>
176 if (this->is_valid())
180 template <
typename I,
typename S,
typename P,
typename E>
183 p_complex_piter_base_<I, S, P, E>::update_()
185 mln_precondition(this->is_valid());
187 typedef mln_psite(S)
psite;
192 template <typename I, typename S, typename P, typename E>
195 operator<<(std::ostream& ostr, const p_complex_piter_base_<I, S, P, E>&
p)
197 return ostr << p.unproxy_();
200 # endif // ! MLN_INCLUDE_ONLY
207 #endif // ! MLN_CORE_INTERNAL_P_COMPLEX_PITER_BASE_HH