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;
54 struct data< plain<I> >
67 struct image_< plain<I> > : image_< I >
70 typedef trait::image::category::identity_morpher
category;
71 typedef mln_internal_trait_image_speed_from(I)
speed;
87 : public mln::internal::image_identity< I, mln_domain(I),
plain<I> >,
88 private mlc_is_not_const(I)::check_t
109 void init_(
const I& ima);
124 # ifndef MLN_INCLUDE_ONLY
132 template <
typename I>
144 template <
typename I>
150 template <
typename I>
152 plain<I>::plain(
const plain<I>& rhs)
155 mln_precondition(rhs.is_valid());
156 init_(rhs.data_->ima_);
159 template <
typename I>
163 mln_precondition(ima.is_valid());
167 template <
typename I>
172 mln_precondition(ima.is_valid());
173 this->data_ =
new internal::data< plain<I> >(ima);
176 template <
typename I>
181 mln_precondition(rhs.is_valid());
185 init_(rhs.data_->ima_);
189 template <
typename I>
194 mln_precondition(ima.is_valid());
200 template <
typename I>
202 plain<I>::operator I ()
const
204 mln_precondition(this->is_valid());
208 # endif // ! MLN_INCLUDE_ONLY
213 #endif // ! MLN_CORE_IMAGE_IMORPH_PLAIN_HH