26 #ifndef MLN_DATA_UPDATE_HH
27 # define MLN_DATA_UPDATE_HH
33 # include <mln/core/concept/accumulator.hh>
34 # include <mln/core/concept/image.hh>
50 template <
typename A,
typename I>
52 update(Accumulator<A>& a, const Image<I>& input);
56 # ifndef MLN_INCLUDE_ONLY
64 template <
typename A,
typename I>
67 update_tests(Accumulator<A>& a_,
const Image<I>& input_)
70 const I& input = exact(input_);
71 mln_precondition(input.is_valid());
97 template <
typename A,
typename I>
102 trace::entering(
"data::impl::generic::update");
105 const I& input = exact(input_);
106 data::internal::update_tests(a, input);
108 mln_piter(I) p(input.domain());
112 trace::exiting(
"data::impl::generic::update");
113 return a.to_result();
126 template <
typename A,
typename I>
131 trace::entering(
"data::impl::update_fastest");
134 const I& input = exact(input_);
135 data::internal::update_tests(a, input);
137 mln_pixter(
const I) pxl(input);
141 trace::exiting(
"data::impl::update_fastest");
142 return a.to_result();
155 template <
typename A,
typename I>
158 update_dispatch(trait::image::speed::any,
164 template <
typename A,
typename I>
167 update_dispatch(trait::image::speed::fastest,
168 Accumulator<A>& a, const Image<I>& input)
173 template <
typename A,
typename I>
176 update_dispatch(Accumulator<A>& a, const Image<I>& input)
178 return update_dispatch(mln_trait_image_speed(I)(),
188 template <
typename A,
typename I>
193 trace::entering(
"data::update");
195 data::internal::update_tests(a, input);
196 mln_result(A) r = internal::update_dispatch(a, input);
198 trace::exiting(
"data::update");
202 # endif // ! MLN_INCLUDE_ONLY
209 #endif // ! MLN_DATA_UPDATE_HH