27 #ifndef MLN_CORE_INTERNAL_IMAGE_BASE_HH
28 # define MLN_CORE_INTERNAL_IMAGE_BASE_HH
37 # include <mln/core/concept/image.hh>
38 # include <mln/core/grids.hh>
39 # include <mln/core/trait/qlf_value.hh>
40 # include <mln/core/internal/check/image_all.hh>
41 # include <mln/core/internal/data.hh>
42 # include <mln/core/internal/morpher_lvalue.hh>
43 # include <mln/util/tracked_ptr.hh>
44 # include <mln/value/set.hh>
45 # include <mln/value/super_value.hh>
58 public check::image_all_<E>,
85 template <
typename T,
typename S,
typename E>
88 public image_checked_<E>
132 bool has(const psite&
p) const;
135 std::
size_t nsites() const;
158 const
void* id_() const;
161 const mln::util::tracked_ptr< internal::
data<E> >& hook_data_() const;
181 # ifndef MLN_INCLUDE_ONLY
183 template <
typename T,
typename S,
typename E>
189 template <
typename T,
typename S,
typename E>
192 : image_checked_<E>()
194 mln_precondition(
exact(rhs).is_valid());
195 this->data_ = rhs.
data_;
198 template <
typename T,
typename S,
typename E>
201 image_base<T, S, E>::operator=(
const image_base<T, S, E>& rhs)
203 mln_precondition(
exact(rhs).is_valid());
206 this->data_ = rhs.data_;
210 template <
typename T,
typename S,
typename E>
213 image_base<T, S, E>::id_()
const
218 template <
typename T,
typename S,
typename E>
221 image_base<T, S, E>::is_valid()
const
226 template <
typename T,
typename S,
typename E>
229 image_base<T, S, E>::has(
const psite& p)
const
231 mln_precondition(
exact(
this)->is_valid());
232 return exact(
this)->domain().has(p);
235 template <
typename T,
typename S,
typename E>
240 mlc_equal(mln_trait_site_set_nsites(S),
241 mln::trait::site_set::nsites::known)::check();
242 mln_precondition(
exact(
this)->is_valid());
243 return exact(
this)->domain().nsites();
246 template <
typename T,
typename S,
typename E>
248 const typename image_base<T, S, E>::t_eligible_values_set&
249 image_base<T, S, E>::values_eligible()
const
251 return t_eligible_values_set::the();
254 template <
typename T,
typename S,
typename E>
256 const typename image_base<T, S, E>::t_values_space&
257 image_base<T, S, E>::values_space()
const
259 return t_values_space::the();
262 template <
typename T,
typename S,
typename E>
265 image_base<T, S, E>::destroy()
270 template <
typename T,
typename S,
typename E>
273 image_base<T, S, E>::hook_data_()
const
278 # endif // ! MLN_INCLUDE_ONLY
284 #endif // ! MLN_CORE_INTERNAL_IMAGE_BASE_HH