27 #ifndef MLN_CORE_IMAGE_FLAT_IMAGE_HH
28 # define MLN_CORE_IMAGE_FLAT_IMAGE_HH
36 # include <mln/core/internal/image_primary.hh>
37 # include <mln/value/set.hh>
45 template <
typename T,
typename S>
struct flat_image;
52 template <
typename T,
typename S>
53 struct data< flat_image<T,S> >
55 data(
const T& val,
const S& pset);
68 template <
typename T,
typename S>
69 struct image_< flat_image<T,S> > : default_image_< T, flat_image<T,S> >
72 typedef trait::image::category::primary category;
73 typedef trait::image::speed::fast speed;
74 typedef trait::image::size::regular size;
77 typedef trait::image::vw_io::read_write vw_io;
79 typedef trait::image::vw_set::none vw_set;
80 typedef trait::image::value_access::direct value_access;
81 typedef trait::image::value_storage::singleton value_storage;
82 typedef mln::trait::image::value_browsing::value_wise value_browsing;
83 typedef trait::image::value_alignment::with_grid value_alignment;
84 typedef trait::image::value_io::read_only value_io;
87 typedef trait::image::pw_io::read pw_io;
88 typedef trait::image::localization::basic_grid localization;
89 typedef trait::image::dimension::two_d dimension;
92 typedef trait::image::ext_domain::infinite ext_domain;
93 typedef trait::image::ext_value::single ext_value;
94 typedef trait::image::ext_io::read_only ext_io;
105 template <
typename T,
typename S>
106 struct flat_image :
public internal::image_primary< T, S, flat_image<T,S> >
129 void init_(
const T& val,
const S& pset);
135 bool has(
const mln_psite(S)& p)
const;
139 const T&
operator()(
const mln_psite(S)& p)
const;
146 const T& value_()
const;
152 template <
typename T,
typename S,
typename J>
157 # ifndef MLN_INCLUDE_ONLY
161 template <
typename T,
typename S,
typename J>
166 init_(tag::domain, pset, model);
168 target.init_(dummy, pset);
177 template <
typename T,
typename S>
190 template <
typename T,
typename S>
196 template <
typename T,
typename S>
203 template <
typename T,
typename S>
208 mln_precondition(! this->is_valid());
209 this->data_ =
new internal::data< flat_image<T,S> >(val, pset);
212 template <
typename T,
typename S>
217 return this->data_->domain_;
220 template <
typename T,
typename S>
228 template <
typename T,
typename S>
233 mln_precondition(this->is_valid());
234 return this->data_->val_;
237 template <
typename T,
typename S>
242 mln_precondition(this->is_valid());
243 return this->data_->val_;
246 template <
typename T,
typename S>
251 mln_precondition(this->is_valid());
252 return this->data_->val_;
255 template <
typename T,
typename S>
258 flat_image<T,S>::value_()
260 mln_precondition(this->is_valid());
261 return this->data_->val_;
266 # endif // ! MLN_INCLUDE_ONLY
271 #endif // ! MLN_CORE_IMAGE_FLAT_IMAGE_HH