00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef MLN_DATA_FILL_WITH_VALUE_HH
00027 # define MLN_DATA_FILL_WITH_VALUE_HH
00028
00037
00038 # include <cstdlib>
00039
00040 # include <mln/core/concept/image.hh>
00041
00042
00043
00044
00045 # include <mln/data/fill_with_value.spe.hh>
00046
00047
00048 namespace mln
00049 {
00050
00051 namespace data
00052 {
00053
00062 template <typename I, typename V>
00063 void fill_with_value(Image<I>& ima, const V& val);
00065
00066
00067
00068 # ifndef MLN_INCLUDE_ONLY
00069
00070 namespace internal
00071 {
00072
00073 template <typename I, typename V>
00074 inline
00075 void fill_with_value_tests(Image<I>& ima, const V&)
00076 {
00077 mlc_converts_to(mln_exact(V), mln_value(I))::check();
00078 mln_precondition(exact(ima).is_valid());
00079
00080
00081 (void) ima;
00082 }
00083
00084 }
00085
00086
00087 namespace impl
00088 {
00089
00090 namespace generic
00091 {
00092
00100
00101 template <typename I, typename V>
00102 void fill_with_value(Image<I>& ima_, const V& val)
00103 {
00104 trace::entering("data::impl::generic::fill_with_value");
00105
00106 I& ima = exact(ima_);
00107
00108 internal::fill_with_value_tests(ima, val);
00109 mlc_is(mln_trait_image_pw_io(I),
00110 trait::image::pw_io::read_write)::check();
00111
00112 mln_value(I) v = static_cast<mln_value(I)>(exact(val));
00113 mln_piter(I) p(ima.domain());
00114 for_all(p)
00115 ima(p) = v;
00116
00117 trace::exiting("data::impl::generic::fill_with_value");
00118 }
00119
00120 }
00121
00122 }
00123
00124
00125
00126
00127 template <typename I, typename V>
00128 inline
00129 void fill_with_value(Image<I>& ima, const V& val)
00130 {
00131 trace::entering("data::fill_with_value");
00132
00133 internal::fill_with_value_tests(ima, val);
00134 internal::fill_with_value_dispatch(ima, val);
00135
00136 trace::exiting("data::fill_with_value");
00137 }
00138
00139
00140 # endif // ! MLN_INCLUDE_ONLY
00141
00142 }
00143
00144 }
00145
00146
00147 #endif // ! MLN_DATA_FILL_WITH_VALUE_HH