27 #ifndef MLN_CORE_SITE_SET_P_TRANSFORMED_HH
28 # define MLN_CORE_SITE_SET_P_TRANSFORMED_HH
35 # include <mln/core/internal/site_set_base.hh>
36 # include <mln/core/concept/function.hh>
37 # include <mln/convert/from_to.hh>
43 template <
typename S,
typename F>
class p_transformed;
44 template <
typename Pi,
typename S,
typename F>
struct p_transformed_piter;
50 template <
typename S,
typename F>
51 struct site_set_< p_transformed<S,F> >
53 typedef trait::site_set::nsites::unknown
nsites;
54 typedef trait::site_set::bbox::unknown bbox;
55 typedef trait::site_set::contents::fixed contents;
56 typedef trait::site_set::arity::multiple arity;
69 template <
typename S,
typename F>
71 ptransform(
const Site_Set<S>& s,
const Function_v2v<F>& f);
82 template <
typename S,
typename F>
84 :
public internal::site_set_base_< mln_psite(S), p_transformed<S,F> >,
85 private mlc_converts_to(mln_result(F), mln_psite(S))::check_t
88 typedef internal::site_set_base_<mln_result(F), self_> super_;
120 bool has(const psite& p) const;
140 # ifndef MLN_INCLUDE_ONLY
143 template <
typename S,
typename F>
148 mlc_equal(mln_result(F), mln_psite(S))::check();
156 template <
typename S,
typename F>
162 template <
typename S,
typename F>
170 template <
typename S,
typename F>
176 convert::from_to(p, arg);
177 return s_.has(f_.inverse(arg));
180 template <
typename S,
typename F>
185 return s_.is_valid();
188 template <
typename S,
typename F>
193 return s_.memory_size() +
sizeof(f_);
196 template <
typename S,
typename F>
204 template <
typename S,
typename F>
212 # endif // ! MLN_INCLUDE_ONLY
218 # include <mln/core/site_set/p_transformed_piter.hh>
222 #endif // ! MLN_CORE_SITE_SET_P_TRANSFORMED_HH