27 #ifndef MLN_CORE_IMAGE_IMORPH_PLAIN_HH
28 # define MLN_CORE_IMAGE_IMORPH_PLAIN_HH
35 # include <mln/core/internal/image_identity.hh>
36 # include <mln/core/routine/duplicate.hh>
37 # include <mln/metal/is_not_const.hh>
44 template <
typename I>
class plain;
52 struct data< plain<I> >
65 struct image_< plain<I> > : image_< I >
68 typedef trait::image::category::identity_morpher category;
69 typedef mln_internal_trait_image_speed_from(I) speed;
85 : public mln::internal::image_identity< I, mln_domain(I),
plain<I> >,
86 private mlc_is_not_const(I)::check_t
89 typedef mln::internal::image_identity<I, mln_domain(I), self_> super_;
106 void init_(
const I& ima);
120 # ifndef MLN_INCLUDE_ONLY
128 template <
typename I>
140 template <
typename I>
146 template <
typename I>
151 mln_precondition(rhs.is_valid());
152 init_(rhs.data_->ima_);
155 template <
typename I>
159 mln_precondition(ima.is_valid());
163 template <
typename I>
168 mln_precondition(ima.is_valid());
169 this->data_ =
new internal::data< plain<I> >(ima);
172 template <
typename I>
177 mln_precondition(rhs.is_valid());
181 init_(rhs.data_->ima_);
185 template <
typename I>
190 mln_precondition(ima.is_valid());
196 template <
typename I>
200 mln_precondition(this->is_valid());
204 # endif // ! MLN_INCLUDE_ONLY
209 #endif // ! MLN_CORE_IMAGE_IMORPH_PLAIN_HH