27 #ifndef MLN_CORE_INTERNAL_IMAGE_IDENTITY_HH
28 # define MLN_CORE_INTERNAL_IMAGE_IDENTITY_HH
37 # include <mln/core/internal/image_morpher.hh>
49 template <
typename trait_speed,
typename I,
typename E>
55 template <
typename I,
typename E>
60 mlc_const(I)& del_()
const
62 return * internal::force_exact<const E>(*this).delegatee_();
67 return * internal::force_exact<E>(*this).delegatee_();
72 int delta_offset(
const mln_deduce(I,
psite,
delta)& dp)
const
74 return del_().delta_offset(dp);
77 mln_site(I) point_at_offset(
unsigned i)
const
79 return del_().point_at_offset(i);
84 return del_().border();
87 mln_qlf_value(I)* buffer()
89 return del_().buffer();
92 const mln_value(I)* buffer()
const
94 return del_().buffer();
97 mln_rvalue(I) element(
unsigned i)
const
99 return del_().element(i);
102 mln_lvalue(I) element(
unsigned i)
104 return del_().element(i);
109 return del_().nelements();
115 template <
typename I,
typename E>
129 template <
typename I,
typename S,
typename E>
146 rvalue operator()(const mln_psite(S)&
p) const;
149 lvalue operator()(const mln_psite(S)&
p);
152 const mln_domain(I)&
domain() const;
153 bool has(const mln_psite(I)& p) const;
163 # ifndef MLN_INCLUDE_ONLY
165 template <
typename I,
typename S,
typename E>
171 template <
typename I,
typename S,
typename E>
174 image_identity<I, S, E>::operator()(const mln_psite(S)& p)
const
180 template <
typename I,
typename S,
typename E>
182 typename image_identity<I, S, E>::lvalue
189 template <
typename I,
typename S,
typename E>
198 template <
typename I,
typename S,
typename E>
207 # endif // ! MLN_INCLUDE_ONLY
214 #endif // ! MLN_CORE_INTERNAL_IMAGE_IDENTITY_HH