27 #ifndef MLN_CORE_IMAGE_DMORPH_EXTENDED_HH
28 # define MLN_CORE_IMAGE_DMORPH_EXTENDED_HH
38 # include <mln/core/internal/image_domain_morpher.hh>
39 # include <mln/core/site_set/box.hh>
47 template <
typename I>
struct extended;
57 struct data< extended<I> >
59 data(I& ima,
const box<mln_site(I)>& b_);
73 struct image_< extended<I> > : default_image_morpher< I,
77 typedef trait::image::category::domain_morpher
category;
79 typedef trait::image::ext_domain::none
ext_domain;
80 typedef trait::image::ext_value::irrelevant
ext_value;
81 typedef trait::image::ext_io::irrelevant
ext_io;
98 private mlc_not_equal(mln_trait_image_ext_domain(I),
99 trait::image::ext_domain::none)::check_t
115 void init_(I& ima, const
box<mln_site(I)>& b);
124 template <typename I, typename J>
125 void init_(tag::image_t,
extended<I>& target, const J& model);
129 template <typename I, typename B>
133 template <typename I, typename B>
139 # ifndef MLN_INCLUDE_ONLY
143 template <
typename I,
typename J>
151 target.
init_(ima, b);
160 template <
typename I>
173 template <
typename I>
175 extended<I>::extended()
179 template <
typename I>
181 extended<I>::extended(I& ima,
const box<mln_site(I)>& b)
186 template <
typename I>
189 extended<I>::init_(I& ima,
const box<mln_site(I)>& b)
191 mln_precondition(! this->is_valid());
192 this->data_ =
new internal::data< extended<I> >(ima, b);
195 template <
typename I>
197 const box<mln_site(I)>&
198 extended<I>::domain()
const
200 return this->data_->b_;
206 template <
typename I,
typename B>
210 mlc_not_equal(mln_trait_image_ext_domain(I),
211 trait::image::ext_domain::none)::check();
212 mln_precondition(
exact(ima).is_valid());
217 template <
typename I,
typename B>
221 mlc_not_equal(mln_trait_image_ext_domain(I),
222 trait::image::ext_domain::none)::check();
223 mln_precondition(
exact(ima).is_valid());
228 # endif // ! MLN_INCLUDE_ONLY
233 #endif // ! MLN_CORE_IMAGE_DMORPH_EXTENDED_HH