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;
54 template <
typename T,
typename S>
55 struct data< flat_image<
T,S> >
57 data(
const T& val,
const S& pset);
70 template <
typename T,
typename S>
71 struct image_< flat_image<
T,S> > : default_image_< T, flat_image<T,S> >
74 typedef trait::image::category::primary
category;
75 typedef trait::image::speed::fast
speed;
76 typedef trait::image::size::regular
size;
79 typedef trait::image::vw_io::read_write
vw_io;
81 typedef trait::image::vw_set::none
vw_set;
84 typedef mln::trait::image::value_browsing::value_wise
value_browsing;
86 typedef trait::image::value_io::read_only
value_io;
89 typedef trait::image::pw_io::read
pw_io;
90 typedef trait::image::localization::basic_grid
localization;
91 typedef trait::image::dimension::two_d
dimension;
94 typedef trait::image::ext_domain::infinite
ext_domain;
95 typedef trait::image::ext_value::single
ext_value;
96 typedef trait::image::ext_io::read_only
ext_io;
107 template <
typename T,
typename S>
132 void init_(
const T& val,
const S& pset);
139 bool has(
const mln_psite(S)&
p)
const;
158 template <
typename T,
typename S,
typename J>
164 # ifndef MLN_INCLUDE_ONLY
168 template <
typename T,
typename S,
typename J>
175 target.
init_(dummy, pset);
184 template <
typename T,
typename S>
197 template <
typename T,
typename S>
199 flat_image<T,S>::flat_image()
203 template <
typename T,
typename S>
205 flat_image<T,S>::flat_image(
const T& val,
const S& pset)
210 template <
typename T,
typename S>
213 flat_image<T,S>::init_(
const T& val,
const S& pset)
215 mln_precondition(! this->is_valid());
216 this->data_ =
new internal::data< flat_image<T,S> >(val, pset);
219 template <
typename T,
typename S>
222 flat_image<T,S>::domain()
const
224 return this->data_->domain_;
227 template <
typename T,
typename S>
230 flat_image<T,S>::has(
const mln_psite(S)&)
const
235 template <
typename T,
typename S>
238 flat_image<T,S>::operator()(
const mln_psite(S)&)
const
240 mln_precondition(this->is_valid());
241 return this->data_->val_;
244 template <
typename T,
typename S>
247 flat_image<T,S>::operator()(
const mln_psite(S)&)
249 mln_precondition(this->is_valid());
250 return this->data_->val_;
253 template <
typename T,
typename S>
256 flat_image<T,S>::value_()
const
258 mln_precondition(this->is_valid());
259 return this->data_->val_;
262 template <
typename T,
typename S>
265 flat_image<T,S>::value_()
267 mln_precondition(this->is_valid());
268 return this->data_->val_;
273 # endif // ! MLN_INCLUDE_ONLY
278 #endif // ! MLN_CORE_IMAGE_FLAT_IMAGE_HH