Olena-patches
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2009
- 11 participants
- 312 discussions
Re: [Olena-patches] [Olena] #98: Create demonstration video(s) for Olena 1.x (was: Create demonstration video(s) for Olena 1.0)
by Olena Trac 27 May '09
by Olena Trac 27 May '09
27 May '09
#98: Create demonstration video(s) for Olena 1.x
-----------------------+----------------------------------------------------
Reporter: levill_r | Owner: Olena Team
Type: task | Status: new
Priority: trivial | Milestone: Olena 1.1
Component: Olena | Version: 1.0
Resolution: | Keywords:
-----------------------+----------------------------------------------------
Changes (by levill_r):
* milestone: Olena 1.0 => Olena 1.1
Comment:
Will be probably too late for [milestone:"Olena 1.0" Olena 1.0];
postponing.
--
Ticket URL: <https://trac.lrde.org/olena/ticket/98#comment:2>
Olena <http://olena.lrde.epita.fr>
Olena, a generic and efficient C++ image processing library.
1
0
#175: Use std::vector to store data of mln::image[123]d<T>
----------------------+-----------------------------------------------------
Reporter: levill_r | Owner: Olena Team
Type: proposal | Status: new
Priority: minor | Milestone: Olena 1.0
Component: Milena | Version: 1.0
Keywords: |
----------------------+-----------------------------------------------------
Currently, the following classes use plain dynamically-allocated memory to
store their data (values):
* source:trunk/milena/mln/core/image/image1d.hh
* source:trunk/milena/mln/core/image/image2d.hh
* source:trunk/milena/mln/core/image/image2d_h.hh
* source:trunk/milena/mln/core/image/image3d.hh
We could try to replace these arrays with `std::vectors`.
Pros:
* Automatic memory management.
* Direct access (using pointers) is still possible, thanks to the ISO/IEC
C++ Standard; see paragraph 23.2.4.1:
"(...) The elements of a vector are stored contiguously, meaning that
if `v` is a `vector<T, Allocator>` where `T` is some type other than
`bool`, then it obeys the identity `&v[n] == &v[0] + n` for all `0 <= n <
v.size()`".
* Optimized storage for boolean values, thanks to the `std::vector<bool>`
specialization.
Cons:
* We can't iterate on an `std::vector<bool>` using a pointer; but we can
provide optimized specialization for that very case, that could as fast as
pointer iterations (IMHO).
--
Ticket URL: <https://trac.lrde.org/olena/ticket/175>
Olena <http://olena.lrde.epita.fr>
Olena, a generic and efficient C++ image processing library.
2
2
#170: Get rid of typedef mln::internal::image_base::coord
-------------------------+--------------------------------------------------
Reporter: levill_r | Owner: Olena Team
Type: enhancement | Status: new
Priority: minor | Milestone: Olena 1.0
Component: Milena | Version: 1.0
Keywords: point |
-------------------------+--------------------------------------------------
In source:branches/cleanup-2008/milena/mln/core/internal/image_base.hh,
`mln::internal::image_base` defines a typedef `coord`, which reduces the
genericity of this class:
{{{
#!cpp
/// Coordinate associated type.
typedef mln_deduce(S, site, coord) coord;
}}}
A consequence is that the site type `S::site` must define an associated
type `coord` (hence `std::vector<point2d>` is not a valid site type), yet
we had decided that there should be no prerequisites on the interfaces of
sites in Milena.
--
Ticket URL: <https://trac.lrde.org/olena/ticket/170>
Olena <http://olena.lrde.epita.fr>
Olena, a generic and efficient C++ image processing library.
2
2
27 May '09
#113: Review median files in mln::level
----------------------+-----------------------------------------------------
Reporter: duhamel | Owner: Olena Team
Type: task | Status: closed
Priority: major | Milestone: Olena 1.0
Component: Milena | Version: 1.0
Resolution: fixed | Keywords:
----------------------+-----------------------------------------------------
Changes (by levill_r):
* status: new => closed
* resolution: => fixed
Comment:
Old task, probably addressed since the creation of this ticket. Reopen if
not.
--
Ticket URL: <https://trac.lrde.org/olena/ticket/113#comment:2>
Olena <http://olena.lrde.epita.fr>
Olena, a generic and efficient C++ image processing library.
1
0
URL: https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
ChangeLog:
2009-05-27 Fabien Freling <fabien.freling(a)lrde.epita.fr>
Create tools for processing chain on edge images.
* fabien/igr/Makefile: Add targets for edges processing chain.
* fabien/igr/clo_vol.cc: Small update.
* fabien/igr/dist_edges.cc: Compute distance on edges, now with
3 distances.
* fabien/igr/norm.cc: Small update.
* fabien/igr/seg_fixed.cc: Remove.
* fabien/igr/wst_edges.cc: Compute a volume closing and a watershed.
---
Makefile | 17 ++--
clo_vol.cc | 2
dist_edges.cc | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
norm.cc | 2
wst_edges.cc | 142 ++++++++++++++++++++++++++++++++++++++
5 files changed, 367 insertions(+), 10 deletions(-)
Index: trunk/milena/sandbox/fabien/igr/seg_fixed.cc (deleted)
===================================================================
Index: trunk/milena/sandbox/fabien/igr/clo_vol.cc
===================================================================
--- trunk/milena/sandbox/fabien/igr/clo_vol.cc (revision 3895)
+++ trunk/milena/sandbox/fabien/igr/clo_vol.cc (revision 3896)
@@ -38,7 +38,7 @@
if (argc != 4)
{
- std::cout << "Usage: " << argv[0] << " <input.dump> <dimensions> <closure_lambda>"
+ std::cout << "Usage: " << argv[0] << " input.dump dim lambda output.dump"
<< std::endl;
return 1;
}
Index: trunk/milena/sandbox/fabien/igr/norm.cc
===================================================================
--- trunk/milena/sandbox/fabien/igr/norm.cc (revision 3895)
+++ trunk/milena/sandbox/fabien/igr/norm.cc (revision 3896)
@@ -93,7 +93,7 @@
return 1;
}
- image3d<int_u12> ima;
+ image3d<float> ima;
io::dump::load(ima, argv[1]);
image3d<float> norm = normalize(ima, atoi(argv[2]), atoi(argv[3]));
io::dump::save(norm, argv[4]);
Index: trunk/milena/sandbox/fabien/igr/wst_edges.cc
===================================================================
--- trunk/milena/sandbox/fabien/igr/wst_edges.cc (revision 0)
+++ trunk/milena/sandbox/fabien/igr/wst_edges.cc (revision 3896)
@@ -0,0 +1,142 @@
+#include <algorithm>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/alias/window1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/neighb2d.hh>
+#include <mln/core/image/image3d.hh>
+#include <mln/core/image/slice_image.hh>
+#include <mln/core/image/image_if.hh>
+#include <mln/core/routine/duplicate.hh>
+#include <mln/core/routine/extend.hh>
+#include <mln/core/var.hh>
+
+#include <mln/io/dump/all.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/ppm/save.hh>
+
+#include <mln/value/int_u8.hh>
+#include <mln/value/int_u12.hh>
+#include <mln/value/label_16.hh>
+#include <mln/value/rgb8.hh>
+
+#include <mln/accu/sum.hh>
+#include <mln/accu/mean.hh>
+#include <mln/accu/image/all.hh>
+#include <mln/accu/stat/deviation.hh>
+#include <mln/arith/div.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/paste.hh>
+#include <mln/debug/quiet.hh>
+#include <mln/convert/from_to.hh>
+#include <mln/fun/v2v/fit.hh>
+#include <mln/labeling/compute.hh>
+#include <mln/labeling/wrap.hh>
+#include <mln/level/compute.hh>
+#include <mln/level/convert.hh>
+#include <mln/level/stretch.hh>
+#include <mln/make/image2d.hh>
+#include <mln/make/w_window1d.hh>
+#include <mln/math/diff_abs.hh>
+#include <mln/morpho/dilation.hh>
+#include <mln/morpho/erosion.hh>
+#include <mln/morpho/closing/volume.hh>
+#include <mln/morpho/watershed/flooding.hh>
+#include <mln/pw/all.hh>
+#include <mln/util/array.hh>
+#include <mln/win/segment1d.hh>
+
+#include <mln/world/inter_pixel/display_edge.hh>
+#include <mln/world/inter_pixel/compute.hh>
+#include <mln/world/inter_pixel/immerse.hh>
+#include <mln/world/inter_pixel/neighb2d.hh>
+#include <mln/world/inter_pixel/all.hh>
+
+#include <mln/labeling/colorize.hh>
+#include <mln/debug/println.hh>
+#include <mln/trace/quiet.hh>
+
+
+using namespace mln;
+using value::int_u8;
+using value::int_u12;
+using value::label_16;
+
+const float saturation = 1.0;
+
+
+
+namespace mln
+{
+
+ template <typename I>
+ void io_save_edges_int_u12(const I& input,
+ value::int_u8 bg,
+ const std::string& filename)
+ {
+ mlc_equal(mln_value(I), value::int_u12)::check();
+ mln_ch_value(I, value::int_u8) output;
+ initialize(output, input);
+ arith::div_cst(input, 16, output);
+ io::pgm::save(world::inter_pixel::display_edge(output.unmorph_(),
+ bg,
+ 3),
+ filename);
+ }
+
+} // end of namespace mln
+
+
+
+
+
+
+
+int usage(const char* bin)
+{
+ std::cout << "Usage: " << bin << " input.dump lambda" << std::endl;
+ return 1;
+}
+
+int main(int argc, char* argv[])
+{
+ if (argc != 3)
+ return usage(argv[0]);
+
+ unsigned lambda = atoi(argv[2]);
+
+
+ // Initialization.
+ typedef int_u12 input_type;
+ image2d<input_type> input;
+ io::dump::load(input, argv[1]);
+
+
+ // Closing.
+ mln_VAR(d_clo, morpho::closing::volume(input | world::inter_pixel::is_separator(), world::inter_pixel::e2e(), lambda));
+ io_save_edges_int_u12(d_clo, 0, "d_clo.pgm");
+
+
+ // Watershed.
+ typedef label_16 L;
+ L nbasins;
+ mln_VAR(wst, morpho::watershed::flooding(d_clo, world::inter_pixel::e2e(), nbasins));
+
+ std::cout << "nbasins: " << nbasins << std::endl;
+
+
+ mln_VAR(w_all, wst.unmorph_());
+ //io::dump::save(w_all, "watershed_edges.dump");
+ //data::fill((w | (!world::inter_pixel::is_separator())).rw(), nbasins.next());
+ mln_VAR(w_pixels, w_all | world::inter_pixel::is_pixel());
+ data::paste(morpho::dilation(extend(w_pixels, pw::value(w_all)), c4().win()), w_all);
+ // edges -> dots
+ mln_VAR(w_dots, w_all | world::inter_pixel::dim2::is_dot());
+ data::paste(morpho::erosion(extend(w_dots, pw::value(w_all)), c4().win()), w_all);
+
+ //io::ppm::save(labeling::colorize(value::rgb8(), w, nbasins.next()), "result.ppm");
+ io::pgm::save(labeling::wrap(int_u8(), w_all), "watershed.pgm");
+
+
+ return 0;
+}
Index: trunk/milena/sandbox/fabien/igr/Makefile
===================================================================
--- trunk/milena/sandbox/fabien/igr/Makefile (revision 3895)
+++ trunk/milena/sandbox/fabien/igr/Makefile (revision 3896)
@@ -57,19 +57,20 @@
label2gif: label2gif.cc
${CXX} -I../../../ ${DICOM} ${CXXFLAGS} $^ -o label2gif
-norm: norm.cc
- ${CXX} -I../../../ ${CXXFLAGS} $^ -o norm
-
-#####################
-
-seg_fixed: seg_fixed.cc
- ${CXX} -I../../../ ${CXXFLAGS} $^ -o seg_fixed
-
#####################
filter: filter.cc
${CXX} -I../../../ ${CXXFLAGS} $^ -o filter
+norm: norm.cc
+ ${CXX} -I../../../ ${CXXFLAGS} $^ -o norm
+
+dist_edges: dist_edges.cc
+ ${CXX} -I../../../ ${CXXFLAGS} $^ -o dist_edges
+
+wst_edges: wst_edges.cc
+ ${CXX} -I../../../ ${CXXFLAGS} $^ -o wst_edges
+
#####################
clean:
Index: trunk/milena/sandbox/fabien/igr/dist_edges.cc
===================================================================
--- trunk/milena/sandbox/fabien/igr/dist_edges.cc (revision 0)
+++ trunk/milena/sandbox/fabien/igr/dist_edges.cc (revision 3896)
@@ -0,0 +1,214 @@
+#include <algorithm>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/neighb2d.hh>
+#include <mln/core/image/image3d.hh>
+#include <mln/core/image/slice_image.hh>
+#include <mln/core/image/image_if.hh>
+#include <mln/core/routine/duplicate.hh>
+#include <mln/core/routine/extend.hh>
+
+#include <mln/io/dump/all.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/ppm/save.hh>
+
+#include <mln/value/int_u8.hh>
+#include <mln/value/int_u12.hh>
+
+#include <mln/accu/sum.hh>
+#include <mln/arith/div.hh>
+#include <mln/convert/from_to.hh>
+#include <mln/level/compute.hh>
+#include <mln/level/convert.hh>
+#include <mln/level/stretch.hh>
+#include <mln/make/image2d.hh>
+#include <mln/math/diff_abs.hh>
+#include <mln/morpho/dilation.hh>
+#include <mln/morpho/erosion.hh>
+#include <mln/pw/all.hh>
+#include <mln/util/array.hh>
+
+#include <mln/world/inter_pixel/display_edge.hh>
+#include <mln/world/inter_pixel/compute.hh>
+#include <mln/world/inter_pixel/immerse.hh>
+#include <mln/world/inter_pixel/neighb2d.hh>
+#include <mln/world/inter_pixel/all.hh>
+
+
+using namespace mln;
+using value::int_u8;
+using value::int_u12;
+
+
+
+namespace mln
+{
+
+ template <typename I>
+ void io_save_edges_int_u12(const I& input,
+ value::int_u8 bg,
+ const std::string& filename)
+ {
+ mlc_equal(mln_value(I), value::int_u12)::check();
+ mln_ch_value(I, value::int_u8) output;
+ initialize(output, input);
+ arith::div_cst(input, 16, output);
+ io::pgm::save(world::inter_pixel::display_edge(output.unmorph_(),
+ bg,
+ 3),
+ filename);
+ }
+
+} // end of namespace mln
+
+
+
+// Distance function.
+//-------------------
+
+struct dist_t : Function_vv2v<dist_t>
+{
+ typedef int_u12 result;
+
+ template <typename V>
+ int_u12 operator()(const util::array<V>& v1,
+ const util::array<V>& v2) const
+ {
+ float res = 0.f;
+
+ for (unsigned i = 0; i < v1.nelements(); ++i)
+ res += std::min(v1[i], v2[i]);
+
+ image1d<V> tmp_ima;
+ image1d<V> tmp_ima2;
+ accu::sum<V> accu_sum;
+
+ convert::from_to(v1, tmp_ima);
+ float sum_v1 = level::compute(accu_sum, tmp_ima);
+
+ convert::from_to(v2, tmp_ima2);
+ float sum_v2 = level::compute(accu_sum, tmp_ima2);
+
+ if (sum_v1 == 0 && sum_v2 == 0)
+ return 1;
+
+ res /= std::max(sum_v1, sum_v2);
+ res = 1 - res;
+ res = res * 4095;
+
+ return (int) res;
+ }
+} dist;
+
+
+struct dist2_t : Function_vv2v<dist2_t>
+{
+ typedef int_u12 result;
+
+ template <typename V>
+ int_u12 operator()(const util::array<V>& v1,
+ const util::array<V>& v2) const
+ {
+ float res = 0.f;
+
+ for (unsigned i = 0; i < v1.nelements(); ++i)
+ {
+ unsigned maxi = std::max(v1[i], v2[i]);
+ if (maxi != 0u)
+ res += float(std::min(v1[i], v2[i])) / float(std::max(v1[i], v2[i]));
+ else
+ res += 1;
+ }
+
+ res = res / v1.nelements();
+ res = 1 - res;
+ res = res * 4095;
+
+ return (int) res;
+ }
+} dist2;
+
+
+struct dist3_t : Function_vv2v<dist3_t>
+{
+ typedef int_u12 result;
+
+ template <typename V>
+ int_u12 operator()(const util::array<V>& v1,
+ const util::array<V>& v2) const
+ {
+ float res = 0.f;
+ float min = 0;
+ float max = 0;
+
+ for (unsigned i = 0; i < v1.nelements(); ++i)
+ {
+ min += std::min(v1[i], v2[i]);
+ max += std::max(v1[i], v2[i]);
+ }
+
+ if (max)
+ res = min / max;
+
+ res = 1 - res;
+ res = res * 4095;
+
+ return (int) res;
+ }
+} dist3;
+
+
+
+
+
+
+int usage(const char* bin)
+{
+ std::cout << "Usage: " << bin << " input.dump min dist_type output.dump" << std::endl;
+ return 1;
+}
+
+int main(int argc, char* argv[])
+{
+ if (argc != 5)
+ return usage(argv[0]);
+
+ float min = atof(argv[2]);
+ unsigned dist_type = atoi(argv[3]);
+
+
+ // Initialization.
+ image3d<float> input;
+ io::dump::load(input, argv[1]);
+ typedef image2d<util::array<float> > I;
+ I ima_arr;
+ initialize(ima_arr, slice(input, 0));
+ for (unsigned int i = 0; i < input.nslices(); ++i)
+ {
+ image2d<float> tmp_slice = duplicate(slice(input, i));
+ mln_piter_(image2d<float>) p(tmp_slice.domain());
+ for_all(p)
+ ima_arr(p).append(tmp_slice(p) - min); // We set the minimum value to 0.
+ }
+
+
+ // Edges image creation.
+ typedef image_if<I, world::inter_pixel::is_pixel> Ix;
+ Ix imax = world::inter_pixel::immerse(ima_arr);
+
+ // Edges distance computation.
+ image_if<image2d<int_u12>, world::inter_pixel::is_separator> edges;
+ if (dist_type == 1)
+ edges = world::inter_pixel::compute(imax, dist);
+ else if (dist_type == 2)
+ edges = world::inter_pixel::compute(imax, dist2);
+ else if (dist_type == 3)
+ edges = world::inter_pixel::compute(imax, dist3);
+
+ io_save_edges_int_u12(edges, 0, "dist.pgm");
+
+ io::dump::save(edges.unmorph_(), argv[4]);
+
+ return 0;
+}
1
0
27 May '09
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Add histo 'point from value' fun v2v 'component' functions.
* mln/trait/value/internal/comp.hh (on): New method.
(mln_trait_value_comp): Remove; already define outside internal.
(todo): New.
* mln/trait/value/comp.hh: Upgrade doc style.
* tests/trait/value/comp.cc: Fix doc.
* mln/value/hsl.hh (trait): Update.
* mln/value/rgb.hh (trait): Update.
* mln/fun/i2v/value_at_index.hh: Layout.
* mln/fun/v2i/index_of_value.hh: Layout.
* mln/fun/v2v/component.hh: New.
* tests/fun/v2v/component.cc: New.
* tests/fun/ops.cc: New.
* tests/fun/Makefile.am: Update.
* mln/core/grids.hh: Upgrade doc style.
* sandbox/theo/experimental/histo_image.cc: Copy as...
* mln/histo/point_from_value.hh: ...this new file.
Keep only point_from_value.
Revamp.
* mln/histo/all.hh: Layout.
Update.
* tests/histo/compute.cc (todo): New.
* tests/histo/point_from_value.cc: New.
* tests/histo/Makefile.am: Update.
mln/core/grids.hh | 10
mln/fun/v2v/component.hh | 80 +++++++
mln/histo/all.hh | 5
mln/histo/point_from_value.hh | 444 +++++++--------------------------------
mln/trait/value/comp.hh | 2
mln/trait/value/internal/comp.hh | 177 +++++++++++++--
mln/value/hsl.hh | 11
mln/value/rgb.hh | 9
tests/fun/Makefile.am | 6
tests/fun/ops.cc | 43 +++
tests/fun/v2v/component.cc | 75 ++++++
tests/histo/Makefile.am | 2
tests/histo/compute.cc | 5
tests/histo/point_from_value.cc | 53 ++++
tests/trait/value/comp.cc | 2
15 files changed, 531 insertions(+), 393 deletions(-)
Index: mln/trait/value/internal/comp.hh
--- mln/trait/value/internal/comp.hh (revision 3894)
+++ mln/trait/value/internal/comp.hh (working copy)
@@ -30,16 +30,16 @@
/// \file mln/trait/value/internal/comp.hh
///
-/// Include all internals for value traits.
+/// Include all internals for comp value trait.
+///
+/// \todo Revamp to directly access to the most internal helper
+/// instead of bumping from one helper to another.
# include <mln/metal/bool.hh>
# include <mln/metal/if.hh>
-# define mln_trait_value_comp(T, i) typename mln::trait::value::internal::comp< T, i >::ret
-
-
namespace mln
{
@@ -60,33 +60,131 @@
// bind_comp< T, i >
- template <typename Tr, unsigned i>
+ template <typename T, typename Tr, unsigned i>
struct bind_comp;
- template <typename Tr> struct bind_comp< Tr, 0 > { typedef typename Tr::comp_0 ret; };
- template <typename Tr> struct bind_comp< Tr, 1 > { typedef typename Tr::comp_1 ret; };
- template <typename Tr> struct bind_comp< Tr, 2 > { typedef typename Tr::comp_2 ret; };
- template <typename Tr> struct bind_comp< Tr, 3 > { typedef typename Tr::comp_3 ret; };
- template <typename Tr> struct bind_comp< Tr, 4 > { typedef typename Tr::comp_4 ret; };
- template <typename Tr> struct bind_comp< Tr, 5 > { typedef typename Tr::comp_5 ret; };
- template <typename Tr> struct bind_comp< Tr, 6 > { typedef typename Tr::comp_6 ret; };
- template <typename Tr> struct bind_comp< Tr, 7 > { typedef typename Tr::comp_7 ret; };
- template <typename Tr> struct bind_comp< Tr, 8 > { typedef typename Tr::comp_8 ret; };
- template <typename Tr> struct bind_comp< Tr, 9 > { typedef typename Tr::comp_9 ret; };
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 0 >
+ {
+ typedef typename Tr::comp_0 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_0(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 1 >
+ {
+ typedef typename Tr::comp_1 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_1(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 2 >
+ {
+ typedef typename Tr::comp_2 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_2(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 3 >
+ {
+ typedef typename Tr::comp_3 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_3(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 4 >
+ {
+ typedef typename Tr::comp_4 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_4(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 5 >
+ {
+ typedef typename Tr::comp_5 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_5(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 6 >
+ {
+ typedef typename Tr::comp_6 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_6(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 7 >
+ {
+ typedef typename Tr::comp_7 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_7(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 8 >
+ {
+ typedef typename Tr::comp_8 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_8(v);
+ }
+ };
+
+ template <typename T, typename Tr>
+ struct bind_comp< T, Tr, 9 >
+ {
+ typedef typename Tr::comp_9 ret;
+ static ret on(const T& v)
+ {
+ return Tr::get_comp_9(v);
+ }
+ };
// get_comp< T, i, dim >
- template <typename C, typename Tr, unsigned i>
+ template <typename T, typename C, typename Tr, unsigned i>
struct get_comp_helper
{
typedef C ret;
+ static ret on(const T& v)
+ {
+ return v[i];
+ }
};
- template <typename Tr, unsigned i>
- struct get_comp_helper< void, Tr, i >
+ template <typename T, typename Tr, unsigned i>
+ struct get_comp_helper< T, void, Tr, i >
+ {
+ typedef bind_comp<T, Tr, i> helper;
+ typedef typename helper::ret ret;
+ static ret on(const T& v)
{
- typedef typename bind_comp<Tr, i>::ret ret;
+ return helper::on(v);
+ }
};
template <typename T, unsigned i, unsigned dim>
@@ -94,13 +192,44 @@
{
typedef mln::trait::value_<T> Tr;
typedef typename Tr::comp C;
- typedef typename get_comp_helper<C, Tr, i>::ret ret;
+ typedef get_comp_helper<T, C, Tr, i> helper;
+ typedef typename helper::ret ret;
+
+ static ret on(const T& v)
+ {
+ return helper::on(v);
+ }
+ };
+
+
+ template <typename T, unsigned i, unsigned dim>
+ struct get_comp< T[dim], i, dim >
+ {
+ typedef T ret;
+
+ static ret on(const T (&v)[dim])
+ {
+ return v[i];
+ }
};
template <typename T>
struct get_comp< T, 0, 1 >
{
typedef T ret;
+
+ static ret on(const T& v)
+ {
+ return v;
+ }
+ };
+
+ template <typename T>
+ struct get_comp< T[1], 0, 1 > // Disambiguate between both
+ // previous specialization.
+ {
+ typedef T ret;
+ static ret on(const T (&v)[1]) { return v[0]; }
};
@@ -111,7 +240,13 @@
: private metal::bool_< (i < mln::trait::value_<T>::dim) >::check_t
{
enum { dim = mln::trait::value_<T>::dim };
- typedef typename get_comp<T, i, dim>::ret ret;
+ typedef get_comp<T, i, dim> helper;
+ typedef typename helper::ret ret;
+
+ static ret on(const T& v)
+ {
+ return helper::on(v);
+ }
};
} // end of namespace mln::trait::value::internal
Index: mln/trait/value/comp.hh
--- mln/trait/value/comp.hh (revision 3894)
+++ mln/trait/value/comp.hh (working copy)
@@ -30,7 +30,7 @@
/// \file mln/trait/value/comp.hh
///
-/// Access to the i-th component type of a given type.
+/// \brief Access to the i-th component type of a given type.
# include <mln/trait/value/internal/comp.hh>
Index: mln/histo/all.hh
--- mln/histo/all.hh (revision 3894)
+++ mln/histo/all.hh (working copy)
@@ -47,12 +47,13 @@
namespace generic {}
}
-
}
-
}
+
# include <mln/histo/compute.hh>
# include <mln/histo/array.hh>
+# include <mln/histo/point_from_value.hh>
+
#endif // ! MLN_HISTO_ALL_HH
Index: mln/histo/point_from_value.hh
--- mln/histo/point_from_value.hh (revision 3870)
+++ mln/histo/point_from_value.hh (working copy)
@@ -1,421 +1,145 @@
-#include <mln/value/int_u8.hh>
-#include <mln/value/int_s.hh>
-#include <mln/value/rgb8.hh>
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_HISTO_POINT_FROM_VALUE_HH
+# define MLN_HISTO_POINT_FROM_VALUE_HH
+
+/// \file mln/histo/point_from_value.hh
+///
+/// Function 'point from value'.
+
+# include <mln/core/grids.hh>
+# include <mln/core/point.hh>
+# include <mln/fun/v2i/index_of_value.hh>
+# include <mln/fun/v2v/component.hh>
#include <mln/trait/value/comp.hh>
-#include <mln/core/alias/box1d.hh>
-#include <mln/core/image/image1d.hh>
-#include <mln/core/image/image3d.hh>
-
-#include <mln/core/concept/function.hh>
-#include <mln/metal/ands.hh>
+# define mln_histo_point_type_from(T) typename mln::histo::point_type_from<T>::ret
namespace mln
{
-
- // -------------------------------------------------- fun
-
-
- namespace fun
- {
-
- // . . . . . . . . . . . . . . . v2v:: value <-> index
-
- // This is a revamp of mln/value/internal/convert.hh. It remains
- // to be updated with Fred's new function writting. Then we'll be
- // able to make it better, i.e., to handle the different cases
- // properly. Precisely a case for scalars with low quantization
- // (with a special encoding like quantized float, or not), a case
- // for vectors with low quant, etc.
-
- namespace v2v
+ namespace histo
{
- // value -> index
template <typename T>
- struct index_of_value : Function_v2v< index_of_value<T> >,
- private metal::bool_<(mln_dim(T) == 1)>::check_t
+ struct point_type_from
{
- typedef unsigned result;
- unsigned operator()(const T& v) const
- {
- return unsigned( int(v) - int(mln_min(T)) );
- }
- };
+ private:
+ enum { d = mln_dim(T) };
+ typedef mln_regular_grid_from_dim(d) G;
- template <>
- struct index_of_value<bool> : Function_v2v< index_of_value<bool> >
- {
- typedef unsigned result;
- unsigned operator()(bool b) const
- {
- return b ? 1u : 0u;
- }
+ public:
+ typedef mln::point<G, def::coord> ret;
};
- template <typename T>
- unsigned
- meta_index_of_value(const T& v)
- {
- index_of_value<T> f;
- return f(v);
- }
-
- // index -> value
template <typename T>
- struct value_at_index : Function_v2v< value_at_index<T> >,
- private metal::bool_<(mln_dim(T) == 1)>::check_t
- {
- typedef T result;
- T operator()(unsigned i) const
- {
- return T( int(mln_min(T)) + int(i) );
- }
- };
-
- template <>
- struct value_at_index<bool> : Function_v2v< value_at_index<bool> >
- {
- typedef bool result;
- bool operator()(unsigned i) const
+ struct point_from_value : Function_v2v< point_from_value<T> >
{
- mln_precondition(i < 2);
- return i == 1u ? true : false;
- }
+ typedef mln_histo_point_type_from(T) result;
+ result operator()(const T& v) const;
};
+ template <typename T>
+ mln_histo_point_type_from(T)
+ meta_point_from_value(const T& v);
- // . . . . . . . . . . . . . . . value -> point n-D
+# ifndef MLN_INCLUDE_ONLY
namespace internal
{
- // FIXME: It can be straightforwardly written using
- // fun::ith_component. Yet there is no test file for this
- // function.
-
- template <unsigned dim, typename T>
+ template <unsigned d>
struct point_from_value;
- template <typename T>
- struct point_from_value< 1, T >
+ template <>
+ struct point_from_value< 1 >
{
- static point1d run(const T& v)
+ template <typename T, typename P>
+ static void run(const T& v, P& p)
{
- return point1d(meta_index_of_value(v));
+ p[0] = fun::v2i::meta_index_of_value(v);
}
};
- template <typename T>
- struct point_from_value< 2, T >
+ template <>
+ struct point_from_value< 2 >
{
- static point2d run(const T& v)
+ template <typename T, typename P>
+ static void run(const T& v, P& p)
{
- return point2d(meta_index_of_value(v[0]),
- meta_index_of_value(v[1]));
+ p[0] = fun::v2i::meta_index_of_value( fun::v2v::component<T,0>()(v) );
+ p[1] = fun::v2i::meta_index_of_value( fun::v2v::component<T,1>()(v) );
}
};
- template <typename T>
- struct point_from_value< 3, T >
+ template <>
+ struct point_from_value< 3 >
{
- static point3d run(const T& v)
+ template <typename T, typename P>
+ static void run(const T& v, P& p)
{
- return point3d(meta_index_of_value(v[0]),
- meta_index_of_value(v[1]),
- meta_index_of_value(v[2]));
+ p[0] = fun::v2i::meta_index_of_value( fun::v2v::component<T,0>()(v) );
+ p[1] = fun::v2i::meta_index_of_value( fun::v2v::component<T,1>()(v) );
+ p[2] = fun::v2i::meta_index_of_value( fun::v2v::component<T,2>()(v) );
}
};
- } // mln::fun::v2v::internal
+ } // end of namespace mln::histo::internal
template <typename T>
- struct point_from_value : Function_v2v< point_from_value<T> >
+ inline
+ typename point_from_value<T>::result
+ point_from_value<T>::operator()(const T& v) const
{
- enum { d = mln_dim(T) };
- typedef mln_regular_grid_from_dim(d) G;
- typedef mln::point<G, def::coord> result;
-
- result operator()(const T& v) const
- {
- return internal::point_from_value<d,T>::run(v);
+ mln_histo_point_type_from(T) p;
+ internal::point_from_value<mln_dim(T)>::run(v, p);
+ return p;
}
- index_of_value<T> f_;
- };
-
template <typename T>
- mln_result(point_from_value<T>)
+ mln_histo_point_type_from(T)
meta_point_from_value(const T& v)
{
point_from_value<T> f;
return f(v);
}
- } // mln::fun::v2v
-
-
-
-
- // . . . . . . . . . . . . . . . p2p::fold*
-
- namespace p2p
- {
-
- struct fold1d : Function_p2p< fold1d >
- {
- typedef point1d result;
- result operator()(const point1d& p) const
- {
- point1d tmp(p[0] % b.len(0));
- return tmp;
- }
- box1d b;
- };
+# endif // ! MLN_INCLUDE_ONLY
- template <bool along_0, bool along_1>
- struct fold2d : Function_p2p< fold2d<along_0,along_1> >
- {
- typedef point2d result;
- result operator()(const point2d& p) const
- {
- point2d tmp(along_0 ? p[0] % b.len(0) : p[0],
- along_1 ? p[1] % b.len(1) : p[1]);
- return tmp;
- }
- box2d b;
- };
+ } // end of namespace mln::histo
- template <bool along_0, bool along_1, bool along_2>
- struct fold3d : Function_p2p< fold3d<along_0,along_1,along_2> >
- {
- typedef point3d result;
- result operator()(const point3d& p) const
- {
- point3d tmp(along_0 ? p[0] % b.len(0) : p[0],
- along_1 ? p[1] % b.len(1) : p[1],
- along_2 ? p[2] % b.len(2) : p[2]);
- return tmp;
- }
- box3d b;
- };
-
- } // mln::fun::p2p
-
-
- } // mln::fun
-
-
- // -------------------------------------------------- value
-
-
- namespace value
- {
-
- template <unsigned n, int inf, int sup>
- struct circular
- {
- };
-
-
- namespace internal
- {
- template <typename T>
- struct is_circular_helper : metal::false_
- {};
-
- template <unsigned n, int inf, int sup>
- struct is_circular_helper< circular<n,inf,sup> > : metal::true_
- {};
-
- template <typename T>
- struct is_circular : is_circular_helper<T>::eval
- {
- };
+} // end of namespace mln
- } // mln::value::internal
- } // mln::value
-
-
- namespace trait
- {
-
- template <unsigned n, int inf, int sup>
- struct value_< mln::value::circular<n, inf, sup> >
- {
- enum {
- dim = 1,
- nbits = n,
- card = mln_value_card_from_(n)
- };
- // ...
- };
-
- } // end of namespace trait
-
-
- // -------------------------------------------------- histo
-
-
- namespace histo
- {
-
- namespace internal
- {
-
- template <int dim, typename T>
- struct image_from_value_helper
- {
- };
-
- // dim = 1
-
- template <typename T, bool is_c>
- struct image_from_value_helper_1;
-
- template <typename T>
- struct image_from_value_helper_1< T, false >
- {
- typedef image1d<unsigned> ret;
-
- static ret get_image()
- {
- ret tmp(mln_card(T));
- return tmp;
- }
- };
-
- template <typename T>
- struct image_from_value_helper_1< T, true >
- {
- typedef void ret;
- };
-
- template <typename T>
- struct image_from_value_helper< 1, T >
- {
- enum { is_c = value::internal::is_circular<T>::value };
- typedef image_from_value_helper_1< T, is_c > helper;
- };
-
- // dim = 3
-
- template <typename C0, bool is_c0,
- typename C1, bool is_c1,
- typename C2, bool is_c2,
- typename T>
- struct image_from_value_helper_3;
-
- template <typename C0, typename C1, typename C2,
- typename T>
- struct image_from_value_helper_3< C0, false,
- C1, false,
- C2, false,
- T >
- {
- typedef image3d<unsigned> ret;
- static ret get_image()
- {
- ret tmp(mln_card(C0), mln_card(C1), mln_card(C2));
- return tmp;
- }
- };
-
- template <typename C0, typename C1, typename C2,
- typename T>
- struct image_from_value_helper_3< C0, true,
- C1, false,
- C2, false,
- T >
- {
- typedef void ret;
- };
-
- template <typename T>
- struct image_from_value_helper< 3, T >
- {
- typedef mln_trait_value_comp(T, 0) C0;
- typedef mln_trait_value_comp(T, 1) C1;
- typedef mln_trait_value_comp(T, 2) C2;
- typedef image_from_value_helper_3< C0, value::internal::is_circular<C0>::value,
- C1, value::internal::is_circular<C1>::value,
- C2, value::internal::is_circular<C2>::value,
- T > helper;
- };
-
- template <typename T>
- struct image_from_value_ // Entry point.
- {
- typedef typename image_from_value_helper<mln_dim(T), T>::helper helper;
- };
-
-
- } // mln::histo::internal
-
- template <typename T>
- struct image_from_value : internal::image_from_value_<T>::helper
- {
- };
-
-
-
- // First code: the result of this function shall be replaced by
- // an histo::image<T> where T is mln_value(I). As a consequence,
- // we will not have to call meta_point_from_value...
-
- template <typename I>
- typename image_from_value<mln_value(I)>::ret
- compute_image(const Image<I>& input_)
- {
- const I& input = exact(input_);
- typedef image_from_value<mln_value(I)> helper;
- typename helper::ret h = helper::get_image();
-
- mln_piter(I) p(input.domain());
- for_all(p)
- ++h( fun::v2v::meta_point_from_value(input(p)) );
-
- return h;
- }
-
- } // mln::histo
-
-} // mln
-
-
-int main()
-{
- using namespace mln;
-
- {
- typedef bool T;
- std::cout << histo::image_from_value<T>::get_image().domain() << std::endl;
- }
-
- {
- typedef unsigned char T;
- std::cout << histo::image_from_value<T>::get_image().domain() << std::endl;
- }
-
- {
- typedef value::int_s<3> T;
- std::cout << histo::image_from_value<T>::get_image().domain() << std::endl;
- }
-
- {
- typedef value::rgb8 T;
- std::cout << histo::image_from_value<T>::get_image().domain() << std::endl;
- }
-
- {
- // typedef value::circular<8,0,9> T;
- }
-}
+#endif // ! MLN_HISTO_POINT_FROM_VALUE_HH
Property changes on: mln/histo/point_from_value.hh
___________________________________________________________________
Added: svn:mergeinfo
Index: mln/core/grids.hh
--- mln/core/grids.hh (revision 3894)
+++ mln/core/grids.hh (working copy)
@@ -1,4 +1,5 @@
-// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 2008, 2009 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -28,10 +29,9 @@
#ifndef MLN_CORE_GRIDS_HH
# define MLN_CORE_GRIDS_HH
-/*! \file mln/core/grids.hh
- *
- * \brief Definition of some grid classes.
- */
+/// \file mln/core/grids.hh
+///
+/// \brief Definition of some grid classes.
# include <mln/core/concept/regular_grid.hh>
# include <mln/core/def/coord.hh>
Index: mln/value/hsl.hh
--- mln/value/hsl.hh (revision 3894)
+++ mln/value/hsl.hh (working copy)
@@ -28,10 +28,12 @@
/// \file mln/value/hsl.hh
///
-/// Color class.
+/// \brief HSL color class.
+///
+/// \todo Write a better doc.
///
-/// \todo write a better doc.
/// \todo Cleanup/Revamp!
+/// \todo Factor comp_i and get_comp_i in a base class.
#ifndef MLN_VALUE_HSL_HH
# define MLN_VALUE_HSL_HH
@@ -139,10 +141,15 @@
typedef trait::value::kind::color kind;
typedef mln_value_quant_from_(card) quant;
+ typedef void comp;
typedef H comp_0;
typedef S comp_1;
typedef L comp_2;
+ template <typename V> static comp_0 get_comp_0(const V& v) { return v.hue(); }
+ template <typename V> static comp_1 get_comp_1(const V& v) { return v.sat(); }
+ template <typename V> static comp_2 get_comp_2(const V& v) { return v.lum(); }
+
// typedef algebra::vec<3, float> sum;
typedef mln::value::hsl_<H,S,L> sum;
};
Index: mln/value/rgb.hh
--- mln/value/rgb.hh (revision 3894)
+++ mln/value/rgb.hh (working copy)
@@ -220,7 +220,14 @@
typedef trait::value::kind::color kind;
typedef mln_value_quant_from_(card) quant;
- typedef mln::value::int_u<n> comp;
+ typedef void comp;
+ typedef mln::value::int_u<n> comp_0;
+ typedef mln::value::int_u<n> comp_1;
+ typedef mln::value::int_u<n> comp_2;
+
+ template <typename V> static comp_0 get_comp_0(const V& v) { return v.red(); }
+ template <typename V> static comp_1 get_comp_1(const V& v) { return v.green(); }
+ template <typename V> static comp_2 get_comp_2(const V& v) { return v.blue(); }
typedef algebra::vec<dim, float> sum;
Index: mln/fun/i2v/value_at_index.hh
Index: mln/fun/v2i/index_of_value.hh
Index: mln/fun/v2v/component.hh
--- mln/fun/v2v/component.hh (revision 0)
+++ mln/fun/v2v/component.hh (revision 0)
@@ -0,0 +1,80 @@
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_FUN_V2V_COMPONENT_HH
+# define MLN_FUN_V2V_COMPONENT_HH
+
+/// \file mln/fun/v2v/component.hh
+///
+/// Functor that accesses the i-th component of a value.
+
+# include <mln/core/concept/function.hh>
+# include <mln/trait/value_.hh>
+# include <mln/trait/value/comp.hh>
+# include <mln/value/builtin/all.hh>
+
+
+namespace mln
+{
+
+ namespace fun
+ {
+
+ namespace v2v
+ {
+
+ /// \brief Functor that accesses the i-th component of a value.
+ //
+ template <typename T, unsigned i>
+ struct component : public Function_v2v< component<T,i> >,
+ private metal::bool_<(i <= trait::value_<T>::dim)>::check_t
+ {
+ typedef mln_trait_value_comp(T, i) result;
+ result operator()(const T& v) const;
+ };
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ template <typename T, unsigned i>
+ inline
+ typename component<T,i>::result
+ component<T,i>::operator()(const T& v) const
+ {
+ return trait::value::internal::comp<T,i>::on(v);
+ }
+
+# endif // ! MLN_INCLUDE_ONLY
+
+ } // end of namespace mln::fun::v2v
+
+ } // end of namespace mln::fun
+
+} // end of namespace mln
+
+
+#endif // ! MLN_FUN_V2V_COMPONENT_HH
Index: tests/trait/value/comp.cc
--- tests/trait/value/comp.cc (revision 3894)
+++ tests/trait/value/comp.cc (working copy)
@@ -27,7 +27,7 @@
/// \file tests/trait/value/comp.cc
///
-/// Tests on mln_trait_value_comp.
+/// \brief Tests on mln_trait_value_comp.
///
/// \todo Add tests on some actual heterogeneous types.
Index: tests/histo/compute.cc
--- tests/histo/compute.cc (revision 3894)
+++ tests/histo/compute.cc (working copy)
@@ -29,6 +29,11 @@
/// \file tests/histo/compute.cc
///
/// Tests on mln::accu::histo and mln::histo::array.
+///
+/// \todo Just test *one* file (here: compute.hh); other features
+/// should also be tested but in a dedicated test file!
+///
+/// \todo Remove echos.
#include <iterator>
#include <sstream>
Index: tests/histo/Makefile.am
--- tests/histo/Makefile.am (revision 3894)
+++ tests/histo/Makefile.am (working copy)
@@ -4,9 +4,11 @@
check_PROGRAMS = \
compute \
+ point_from_value \
to_image1d
compute_SOURCES = compute.cc
+point_from_value_SOURCES = point_from_value.cc
to_image1d_SOURCES = to_image1d.cc
TESTS = $(check_PROGRAMS)
Index: tests/histo/point_from_value.cc
--- tests/histo/point_from_value.cc (revision 0)
+++ tests/histo/point_from_value.cc (revision 0)
@@ -0,0 +1,53 @@
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/// \file tests/histo/point_from_value.cc
+///
+/// \brief Tests on mln::histo::point_from_value.
+
+#include <mln/histo/point_from_value.hh>
+
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/point3d.hh>
+
+#include <mln/value/int_u8.hh>
+#include <mln/value/rgb8.hh>
+
+
+int main()
+{
+ using namespace mln;
+
+ int i = 51;
+ mln_assertion(histo::meta_point_from_value(i) == point1d(51));
+
+ value::int_u8 v = 51;
+ mln_assertion(histo::meta_point_from_value(v) == point1d(51));
+
+ value::rgb8 c(0,5,1);
+ mln_assertion(histo::meta_point_from_value(c) == point3d(0,5,1));
+}
Index: tests/fun/ops.cc
--- tests/fun/ops.cc (revision 0)
+++ tests/fun/ops.cc (revision 0)
@@ -0,0 +1,43 @@
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/// \file tests/fun/ops.cc
+///
+/// Test on mln::fun::ops.hh.
+
+#include <mln/fun/p2b/chess.hh>
+#include <mln/fun/ops.hh>
+
+
+int main()
+{
+ using namespace mln;
+
+ fun::p2b::chess f;
+ point2d p(0,0);
+ mln_assertion(f(p) != (! f)(p));
+}
Index: tests/fun/Makefile.am
--- tests/fun/Makefile.am (revision 3894)
+++ tests/fun/Makefile.am (working copy)
@@ -11,3 +11,9 @@
v2v \
vv2v \
x2x
+
+
+check_PROGRAMS = \
+ ops
+
+ops_SOURCES = ops.cc
Index: tests/fun/v2v/component.cc
--- tests/fun/v2v/component.cc (revision 0)
+++ tests/fun/v2v/component.cc (revision 0)
@@ -0,0 +1,75 @@
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/// \file tests/fun/v2v/component.cc
+///
+/// \brief Test fun::v2v::component.
+
+#include <mln/fun/v2v/component.hh>
+#include <mln/algebra/vec.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/hsl.hh>
+
+
+int main()
+{
+ using namespace mln;
+
+ {
+ fun::v2v::component<int, 0> f;
+ int i = 51;
+ mln_assertion(f(i) == 51);
+ }
+ {
+ typedef int V[1];
+ V v;
+ v[0] = 51;
+ fun::v2v::component<V, 0> f;
+ mln_assertion(f(v) == 51);
+ }
+ {
+ typedef algebra::vec<2,int> V;
+ V v;
+ v[0] = 51;
+ fun::v2v::component<V, 0> f;
+ mln_assertion(f(v) == 51);
+ }
+ {
+ typedef value::rgb8 V;
+ V v;
+ v.red() = 51;
+ fun::v2v::component<V, 0> f;
+ mln_assertion(f(v) == 51);
+ }
+ {
+ typedef value::hsl_<int,int,int> V;
+ V v;
+ v.hue() = 51;
+ fun::v2v::component<V, 0> f;
+ mln_assertion(f(v) == 51);
+ }
+}
1
0
* configure.ac: Configure
milena/tests/morpho/reconstruction/by_erosion/Makefile.
---
ChangeLog | 7 +++++++
configure.ac | 1 +
2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d11b7d9..6532f4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2009-05-27 Roland Levillain <roland(a)lrde.epita.fr>
+ Complete the list of configured Makefiles.
+
+ * configure.ac: Configure
+ milena/tests/morpho/reconstruction/by_erosion/Makefile.
+
+2009-05-27 Roland Levillain <roland(a)lrde.epita.fr>
+
Improve determinism of Makefile helpers generators.
* milena/tests/unit_test/build_unit_test.sh,
diff --git a/configure.ac b/configure.ac
index 18e780e..cac01ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -302,6 +302,7 @@ AC_CONFIG_FILES([
milena/tests/morpho/opening/approx/Makefile
milena/tests/morpho/reconstruction/Makefile
milena/tests/morpho/reconstruction/by_dilation/Makefile
+ milena/tests/morpho/reconstruction/by_erosion/Makefile
milena/tests/morpho/tree/Makefile
milena/tests/morpho/watershed/Makefile
milena/tests/norm/Makefile
--
1.6.1.2
1
0
* tests/unit_test/unit-tests.mk: New.
---
scribo/ChangeLog | 6 ++
scribo/tests/unit_test/unit-tests.mk | 156 ++++++++++++++++++++++++++++++++++
2 files changed, 162 insertions(+), 0 deletions(-)
create mode 100644 scribo/tests/unit_test/unit-tests.mk
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index e4b5756..86d8a0f 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add the list of SCRIBO's unit tests.
+
+ * tests/unit_test/unit-tests.mk: New.
+
2009-05-25 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
Add missing Makefile.am in Scribo.
diff --git a/scribo/tests/unit_test/unit-tests.mk b/scribo/tests/unit_test/unit-tests.mk
new file mode 100644
index 0000000..f7204da
--- /dev/null
+++ b/scribo/tests/unit_test/unit-tests.mk
@@ -0,0 +1,156 @@
+## Generated by ./build_unit_test.sh, do not modify.
+
+check_PROGRAMS = \
+scribo_all \
+scribo_binarization_simple \
+scribo_core_all \
+scribo_core_central_sites \
+scribo_core_component_bboxes \
+scribo_core_erase_bboxes \
+scribo_core_macros \
+scribo_debug_all \
+scribo_debug_save_label_image \
+scribo_debug_save_linked_textbboxes_image \
+scribo_debug_save_table_image \
+scribo_debug_save_textbboxes_image \
+scribo_demat \
+scribo_draw_all \
+scribo_draw_bounding_box_links \
+scribo_draw_bounding_boxes \
+scribo_extract_primitive_canvas \
+scribo_extract_primitive_cells \
+scribo_extract_primitive_lines_discontinued \
+scribo_extract_primitive_lines_h_discontinued \
+scribo_extract_primitive_lines_thick \
+scribo_extract_primitive_lines_v_discontinued \
+scribo_extract_primitive_objects \
+scribo_filter_all \
+scribo_filter_large_components \
+scribo_filter_small_components \
+scribo_filter_thick_bboxes \
+scribo_filter_thin_bboxes \
+scribo_make_all \
+scribo_make_debug_filename \
+scribo_make_influence_zone_graph \
+scribo_make_text \
+scribo_preprocessing_all \
+scribo_preprocessing_unskew \
+scribo_table_align_lines_horizontaly \
+scribo_table_align_lines_verticaly \
+scribo_table_all \
+scribo_table_connect_horizontal_lines \
+scribo_table_connect_vertical_lines \
+scribo_table_erase \
+scribo_table_extract \
+scribo_table_extract_lines_with_opening \
+scribo_table_extract_lines_with_rank \
+scribo_table_internal_align_lines \
+scribo_table_internal_all \
+scribo_table_internal_connect_lines \
+scribo_table_internal_repair_lines \
+scribo_table_rebuild \
+scribo_table_repair_horizontal_lines \
+scribo_table_repair_vertical_lines \
+scribo_text_all \
+scribo_text_clean \
+scribo_text_extract_bboxes \
+scribo_text_extract_lines \
+scribo_text_grouping_all \
+scribo_text_grouping_group_from_double_link \
+scribo_text_grouping_group_from_graph \
+scribo_text_grouping_group_from_single_link \
+scribo_text_grouping_group_with_graph \
+scribo_text_grouping_group_with_several_graphes \
+scribo_text_grouping_group_with_several_left_links \
+scribo_text_grouping_group_with_several_right_links \
+scribo_text_grouping_group_with_single_left_link \
+scribo_text_grouping_group_with_single_right_link \
+scribo_text_grouping_internal_all \
+scribo_text_grouping_internal_find_graph_link \
+scribo_text_grouping_internal_find_left_link \
+scribo_text_grouping_internal_find_right_link \
+scribo_text_grouping_internal_find_root \
+scribo_text_grouping_internal_init_link_array \
+scribo_text_grouping_internal_is_link_valid \
+scribo_text_grouping_internal_update_graph_link \
+scribo_text_grouping_internal_update_link_array \
+scribo_text_recognition \
+scribo_util_all \
+scribo_util_text
+
+scribo_all_SOURCES = scribo_all.cc
+scribo_binarization_simple_SOURCES = scribo_binarization_simple.cc
+scribo_core_all_SOURCES = scribo_core_all.cc
+scribo_core_central_sites_SOURCES = scribo_core_central_sites.cc
+scribo_core_component_bboxes_SOURCES = scribo_core_component_bboxes.cc
+scribo_core_erase_bboxes_SOURCES = scribo_core_erase_bboxes.cc
+scribo_core_macros_SOURCES = scribo_core_macros.cc
+scribo_debug_all_SOURCES = scribo_debug_all.cc
+scribo_debug_save_label_image_SOURCES = scribo_debug_save_label_image.cc
+scribo_debug_save_linked_textbboxes_image_SOURCES = scribo_debug_save_linked_textbboxes_image.cc
+scribo_debug_save_table_image_SOURCES = scribo_debug_save_table_image.cc
+scribo_debug_save_textbboxes_image_SOURCES = scribo_debug_save_textbboxes_image.cc
+scribo_demat_SOURCES = scribo_demat.cc
+scribo_draw_all_SOURCES = scribo_draw_all.cc
+scribo_draw_bounding_box_links_SOURCES = scribo_draw_bounding_box_links.cc
+scribo_draw_bounding_boxes_SOURCES = scribo_draw_bounding_boxes.cc
+scribo_extract_primitive_canvas_SOURCES = scribo_extract_primitive_canvas.cc
+scribo_extract_primitive_cells_SOURCES = scribo_extract_primitive_cells.cc
+scribo_extract_primitive_lines_discontinued_SOURCES = scribo_extract_primitive_lines_discontinued.cc
+scribo_extract_primitive_lines_h_discontinued_SOURCES = scribo_extract_primitive_lines_h_discontinued.cc
+scribo_extract_primitive_lines_thick_SOURCES = scribo_extract_primitive_lines_thick.cc
+scribo_extract_primitive_lines_v_discontinued_SOURCES = scribo_extract_primitive_lines_v_discontinued.cc
+scribo_extract_primitive_objects_SOURCES = scribo_extract_primitive_objects.cc
+scribo_filter_all_SOURCES = scribo_filter_all.cc
+scribo_filter_large_components_SOURCES = scribo_filter_large_components.cc
+scribo_filter_small_components_SOURCES = scribo_filter_small_components.cc
+scribo_filter_thick_bboxes_SOURCES = scribo_filter_thick_bboxes.cc
+scribo_filter_thin_bboxes_SOURCES = scribo_filter_thin_bboxes.cc
+scribo_make_all_SOURCES = scribo_make_all.cc
+scribo_make_debug_filename_SOURCES = scribo_make_debug_filename.cc
+scribo_make_influence_zone_graph_SOURCES = scribo_make_influence_zone_graph.cc
+scribo_make_text_SOURCES = scribo_make_text.cc
+scribo_preprocessing_all_SOURCES = scribo_preprocessing_all.cc
+scribo_preprocessing_unskew_SOURCES = scribo_preprocessing_unskew.cc
+scribo_table_align_lines_horizontaly_SOURCES = scribo_table_align_lines_horizontaly.cc
+scribo_table_align_lines_verticaly_SOURCES = scribo_table_align_lines_verticaly.cc
+scribo_table_all_SOURCES = scribo_table_all.cc
+scribo_table_connect_horizontal_lines_SOURCES = scribo_table_connect_horizontal_lines.cc
+scribo_table_connect_vertical_lines_SOURCES = scribo_table_connect_vertical_lines.cc
+scribo_table_erase_SOURCES = scribo_table_erase.cc
+scribo_table_extract_SOURCES = scribo_table_extract.cc
+scribo_table_extract_lines_with_opening_SOURCES = scribo_table_extract_lines_with_opening.cc
+scribo_table_extract_lines_with_rank_SOURCES = scribo_table_extract_lines_with_rank.cc
+scribo_table_internal_align_lines_SOURCES = scribo_table_internal_align_lines.cc
+scribo_table_internal_all_SOURCES = scribo_table_internal_all.cc
+scribo_table_internal_connect_lines_SOURCES = scribo_table_internal_connect_lines.cc
+scribo_table_internal_repair_lines_SOURCES = scribo_table_internal_repair_lines.cc
+scribo_table_rebuild_SOURCES = scribo_table_rebuild.cc
+scribo_table_repair_horizontal_lines_SOURCES = scribo_table_repair_horizontal_lines.cc
+scribo_table_repair_vertical_lines_SOURCES = scribo_table_repair_vertical_lines.cc
+scribo_text_all_SOURCES = scribo_text_all.cc
+scribo_text_clean_SOURCES = scribo_text_clean.cc
+scribo_text_extract_bboxes_SOURCES = scribo_text_extract_bboxes.cc
+scribo_text_extract_lines_SOURCES = scribo_text_extract_lines.cc
+scribo_text_grouping_all_SOURCES = scribo_text_grouping_all.cc
+scribo_text_grouping_group_from_double_link_SOURCES = scribo_text_grouping_group_from_double_link.cc
+scribo_text_grouping_group_from_graph_SOURCES = scribo_text_grouping_group_from_graph.cc
+scribo_text_grouping_group_from_single_link_SOURCES = scribo_text_grouping_group_from_single_link.cc
+scribo_text_grouping_group_with_graph_SOURCES = scribo_text_grouping_group_with_graph.cc
+scribo_text_grouping_group_with_several_graphes_SOURCES = scribo_text_grouping_group_with_several_graphes.cc
+scribo_text_grouping_group_with_several_left_links_SOURCES = scribo_text_grouping_group_with_several_left_links.cc
+scribo_text_grouping_group_with_several_right_links_SOURCES = scribo_text_grouping_group_with_several_right_links.cc
+scribo_text_grouping_group_with_single_left_link_SOURCES = scribo_text_grouping_group_with_single_left_link.cc
+scribo_text_grouping_group_with_single_right_link_SOURCES = scribo_text_grouping_group_with_single_right_link.cc
+scribo_text_grouping_internal_all_SOURCES = scribo_text_grouping_internal_all.cc
+scribo_text_grouping_internal_find_graph_link_SOURCES = scribo_text_grouping_internal_find_graph_link.cc
+scribo_text_grouping_internal_find_left_link_SOURCES = scribo_text_grouping_internal_find_left_link.cc
+scribo_text_grouping_internal_find_right_link_SOURCES = scribo_text_grouping_internal_find_right_link.cc
+scribo_text_grouping_internal_find_root_SOURCES = scribo_text_grouping_internal_find_root.cc
+scribo_text_grouping_internal_init_link_array_SOURCES = scribo_text_grouping_internal_init_link_array.cc
+scribo_text_grouping_internal_is_link_valid_SOURCES = scribo_text_grouping_internal_is_link_valid.cc
+scribo_text_grouping_internal_update_graph_link_SOURCES = scribo_text_grouping_internal_update_graph_link.cc
+scribo_text_grouping_internal_update_link_array_SOURCES = scribo_text_grouping_internal_update_link_array.cc
+scribo_text_recognition_SOURCES = scribo_text_recognition.cc
+scribo_util_all_SOURCES = scribo_util_all.cc
+scribo_util_text_SOURCES = scribo_util_text.cc
--
1.6.1.2
1
0
* headers.mk,
* doc/outputs/outputs.mk,
* tests/unit_test/unit-tests.mk:
Regen.
---
milena/ChangeLog | 9 +
milena/doc/outputs/outputs.mk | 6 +-
milena/headers.mk | 156 +++++++++---------
milena/tests/unit_test/unit-tests.mk | 306 +++++++++++++++++-----------------
4 files changed, 248 insertions(+), 229 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 79da1c0..341a771 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,12 @@
+2009-05-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen Makefile helpers.
+
+ * headers.mk,
+ * doc/outputs/outputs.mk,
+ * tests/unit_test/unit-tests.mk:
+ Regen.
+
2009-05-26 Roland Levillain <roland(a)lrde.epita.fr>
Get rid of an infinite recursion in Milena's Makefile.
diff --git a/milena/doc/outputs/outputs.mk b/milena/doc/outputs/outputs.mk
index db8fdec..754db84 100644
--- a/milena/doc/outputs/outputs.mk
+++ b/milena/doc/outputs/outputs.mk
@@ -21,6 +21,9 @@ outputs/fun-p2v-1.txt \
outputs/graph-data.txt \
outputs/graph-iter.txt \
outputs/graph-output-1.txt \
+outputs/ima-has.txt \
+outputs/ima-save.txt \
+outputs/ima-size.txt \
outputs/ima2d-1.txt \
outputs/ima2d-2.txt \
outputs/ima2d-3.txt \
@@ -34,9 +37,6 @@ outputs/ima2d-display-2.txt \
outputs/ima2d-display-output-1.txt \
outputs/ima2d-display-output-2.txt \
outputs/ima2d-rot.txt \
-outputs/ima-has.txt \
-outputs/ima-save.txt \
-outputs/ima-size.txt \
outputs/labeling-compute.txt \
outputs/logical-not.txt \
outputs/mln_var.txt \
diff --git a/milena/headers.mk b/milena/headers.mk
index c21f1bf..a040f8d 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -7,8 +7,8 @@ mln/accu/bbox.hh \
mln/accu/center.hh \
mln/accu/compute.hh \
mln/accu/convolve.hh \
-mln/accu/count_adjacent_vertices.hh \
mln/accu/count.hh \
+mln/accu/count_adjacent_vertices.hh \
mln/accu/count_labels.hh \
mln/accu/essential.hh \
mln/accu/height.hh \
@@ -17,8 +17,8 @@ mln/accu/image/all.hh \
mln/accu/image/essential.hh \
mln/accu/image/init.hh \
mln/accu/image/set_value.hh \
-mln/accu/image/take_as_init.hh \
mln/accu/image/take.hh \
+mln/accu/image/take_as_init.hh \
mln/accu/image/take_n_times.hh \
mln/accu/image/to_result.hh \
mln/accu/image/untake.hh \
@@ -26,11 +26,11 @@ mln/accu/inf.hh \
mln/accu/internal/base.hh \
mln/accu/internal/couple.hh \
mln/accu/label_used.hh \
-mln/accu/land_basic.hh \
mln/accu/land.hh \
+mln/accu/land_basic.hh \
mln/accu/line.hh \
-mln/accu/lor_basic.hh \
mln/accu/lor.hh \
+mln/accu/lor_basic.hh \
mln/accu/maj_h.hh \
mln/accu/max.hh \
mln/accu/max_h.hh \
@@ -42,10 +42,10 @@ mln/accu/min.hh \
mln/accu/min_h.hh \
mln/accu/min_max.hh \
mln/accu/nil.hh \
-mln/accu/pair.hh \
mln/accu/p.hh \
-mln/accu/rank_bool.hh \
+mln/accu/pair.hh \
mln/accu/rank.hh \
+mln/accu/rank_bool.hh \
mln/accu/rank_high_quant.hh \
mln/accu/rms.hh \
mln/accu/site_set/all.hh \
@@ -58,9 +58,9 @@ mln/accu/stat/variance.hh \
mln/accu/sum.hh \
mln/accu/sup.hh \
mln/accu/take.hh \
+mln/accu/transform.hh \
mln/accu/transform_diagonal.hh \
mln/accu/transform_directional.hh \
-mln/accu/transform.hh \
mln/accu/transform_line.hh \
mln/accu/transform_snake.hh \
mln/accu/transform_stop.hh \
@@ -103,8 +103,8 @@ mln/border/fill.hh \
mln/border/find.hh \
mln/border/get.hh \
mln/border/mirror.hh \
-mln/border/resize_equal.hh \
mln/border/resize.hh \
+mln/border/resize_equal.hh \
mln/border/thickness.hh \
mln/canvas/all.hh \
mln/canvas/browsing/all.hh \
@@ -112,8 +112,8 @@ mln/canvas/browsing/backdiagonal2d.hh \
mln/canvas/browsing/breadth_first_search.hh \
mln/canvas/browsing/depth_first_search.hh \
mln/canvas/browsing/diagonal2d.hh \
-mln/canvas/browsing/directional.hh \
mln/canvas/browsing/dir_struct_elt_incr_update.hh \
+mln/canvas/browsing/directional.hh \
mln/canvas/browsing/essential.hh \
mln/canvas/browsing/fwd.hh \
mln/canvas/browsing/hyper_directional.hh \
@@ -141,14 +141,15 @@ mln/convert/impl/from_int_to_value.hh \
mln/convert/impl/from_site_set_to_image.hh \
mln/convert/impl/from_unsigned_to_value.hh \
mln/convert/impl/from_value_to_value.hh \
+mln/convert/to.hh \
mln/convert/to_dpoint.hh \
mln/convert/to_fun.hh \
-mln/convert/to.hh \
mln/convert/to_image.hh \
mln/convert/to_p_array.hh \
mln/convert/to_p_set.hh \
mln/convert/to_upper_window.hh \
mln/convert/to_window.hh \
+mln/core/a_point_of.hh \
mln/core/alias/all.hh \
mln/core/alias/box1d.hh \
mln/core/alias/box2d.hh \
@@ -163,29 +164,28 @@ mln/core/alias/dpoint3d.hh \
mln/core/alias/neighb1d.hh \
mln/core/alias/neighb2d.hh \
mln/core/alias/neighb3d.hh \
+mln/core/alias/p_run2d.hh \
+mln/core/alias/p_runs2d.hh \
mln/core/alias/point1d.hh \
mln/core/alias/point2d.hh \
mln/core/alias/point2d_h.hh \
mln/core/alias/point3d.hh \
-mln/core/alias/p_run2d.hh \
-mln/core/alias/p_runs2d.hh \
mln/core/alias/vec2d.hh \
mln/core/alias/vec3d.hh \
-mln/core/alias/window1d.hh \
-mln/core/alias/window2d.hh \
-mln/core/alias/window3d.hh \
mln/core/alias/w_window1d_float.hh \
mln/core/alias/w_window1d_int.hh \
mln/core/alias/w_window2d_float.hh \
mln/core/alias/w_window2d_int.hh \
mln/core/alias/w_window3d_float.hh \
mln/core/alias/w_window3d_int.hh \
+mln/core/alias/window1d.hh \
+mln/core/alias/window2d.hh \
+mln/core/alias/window3d.hh \
mln/core/all.hh \
-mln/core/a_point_of.hh \
mln/core/box_runstart_piter.hh \
mln/core/category.hh \
-mln/core/clock_neighb2d.hh \
mln/core/clock_neighb.hh \
+mln/core/clock_neighb2d.hh \
mln/core/concept/accumulator.hh \
mln/core/concept/all.hh \
mln/core/concept/box.hh \
@@ -195,8 +195,8 @@ mln/core/concept/doc/accumulator.hh \
mln/core/concept/doc/box.hh \
mln/core/concept/doc/dpoint.hh \
mln/core/concept/doc/generalized_pixel.hh \
-mln/core/concept/doc/image_fastest.hh \
mln/core/concept/doc/image.hh \
+mln/core/concept/doc/image_fastest.hh \
mln/core/concept/doc/iterator.hh \
mln/core/concept/doc/neighborhood.hh \
mln/core/concept/doc/object.hh \
@@ -219,8 +219,8 @@ mln/core/concept/iterator.hh \
mln/core/concept/literal.hh \
mln/core/concept/mesh.hh \
mln/core/concept/meta_accumulator.hh \
-mln/core/concept/meta_function.hh \
mln/core/concept/meta_fun.hh \
+mln/core/concept/meta_function.hh \
mln/core/concept/neighborhood.hh \
mln/core/concept/object.hh \
mln/core/concept/pixel_iterator.hh \
@@ -240,8 +240,8 @@ mln/core/concept/weighted_window.hh \
mln/core/concept/window.hh \
mln/core/contract.hh \
mln/core/def/all.hh \
-mln/core/def/coordf.hh \
mln/core/def/coord.hh \
+mln/core/def/coordf.hh \
mln/core/def/essential.hh \
mln/core/def/low_quant_nbits.hh \
mln/core/dpoint.hh \
@@ -302,9 +302,9 @@ mln/core/image/sparse_encode.hh \
mln/core/image/sparse_image.hh \
mln/core/image/sub_image.hh \
mln/core/image/sub_image_if.hh \
-mln/core/image/thrubin_morpher.hh \
-mln/core/image/thru_morpher.hh \
mln/core/image/t_image.hh \
+mln/core/image/thru_morpher.hh \
+mln/core/image/thrubin_morpher.hh \
mln/core/image/tr_image.hh \
mln/core/image/tr_mesh.hh \
mln/core/image/unproject_image.hh \
@@ -394,8 +394,8 @@ mln/core/site_set/p_line2d.hh \
mln/core/site_set/p_mutable_array_of.hh \
mln/core/site_set/p_n_faces_piter.hh \
mln/core/site_set/p_priority.hh \
-mln/core/site_set/p_queue_fast.hh \
mln/core/site_set/p_queue.hh \
+mln/core/site_set/p_queue_fast.hh \
mln/core/site_set/p_run.hh \
mln/core/site_set/p_run_piter.hh \
mln/core/site_set/p_set.hh \
@@ -412,8 +412,8 @@ mln/core/trait/op_mult.hh \
mln/core/trait/pixter.hh \
mln/core/trait/qlf_value.hh \
mln/core/var.hh \
-mln/core/window.hh \
mln/core/w_window.hh \
+mln/core/window.hh \
mln/data/all.hh \
mln/data/essential.hh \
mln/data/fill.hh \
@@ -457,9 +457,9 @@ mln/estim/essential.hh \
mln/estim/mean.hh \
mln/estim/min_max.hh \
mln/estim/sum.hh \
+mln/extension/adjust.hh \
mln/extension/adjust_duplicate.hh \
mln/extension/adjust_fill.hh \
-mln/extension/adjust.hh \
mln/extension/all.hh \
mln/extension/duplicate.hh \
mln/extension/essential.hh \
@@ -478,11 +478,11 @@ mln/fun/accu_result.hh \
mln/fun/all.hh \
mln/fun/binary.hh \
mln/fun/binary_param.hh \
-mln/fun/cast.hh \
mln/fun/c.hh \
+mln/fun/cast.hh \
mln/fun/component/blue.hh \
-mln/fun/component/comp_count.hh \
mln/fun/component/comp.hh \
+mln/fun/component/comp_count.hh \
mln/fun/component/green.hh \
mln/fun/component/ithcomp.hh \
mln/fun/component/red.hh \
@@ -496,6 +496,7 @@ mln/fun/i2v/all.hh \
mln/fun/i2v/all_to.hh \
mln/fun/i2v/array.hh \
mln/fun/i2v/essential.hh \
+mln/fun/i2v/value_at_index.hh \
mln/fun/internal/ch_function_value_impl.hh \
mln/fun/internal/resolve.hh \
mln/fun/internal/selector.hh \
@@ -547,6 +548,8 @@ mln/fun/v2b/all.hh \
mln/fun/v2b/essential.hh \
mln/fun/v2b/lnot.hh \
mln/fun/v2b/threshold.hh \
+mln/fun/v2i/all.hh \
+mln/fun/v2i/index_of_value.hh \
mln/fun/v2v/abs.hh \
mln/fun/v2v/all.hh \
mln/fun/v2v/cast.hh \
@@ -672,12 +675,12 @@ mln/io/plot/all.hh \
mln/io/plot/load.hh \
mln/io/plot/save.hh \
mln/io/pnm/all.hh \
-mln/io/pnm/load_header.hh \
mln/io/pnm/load.hh \
+mln/io/pnm/load_header.hh \
mln/io/pnm/macros.hh \
mln/io/pnm/max_component.hh \
-mln/io/pnm/save_header.hh \
mln/io/pnm/save.hh \
+mln/io/pnm/save_header.hh \
mln/io/ppm/all.hh \
mln/io/ppm/load.hh \
mln/io/ppm/save.hh \
@@ -726,22 +729,22 @@ mln/level/sort_psites.hh \
mln/level/stretch.hh \
mln/level/to_enc.hh \
mln/level/transform.hh \
-mln/level/transform_inplace.hh \
mln/level/transform.spe.hh \
+mln/level/transform_inplace.hh \
mln/level/update.hh \
mln/level/was.median.hh \
mln/linear/all.hh \
mln/linear/ch_convolve.hh \
+mln/linear/convolve.hh \
mln/linear/convolve_2x1d.hh \
mln/linear/convolve_directional.hh \
-mln/linear/convolve.hh \
mln/linear/essential.hh \
-mln/linear/gaussian_1d.hh \
-mln/linear/gaussian_directional_2d.hh \
-mln/linear/gaussian/filter.hh \
mln/linear/gaussian.hh \
+mln/linear/gaussian/filter.hh \
mln/linear/gaussian/impl.hh \
mln/linear/gaussian/internal/coefficients.hh \
+mln/linear/gaussian_1d.hh \
+mln/linear/gaussian_directional_2d.hh \
mln/linear/lap.hh \
mln/linear/local/convolve.hh \
mln/linear/log.hh \
@@ -784,23 +787,23 @@ mln/make/dummy_p_vertices.hh \
mln/make/edge_image.hh \
mln/make/essential.hh \
mln/make/h_mat.hh \
+mln/make/image.hh \
mln/make/image2d.hh \
mln/make/image3d.hh \
-mln/make/image.hh \
mln/make/influence_zone_adjacency_graph.hh \
mln/make/mat.hh \
mln/make/p_edges_with_mass_centers.hh \
-mln/make/pixel.hh \
+mln/make/p_vertices_with_mass_centers.hh \
mln/make/pix.hh \
+mln/make/pixel.hh \
mln/make/point2d_h.hh \
-mln/make/p_vertices_with_mass_centers.hh \
mln/make/rag_and_labeled_wsl.hh \
mln/make/region_adjacency_graph.hh \
mln/make/relabelfun.hh \
mln/make/vec.hh \
mln/make/vertex_image.hh \
mln/make/voronoi.hh \
-mln/make/win_chamfer.hh \
+mln/make/w_window.hh \
mln/make/w_window1d.hh \
mln/make/w_window1d_int.hh \
mln/make/w_window2d.hh \
@@ -808,7 +811,7 @@ mln/make/w_window2d_int.hh \
mln/make/w_window3d.hh \
mln/make/w_window3d_int.hh \
mln/make/w_window_directional.hh \
-mln/make/w_window.hh \
+mln/make/win_chamfer.hh \
mln/math/abs.hh \
mln/math/acos.hh \
mln/math/all.hh \
@@ -828,10 +831,10 @@ mln/math/sqrt.hh \
mln/metal/abort.hh \
mln/metal/all.hh \
mln/metal/ands.hh \
+mln/metal/array.hh \
mln/metal/array1d.hh \
mln/metal/array2d.hh \
mln/metal/array3d.hh \
-mln/metal/array.hh \
mln/metal/bexpr.hh \
mln/metal/bool.hh \
mln/metal/const.hh \
@@ -842,17 +845,17 @@ mln/metal/fix_return.hh \
mln/metal/goes_to.hh \
mln/metal/if.hh \
mln/metal/int.hh \
+mln/metal/is.hh \
mln/metal/is_a.hh \
mln/metal/is_const.hh \
-mln/metal/is.hh \
+mln/metal/is_not.hh \
mln/metal/is_not_a.hh \
mln/metal/is_not_const.hh \
-mln/metal/is_not.hh \
mln/metal/is_not_ref.hh \
mln/metal/is_ref.hh \
mln/metal/is_unqualif.hh \
-mln/metal/math/all.hh \
mln/metal/mat.hh \
+mln/metal/math/all.hh \
mln/metal/math/max.hh \
mln/metal/math/pow.hh \
mln/metal/math/root.hh \
@@ -869,6 +872,7 @@ mln/metal/unptr.hh \
mln/metal/unqualif.hh \
mln/metal/unref.hh \
mln/metal/vec.hh \
+mln/morpho/Rd.hh \
mln/morpho/algebraic_filter.hh \
mln/morpho/all.hh \
mln/morpho/approx/all.hh \
@@ -891,6 +895,7 @@ mln/morpho/closing/essential.hh \
mln/morpho/closing/height.hh \
mln/morpho/closing/leveling.hh \
mln/morpho/closing/structural.hh \
+mln/morpho/closing/sum.hh \
mln/morpho/closing/volume.hh \
mln/morpho/complementation.hh \
mln/morpho/contrast.hh \
@@ -900,8 +905,8 @@ mln/morpho/elementary/closing.hh \
mln/morpho/elementary/dilation.hh \
mln/morpho/elementary/erosion.hh \
mln/morpho/elementary/essential.hh \
-mln/morpho/elementary/gradient_external.hh \
mln/morpho/elementary/gradient.hh \
+mln/morpho/elementary/gradient_external.hh \
mln/morpho/elementary/gradient_internal.hh \
mln/morpho/elementary/laplacian.hh \
mln/morpho/elementary/like_ero_fun.hh \
@@ -935,15 +940,14 @@ mln/morpho/opening/structural.hh \
mln/morpho/opening/volume.hh \
mln/morpho/plus.hh \
mln/morpho/rank_filter.hh \
-mln/morpho/Rd.hh \
mln/morpho/reconstruction/all.hh \
mln/morpho/reconstruction/by_dilation/all.hh \
mln/morpho/reconstruction/by_dilation/union_find.hh \
mln/morpho/reconstruction/by_erosion/all.hh \
mln/morpho/reconstruction/by_erosion/union_find.hh \
mln/morpho/skeleton_constrained.hh \
-mln/morpho/thickening.hh \
mln/morpho/thick_miss.hh \
+mln/morpho/thickening.hh \
mln/morpho/thin_fit.hh \
mln/morpho/thinning.hh \
mln/morpho/top_hat.hh \
@@ -1014,14 +1018,14 @@ mln/topo/algebraic_face.hh \
mln/topo/algebraic_n_face.hh \
mln/topo/all.hh \
mln/topo/attic/faces_iter.hh \
-mln/topo/centered_iter_adapter.hh \
mln/topo/center_only_iter.hh \
+mln/topo/centered_iter_adapter.hh \
mln/topo/complex.hh \
mln/topo/complex_iterators.hh \
mln/topo/detach.hh \
mln/topo/essential.hh \
-mln/topo/face_data.hh \
mln/topo/face.hh \
+mln/topo/face_data.hh \
mln/topo/face_iter.hh \
mln/topo/internal/complex_iterator_base.hh \
mln/topo/internal/complex_relative_iterator_base.hh \
@@ -1055,13 +1059,13 @@ mln/trait/ch_value.hh \
mln/trait/concrete.hh \
mln/trait/essential.hh \
mln/trait/functions.hh \
-mln/trait/image_from_grid.hh \
mln/trait/image/print.hh \
mln/trait/image/props.hh \
+mln/trait/image_from_grid.hh \
mln/trait/images.hh \
mln/trait/neighborhood.hh \
-mln/trait/next/solve_binary.hh \
mln/trait/next/solve.hh \
+mln/trait/next/solve_binary.hh \
mln/trait/next/solve_proxy.hh \
mln/trait/next/solve_unary.hh \
mln/trait/op/all.hh \
@@ -1079,8 +1083,8 @@ mln/trait/op/minus.hh \
mln/trait/op/mod.hh \
mln/trait/op/neq.hh \
mln/trait/op/not.hh \
-mln/trait/op/ord.hh \
mln/trait/op/or.hh \
+mln/trait/op/ord.hh \
mln/trait/op/plus.hh \
mln/trait/op/postdec.hh \
mln/trait/op/postinc.hh \
@@ -1094,27 +1098,24 @@ mln/trait/promote.hh \
mln/trait/site_set/print.hh \
mln/trait/site_set/props.hh \
mln/trait/site_sets.hh \
-mln/trait/solve_binary.hh \
mln/trait/solve.hh \
+mln/trait/solve_binary.hh \
mln/trait/solve_unary.hh \
mln/trait/undef.hh \
mln/trait/value/all.hh \
mln/trait/value/comp.hh \
mln/trait/value/essential.hh \
-mln/trait/value_.hh \
mln/trait/value/internal/all.hh \
mln/trait/value/internal/comp.hh \
mln/trait/value/kind.hh \
mln/trait/value/nature.hh \
mln/trait/value/print.hh \
mln/trait/value/quant.hh \
+mln/trait/value_.hh \
mln/trait/window/print.hh \
mln/trait/window/props.hh \
mln/trait/windows.hh \
mln/transform/all.hh \
-mln/transformation/all.hh \
-mln/transformation/essential.hh \
-mln/transformation/rotate.hh \
mln/transform/distance_and_closest_point_geodesic.hh \
mln/transform/distance_and_influence_zone_geodesic.hh \
mln/transform/distance_front.hh \
@@ -1127,6 +1128,9 @@ mln/transform/internal/all.hh \
mln/transform/internal/closest_point_functor.hh \
mln/transform/internal/distance_functor.hh \
mln/transform/internal/influence_zone_functor.hh \
+mln/transformation/all.hh \
+mln/transformation/essential.hh \
+mln/transformation/rotate.hh \
mln/util/adjacency_matrix.hh \
mln/util/all.hh \
mln/util/array.hh \
@@ -1144,16 +1148,16 @@ mln/util/greater_point.hh \
mln/util/greater_psite.hh \
mln/util/ignore.hh \
mln/util/index.hh \
-mln/util/internal/boost_graph_access.hh \
mln/util/internal/boost_graph.hh \
+mln/util/internal/boost_graph_access.hh \
mln/util/internal/boost_graph_property.hh \
mln/util/internal/boost_graph_structure.hh \
mln/util/internal/edge_impl.hh \
mln/util/internal/graph_base.hh \
-mln/util/internal/graph_iter_base.hh \
mln/util/internal/graph_iter.hh \
-mln/util/internal/graph_nbh_iter_base.hh \
+mln/util/internal/graph_iter_base.hh \
mln/util/internal/graph_nbh_iter.hh \
+mln/util/internal/graph_nbh_iter_base.hh \
mln/util/internal/id2element.hh \
mln/util/internal/vertex_impl.hh \
mln/util/lazy_set.hh \
@@ -1171,9 +1175,9 @@ mln/util/site_pair.hh \
mln/util/soft_heap.hh \
mln/util/timer.hh \
mln/util/tracked_ptr.hh \
+mln/util/tree.hh \
mln/util/tree_fast.hh \
mln/util/tree_fast_to_image.hh \
-mln/util/tree.hh \
mln/util/tree_to_fast.hh \
mln/util/tree_to_image.hh \
mln/util/vertex.hh \
@@ -1201,50 +1205,50 @@ mln/value/concept/symbolic.hh \
mln/value/concept/vectorial.hh \
mln/value/equiv.hh \
mln/value/essential.hh \
+mln/value/float01.hh \
+mln/value/float01_.hh \
mln/value/float01_16.hh \
mln/value/float01_8.hh \
mln/value/float01_f.hh \
-mln/value/float01_.hh \
-mln/value/float01.hh \
mln/value/gl16.hh \
mln/value/gl8.hh \
mln/value/glf.hh \
-mln/value/graylevel_f.hh \
mln/value/graylevel.hh \
+mln/value/graylevel_f.hh \
mln/value/hsi.hh \
mln/value/hsl.hh \
+mln/value/int_s.hh \
+mln/value/int_s16.hh \
+mln/value/int_s32.hh \
+mln/value/int_s8.hh \
+mln/value/int_u.hh \
+mln/value/int_u12.hh \
+mln/value/int_u16.hh \
+mln/value/int_u32.hh \
+mln/value/int_u8.hh \
+mln/value/int_u_sat.hh \
mln/value/internal/all.hh \
mln/value/internal/convert.hh \
mln/value/internal/encoding.hh \
mln/value/internal/essential.hh \
-mln/value/internal/gray_f.hh \
mln/value/internal/gray_.hh \
+mln/value/internal/gray_f.hh \
mln/value/internal/integer.hh \
mln/value/internal/iterable_set.hh \
mln/value/internal/limits.hh \
mln/value/internal/value_like.hh \
mln/value/interval.hh \
-mln/value/int_s16.hh \
-mln/value/int_s32.hh \
-mln/value/int_s8.hh \
-mln/value/int_s.hh \
-mln/value/int_u12.hh \
-mln/value/int_u16.hh \
-mln/value/int_u32.hh \
-mln/value/int_u8.hh \
-mln/value/int_u.hh \
-mln/value/int_u_sat.hh \
+mln/value/label.hh \
mln/value/label_16.hh \
mln/value/label_8.hh \
-mln/value/label.hh \
mln/value/lut_vec.hh \
mln/value/mixin.hh \
mln/value/ops.hh \
mln/value/other.hh \
mln/value/proxy.hh \
+mln/value/rgb.hh \
mln/value/rgb16.hh \
mln/value/rgb8.hh \
-mln/value/rgb.hh \
mln/value/scalar.hh \
mln/value/set.hh \
mln/value/shell.hh \
diff --git a/milena/tests/unit_test/unit-tests.mk b/milena/tests/unit_test/unit-tests.mk
index f60c243..7f98c35 100644
--- a/milena/tests/unit_test/unit-tests.mk
+++ b/milena/tests/unit_test/unit-tests.mk
@@ -6,8 +6,8 @@ mln_accu_bbox \
mln_accu_center \
mln_accu_compute \
mln_accu_convolve \
-mln_accu_count_adjacent_vertices \
mln_accu_count \
+mln_accu_count_adjacent_vertices \
mln_accu_count_labels \
mln_accu_essential \
mln_accu_height \
@@ -16,8 +16,8 @@ mln_accu_image_all \
mln_accu_image_essential \
mln_accu_image_init \
mln_accu_image_set_value \
-mln_accu_image_take_as_init \
mln_accu_image_take \
+mln_accu_image_take_as_init \
mln_accu_image_take_n_times \
mln_accu_image_to_result \
mln_accu_image_untake \
@@ -25,11 +25,11 @@ mln_accu_inf \
mln_accu_internal_base \
mln_accu_internal_couple \
mln_accu_label_used \
-mln_accu_land_basic \
mln_accu_land \
+mln_accu_land_basic \
mln_accu_line \
-mln_accu_lor_basic \
mln_accu_lor \
+mln_accu_lor_basic \
mln_accu_maj_h \
mln_accu_max \
mln_accu_max_h \
@@ -41,10 +41,10 @@ mln_accu_min \
mln_accu_min_h \
mln_accu_min_max \
mln_accu_nil \
-mln_accu_pair \
mln_accu_p \
-mln_accu_rank_bool \
+mln_accu_pair \
mln_accu_rank \
+mln_accu_rank_bool \
mln_accu_rank_high_quant \
mln_accu_rms \
mln_accu_site_set_all \
@@ -57,9 +57,9 @@ mln_accu_stat_variance \
mln_accu_sum \
mln_accu_sup \
mln_accu_take \
+mln_accu_transform \
mln_accu_transform_diagonal \
mln_accu_transform_directional \
-mln_accu_transform \
mln_accu_transform_line \
mln_accu_transform_snake \
mln_accu_transform_stop \
@@ -98,8 +98,8 @@ mln_border_fill \
mln_border_find \
mln_border_get \
mln_border_mirror \
-mln_border_resize_equal \
mln_border_resize \
+mln_border_resize_equal \
mln_border_thickness \
mln_canvas_all \
mln_canvas_browsing_all \
@@ -107,8 +107,8 @@ mln_canvas_browsing_backdiagonal2d \
mln_canvas_browsing_breadth_first_search \
mln_canvas_browsing_depth_first_search \
mln_canvas_browsing_diagonal2d \
-mln_canvas_browsing_directional \
mln_canvas_browsing_dir_struct_elt_incr_update \
+mln_canvas_browsing_directional \
mln_canvas_browsing_essential \
mln_canvas_browsing_fwd \
mln_canvas_browsing_hyper_directional \
@@ -136,14 +136,15 @@ mln_convert_impl_from_int_to_value \
mln_convert_impl_from_site_set_to_image \
mln_convert_impl_from_unsigned_to_value \
mln_convert_impl_from_value_to_value \
+mln_convert_to \
mln_convert_to_dpoint \
mln_convert_to_fun \
-mln_convert_to \
mln_convert_to_image \
mln_convert_to_p_array \
mln_convert_to_p_set \
mln_convert_to_upper_window \
mln_convert_to_window \
+mln_core_a_point_of \
mln_core_alias_all \
mln_core_alias_box1d \
mln_core_alias_box2d \
@@ -158,29 +159,28 @@ mln_core_alias_dpoint3d \
mln_core_alias_neighb1d \
mln_core_alias_neighb2d \
mln_core_alias_neighb3d \
+mln_core_alias_p_run2d \
+mln_core_alias_p_runs2d \
mln_core_alias_point1d \
mln_core_alias_point2d \
mln_core_alias_point2d_h \
mln_core_alias_point3d \
-mln_core_alias_p_run2d \
-mln_core_alias_p_runs2d \
mln_core_alias_vec2d \
mln_core_alias_vec3d \
-mln_core_alias_window1d \
-mln_core_alias_window2d \
-mln_core_alias_window3d \
mln_core_alias_w_window1d_float \
mln_core_alias_w_window1d_int \
mln_core_alias_w_window2d_float \
mln_core_alias_w_window2d_int \
mln_core_alias_w_window3d_float \
mln_core_alias_w_window3d_int \
+mln_core_alias_window1d \
+mln_core_alias_window2d \
+mln_core_alias_window3d \
mln_core_all \
-mln_core_a_point_of \
mln_core_box_runstart_piter \
mln_core_category \
-mln_core_clock_neighb2d \
mln_core_clock_neighb \
+mln_core_clock_neighb2d \
mln_core_concept_accumulator \
mln_core_concept_all \
mln_core_concept_box \
@@ -197,8 +197,8 @@ mln_core_concept_iterator \
mln_core_concept_literal \
mln_core_concept_mesh \
mln_core_concept_meta_accumulator \
-mln_core_concept_meta_function \
mln_core_concept_meta_fun \
+mln_core_concept_meta_function \
mln_core_concept_neighborhood \
mln_core_concept_object \
mln_core_concept_pixel_iterator \
@@ -218,8 +218,8 @@ mln_core_concept_weighted_window \
mln_core_concept_window \
mln_core_contract \
mln_core_def_all \
-mln_core_def_coordf \
mln_core_def_coord \
+mln_core_def_coordf \
mln_core_def_essential \
mln_core_def_low_quant_nbits \
mln_core_dpoint \
@@ -280,9 +280,9 @@ mln_core_image_sparse_encode \
mln_core_image_sparse_image \
mln_core_image_sub_image \
mln_core_image_sub_image_if \
-mln_core_image_thrubin_morpher \
-mln_core_image_thru_morpher \
mln_core_image_t_image \
+mln_core_image_thru_morpher \
+mln_core_image_thrubin_morpher \
mln_core_image_tr_image \
mln_core_image_tr_mesh \
mln_core_image_unproject_image \
@@ -372,8 +372,8 @@ mln_core_site_set_p_line2d \
mln_core_site_set_p_mutable_array_of \
mln_core_site_set_p_n_faces_piter \
mln_core_site_set_p_priority \
-mln_core_site_set_p_queue_fast \
mln_core_site_set_p_queue \
+mln_core_site_set_p_queue_fast \
mln_core_site_set_p_run \
mln_core_site_set_p_run_piter \
mln_core_site_set_p_set \
@@ -390,8 +390,8 @@ mln_core_trait_op_mult \
mln_core_trait_pixter \
mln_core_trait_qlf_value \
mln_core_var \
-mln_core_window \
mln_core_w_window \
+mln_core_window \
mln_data_all \
mln_data_essential \
mln_data_fill \
@@ -429,9 +429,9 @@ mln_estim_essential \
mln_estim_mean \
mln_estim_min_max \
mln_estim_sum \
+mln_extension_adjust \
mln_extension_adjust_duplicate \
mln_extension_adjust_fill \
-mln_extension_adjust \
mln_extension_all \
mln_extension_duplicate \
mln_extension_essential \
@@ -450,11 +450,11 @@ mln_fun_accu_result \
mln_fun_all \
mln_fun_binary \
mln_fun_binary_param \
-mln_fun_cast \
mln_fun_c \
+mln_fun_cast \
mln_fun_component_blue \
-mln_fun_component_comp_count \
mln_fun_component_comp \
+mln_fun_component_comp_count \
mln_fun_component_green \
mln_fun_component_ithcomp \
mln_fun_component_red \
@@ -468,6 +468,7 @@ mln_fun_i2v_all \
mln_fun_i2v_all_to \
mln_fun_i2v_array \
mln_fun_i2v_essential \
+mln_fun_i2v_value_at_index \
mln_fun_internal_ch_function_value_impl \
mln_fun_internal_resolve \
mln_fun_internal_selector \
@@ -519,6 +520,8 @@ mln_fun_v2b_all \
mln_fun_v2b_essential \
mln_fun_v2b_lnot \
mln_fun_v2b_threshold \
+mln_fun_v2i_all \
+mln_fun_v2i_index_of_value \
mln_fun_v2v_abs \
mln_fun_v2v_all \
mln_fun_v2v_cast \
@@ -643,12 +646,12 @@ mln_io_plot_all \
mln_io_plot_load \
mln_io_plot_save \
mln_io_pnm_all \
-mln_io_pnm_load_header \
mln_io_pnm_load \
+mln_io_pnm_load_header \
mln_io_pnm_macros \
mln_io_pnm_max_component \
-mln_io_pnm_save_header \
mln_io_pnm_save \
+mln_io_pnm_save_header \
mln_io_ppm_all \
mln_io_ppm_load \
mln_io_ppm_save \
@@ -700,16 +703,16 @@ mln_level_update \
mln_level_was_median \
mln_linear_all \
mln_linear_ch_convolve \
+mln_linear_convolve \
mln_linear_convolve_2x1d \
mln_linear_convolve_directional \
-mln_linear_convolve \
mln_linear_essential \
-mln_linear_gaussian_1d \
-mln_linear_gaussian_directional_2d \
-mln_linear_gaussian_filter \
mln_linear_gaussian \
+mln_linear_gaussian_filter \
mln_linear_gaussian_impl \
mln_linear_gaussian_internal_coefficients \
+mln_linear_gaussian_1d \
+mln_linear_gaussian_directional_2d \
mln_linear_lap \
mln_linear_local_convolve \
mln_linear_log \
@@ -751,23 +754,23 @@ mln_make_dummy_p_vertices \
mln_make_edge_image \
mln_make_essential \
mln_make_h_mat \
+mln_make_image \
mln_make_image2d \
mln_make_image3d \
-mln_make_image \
mln_make_influence_zone_adjacency_graph \
mln_make_mat \
mln_make_p_edges_with_mass_centers \
-mln_make_pixel \
+mln_make_p_vertices_with_mass_centers \
mln_make_pix \
+mln_make_pixel \
mln_make_point2d_h \
-mln_make_p_vertices_with_mass_centers \
mln_make_rag_and_labeled_wsl \
mln_make_region_adjacency_graph \
mln_make_relabelfun \
mln_make_vec \
mln_make_vertex_image \
mln_make_voronoi \
-mln_make_win_chamfer \
+mln_make_w_window \
mln_make_w_window1d \
mln_make_w_window1d_int \
mln_make_w_window2d \
@@ -775,7 +778,7 @@ mln_make_w_window2d_int \
mln_make_w_window3d \
mln_make_w_window3d_int \
mln_make_w_window_directional \
-mln_make_w_window \
+mln_make_win_chamfer \
mln_math_abs \
mln_math_acos \
mln_math_all \
@@ -795,10 +798,10 @@ mln_math_sqrt \
mln_metal_abort \
mln_metal_all \
mln_metal_ands \
+mln_metal_array \
mln_metal_array1d \
mln_metal_array2d \
mln_metal_array3d \
-mln_metal_array \
mln_metal_bexpr \
mln_metal_bool \
mln_metal_const \
@@ -809,17 +812,17 @@ mln_metal_fix_return \
mln_metal_goes_to \
mln_metal_if \
mln_metal_int \
+mln_metal_is \
mln_metal_is_a \
mln_metal_is_const \
-mln_metal_is \
+mln_metal_is_not \
mln_metal_is_not_a \
mln_metal_is_not_const \
-mln_metal_is_not \
mln_metal_is_not_ref \
mln_metal_is_ref \
mln_metal_is_unqualif \
-mln_metal_math_all \
mln_metal_mat \
+mln_metal_math_all \
mln_metal_math_max \
mln_metal_math_pow \
mln_metal_math_root \
@@ -836,6 +839,7 @@ mln_metal_unptr \
mln_metal_unqualif \
mln_metal_unref \
mln_metal_vec \
+mln_morpho_Rd \
mln_morpho_algebraic_filter \
mln_morpho_all \
mln_morpho_approx_all \
@@ -858,6 +862,7 @@ mln_morpho_closing_essential \
mln_morpho_closing_height \
mln_morpho_closing_leveling \
mln_morpho_closing_structural \
+mln_morpho_closing_sum \
mln_morpho_closing_volume \
mln_morpho_complementation \
mln_morpho_contrast \
@@ -867,8 +872,8 @@ mln_morpho_elementary_closing \
mln_morpho_elementary_dilation \
mln_morpho_elementary_erosion \
mln_morpho_elementary_essential \
-mln_morpho_elementary_gradient_external \
mln_morpho_elementary_gradient \
+mln_morpho_elementary_gradient_external \
mln_morpho_elementary_gradient_internal \
mln_morpho_elementary_laplacian \
mln_morpho_elementary_like_ero_fun \
@@ -901,15 +906,14 @@ mln_morpho_opening_structural \
mln_morpho_opening_volume \
mln_morpho_plus \
mln_morpho_rank_filter \
-mln_morpho_Rd \
mln_morpho_reconstruction_all \
mln_morpho_reconstruction_by_dilation_all \
mln_morpho_reconstruction_by_dilation_union_find \
mln_morpho_reconstruction_by_erosion_all \
mln_morpho_reconstruction_by_erosion_union_find \
mln_morpho_skeleton_constrained \
-mln_morpho_thickening \
mln_morpho_thick_miss \
+mln_morpho_thickening \
mln_morpho_thin_fit \
mln_morpho_thinning \
mln_morpho_top_hat \
@@ -980,14 +984,14 @@ mln_topo_algebraic_face \
mln_topo_algebraic_n_face \
mln_topo_all \
mln_topo_attic_faces_iter \
-mln_topo_centered_iter_adapter \
mln_topo_center_only_iter \
+mln_topo_centered_iter_adapter \
mln_topo_complex \
mln_topo_complex_iterators \
mln_topo_detach \
mln_topo_essential \
-mln_topo_face_data \
mln_topo_face \
+mln_topo_face_data \
mln_topo_face_iter \
mln_topo_internal_complex_iterator_base \
mln_topo_internal_complex_relative_iterator_base \
@@ -1021,13 +1025,13 @@ mln_trait_ch_value \
mln_trait_concrete \
mln_trait_essential \
mln_trait_functions \
-mln_trait_image_from_grid \
mln_trait_image_print \
mln_trait_image_props \
+mln_trait_image_from_grid \
mln_trait_images \
mln_trait_neighborhood \
-mln_trait_next_solve_binary \
mln_trait_next_solve \
+mln_trait_next_solve_binary \
mln_trait_next_solve_proxy \
mln_trait_next_solve_unary \
mln_trait_op_all \
@@ -1045,8 +1049,8 @@ mln_trait_op_minus \
mln_trait_op_mod \
mln_trait_op_neq \
mln_trait_op_not \
-mln_trait_op_ord \
mln_trait_op_or \
+mln_trait_op_ord \
mln_trait_op_plus \
mln_trait_op_postdec \
mln_trait_op_postinc \
@@ -1060,27 +1064,24 @@ mln_trait_promote \
mln_trait_site_set_print \
mln_trait_site_set_props \
mln_trait_site_sets \
-mln_trait_solve_binary \
mln_trait_solve \
+mln_trait_solve_binary \
mln_trait_solve_unary \
mln_trait_undef \
mln_trait_value_all \
mln_trait_value_comp \
mln_trait_value_essential \
-mln_trait_value_ \
mln_trait_value_internal_all \
mln_trait_value_internal_comp \
mln_trait_value_kind \
mln_trait_value_nature \
mln_trait_value_print \
mln_trait_value_quant \
+mln_trait_value_ \
mln_trait_window_print \
mln_trait_window_props \
mln_trait_windows \
mln_transform_all \
-mln_transformation_all \
-mln_transformation_essential \
-mln_transformation_rotate \
mln_transform_distance_and_closest_point_geodesic \
mln_transform_distance_and_influence_zone_geodesic \
mln_transform_distance_front \
@@ -1093,6 +1094,9 @@ mln_transform_internal_all \
mln_transform_internal_closest_point_functor \
mln_transform_internal_distance_functor \
mln_transform_internal_influence_zone_functor \
+mln_transformation_all \
+mln_transformation_essential \
+mln_transformation_rotate \
mln_util_adjacency_matrix \
mln_util_all \
mln_util_array \
@@ -1110,16 +1114,16 @@ mln_util_greater_point \
mln_util_greater_psite \
mln_util_ignore \
mln_util_index \
-mln_util_internal_boost_graph_access \
mln_util_internal_boost_graph \
+mln_util_internal_boost_graph_access \
mln_util_internal_boost_graph_property \
mln_util_internal_boost_graph_structure \
mln_util_internal_edge_impl \
mln_util_internal_graph_base \
-mln_util_internal_graph_iter_base \
mln_util_internal_graph_iter \
-mln_util_internal_graph_nbh_iter_base \
+mln_util_internal_graph_iter_base \
mln_util_internal_graph_nbh_iter \
+mln_util_internal_graph_nbh_iter_base \
mln_util_internal_id2element \
mln_util_internal_vertex_impl \
mln_util_lazy_set \
@@ -1137,9 +1141,9 @@ mln_util_site_pair \
mln_util_soft_heap \
mln_util_timer \
mln_util_tracked_ptr \
+mln_util_tree \
mln_util_tree_fast \
mln_util_tree_fast_to_image \
-mln_util_tree \
mln_util_tree_to_fast \
mln_util_tree_to_image \
mln_util_vertex \
@@ -1167,50 +1171,50 @@ mln_value_concept_symbolic \
mln_value_concept_vectorial \
mln_value_equiv \
mln_value_essential \
+mln_value_float01 \
+mln_value_float01_ \
mln_value_float01_16 \
mln_value_float01_8 \
mln_value_float01_f \
-mln_value_float01_ \
-mln_value_float01 \
mln_value_gl16 \
mln_value_gl8 \
mln_value_glf \
-mln_value_graylevel_f \
mln_value_graylevel \
+mln_value_graylevel_f \
mln_value_hsi \
mln_value_hsl \
+mln_value_int_s \
+mln_value_int_s16 \
+mln_value_int_s32 \
+mln_value_int_s8 \
+mln_value_int_u \
+mln_value_int_u12 \
+mln_value_int_u16 \
+mln_value_int_u32 \
+mln_value_int_u8 \
+mln_value_int_u_sat \
mln_value_internal_all \
mln_value_internal_convert \
mln_value_internal_encoding \
mln_value_internal_essential \
-mln_value_internal_gray_f \
mln_value_internal_gray_ \
+mln_value_internal_gray_f \
mln_value_internal_integer \
mln_value_internal_iterable_set \
mln_value_internal_limits \
mln_value_internal_value_like \
mln_value_interval \
-mln_value_int_s16 \
-mln_value_int_s32 \
-mln_value_int_s8 \
-mln_value_int_s \
-mln_value_int_u12 \
-mln_value_int_u16 \
-mln_value_int_u32 \
-mln_value_int_u8 \
-mln_value_int_u \
-mln_value_int_u_sat \
+mln_value_label \
mln_value_label_16 \
mln_value_label_8 \
-mln_value_label \
mln_value_lut_vec \
mln_value_mixin \
mln_value_ops \
mln_value_other \
mln_value_proxy \
+mln_value_rgb \
mln_value_rgb16 \
mln_value_rgb8 \
-mln_value_rgb \
mln_value_scalar \
mln_value_set \
mln_value_shell \
@@ -1218,7 +1222,6 @@ mln_value_sign \
mln_value_stack \
mln_value_super_value \
mln_value_viter \
-mln_version \
mln_win_all \
mln_win_backdiag2d \
mln_win_ball \
@@ -1265,8 +1268,8 @@ mln_accu_bbox_SOURCES = mln_accu_bbox.cc
mln_accu_center_SOURCES = mln_accu_center.cc
mln_accu_compute_SOURCES = mln_accu_compute.cc
mln_accu_convolve_SOURCES = mln_accu_convolve.cc
-mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc
mln_accu_count_SOURCES = mln_accu_count.cc
+mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc
mln_accu_count_labels_SOURCES = mln_accu_count_labels.cc
mln_accu_essential_SOURCES = mln_accu_essential.cc
mln_accu_height_SOURCES = mln_accu_height.cc
@@ -1275,8 +1278,8 @@ mln_accu_image_all_SOURCES = mln_accu_image_all.cc
mln_accu_image_essential_SOURCES = mln_accu_image_essential.cc
mln_accu_image_init_SOURCES = mln_accu_image_init.cc
mln_accu_image_set_value_SOURCES = mln_accu_image_set_value.cc
-mln_accu_image_take_as_init_SOURCES = mln_accu_image_take_as_init.cc
mln_accu_image_take_SOURCES = mln_accu_image_take.cc
+mln_accu_image_take_as_init_SOURCES = mln_accu_image_take_as_init.cc
mln_accu_image_take_n_times_SOURCES = mln_accu_image_take_n_times.cc
mln_accu_image_to_result_SOURCES = mln_accu_image_to_result.cc
mln_accu_image_untake_SOURCES = mln_accu_image_untake.cc
@@ -1284,11 +1287,11 @@ mln_accu_inf_SOURCES = mln_accu_inf.cc
mln_accu_internal_base_SOURCES = mln_accu_internal_base.cc
mln_accu_internal_couple_SOURCES = mln_accu_internal_couple.cc
mln_accu_label_used_SOURCES = mln_accu_label_used.cc
-mln_accu_land_basic_SOURCES = mln_accu_land_basic.cc
mln_accu_land_SOURCES = mln_accu_land.cc
+mln_accu_land_basic_SOURCES = mln_accu_land_basic.cc
mln_accu_line_SOURCES = mln_accu_line.cc
-mln_accu_lor_basic_SOURCES = mln_accu_lor_basic.cc
mln_accu_lor_SOURCES = mln_accu_lor.cc
+mln_accu_lor_basic_SOURCES = mln_accu_lor_basic.cc
mln_accu_maj_h_SOURCES = mln_accu_maj_h.cc
mln_accu_max_SOURCES = mln_accu_max.cc
mln_accu_max_h_SOURCES = mln_accu_max_h.cc
@@ -1300,10 +1303,10 @@ mln_accu_min_SOURCES = mln_accu_min.cc
mln_accu_min_h_SOURCES = mln_accu_min_h.cc
mln_accu_min_max_SOURCES = mln_accu_min_max.cc
mln_accu_nil_SOURCES = mln_accu_nil.cc
-mln_accu_pair_SOURCES = mln_accu_pair.cc
mln_accu_p_SOURCES = mln_accu_p.cc
-mln_accu_rank_bool_SOURCES = mln_accu_rank_bool.cc
+mln_accu_pair_SOURCES = mln_accu_pair.cc
mln_accu_rank_SOURCES = mln_accu_rank.cc
+mln_accu_rank_bool_SOURCES = mln_accu_rank_bool.cc
mln_accu_rank_high_quant_SOURCES = mln_accu_rank_high_quant.cc
mln_accu_rms_SOURCES = mln_accu_rms.cc
mln_accu_site_set_all_SOURCES = mln_accu_site_set_all.cc
@@ -1316,9 +1319,9 @@ mln_accu_stat_variance_SOURCES = mln_accu_stat_variance.cc
mln_accu_sum_SOURCES = mln_accu_sum.cc
mln_accu_sup_SOURCES = mln_accu_sup.cc
mln_accu_take_SOURCES = mln_accu_take.cc
+mln_accu_transform_SOURCES = mln_accu_transform.cc
mln_accu_transform_diagonal_SOURCES = mln_accu_transform_diagonal.cc
mln_accu_transform_directional_SOURCES = mln_accu_transform_directional.cc
-mln_accu_transform_SOURCES = mln_accu_transform.cc
mln_accu_transform_line_SOURCES = mln_accu_transform_line.cc
mln_accu_transform_snake_SOURCES = mln_accu_transform_snake.cc
mln_accu_transform_stop_SOURCES = mln_accu_transform_stop.cc
@@ -1357,8 +1360,8 @@ mln_border_fill_SOURCES = mln_border_fill.cc
mln_border_find_SOURCES = mln_border_find.cc
mln_border_get_SOURCES = mln_border_get.cc
mln_border_mirror_SOURCES = mln_border_mirror.cc
-mln_border_resize_equal_SOURCES = mln_border_resize_equal.cc
mln_border_resize_SOURCES = mln_border_resize.cc
+mln_border_resize_equal_SOURCES = mln_border_resize_equal.cc
mln_border_thickness_SOURCES = mln_border_thickness.cc
mln_canvas_all_SOURCES = mln_canvas_all.cc
mln_canvas_browsing_all_SOURCES = mln_canvas_browsing_all.cc
@@ -1366,8 +1369,8 @@ mln_canvas_browsing_backdiagonal2d_SOURCES = mln_canvas_browsing_backdiagonal2d.
mln_canvas_browsing_breadth_first_search_SOURCES = mln_canvas_browsing_breadth_first_search.cc
mln_canvas_browsing_depth_first_search_SOURCES = mln_canvas_browsing_depth_first_search.cc
mln_canvas_browsing_diagonal2d_SOURCES = mln_canvas_browsing_diagonal2d.cc
-mln_canvas_browsing_directional_SOURCES = mln_canvas_browsing_directional.cc
mln_canvas_browsing_dir_struct_elt_incr_update_SOURCES = mln_canvas_browsing_dir_struct_elt_incr_update.cc
+mln_canvas_browsing_directional_SOURCES = mln_canvas_browsing_directional.cc
mln_canvas_browsing_essential_SOURCES = mln_canvas_browsing_essential.cc
mln_canvas_browsing_fwd_SOURCES = mln_canvas_browsing_fwd.cc
mln_canvas_browsing_hyper_directional_SOURCES = mln_canvas_browsing_hyper_directional.cc
@@ -1395,14 +1398,15 @@ mln_convert_impl_from_int_to_value_SOURCES = mln_convert_impl_from_int_to_value.
mln_convert_impl_from_site_set_to_image_SOURCES = mln_convert_impl_from_site_set_to_image.cc
mln_convert_impl_from_unsigned_to_value_SOURCES = mln_convert_impl_from_unsigned_to_value.cc
mln_convert_impl_from_value_to_value_SOURCES = mln_convert_impl_from_value_to_value.cc
+mln_convert_to_SOURCES = mln_convert_to.cc
mln_convert_to_dpoint_SOURCES = mln_convert_to_dpoint.cc
mln_convert_to_fun_SOURCES = mln_convert_to_fun.cc
-mln_convert_to_SOURCES = mln_convert_to.cc
mln_convert_to_image_SOURCES = mln_convert_to_image.cc
mln_convert_to_p_array_SOURCES = mln_convert_to_p_array.cc
mln_convert_to_p_set_SOURCES = mln_convert_to_p_set.cc
mln_convert_to_upper_window_SOURCES = mln_convert_to_upper_window.cc
mln_convert_to_window_SOURCES = mln_convert_to_window.cc
+mln_core_a_point_of_SOURCES = mln_core_a_point_of.cc
mln_core_alias_all_SOURCES = mln_core_alias_all.cc
mln_core_alias_box1d_SOURCES = mln_core_alias_box1d.cc
mln_core_alias_box2d_SOURCES = mln_core_alias_box2d.cc
@@ -1417,29 +1421,28 @@ mln_core_alias_dpoint3d_SOURCES = mln_core_alias_dpoint3d.cc
mln_core_alias_neighb1d_SOURCES = mln_core_alias_neighb1d.cc
mln_core_alias_neighb2d_SOURCES = mln_core_alias_neighb2d.cc
mln_core_alias_neighb3d_SOURCES = mln_core_alias_neighb3d.cc
+mln_core_alias_p_run2d_SOURCES = mln_core_alias_p_run2d.cc
+mln_core_alias_p_runs2d_SOURCES = mln_core_alias_p_runs2d.cc
mln_core_alias_point1d_SOURCES = mln_core_alias_point1d.cc
mln_core_alias_point2d_SOURCES = mln_core_alias_point2d.cc
mln_core_alias_point2d_h_SOURCES = mln_core_alias_point2d_h.cc
mln_core_alias_point3d_SOURCES = mln_core_alias_point3d.cc
-mln_core_alias_p_run2d_SOURCES = mln_core_alias_p_run2d.cc
-mln_core_alias_p_runs2d_SOURCES = mln_core_alias_p_runs2d.cc
mln_core_alias_vec2d_SOURCES = mln_core_alias_vec2d.cc
mln_core_alias_vec3d_SOURCES = mln_core_alias_vec3d.cc
-mln_core_alias_window1d_SOURCES = mln_core_alias_window1d.cc
-mln_core_alias_window2d_SOURCES = mln_core_alias_window2d.cc
-mln_core_alias_window3d_SOURCES = mln_core_alias_window3d.cc
mln_core_alias_w_window1d_float_SOURCES = mln_core_alias_w_window1d_float.cc
mln_core_alias_w_window1d_int_SOURCES = mln_core_alias_w_window1d_int.cc
mln_core_alias_w_window2d_float_SOURCES = mln_core_alias_w_window2d_float.cc
mln_core_alias_w_window2d_int_SOURCES = mln_core_alias_w_window2d_int.cc
mln_core_alias_w_window3d_float_SOURCES = mln_core_alias_w_window3d_float.cc
mln_core_alias_w_window3d_int_SOURCES = mln_core_alias_w_window3d_int.cc
+mln_core_alias_window1d_SOURCES = mln_core_alias_window1d.cc
+mln_core_alias_window2d_SOURCES = mln_core_alias_window2d.cc
+mln_core_alias_window3d_SOURCES = mln_core_alias_window3d.cc
mln_core_all_SOURCES = mln_core_all.cc
-mln_core_a_point_of_SOURCES = mln_core_a_point_of.cc
mln_core_box_runstart_piter_SOURCES = mln_core_box_runstart_piter.cc
mln_core_category_SOURCES = mln_core_category.cc
-mln_core_clock_neighb2d_SOURCES = mln_core_clock_neighb2d.cc
mln_core_clock_neighb_SOURCES = mln_core_clock_neighb.cc
+mln_core_clock_neighb2d_SOURCES = mln_core_clock_neighb2d.cc
mln_core_concept_accumulator_SOURCES = mln_core_concept_accumulator.cc
mln_core_concept_all_SOURCES = mln_core_concept_all.cc
mln_core_concept_box_SOURCES = mln_core_concept_box.cc
@@ -1456,8 +1459,8 @@ mln_core_concept_iterator_SOURCES = mln_core_concept_iterator.cc
mln_core_concept_literal_SOURCES = mln_core_concept_literal.cc
mln_core_concept_mesh_SOURCES = mln_core_concept_mesh.cc
mln_core_concept_meta_accumulator_SOURCES = mln_core_concept_meta_accumulator.cc
-mln_core_concept_meta_function_SOURCES = mln_core_concept_meta_function.cc
mln_core_concept_meta_fun_SOURCES = mln_core_concept_meta_fun.cc
+mln_core_concept_meta_function_SOURCES = mln_core_concept_meta_function.cc
mln_core_concept_neighborhood_SOURCES = mln_core_concept_neighborhood.cc
mln_core_concept_object_SOURCES = mln_core_concept_object.cc
mln_core_concept_pixel_iterator_SOURCES = mln_core_concept_pixel_iterator.cc
@@ -1477,8 +1480,8 @@ mln_core_concept_weighted_window_SOURCES = mln_core_concept_weighted_window.cc
mln_core_concept_window_SOURCES = mln_core_concept_window.cc
mln_core_contract_SOURCES = mln_core_contract.cc
mln_core_def_all_SOURCES = mln_core_def_all.cc
-mln_core_def_coordf_SOURCES = mln_core_def_coordf.cc
mln_core_def_coord_SOURCES = mln_core_def_coord.cc
+mln_core_def_coordf_SOURCES = mln_core_def_coordf.cc
mln_core_def_essential_SOURCES = mln_core_def_essential.cc
mln_core_def_low_quant_nbits_SOURCES = mln_core_def_low_quant_nbits.cc
mln_core_dpoint_SOURCES = mln_core_dpoint.cc
@@ -1539,9 +1542,9 @@ mln_core_image_sparse_encode_SOURCES = mln_core_image_sparse_encode.cc
mln_core_image_sparse_image_SOURCES = mln_core_image_sparse_image.cc
mln_core_image_sub_image_SOURCES = mln_core_image_sub_image.cc
mln_core_image_sub_image_if_SOURCES = mln_core_image_sub_image_if.cc
-mln_core_image_thrubin_morpher_SOURCES = mln_core_image_thrubin_morpher.cc
-mln_core_image_thru_morpher_SOURCES = mln_core_image_thru_morpher.cc
mln_core_image_t_image_SOURCES = mln_core_image_t_image.cc
+mln_core_image_thru_morpher_SOURCES = mln_core_image_thru_morpher.cc
+mln_core_image_thrubin_morpher_SOURCES = mln_core_image_thrubin_morpher.cc
mln_core_image_tr_image_SOURCES = mln_core_image_tr_image.cc
mln_core_image_tr_mesh_SOURCES = mln_core_image_tr_mesh.cc
mln_core_image_unproject_image_SOURCES = mln_core_image_unproject_image.cc
@@ -1631,8 +1634,8 @@ mln_core_site_set_p_line2d_SOURCES = mln_core_site_set_p_line2d.cc
mln_core_site_set_p_mutable_array_of_SOURCES = mln_core_site_set_p_mutable_array_of.cc
mln_core_site_set_p_n_faces_piter_SOURCES = mln_core_site_set_p_n_faces_piter.cc
mln_core_site_set_p_priority_SOURCES = mln_core_site_set_p_priority.cc
-mln_core_site_set_p_queue_fast_SOURCES = mln_core_site_set_p_queue_fast.cc
mln_core_site_set_p_queue_SOURCES = mln_core_site_set_p_queue.cc
+mln_core_site_set_p_queue_fast_SOURCES = mln_core_site_set_p_queue_fast.cc
mln_core_site_set_p_run_SOURCES = mln_core_site_set_p_run.cc
mln_core_site_set_p_run_piter_SOURCES = mln_core_site_set_p_run_piter.cc
mln_core_site_set_p_set_SOURCES = mln_core_site_set_p_set.cc
@@ -1649,8 +1652,8 @@ mln_core_trait_op_mult_SOURCES = mln_core_trait_op_mult.cc
mln_core_trait_pixter_SOURCES = mln_core_trait_pixter.cc
mln_core_trait_qlf_value_SOURCES = mln_core_trait_qlf_value.cc
mln_core_var_SOURCES = mln_core_var.cc
-mln_core_window_SOURCES = mln_core_window.cc
mln_core_w_window_SOURCES = mln_core_w_window.cc
+mln_core_window_SOURCES = mln_core_window.cc
mln_data_all_SOURCES = mln_data_all.cc
mln_data_essential_SOURCES = mln_data_essential.cc
mln_data_fill_SOURCES = mln_data_fill.cc
@@ -1688,9 +1691,9 @@ mln_estim_essential_SOURCES = mln_estim_essential.cc
mln_estim_mean_SOURCES = mln_estim_mean.cc
mln_estim_min_max_SOURCES = mln_estim_min_max.cc
mln_estim_sum_SOURCES = mln_estim_sum.cc
+mln_extension_adjust_SOURCES = mln_extension_adjust.cc
mln_extension_adjust_duplicate_SOURCES = mln_extension_adjust_duplicate.cc
mln_extension_adjust_fill_SOURCES = mln_extension_adjust_fill.cc
-mln_extension_adjust_SOURCES = mln_extension_adjust.cc
mln_extension_all_SOURCES = mln_extension_all.cc
mln_extension_duplicate_SOURCES = mln_extension_duplicate.cc
mln_extension_essential_SOURCES = mln_extension_essential.cc
@@ -1709,11 +1712,11 @@ mln_fun_accu_result_SOURCES = mln_fun_accu_result.cc
mln_fun_all_SOURCES = mln_fun_all.cc
mln_fun_binary_SOURCES = mln_fun_binary.cc
mln_fun_binary_param_SOURCES = mln_fun_binary_param.cc
-mln_fun_cast_SOURCES = mln_fun_cast.cc
mln_fun_c_SOURCES = mln_fun_c.cc
+mln_fun_cast_SOURCES = mln_fun_cast.cc
mln_fun_component_blue_SOURCES = mln_fun_component_blue.cc
-mln_fun_component_comp_count_SOURCES = mln_fun_component_comp_count.cc
mln_fun_component_comp_SOURCES = mln_fun_component_comp.cc
+mln_fun_component_comp_count_SOURCES = mln_fun_component_comp_count.cc
mln_fun_component_green_SOURCES = mln_fun_component_green.cc
mln_fun_component_ithcomp_SOURCES = mln_fun_component_ithcomp.cc
mln_fun_component_red_SOURCES = mln_fun_component_red.cc
@@ -1727,6 +1730,7 @@ mln_fun_i2v_all_SOURCES = mln_fun_i2v_all.cc
mln_fun_i2v_all_to_SOURCES = mln_fun_i2v_all_to.cc
mln_fun_i2v_array_SOURCES = mln_fun_i2v_array.cc
mln_fun_i2v_essential_SOURCES = mln_fun_i2v_essential.cc
+mln_fun_i2v_value_at_index_SOURCES = mln_fun_i2v_value_at_index.cc
mln_fun_internal_ch_function_value_impl_SOURCES = mln_fun_internal_ch_function_value_impl.cc
mln_fun_internal_resolve_SOURCES = mln_fun_internal_resolve.cc
mln_fun_internal_selector_SOURCES = mln_fun_internal_selector.cc
@@ -1778,6 +1782,8 @@ mln_fun_v2b_all_SOURCES = mln_fun_v2b_all.cc
mln_fun_v2b_essential_SOURCES = mln_fun_v2b_essential.cc
mln_fun_v2b_lnot_SOURCES = mln_fun_v2b_lnot.cc
mln_fun_v2b_threshold_SOURCES = mln_fun_v2b_threshold.cc
+mln_fun_v2i_all_SOURCES = mln_fun_v2i_all.cc
+mln_fun_v2i_index_of_value_SOURCES = mln_fun_v2i_index_of_value.cc
mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc
mln_fun_v2v_all_SOURCES = mln_fun_v2v_all.cc
mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc
@@ -1902,12 +1908,12 @@ mln_io_plot_all_SOURCES = mln_io_plot_all.cc
mln_io_plot_load_SOURCES = mln_io_plot_load.cc
mln_io_plot_save_SOURCES = mln_io_plot_save.cc
mln_io_pnm_all_SOURCES = mln_io_pnm_all.cc
-mln_io_pnm_load_header_SOURCES = mln_io_pnm_load_header.cc
mln_io_pnm_load_SOURCES = mln_io_pnm_load.cc
+mln_io_pnm_load_header_SOURCES = mln_io_pnm_load_header.cc
mln_io_pnm_macros_SOURCES = mln_io_pnm_macros.cc
mln_io_pnm_max_component_SOURCES = mln_io_pnm_max_component.cc
-mln_io_pnm_save_header_SOURCES = mln_io_pnm_save_header.cc
mln_io_pnm_save_SOURCES = mln_io_pnm_save.cc
+mln_io_pnm_save_header_SOURCES = mln_io_pnm_save_header.cc
mln_io_ppm_all_SOURCES = mln_io_ppm_all.cc
mln_io_ppm_load_SOURCES = mln_io_ppm_load.cc
mln_io_ppm_save_SOURCES = mln_io_ppm_save.cc
@@ -1959,16 +1965,16 @@ mln_level_update_SOURCES = mln_level_update.cc
mln_level_was_median_SOURCES = mln_level_was_median.cc
mln_linear_all_SOURCES = mln_linear_all.cc
mln_linear_ch_convolve_SOURCES = mln_linear_ch_convolve.cc
+mln_linear_convolve_SOURCES = mln_linear_convolve.cc
mln_linear_convolve_2x1d_SOURCES = mln_linear_convolve_2x1d.cc
mln_linear_convolve_directional_SOURCES = mln_linear_convolve_directional.cc
-mln_linear_convolve_SOURCES = mln_linear_convolve.cc
mln_linear_essential_SOURCES = mln_linear_essential.cc
-mln_linear_gaussian_1d_SOURCES = mln_linear_gaussian_1d.cc
-mln_linear_gaussian_directional_2d_SOURCES = mln_linear_gaussian_directional_2d.cc
-mln_linear_gaussian_filter_SOURCES = mln_linear_gaussian_filter.cc
mln_linear_gaussian_SOURCES = mln_linear_gaussian.cc
+mln_linear_gaussian_filter_SOURCES = mln_linear_gaussian_filter.cc
mln_linear_gaussian_impl_SOURCES = mln_linear_gaussian_impl.cc
mln_linear_gaussian_internal_coefficients_SOURCES = mln_linear_gaussian_internal_coefficients.cc
+mln_linear_gaussian_1d_SOURCES = mln_linear_gaussian_1d.cc
+mln_linear_gaussian_directional_2d_SOURCES = mln_linear_gaussian_directional_2d.cc
mln_linear_lap_SOURCES = mln_linear_lap.cc
mln_linear_local_convolve_SOURCES = mln_linear_local_convolve.cc
mln_linear_log_SOURCES = mln_linear_log.cc
@@ -2010,23 +2016,23 @@ mln_make_dummy_p_vertices_SOURCES = mln_make_dummy_p_vertices.cc
mln_make_edge_image_SOURCES = mln_make_edge_image.cc
mln_make_essential_SOURCES = mln_make_essential.cc
mln_make_h_mat_SOURCES = mln_make_h_mat.cc
+mln_make_image_SOURCES = mln_make_image.cc
mln_make_image2d_SOURCES = mln_make_image2d.cc
mln_make_image3d_SOURCES = mln_make_image3d.cc
-mln_make_image_SOURCES = mln_make_image.cc
mln_make_influence_zone_adjacency_graph_SOURCES = mln_make_influence_zone_adjacency_graph.cc
mln_make_mat_SOURCES = mln_make_mat.cc
mln_make_p_edges_with_mass_centers_SOURCES = mln_make_p_edges_with_mass_centers.cc
-mln_make_pixel_SOURCES = mln_make_pixel.cc
+mln_make_p_vertices_with_mass_centers_SOURCES = mln_make_p_vertices_with_mass_centers.cc
mln_make_pix_SOURCES = mln_make_pix.cc
+mln_make_pixel_SOURCES = mln_make_pixel.cc
mln_make_point2d_h_SOURCES = mln_make_point2d_h.cc
-mln_make_p_vertices_with_mass_centers_SOURCES = mln_make_p_vertices_with_mass_centers.cc
mln_make_rag_and_labeled_wsl_SOURCES = mln_make_rag_and_labeled_wsl.cc
mln_make_region_adjacency_graph_SOURCES = mln_make_region_adjacency_graph.cc
mln_make_relabelfun_SOURCES = mln_make_relabelfun.cc
mln_make_vec_SOURCES = mln_make_vec.cc
mln_make_vertex_image_SOURCES = mln_make_vertex_image.cc
mln_make_voronoi_SOURCES = mln_make_voronoi.cc
-mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc
+mln_make_w_window_SOURCES = mln_make_w_window.cc
mln_make_w_window1d_SOURCES = mln_make_w_window1d.cc
mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc
mln_make_w_window2d_SOURCES = mln_make_w_window2d.cc
@@ -2034,7 +2040,7 @@ mln_make_w_window2d_int_SOURCES = mln_make_w_window2d_int.cc
mln_make_w_window3d_SOURCES = mln_make_w_window3d.cc
mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc
mln_make_w_window_directional_SOURCES = mln_make_w_window_directional.cc
-mln_make_w_window_SOURCES = mln_make_w_window.cc
+mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc
mln_math_abs_SOURCES = mln_math_abs.cc
mln_math_acos_SOURCES = mln_math_acos.cc
mln_math_all_SOURCES = mln_math_all.cc
@@ -2054,10 +2060,10 @@ mln_math_sqrt_SOURCES = mln_math_sqrt.cc
mln_metal_abort_SOURCES = mln_metal_abort.cc
mln_metal_all_SOURCES = mln_metal_all.cc
mln_metal_ands_SOURCES = mln_metal_ands.cc
+mln_metal_array_SOURCES = mln_metal_array.cc
mln_metal_array1d_SOURCES = mln_metal_array1d.cc
mln_metal_array2d_SOURCES = mln_metal_array2d.cc
mln_metal_array3d_SOURCES = mln_metal_array3d.cc
-mln_metal_array_SOURCES = mln_metal_array.cc
mln_metal_bexpr_SOURCES = mln_metal_bexpr.cc
mln_metal_bool_SOURCES = mln_metal_bool.cc
mln_metal_const_SOURCES = mln_metal_const.cc
@@ -2068,17 +2074,17 @@ mln_metal_fix_return_SOURCES = mln_metal_fix_return.cc
mln_metal_goes_to_SOURCES = mln_metal_goes_to.cc
mln_metal_if_SOURCES = mln_metal_if.cc
mln_metal_int_SOURCES = mln_metal_int.cc
+mln_metal_is_SOURCES = mln_metal_is.cc
mln_metal_is_a_SOURCES = mln_metal_is_a.cc
mln_metal_is_const_SOURCES = mln_metal_is_const.cc
-mln_metal_is_SOURCES = mln_metal_is.cc
+mln_metal_is_not_SOURCES = mln_metal_is_not.cc
mln_metal_is_not_a_SOURCES = mln_metal_is_not_a.cc
mln_metal_is_not_const_SOURCES = mln_metal_is_not_const.cc
-mln_metal_is_not_SOURCES = mln_metal_is_not.cc
mln_metal_is_not_ref_SOURCES = mln_metal_is_not_ref.cc
mln_metal_is_ref_SOURCES = mln_metal_is_ref.cc
mln_metal_is_unqualif_SOURCES = mln_metal_is_unqualif.cc
-mln_metal_math_all_SOURCES = mln_metal_math_all.cc
mln_metal_mat_SOURCES = mln_metal_mat.cc
+mln_metal_math_all_SOURCES = mln_metal_math_all.cc
mln_metal_math_max_SOURCES = mln_metal_math_max.cc
mln_metal_math_pow_SOURCES = mln_metal_math_pow.cc
mln_metal_math_root_SOURCES = mln_metal_math_root.cc
@@ -2095,6 +2101,7 @@ mln_metal_unptr_SOURCES = mln_metal_unptr.cc
mln_metal_unqualif_SOURCES = mln_metal_unqualif.cc
mln_metal_unref_SOURCES = mln_metal_unref.cc
mln_metal_vec_SOURCES = mln_metal_vec.cc
+mln_morpho_Rd_SOURCES = mln_morpho_Rd.cc
mln_morpho_algebraic_filter_SOURCES = mln_morpho_algebraic_filter.cc
mln_morpho_all_SOURCES = mln_morpho_all.cc
mln_morpho_approx_all_SOURCES = mln_morpho_approx_all.cc
@@ -2117,6 +2124,7 @@ mln_morpho_closing_essential_SOURCES = mln_morpho_closing_essential.cc
mln_morpho_closing_height_SOURCES = mln_morpho_closing_height.cc
mln_morpho_closing_leveling_SOURCES = mln_morpho_closing_leveling.cc
mln_morpho_closing_structural_SOURCES = mln_morpho_closing_structural.cc
+mln_morpho_closing_sum_SOURCES = mln_morpho_closing_sum.cc
mln_morpho_closing_volume_SOURCES = mln_morpho_closing_volume.cc
mln_morpho_complementation_SOURCES = mln_morpho_complementation.cc
mln_morpho_contrast_SOURCES = mln_morpho_contrast.cc
@@ -2126,8 +2134,8 @@ mln_morpho_elementary_closing_SOURCES = mln_morpho_elementary_closing.cc
mln_morpho_elementary_dilation_SOURCES = mln_morpho_elementary_dilation.cc
mln_morpho_elementary_erosion_SOURCES = mln_morpho_elementary_erosion.cc
mln_morpho_elementary_essential_SOURCES = mln_morpho_elementary_essential.cc
-mln_morpho_elementary_gradient_external_SOURCES = mln_morpho_elementary_gradient_external.cc
mln_morpho_elementary_gradient_SOURCES = mln_morpho_elementary_gradient.cc
+mln_morpho_elementary_gradient_external_SOURCES = mln_morpho_elementary_gradient_external.cc
mln_morpho_elementary_gradient_internal_SOURCES = mln_morpho_elementary_gradient_internal.cc
mln_morpho_elementary_laplacian_SOURCES = mln_morpho_elementary_laplacian.cc
mln_morpho_elementary_like_ero_fun_SOURCES = mln_morpho_elementary_like_ero_fun.cc
@@ -2160,15 +2168,14 @@ mln_morpho_opening_structural_SOURCES = mln_morpho_opening_structural.cc
mln_morpho_opening_volume_SOURCES = mln_morpho_opening_volume.cc
mln_morpho_plus_SOURCES = mln_morpho_plus.cc
mln_morpho_rank_filter_SOURCES = mln_morpho_rank_filter.cc
-mln_morpho_Rd_SOURCES = mln_morpho_Rd.cc
mln_morpho_reconstruction_all_SOURCES = mln_morpho_reconstruction_all.cc
mln_morpho_reconstruction_by_dilation_all_SOURCES = mln_morpho_reconstruction_by_dilation_all.cc
mln_morpho_reconstruction_by_dilation_union_find_SOURCES = mln_morpho_reconstruction_by_dilation_union_find.cc
mln_morpho_reconstruction_by_erosion_all_SOURCES = mln_morpho_reconstruction_by_erosion_all.cc
mln_morpho_reconstruction_by_erosion_union_find_SOURCES = mln_morpho_reconstruction_by_erosion_union_find.cc
mln_morpho_skeleton_constrained_SOURCES = mln_morpho_skeleton_constrained.cc
-mln_morpho_thickening_SOURCES = mln_morpho_thickening.cc
mln_morpho_thick_miss_SOURCES = mln_morpho_thick_miss.cc
+mln_morpho_thickening_SOURCES = mln_morpho_thickening.cc
mln_morpho_thin_fit_SOURCES = mln_morpho_thin_fit.cc
mln_morpho_thinning_SOURCES = mln_morpho_thinning.cc
mln_morpho_top_hat_SOURCES = mln_morpho_top_hat.cc
@@ -2239,14 +2246,14 @@ mln_topo_algebraic_face_SOURCES = mln_topo_algebraic_face.cc
mln_topo_algebraic_n_face_SOURCES = mln_topo_algebraic_n_face.cc
mln_topo_all_SOURCES = mln_topo_all.cc
mln_topo_attic_faces_iter_SOURCES = mln_topo_attic_faces_iter.cc
-mln_topo_centered_iter_adapter_SOURCES = mln_topo_centered_iter_adapter.cc
mln_topo_center_only_iter_SOURCES = mln_topo_center_only_iter.cc
+mln_topo_centered_iter_adapter_SOURCES = mln_topo_centered_iter_adapter.cc
mln_topo_complex_SOURCES = mln_topo_complex.cc
mln_topo_complex_iterators_SOURCES = mln_topo_complex_iterators.cc
mln_topo_detach_SOURCES = mln_topo_detach.cc
mln_topo_essential_SOURCES = mln_topo_essential.cc
-mln_topo_face_data_SOURCES = mln_topo_face_data.cc
mln_topo_face_SOURCES = mln_topo_face.cc
+mln_topo_face_data_SOURCES = mln_topo_face_data.cc
mln_topo_face_iter_SOURCES = mln_topo_face_iter.cc
mln_topo_internal_complex_iterator_base_SOURCES = mln_topo_internal_complex_iterator_base.cc
mln_topo_internal_complex_relative_iterator_base_SOURCES = mln_topo_internal_complex_relative_iterator_base.cc
@@ -2280,13 +2287,13 @@ mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc
mln_trait_concrete_SOURCES = mln_trait_concrete.cc
mln_trait_essential_SOURCES = mln_trait_essential.cc
mln_trait_functions_SOURCES = mln_trait_functions.cc
-mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc
mln_trait_image_print_SOURCES = mln_trait_image_print.cc
mln_trait_image_props_SOURCES = mln_trait_image_props.cc
+mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc
mln_trait_images_SOURCES = mln_trait_images.cc
mln_trait_neighborhood_SOURCES = mln_trait_neighborhood.cc
-mln_trait_next_solve_binary_SOURCES = mln_trait_next_solve_binary.cc
mln_trait_next_solve_SOURCES = mln_trait_next_solve.cc
+mln_trait_next_solve_binary_SOURCES = mln_trait_next_solve_binary.cc
mln_trait_next_solve_proxy_SOURCES = mln_trait_next_solve_proxy.cc
mln_trait_next_solve_unary_SOURCES = mln_trait_next_solve_unary.cc
mln_trait_op_all_SOURCES = mln_trait_op_all.cc
@@ -2304,8 +2311,8 @@ mln_trait_op_minus_SOURCES = mln_trait_op_minus.cc
mln_trait_op_mod_SOURCES = mln_trait_op_mod.cc
mln_trait_op_neq_SOURCES = mln_trait_op_neq.cc
mln_trait_op_not_SOURCES = mln_trait_op_not.cc
-mln_trait_op_ord_SOURCES = mln_trait_op_ord.cc
mln_trait_op_or_SOURCES = mln_trait_op_or.cc
+mln_trait_op_ord_SOURCES = mln_trait_op_ord.cc
mln_trait_op_plus_SOURCES = mln_trait_op_plus.cc
mln_trait_op_postdec_SOURCES = mln_trait_op_postdec.cc
mln_trait_op_postinc_SOURCES = mln_trait_op_postinc.cc
@@ -2319,27 +2326,24 @@ mln_trait_promote_SOURCES = mln_trait_promote.cc
mln_trait_site_set_print_SOURCES = mln_trait_site_set_print.cc
mln_trait_site_set_props_SOURCES = mln_trait_site_set_props.cc
mln_trait_site_sets_SOURCES = mln_trait_site_sets.cc
-mln_trait_solve_binary_SOURCES = mln_trait_solve_binary.cc
mln_trait_solve_SOURCES = mln_trait_solve.cc
+mln_trait_solve_binary_SOURCES = mln_trait_solve_binary.cc
mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.cc
mln_trait_undef_SOURCES = mln_trait_undef.cc
mln_trait_value_all_SOURCES = mln_trait_value_all.cc
mln_trait_value_comp_SOURCES = mln_trait_value_comp.cc
mln_trait_value_essential_SOURCES = mln_trait_value_essential.cc
-mln_trait_value__SOURCES = mln_trait_value_.cc
mln_trait_value_internal_all_SOURCES = mln_trait_value_internal_all.cc
mln_trait_value_internal_comp_SOURCES = mln_trait_value_internal_comp.cc
mln_trait_value_kind_SOURCES = mln_trait_value_kind.cc
mln_trait_value_nature_SOURCES = mln_trait_value_nature.cc
mln_trait_value_print_SOURCES = mln_trait_value_print.cc
mln_trait_value_quant_SOURCES = mln_trait_value_quant.cc
+mln_trait_value__SOURCES = mln_trait_value_.cc
mln_trait_window_print_SOURCES = mln_trait_window_print.cc
mln_trait_window_props_SOURCES = mln_trait_window_props.cc
mln_trait_windows_SOURCES = mln_trait_windows.cc
mln_transform_all_SOURCES = mln_transform_all.cc
-mln_transformation_all_SOURCES = mln_transformation_all.cc
-mln_transformation_essential_SOURCES = mln_transformation_essential.cc
-mln_transformation_rotate_SOURCES = mln_transformation_rotate.cc
mln_transform_distance_and_closest_point_geodesic_SOURCES = mln_transform_distance_and_closest_point_geodesic.cc
mln_transform_distance_and_influence_zone_geodesic_SOURCES = mln_transform_distance_and_influence_zone_geodesic.cc
mln_transform_distance_front_SOURCES = mln_transform_distance_front.cc
@@ -2352,6 +2356,9 @@ mln_transform_internal_all_SOURCES = mln_transform_internal_all.cc
mln_transform_internal_closest_point_functor_SOURCES = mln_transform_internal_closest_point_functor.cc
mln_transform_internal_distance_functor_SOURCES = mln_transform_internal_distance_functor.cc
mln_transform_internal_influence_zone_functor_SOURCES = mln_transform_internal_influence_zone_functor.cc
+mln_transformation_all_SOURCES = mln_transformation_all.cc
+mln_transformation_essential_SOURCES = mln_transformation_essential.cc
+mln_transformation_rotate_SOURCES = mln_transformation_rotate.cc
mln_util_adjacency_matrix_SOURCES = mln_util_adjacency_matrix.cc
mln_util_all_SOURCES = mln_util_all.cc
mln_util_array_SOURCES = mln_util_array.cc
@@ -2369,16 +2376,16 @@ mln_util_greater_point_SOURCES = mln_util_greater_point.cc
mln_util_greater_psite_SOURCES = mln_util_greater_psite.cc
mln_util_ignore_SOURCES = mln_util_ignore.cc
mln_util_index_SOURCES = mln_util_index.cc
-mln_util_internal_boost_graph_access_SOURCES = mln_util_internal_boost_graph_access.cc
mln_util_internal_boost_graph_SOURCES = mln_util_internal_boost_graph.cc
+mln_util_internal_boost_graph_access_SOURCES = mln_util_internal_boost_graph_access.cc
mln_util_internal_boost_graph_property_SOURCES = mln_util_internal_boost_graph_property.cc
mln_util_internal_boost_graph_structure_SOURCES = mln_util_internal_boost_graph_structure.cc
mln_util_internal_edge_impl_SOURCES = mln_util_internal_edge_impl.cc
mln_util_internal_graph_base_SOURCES = mln_util_internal_graph_base.cc
-mln_util_internal_graph_iter_base_SOURCES = mln_util_internal_graph_iter_base.cc
mln_util_internal_graph_iter_SOURCES = mln_util_internal_graph_iter.cc
-mln_util_internal_graph_nbh_iter_base_SOURCES = mln_util_internal_graph_nbh_iter_base.cc
+mln_util_internal_graph_iter_base_SOURCES = mln_util_internal_graph_iter_base.cc
mln_util_internal_graph_nbh_iter_SOURCES = mln_util_internal_graph_nbh_iter.cc
+mln_util_internal_graph_nbh_iter_base_SOURCES = mln_util_internal_graph_nbh_iter_base.cc
mln_util_internal_id2element_SOURCES = mln_util_internal_id2element.cc
mln_util_internal_vertex_impl_SOURCES = mln_util_internal_vertex_impl.cc
mln_util_lazy_set_SOURCES = mln_util_lazy_set.cc
@@ -2396,9 +2403,9 @@ mln_util_site_pair_SOURCES = mln_util_site_pair.cc
mln_util_soft_heap_SOURCES = mln_util_soft_heap.cc
mln_util_timer_SOURCES = mln_util_timer.cc
mln_util_tracked_ptr_SOURCES = mln_util_tracked_ptr.cc
+mln_util_tree_SOURCES = mln_util_tree.cc
mln_util_tree_fast_SOURCES = mln_util_tree_fast.cc
mln_util_tree_fast_to_image_SOURCES = mln_util_tree_fast_to_image.cc
-mln_util_tree_SOURCES = mln_util_tree.cc
mln_util_tree_to_fast_SOURCES = mln_util_tree_to_fast.cc
mln_util_tree_to_image_SOURCES = mln_util_tree_to_image.cc
mln_util_vertex_SOURCES = mln_util_vertex.cc
@@ -2426,50 +2433,50 @@ mln_value_concept_symbolic_SOURCES = mln_value_concept_symbolic.cc
mln_value_concept_vectorial_SOURCES = mln_value_concept_vectorial.cc
mln_value_equiv_SOURCES = mln_value_equiv.cc
mln_value_essential_SOURCES = mln_value_essential.cc
+mln_value_float01_SOURCES = mln_value_float01.cc
+mln_value_float01__SOURCES = mln_value_float01_.cc
mln_value_float01_16_SOURCES = mln_value_float01_16.cc
mln_value_float01_8_SOURCES = mln_value_float01_8.cc
mln_value_float01_f_SOURCES = mln_value_float01_f.cc
-mln_value_float01__SOURCES = mln_value_float01_.cc
-mln_value_float01_SOURCES = mln_value_float01.cc
mln_value_gl16_SOURCES = mln_value_gl16.cc
mln_value_gl8_SOURCES = mln_value_gl8.cc
mln_value_glf_SOURCES = mln_value_glf.cc
-mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc
mln_value_graylevel_SOURCES = mln_value_graylevel.cc
+mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc
mln_value_hsi_SOURCES = mln_value_hsi.cc
mln_value_hsl_SOURCES = mln_value_hsl.cc
+mln_value_int_s_SOURCES = mln_value_int_s.cc
+mln_value_int_s16_SOURCES = mln_value_int_s16.cc
+mln_value_int_s32_SOURCES = mln_value_int_s32.cc
+mln_value_int_s8_SOURCES = mln_value_int_s8.cc
+mln_value_int_u_SOURCES = mln_value_int_u.cc
+mln_value_int_u12_SOURCES = mln_value_int_u12.cc
+mln_value_int_u16_SOURCES = mln_value_int_u16.cc
+mln_value_int_u32_SOURCES = mln_value_int_u32.cc
+mln_value_int_u8_SOURCES = mln_value_int_u8.cc
+mln_value_int_u_sat_SOURCES = mln_value_int_u_sat.cc
mln_value_internal_all_SOURCES = mln_value_internal_all.cc
mln_value_internal_convert_SOURCES = mln_value_internal_convert.cc
mln_value_internal_encoding_SOURCES = mln_value_internal_encoding.cc
mln_value_internal_essential_SOURCES = mln_value_internal_essential.cc
-mln_value_internal_gray_f_SOURCES = mln_value_internal_gray_f.cc
mln_value_internal_gray__SOURCES = mln_value_internal_gray_.cc
+mln_value_internal_gray_f_SOURCES = mln_value_internal_gray_f.cc
mln_value_internal_integer_SOURCES = mln_value_internal_integer.cc
mln_value_internal_iterable_set_SOURCES = mln_value_internal_iterable_set.cc
mln_value_internal_limits_SOURCES = mln_value_internal_limits.cc
mln_value_internal_value_like_SOURCES = mln_value_internal_value_like.cc
mln_value_interval_SOURCES = mln_value_interval.cc
-mln_value_int_s16_SOURCES = mln_value_int_s16.cc
-mln_value_int_s32_SOURCES = mln_value_int_s32.cc
-mln_value_int_s8_SOURCES = mln_value_int_s8.cc
-mln_value_int_s_SOURCES = mln_value_int_s.cc
-mln_value_int_u12_SOURCES = mln_value_int_u12.cc
-mln_value_int_u16_SOURCES = mln_value_int_u16.cc
-mln_value_int_u32_SOURCES = mln_value_int_u32.cc
-mln_value_int_u8_SOURCES = mln_value_int_u8.cc
-mln_value_int_u_SOURCES = mln_value_int_u.cc
-mln_value_int_u_sat_SOURCES = mln_value_int_u_sat.cc
+mln_value_label_SOURCES = mln_value_label.cc
mln_value_label_16_SOURCES = mln_value_label_16.cc
mln_value_label_8_SOURCES = mln_value_label_8.cc
-mln_value_label_SOURCES = mln_value_label.cc
mln_value_lut_vec_SOURCES = mln_value_lut_vec.cc
mln_value_mixin_SOURCES = mln_value_mixin.cc
mln_value_ops_SOURCES = mln_value_ops.cc
mln_value_other_SOURCES = mln_value_other.cc
mln_value_proxy_SOURCES = mln_value_proxy.cc
+mln_value_rgb_SOURCES = mln_value_rgb.cc
mln_value_rgb16_SOURCES = mln_value_rgb16.cc
mln_value_rgb8_SOURCES = mln_value_rgb8.cc
-mln_value_rgb_SOURCES = mln_value_rgb.cc
mln_value_scalar_SOURCES = mln_value_scalar.cc
mln_value_set_SOURCES = mln_value_set.cc
mln_value_shell_SOURCES = mln_value_shell.cc
@@ -2477,7 +2484,6 @@ mln_value_sign_SOURCES = mln_value_sign.cc
mln_value_stack_SOURCES = mln_value_stack.cc
mln_value_super_value_SOURCES = mln_value_super_value.cc
mln_value_viter_SOURCES = mln_value_viter.cc
-mln_version_SOURCES = mln_version.cc
mln_win_all_SOURCES = mln_win_all.cc
mln_win_backdiag2d_SOURCES = mln_win_backdiag2d.cc
mln_win_ball_SOURCES = mln_win_ball.cc
--
1.6.1.2
1
0
26 May '09
* milena/tests/unit_test/build_unit_test.sh,
* scribo/tests/unit_test/build_unit_test.sh
(LC_ALL): Set envvar to C.
* milena/generate_dist_headers.sh,
* milena/doc/generate_dist_files.sh:
Likewise.
Use plain `sort' instead of `sort -d'.
---
ChangeLog | 12 ++++++++++++
milena/doc/generate_dist_files.sh | 5 ++++-
milena/generate_dist_headers.sh | 7 +++++--
milena/tests/unit_test/build_unit_test.sh | 2 ++
scribo/tests/unit_test/build_unit_test.sh | 2 ++
5 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 28f856d..d11b7d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-05-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve determinism of Makefile helpers generators.
+
+ * milena/tests/unit_test/build_unit_test.sh,
+ * scribo/tests/unit_test/build_unit_test.sh
+ (LC_ALL): Set envvar to C.
+ * milena/generate_dist_headers.sh,
+ * milena/doc/generate_dist_files.sh:
+ Likewise.
+ Use plain `sort' instead of `sort -d'.
+
2009-05-22 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
* configure.ac: Configure milena/tests/core/image/dmorph.
diff --git a/milena/doc/generate_dist_files.sh b/milena/doc/generate_dist_files.sh
index fdef488..9c77f20 100755
--- a/milena/doc/generate_dist_files.sh
+++ b/milena/doc/generate_dist_files.sh
@@ -8,13 +8,16 @@
## would be to only emit lines ended with newlines.
ECHO_N=printf
+# Use the C locale to have a deterministic sort.
+export LC_ALL=C
+
for dir in figures outputs examples; do
OUT="$dir/$dir.mk"
echo "## Generated by ../generate_dist_files, do not modify." > $OUT
echo >>$OUT
$ECHO_N "EXTRA_DIST += " >> $OUT
for ftype in cc.raw p*m txt; do
- for file in `find $dir -mindepth 1 -name *.$ftype | sort -d `; do
+ for file in `find $dir -mindepth 1 -name *.$ftype | sort`; do
echo " \\" >> $OUT
$ECHO_N $file >> $OUT
done
diff --git a/milena/generate_dist_headers.sh b/milena/generate_dist_headers.sh
index d6cfa4d..6f72a5f 100755
--- a/milena/generate_dist_headers.sh
+++ b/milena/generate_dist_headers.sh
@@ -4,14 +4,17 @@
# ------------------------------
# List all the headers in order to make them part of distribution.
+# Use the C locale to have a deterministic sort.
+export LC_ALL=C
+
echo "## Generated by ./generate_dist_headers, do not modify ##" > headers.mk
echo "" >> headers.mk
echo "nobase_include_HEADERS = \\" >> headers.mk
echo "mln/version.hh \\" >> headers.mk
echo "generating headers.mk"
-find mln -type f -name '*.hh'| grep -v "\.svn" | sed -e 's/$/ \\/g' | sort -d >> headers.mk
-find mln -type f -name '*.hxx'| grep -v "\.svn" | sed -e 's/$/ \\/g'| sort -d >> headers.mk
+find mln -type f -name '*.hh'| grep -v "\.svn" | sed -e 's/$/ \\/g' | sort >> headers.mk
+find mln -type f -name '*.hxx'| grep -v "\.svn" | sed -e 's/$/ \\/g'| sort >> headers.mk
last_line=`tail -n 1 headers.mk | sed -e 's/\\\//g'` # remove '\' in last line
sed '$d' < headers.mk > headers.mk.tmp # remove last line
diff --git a/milena/tests/unit_test/build_unit_test.sh b/milena/tests/unit_test/build_unit_test.sh
index 310823d..dee4436 100755
--- a/milena/tests/unit_test/build_unit_test.sh
+++ b/milena/tests/unit_test/build_unit_test.sh
@@ -8,6 +8,8 @@
## would be to only emit lines ended with newlines.
ECHO_N=printf
+# Use the C locale to have a deterministic sort.
+export LC_ALL=C
test $# -eq 1 || { echo "Usage: $0 <mln path>" && exit 1; }
diff --git a/scribo/tests/unit_test/build_unit_test.sh b/scribo/tests/unit_test/build_unit_test.sh
index 7c80671..87863e3 100755
--- a/scribo/tests/unit_test/build_unit_test.sh
+++ b/scribo/tests/unit_test/build_unit_test.sh
@@ -8,6 +8,8 @@
## would be to only emit lines ended with newlines.
ECHO_N=printf
+# Use the C locale to have a deterministic sort.
+export LC_ALL=C
test $# -eq 1 || { echo "Usage: $0 <scribo path>" && exit 1; }
--
1.6.1.2
1
0