26 #ifndef MLN_EXTENSION_FILL_HH
27 # define MLN_EXTENSION_FILL_HH
36 # include <mln/core/concept/image.hh>
37 # include <mln/trait/image/props.hh>
38 # include <mln/border/fill.hh>
39 # include <mln/data/fill_with_value.hh>
59 void fill(
const Image<I>& ima,
const mln_value(I)& val);
62 # ifndef MLN_INCLUDE_ONLY
71 void do_fill(I& ima,
const mln_value(I)& val);
74 void do_fill(mln::trait::image::ext_domain::some,
75 mln::trait::image::ext_value::single,
76 mln::trait::image::ext_domain::none,
77 I& ima,
const mln_value(I)& val)
79 ima.change_extension(val);
83 void do_fill(mln::trait::image::ext_domain::some,
84 mln::trait::image::ext_value::multiple,
85 mln::trait::image::ext_domain::none,
86 I& ima,
const mln_value(I)& val)
89 ima.change_extension(val);
93 void do_fill(mln::trait::image::ext_domain::some,
94 mln::trait::image::ext_value::any,
95 mln::trait::image::ext_domain::some,
96 I& ima,
const mln_value(I)& val)
101 template <
typename I>
102 void do_fill(mln::trait::image::ext_domain::none,
103 mln::trait::image::ext_value::any,
104 mln::trait::image::ext_domain::any,
105 I& ima,
const mln_value(I)& val)
112 template <
typename I>
113 void do_fill(I& ima,
const mln_value(I)& val)
115 typedef typename I::delegatee D;
116 do_fill(mln_trait_image_ext_domain(I)(),
117 mln_trait_image_ext_value(I)(),
118 mln_trait_image_ext_domain(D)(),
126 template <
typename I>
127 void fill_dispatch(mln::trait::image::ext_domain::none,
128 mln::trait::image::ext_io::any,
129 I& ,
const mln_value(I)& )
134 template <
typename I>
135 void fill_dispatch(mln::trait::image::ext_domain::some,
136 mln::trait::image::ext_io::read_only,
137 I& ima,
const mln_value(I)& val)
143 template <
typename I>
144 void fill_dispatch(mln::trait::image::ext_domain::extendable,
145 mln::trait::image::ext_io::read_write,
146 I& ima,
const mln_value(I)& val)
152 template <
typename I>
153 void fill_dispatch(mln::trait::image::ext_domain::some,
154 mln::trait::image::ext_io::read_write,
155 I& ima,
const mln_value(I)& val)
160 template <
typename I>
161 void fill_dispatch(
const Image<I>& ima_,
const mln_value(I)& val)
163 I& ima =
const_cast<I&
>(exact(ima_));
164 fill_dispatch(mln_trait_image_ext_domain(I)(),
165 mln_trait_image_ext_io(I)(),
174 template <
typename I>
177 trace::entering(
"extension::fill");
179 mln_precondition(exact(ima).is_valid());
180 internal::fill_dispatch(ima, val);
182 trace::exiting(
"extension::fill");
185 # endif // ! MLN_INCLUDE_ONLY
192 #endif // ! MLN_EXTENSION_FILL_HH