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
December 2008
- 12 participants
- 201 discussions
* milena/headers.mk: update includes part of the distribution.
* milena/mln/core/image/fun_image.hh
* milena/mln/fun/v2w_w2v/norm.hh
* milena/mln/io/off/load.hh: cleanup comments.
* milena/mln/topo/adj_higher_face_iter.hh
* milena/mln/topo/adj_lower_face_iter.hh
* milena/mln/topo/adj_m_face_iter.hh
* milena/mln/value/graylevel.hh
* milena/mln/value/graylevel_f.hh
* milena/mln/value/internal/gray_.hh
* milena/mln/value/internal/gray_f.hh: fix includes/forward
declarations.
* milena/tests/unit_test/Makefile.am,
* milena/tests/unit_test/mln_core_image_fun_image.cc,
* milena/tests/unit_test/mln_fun_internal_ch_function_value_impl.cc,
* milena/tests/unit_test/mln_fun_meta_hue.cc,
* milena/tests/unit_test/mln_fun_meta_inty.cc,
* milena/tests/unit_test/mln_fun_meta_red.cc,
* milena/tests/unit_test/mln_fun_meta_sat.cc,
* milena/tests/unit_test/mln_fun_meta_to_enc.cc,
* milena/tests/unit_test/mln_fun_v2v_ch_function_value.cc,
* milena/tests/unit_test/mln_fun_v2w2v_cos.cc,
* milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc,
* milena/tests/unit_test/mln_fun_vv2b_eq.cc,
* milena/tests/unit_test/mln_fun_vv2b_ge.cc,
* milena/tests/unit_test/mln_fun_vv2b_gt.cc,
* milena/tests/unit_test/mln_fun_vv2b_implies.cc,
* milena/tests/unit_test/mln_fun_vv2b_le.cc,
* milena/tests/unit_test/mln_fun_vv2b_lt.cc,
* milena/tests/unit_test/mln_trait_ch_function_value.cc: add new
unit tests.
---
milena/ChangeLog | 39 +++++++++++
milena/headers.mk | 17 +++++
milena/mln/core/image/fun_image.hh | 16 ++---
milena/mln/fun/v2w_w2v/norm.hh | 47 ++++++-------
milena/mln/io/off/load.hh | 24 ++++----
milena/mln/topo/adj_higher_face_iter.hh | 6 +-
milena/mln/topo/adj_lower_face_iter.hh | 6 +-
milena/mln/topo/adj_m_face_iter.hh | 12 ++--
milena/mln/value/graylevel.hh | 14 ++--
milena/mln/value/graylevel_f.hh | 18 +++---
milena/mln/value/internal/gray_.hh | 70 +++++++++++---------
milena/mln/value/internal/gray_f.hh | 31 +++++++--
milena/tests/unit_test/Makefile.am | 34 ++++++++++
milena/tests/unit_test/mln_core_image_fun_image.cc | 11 +++
.../mln_fun_internal_ch_function_value_impl.cc | 11 +++
milena/tests/unit_test/mln_fun_meta_hue.cc | 11 +++
milena/tests/unit_test/mln_fun_meta_inty.cc | 11 +++
milena/tests/unit_test/mln_fun_meta_red.cc | 11 +++
milena/tests/unit_test/mln_fun_meta_sat.cc | 11 +++
milena/tests/unit_test/mln_fun_meta_to_enc.cc | 11 +++
.../unit_test/mln_fun_v2v_ch_function_value.cc | 11 +++
milena/tests/unit_test/mln_fun_v2w2v_cos.cc | 11 +++
milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc | 11 +++
milena/tests/unit_test/mln_fun_vv2b_eq.cc | 11 +++
milena/tests/unit_test/mln_fun_vv2b_ge.cc | 11 +++
milena/tests/unit_test/mln_fun_vv2b_gt.cc | 11 +++
milena/tests/unit_test/mln_fun_vv2b_implies.cc | 11 +++
milena/tests/unit_test/mln_fun_vv2b_le.cc | 11 +++
milena/tests/unit_test/mln_fun_vv2b_lt.cc | 11 +++
.../tests/unit_test/mln_trait_ch_function_value.cc | 11 +++
30 files changed, 410 insertions(+), 111 deletions(-)
create mode 100644 milena/tests/unit_test/mln_core_image_fun_image.cc
create mode 100644 milena/tests/unit_test/mln_fun_internal_ch_function_value_impl.cc
create mode 100644 milena/tests/unit_test/mln_fun_meta_hue.cc
create mode 100644 milena/tests/unit_test/mln_fun_meta_inty.cc
create mode 100644 milena/tests/unit_test/mln_fun_meta_red.cc
create mode 100644 milena/tests/unit_test/mln_fun_meta_sat.cc
create mode 100644 milena/tests/unit_test/mln_fun_meta_to_enc.cc
create mode 100644 milena/tests/unit_test/mln_fun_v2v_ch_function_value.cc
create mode 100644 milena/tests/unit_test/mln_fun_v2w2v_cos.cc
create mode 100644 milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc
create mode 100644 milena/tests/unit_test/mln_fun_vv2b_eq.cc
create mode 100644 milena/tests/unit_test/mln_fun_vv2b_ge.cc
create mode 100644 milena/tests/unit_test/mln_fun_vv2b_gt.cc
create mode 100644 milena/tests/unit_test/mln_fun_vv2b_implies.cc
create mode 100644 milena/tests/unit_test/mln_fun_vv2b_le.cc
create mode 100644 milena/tests/unit_test/mln_fun_vv2b_lt.cc
create mode 100644 milena/tests/unit_test/mln_trait_ch_function_value.cc
diff --git a/milena/ChangeLog b/milena/ChangeLog
index a4bb060..31fada1 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,44 @@
2008-12-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Fix tests.
+
+ * milena/headers.mk: update includes part of the distribution.
+
+ * milena/mln/core/image/fun_image.hh
+ * milena/mln/fun/v2w_w2v/norm.hh
+ * milena/mln/io/off/load.hh: cleanup comments.
+
+ * milena/mln/topo/adj_higher_face_iter.hh
+ * milena/mln/topo/adj_lower_face_iter.hh
+ * milena/mln/topo/adj_m_face_iter.hh
+ * milena/mln/value/graylevel.hh
+ * milena/mln/value/graylevel_f.hh
+ * milena/mln/value/internal/gray_.hh
+ * milena/mln/value/internal/gray_f.hh: fix includes/forward
+ declarations.
+
+ * milena/tests/unit_test/Makefile.am,
+ * milena/tests/unit_test/mln_core_image_fun_image.cc,
+ * milena/tests/unit_test/mln_fun_internal_ch_function_value_impl.cc,
+ * milena/tests/unit_test/mln_fun_meta_hue.cc,
+ * milena/tests/unit_test/mln_fun_meta_inty.cc,
+ * milena/tests/unit_test/mln_fun_meta_red.cc,
+ * milena/tests/unit_test/mln_fun_meta_sat.cc,
+ * milena/tests/unit_test/mln_fun_meta_to_enc.cc,
+ * milena/tests/unit_test/mln_fun_v2v_ch_function_value.cc,
+ * milena/tests/unit_test/mln_fun_v2w2v_cos.cc,
+ * milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc,
+ * milena/tests/unit_test/mln_fun_vv2b_eq.cc,
+ * milena/tests/unit_test/mln_fun_vv2b_ge.cc,
+ * milena/tests/unit_test/mln_fun_vv2b_gt.cc,
+ * milena/tests/unit_test/mln_fun_vv2b_implies.cc,
+ * milena/tests/unit_test/mln_fun_vv2b_le.cc,
+ * milena/tests/unit_test/mln_fun_vv2b_lt.cc,
+ * milena/tests/unit_test/mln_trait_ch_function_value.cc: add new
+ unit tests.
+
+2008-12-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Cleanup morpho.
* milena/mln/morpho/closing.hh,
diff --git a/milena/headers.mk b/milena/headers.mk
index e528542..240f896 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -176,7 +176,9 @@ mln/fun/vv2v/min.hh \
mln/fun/vv2v/essential.hh \
mln/fun/internal/array_base.hh \
mln/fun/internal/x2x_linear_impl.hh \
+mln/fun/internal/ch_function_value_impl.hh \
mln/fun/internal/selector.hh \
+mln/fun/v2w_w2v/norm.hh \
mln/fun/p2v/ternary.hh \
mln/fun/p2v/iota.hh \
mln/fun/p2v/elifs.hh \
@@ -196,10 +198,18 @@ mln/fun/v2v/all.hh \
mln/fun/v2v/dec.hh \
mln/fun/v2v/abs.hh \
mln/fun/v2v/cast.hh \
+mln/fun/v2v/ch_function_value.hh \
mln/fun/v2v/rgb_to_hsi.hh \
mln/fun/v2v/enc.hh \
mln/fun/v2v/convert.hh \
mln/fun/v2v/essential.hh \
+mln/fun/v2w2v/cos.hh \
+mln/fun/vv2b/implies.hh \
+mln/fun/vv2b/le.hh \
+mln/fun/vv2b/gt.hh \
+mln/fun/vv2b/ge.hh \
+mln/fun/vv2b/lt.hh \
+mln/fun/vv2b/eq.hh \
mln/fun/cast.hh \
mln/fun/i2v/all.hh \
mln/fun/i2v/array.hh \
@@ -213,6 +223,11 @@ mln/fun/x2x/all.hh \
mln/fun/x2x/translation.hh \
mln/fun/x2x/rotation.hh \
mln/fun/x2x/essential.hh \
+mln/fun/meta/red.hh \
+mln/fun/meta/hue.hh \
+mln/fun/meta/inty.hh \
+mln/fun/meta/sat.hh \
+mln/fun/meta/to_enc.hh \
mln/fun/x2v/linear.hh \
mln/fun/x2v/bilinear.hh \
mln/fun/x2v/all.hh \
@@ -415,6 +430,7 @@ mln/trait/value/essential.hh \
mln/trait/images.hh \
mln/trait/window/props.hh \
mln/trait/window/print.hh \
+mln/trait/ch_function_value.hh \
mln/trait/ch_value.hh \
mln/trait/solve.hh \
mln/trait/solve_unary.hh \
@@ -854,6 +870,7 @@ mln/core/image/lazy_image.hh \
mln/core/image/t_image.hh \
mln/core/image/hexa_piter.hh \
mln/core/image/value_enc_image.hh \
+mln/core/image/fun_image.hh \
mln/core/image/sub_image_if.hh \
mln/core/image/all.hh \
mln/core/image/mono_rle_image.hh \
diff --git a/milena/mln/core/image/fun_image.hh b/milena/mln/core/image/fun_image.hh
index 505b012..f338d08 100644
--- a/milena/mln/core/image/fun_image.hh
+++ b/milena/mln/core/image/fun_image.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007, 2008 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,12 +29,10 @@
#ifndef MLN_CORE_IMAGE_FUN_IMAGE_HH
# define MLN_CORE_IMAGE_FUN_IMAGE_HH
-/*! \file mln/core/image/fun_image.hh
- *
- * \brief Definition of an image morpher that make the user see the
- * image through a function
- *
- */
+/// \file mln/core/image/fun_image.hh
+///
+/// Definition of an image morpher that make the user see the
+/// image through a function
# include <mln/core/internal/image_value_morpher.hh>
# include <mln/trait/images.hh>
@@ -45,7 +44,7 @@
namespace mln
{
- // Fwd decl.
+ // Forward declaration.
template <typename F, typename I> class fun_image;
namespace internal
@@ -93,8 +92,7 @@ namespace mln
- /*! \brief Class of image morpher which takes allow to view an image throught a morpher
- */
+ /// Class of image morpher which takes allow to view an image throught a morpher
template <typename F, typename I>
struct fun_image :
public internal::image_value_morpher< I, mln_result(F), fun_image<F,I> >
diff --git a/milena/mln/fun/v2w_w2v/norm.hh b/milena/mln/fun/v2w_w2v/norm.hh
index 51a2914..4dbb7cb 100644
--- a/milena/mln/fun/v2w_w2v/norm.hh
+++ b/milena/mln/fun/v2w_w2v/norm.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 2008 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,12 +29,11 @@
#ifndef MLN_FUN_V2W_W2V_NORM_HH
# define MLN_FUN_V2W_W2V_NORM_HH
-/*! \file mln/fun/v2w_w2v/norm.hh
- *
- * \brief Norm functors.
- *
- * \see mln/norm/.
- */
+/// \file mln/fun/v2w_w2v/norm.hh
+///
+/// \brief Norm functors.
+///
+/// \see mln/norm/.
# include <mln/core/concept/function.hh>
# include <mln/trait/value_.hh>
@@ -50,12 +50,11 @@ namespace mln
namespace v2w_w2v
{
- /*! \brief L1-norm.
- *
- * \c V is the type of input values; \c R is the result type.
- *
- * \see mln::norm::l1.
- */
+ /// L1-norm.
+ ///
+ /// \c V is the type of input values; \c R is the result type.
+ ///
+ /// \see mln::norm::l1.
template <typename V, typename R>
struct l1_norm : public Function_v2w_w2v< l1_norm<V, R> >
{
@@ -64,12 +63,11 @@ namespace mln
V f_1(const V& v, const R& r) const;
};
- /*! \brief L2-norm.
- *
- * \c V is the type of input values; \c R is the result type.
- *
- * \see mln::norm::l2.
- */
+ /// L2-norm.
+ ///
+ /// \c V is the type of input values; \c R is the result type.
+ ///
+ /// \see mln::norm::l2.
template <typename V, typename R>
struct l2_norm : public Function_v2w_w2v< l2_norm<V, R> >
{
@@ -78,12 +76,11 @@ namespace mln
V f_1(const V& v, const R& r) const;
};
- /*! \brief L-infty norm.
- *
- * \c V is the type of input values; \c R is the result type.
- *
- * \see mln::norm::linfty.
- */
+ /// L-infty norm.
+ ///
+ /// \c V is the type of input values; \c R is the result type.
+ ///
+ /// \see mln::norm::linfty.
template <typename V, typename R>
struct linfty_norm : public Function_v2w_w2v< linfty_norm<V, R> >
{
diff --git a/milena/mln/io/off/load.hh b/milena/mln/io/off/load.hh
index 5bfebf3..03fc3f3 100644
--- a/milena/mln/io/off/load.hh
+++ b/milena/mln/io/off/load.hh
@@ -29,7 +29,7 @@
# define MLN_IO_OFF_LOAD_HH
/// \file mln/io/off/load.hh
-/// \brief Input loading function for OFF files.
+/// Input loading function for OFF files.
///
/// \see http://shape.cs.princeton.edu/benchmark/documentation/off_format.html
/// \see https://people.scs.fsu.edu/~burkardt/html/off_format.html
@@ -54,7 +54,7 @@ namespace mln
namespace off
{
- /** \brief Load a (binary) OFF image into a complex image.
+ /** Load a (binary) OFF image into a complex image.
\param[out] ima A reference to the image to construct.
\param[in] filename The name of the file to load.
@@ -63,7 +63,7 @@ namespace mln
existence of faces. */
void load(bin_2complex_image3df& ima, const std::string& filename);
- /** \brief Load a floating-point OFF image into a complex image.
+ /** Load a floating-point OFF image into a complex image.
\param[out] ima A reference to the image to construct.
\param[in] filename The name of the file to load.
@@ -88,7 +88,7 @@ namespace mln
/// Type of the domain.
typedef mln_pset(I) domain;
- /// \brief Constructor, with static checks.
+ /// Constructor, with static checks.
off_loader();
/// Load an image from \a filename into \a ima.
@@ -103,15 +103,15 @@ namespace mln
struct bin_off_loader
: public off_loader< bin_2complex_image3df, bin_off_loader >
{
- /// \brief Read face data.
+ /// Read face data.
///
/// Dummy, does nothings (but required by the super class).
void read_face_data(std::istream& istr);
- /// \brief Assign values to image.
+ /// Assign values to image.
void assign(values& vs, const domain& s);
- /// \brief Pre-allocate data.
+ /// Pre-allocate data.
///
/// Dummy, does nothings (but required by the super class).
void reserve(unsigned nvertices, unsigned nedges, unsigned nfaces);
@@ -121,16 +121,16 @@ namespace mln
struct float_off_loader
: public off_loader< float_2complex_image3df, float_off_loader >
{
- /// \brief Read face data.
+ /// Read face data.
void read_face_data(std::istream& istr);
- /// \brief Pre-allocate data.
+ /// Pre-allocate data.
void reserve(unsigned nvertices, unsigned nedges, unsigned nfaces);
- /// \brief Assign values to image.
+ /// Assign values to image.
void assign(values& vs, const domain& s);
- /// \brief 2-face floating-point values.
+ /// 2-face floating-point values.
std::vector<float> face_value;
};
@@ -416,7 +416,7 @@ namespace mln
in the following comment. */
- /** \brief Reading values.
+ /** Reading values.
From https://people.scs.fsu.edu/~burkardt/html/off_format.html:
diff --git a/milena/mln/topo/adj_higher_face_iter.hh b/milena/mln/topo/adj_higher_face_iter.hh
index fcd9d0f..120b234 100644
--- a/milena/mln/topo/adj_higher_face_iter.hh
+++ b/milena/mln/topo/adj_higher_face_iter.hh
@@ -55,11 +55,11 @@ namespace mln
template <typename C, typename F, typename E>
class backward_complex_relative_iterator_base;
- template <unsigned D>
- struct algebraic_face;
-
} // end of mln::topo::internal
+ template <unsigned D>
+ struct algebraic_face;
+
/*------------------------------------.
| topo::adj_higher_face_fwd_iter<D>. |
`------------------------------------*/
diff --git a/milena/mln/topo/adj_lower_face_iter.hh b/milena/mln/topo/adj_lower_face_iter.hh
index 22c965a..293da90 100644
--- a/milena/mln/topo/adj_lower_face_iter.hh
+++ b/milena/mln/topo/adj_lower_face_iter.hh
@@ -55,11 +55,11 @@ namespace mln
template <typename C, typename F, typename E>
class backward_complex_relative_iterator_base;
- template <unsigned D>
- struct algebraic_face;
-
} // end of namespace mln::topo::internal
+ template <unsigned D>
+ struct algebraic_face;
+
/*-----------------------------------.
| topo::adj_lower_face_fwd_iter<D>. |
diff --git a/milena/mln/topo/adj_m_face_iter.hh b/milena/mln/topo/adj_m_face_iter.hh
index e314dfb..0cd69fa 100644
--- a/milena/mln/topo/adj_m_face_iter.hh
+++ b/milena/mln/topo/adj_m_face_iter.hh
@@ -30,7 +30,7 @@
/// \file mln/topo/adj_m_face_iter.hh
-/// \brief Definition of forward and backward iterators on all the
+/// Definition of forward and backward iterators on all the
/// m-faces transitively adjacent to a (reference) n-face in a
/// complex.
@@ -59,7 +59,7 @@ namespace mln
| topo::adj_m_face_fwd_iter<D>. |
`-------------------------------*/
- /** \brief Forward iterator on all the m-faces transitively
+ /** Forward iterator on all the m-faces transitively
adjacent to a (reference) n-face in a complex.
\tparam D The dimension of the complex this iterator belongs to.
@@ -94,7 +94,7 @@ namespace mln
adj_m_face_fwd_iter(const Fref& f_ref, unsigned m);
/// \}
- /// \brief Compute the set of faces adjacent to the reference face.
+ /// Compute the set of faces adjacent to the reference face.
///
/// The computation is delegated to
/// mln::topo::internal::adj_m_face_iterator.
@@ -106,7 +106,7 @@ namespace mln
| topo::adj_m_face_bkd_iter<D>. |
`-------------------------------*/
- /** \brief Backward iterator on all the m-faces transitively
+ /** Backward iterator on all the m-faces transitively
adjacent to a (reference) n-face in a complex.
\tparam D The dimension of the complex this iterator belongs to.
@@ -141,7 +141,7 @@ namespace mln
adj_m_face_bkd_iter(const Fref& f_ref, unsigned m);
/// \}
- /// \brief Compute the set of faces adjacent to the reference face.
+ /// Compute the set of faces adjacent to the reference face.
///
/// The computation is delegated to
/// mln::topo::internal::adj_m_face_iterator.
@@ -289,7 +289,7 @@ namespace mln
if (center.n() == m_)
return;
-
+
typedef std::vector < topo::algebraic_face<D> > faces_t;
typedef std::set < topo::algebraic_face<D> > faces_set_t;
diff --git a/milena/mln/value/graylevel.hh b/milena/mln/value/graylevel.hh
index 9cd6071..3d89097 100644
--- a/milena/mln/value/graylevel.hh
+++ b/milena/mln/value/graylevel.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2006, 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2006, 2007, 2008 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_VALUE_GRAYLEVEL_HH
# define MLN_VALUE_GRAYLEVEL_HH
-/*! \file mln/value/graylevel.hh
- *
- * \brief Definition of the mln::value::graylevel class.
- */
+/// \file mln/value/graylevel.hh
+///
+/// Definition of the mln::value::graylevel class.
# include <iostream>
@@ -53,7 +53,7 @@ namespace mln
namespace literal
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
struct black_t;
struct medium_gray_t;
struct white_t;
@@ -62,7 +62,7 @@ namespace mln
namespace value
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
namespace internal
{
template <unsigned n> class gray_;
diff --git a/milena/mln/value/graylevel_f.hh b/milena/mln/value/graylevel_f.hh
index 0b36ba0..6bf30f9 100644
--- a/milena/mln/value/graylevel_f.hh
+++ b/milena/mln/value/graylevel_f.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2006, 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2006, 2007, 2008 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_VALUE_GRAYLEVEL_F_HH
# define MLN_VALUE_GRAYLEVEL_F_HH
-/*! \file mln/value/graylevel_f.hh
- *
- * \brief Definition of the mln::value::graylevel_f class.
- */
+/// \file mln/value/graylevel_f.hh
+///
+/// Definition of the mln::value::graylevel_f class.
# include <iostream>
@@ -51,7 +51,7 @@ namespace mln
namespace literal
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
struct black_t;
struct medium_gray_t;
struct white_t;
@@ -59,7 +59,7 @@ namespace mln
}
namespace value
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
namespace internal {class gray_f; }
struct graylevel_f;
template <unsigned n> struct graylevel;
@@ -467,7 +467,7 @@ namespace mln
} // end of namespace mln
-#include <mln/value/internal/gray_f.hh>
-#include <mln/value/internal/gray_.hh>
+//# include <mln/value/internal/gray_f.hh>
+///# include <mln/value/internal/gray_.hh>
#endif // ! MLN_VALUE_GRAYLEVEL_F_HH
diff --git a/milena/mln/value/internal/gray_.hh b/milena/mln/value/internal/gray_.hh
index 81ed72b..8faf99d 100644
--- a/milena/mln/value/internal/gray_.hh
+++ b/milena/mln/value/internal/gray_.hh
@@ -29,11 +29,9 @@
#ifndef MLN_VALUE_INTERNAL_GRAY__HH
# define MLN_VALUE_INTERNAL_GRAY__HH
-/*! \file mln/value/internal/gray_.hh
- *
- * \brief FIXME.
- *
- */
+/// \file mln/value/internal/gray_.hh
+///
+/// FIXME.
# include <iostream>
# include <cmath>
@@ -42,14 +40,16 @@
# include <mln/metal/math/pow.hh>
# include <mln/value/concept/integer.hh>
+# include <mln/value/internal/value_like.hh>
+# include <mln/value/graylevel_f.hh>
namespace mln
{
namespace literal
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
struct black_t;
struct white_t;
/// \}
@@ -57,13 +57,15 @@ namespace mln
namespace value
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
+ template <unsigned n>
+ struct graylevel;
template <unsigned N> class graylevel;
class graylevel_f;
namespace internal
{
template <unsigned n> class gray_;
- class gray_f;
+ struct gray_f;
}
/// \}
}
@@ -176,42 +178,49 @@ namespace mln
operator graylevel<m>() const;
/// Conversion to graylevel_f.
- operator graylevel_f() const;
+ operator graylevel_f() const;
};
// Operators.
- template <unsigned n>
- std::ostream& operator<<(std::ostream& ostr, const gray_<n>& g);
+ template <unsigned n>
+ std::ostream& operator<<(std::ostream& ostr, const gray_<n>& g);
- template <unsigned n, unsigned m>
- bool operator==(const gray_<n>& lhs, const gray_<m>& rhs);
- template <unsigned n, unsigned m>
- bool operator<(const gray_<n>& lhs, const gray_<m>& rhs);
+ template <unsigned n, unsigned m>
+ bool operator==(const gray_<n>& lhs, const gray_<m>& rhs);
+ template <unsigned n, unsigned m>
+ bool operator<(const gray_<n>& lhs, const gray_<m>& rhs);
- template <unsigned n, unsigned m>
- mln_trait_op_plus(gray_<n>, gray_<m>)
- operator+(const gray_<n>& lhs, const gray_<m>& rhs);
+ template <unsigned n, unsigned m>
+ mln_trait_op_plus(gray_<n>, gray_<m>)
+ operator+(const gray_<n>& lhs, const gray_<m>& rhs);
- template <unsigned n, unsigned m>
- mln_trait_op_minus(gray_<n>, gray_<m>)
- operator-(const gray_<n>& lhs, const gray_<m>& rhs);
+ template <unsigned n, unsigned m>
+ mln_trait_op_minus(gray_<n>, gray_<m>)
+ operator-(const gray_<n>& lhs, const gray_<m>& rhs);
- template <unsigned n>
- gray_<n> operator*(int s, const gray_<n>& rhs);
- template <unsigned n>
- gray_<n> operator*(const gray_<n>& lhs, int s);
- template <unsigned n>
- gray_<n> operator/(const gray_<n>& lhs, int s);
+ template <unsigned n>
+ gray_<n> operator*(int s, const gray_<n>& rhs);
+ template <unsigned n>
+ gray_<n> operator*(const gray_<n>& lhs, int s);
+ template <unsigned n>
+ gray_<n> operator/(const gray_<n>& lhs, int s);
+
+ } // end of namespace mln::value::internal
+
+ } // end of namespace mln::value
- } // end of namespace mln::value::internal
+} // end of namespace mln
-} // end of namespace mln::value
+# include <mln/value/internal/gray_f.hh>
+namespace mln
+{
+
# ifndef MLN_INCLUDE_ONLY
namespace value
@@ -583,7 +592,7 @@ namespace mln
// Op / Builtin.
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
namespace internal
{
class gray_f;
@@ -718,5 +727,4 @@ namespace trait
} // end of namespace mln
-
#endif // ! MLN_INTERNAL_VALUE_GRAY__HH
diff --git a/milena/mln/value/internal/gray_f.hh b/milena/mln/value/internal/gray_f.hh
index b7ab9e2..2ff9551 100644
--- a/milena/mln/value/internal/gray_f.hh
+++ b/milena/mln/value/internal/gray_f.hh
@@ -29,10 +29,10 @@
#ifndef MLN_VALUE_INTERNAL_GRAY_F_HH
# define MLN_VALUE_INTERNAL_GRAY_F_HH
-/*! \file mln/value/internal/gray_f.hh
- *
- * \brief Definition of the mln::value::gray_f class.
- */
+/// \file mln/value/internal/gray_f.hh
+///
+/// Definition of the mln::value::gray_f class.
+
# include <iostream>
@@ -46,13 +46,14 @@
# include <mln/value/float01_f.hh>
# include <mln/trait/value_.hh>
+# include <mln/value/graylevel_f.hh>
namespace mln
{
namespace literal
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
struct black_t;
struct medium_gray_t;
struct white_t;
@@ -60,7 +61,7 @@ namespace mln
}
namespace value
{
- /// \{ Fwd decls.
+ /// \{ Forward declarations.
namespace internal
{
template <unsigned n> class gray_;
@@ -198,6 +199,24 @@ namespace mln
/// Op<<.
std::ostream& operator<<(std::ostream& ostr, const gray_f& g);
+ } // end of namespace mln::value::internal
+
+ } // end of namespace mln::value
+
+} // end of namespace mln
+
+
+# include <mln/value/internal/gray_.hh>
+
+
+namespace mln
+{
+
+ namespace value
+ {
+
+ namespace internal
+ {
# ifndef MLN_INCLUDE_ONLY
diff --git a/milena/tests/unit_test/Makefile.am b/milena/tests/unit_test/Makefile.am
index 0ab70a9..a740cc1 100644
--- a/milena/tests/unit_test/Makefile.am
+++ b/milena/tests/unit_test/Makefile.am
@@ -179,7 +179,9 @@ mln_fun_vv2v_min \
mln_fun_vv2v_essential \
mln_fun_internal_array_base \
mln_fun_internal_x2x_linear_impl \
+mln_fun_internal_ch_function_value_impl \
mln_fun_internal_selector \
+mln_fun_v2w_w2v_norm \
mln_fun_p2v_ternary \
mln_fun_p2v_iota \
mln_fun_p2v_elifs \
@@ -199,10 +201,18 @@ mln_fun_v2v_all \
mln_fun_v2v_dec \
mln_fun_v2v_abs \
mln_fun_v2v_cast \
+mln_fun_v2v_ch_function_value \
mln_fun_v2v_rgb_to_hsi \
mln_fun_v2v_enc \
mln_fun_v2v_convert \
mln_fun_v2v_essential \
+mln_fun_v2w2v_cos \
+mln_fun_vv2b_implies \
+mln_fun_vv2b_le \
+mln_fun_vv2b_gt \
+mln_fun_vv2b_ge \
+mln_fun_vv2b_lt \
+mln_fun_vv2b_eq \
mln_fun_cast \
mln_fun_i2v_all \
mln_fun_i2v_array \
@@ -216,6 +226,11 @@ mln_fun_x2x_all \
mln_fun_x2x_translation \
mln_fun_x2x_rotation \
mln_fun_x2x_essential \
+mln_fun_meta_red \
+mln_fun_meta_hue \
+mln_fun_meta_inty \
+mln_fun_meta_sat \
+mln_fun_meta_to_enc \
mln_fun_x2v_linear \
mln_fun_x2v_bilinear \
mln_fun_x2v_all \
@@ -411,6 +426,7 @@ mln_trait_value_essential \
mln_trait_images \
mln_trait_window_props \
mln_trait_window_print \
+mln_trait_ch_function_value \
mln_trait_ch_value \
mln_trait_solve \
mln_trait_solve_unary \
@@ -828,6 +844,7 @@ mln_core_image_lazy_image \
mln_core_image_t_image \
mln_core_image_hexa_piter \
mln_core_image_value_enc_image \
+mln_core_image_fun_image \
mln_core_image_sub_image_if \
mln_core_image_all \
mln_core_image_mono_rle_image \
@@ -1154,7 +1171,9 @@ mln_fun_vv2v_min_SOURCES = mln_fun_vv2v_min.cc
mln_fun_vv2v_essential_SOURCES = mln_fun_vv2v_essential.cc
mln_fun_internal_array_base_SOURCES = mln_fun_internal_array_base.cc
mln_fun_internal_x2x_linear_impl_SOURCES = mln_fun_internal_x2x_linear_impl.cc
+mln_fun_internal_ch_function_value_impl_SOURCES = mln_fun_internal_ch_function_value_impl.cc
mln_fun_internal_selector_SOURCES = mln_fun_internal_selector.cc
+mln_fun_v2w_w2v_norm_SOURCES = mln_fun_v2w_w2v_norm.cc
mln_fun_p2v_ternary_SOURCES = mln_fun_p2v_ternary.cc
mln_fun_p2v_iota_SOURCES = mln_fun_p2v_iota.cc
mln_fun_p2v_elifs_SOURCES = mln_fun_p2v_elifs.cc
@@ -1174,10 +1193,18 @@ mln_fun_v2v_all_SOURCES = mln_fun_v2v_all.cc
mln_fun_v2v_dec_SOURCES = mln_fun_v2v_dec.cc
mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc
mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc
+mln_fun_v2v_ch_function_value_SOURCES = mln_fun_v2v_ch_function_value.cc
mln_fun_v2v_rgb_to_hsi_SOURCES = mln_fun_v2v_rgb_to_hsi.cc
mln_fun_v2v_enc_SOURCES = mln_fun_v2v_enc.cc
mln_fun_v2v_convert_SOURCES = mln_fun_v2v_convert.cc
mln_fun_v2v_essential_SOURCES = mln_fun_v2v_essential.cc
+mln_fun_v2w2v_cos_SOURCES = mln_fun_v2w2v_cos.cc
+mln_fun_vv2b_implies_SOURCES = mln_fun_vv2b_implies.cc
+mln_fun_vv2b_le_SOURCES = mln_fun_vv2b_le.cc
+mln_fun_vv2b_gt_SOURCES = mln_fun_vv2b_gt.cc
+mln_fun_vv2b_ge_SOURCES = mln_fun_vv2b_ge.cc
+mln_fun_vv2b_lt_SOURCES = mln_fun_vv2b_lt.cc
+mln_fun_vv2b_eq_SOURCES = mln_fun_vv2b_eq.cc
mln_fun_cast_SOURCES = mln_fun_cast.cc
mln_fun_i2v_all_SOURCES = mln_fun_i2v_all.cc
mln_fun_i2v_array_SOURCES = mln_fun_i2v_array.cc
@@ -1191,6 +1218,11 @@ mln_fun_x2x_all_SOURCES = mln_fun_x2x_all.cc
mln_fun_x2x_translation_SOURCES = mln_fun_x2x_translation.cc
mln_fun_x2x_rotation_SOURCES = mln_fun_x2x_rotation.cc
mln_fun_x2x_essential_SOURCES = mln_fun_x2x_essential.cc
+mln_fun_meta_red_SOURCES = mln_fun_meta_red.cc
+mln_fun_meta_hue_SOURCES = mln_fun_meta_hue.cc
+mln_fun_meta_inty_SOURCES = mln_fun_meta_inty.cc
+mln_fun_meta_sat_SOURCES = mln_fun_meta_sat.cc
+mln_fun_meta_to_enc_SOURCES = mln_fun_meta_to_enc.cc
mln_fun_x2v_linear_SOURCES = mln_fun_x2v_linear.cc
mln_fun_x2v_bilinear_SOURCES = mln_fun_x2v_bilinear.cc
mln_fun_x2v_all_SOURCES = mln_fun_x2v_all.cc
@@ -1386,6 +1418,7 @@ mln_trait_value_essential_SOURCES = mln_trait_value_essential.cc
mln_trait_images_SOURCES = mln_trait_images.cc
mln_trait_window_props_SOURCES = mln_trait_window_props.cc
mln_trait_window_print_SOURCES = mln_trait_window_print.cc
+mln_trait_ch_function_value_SOURCES = mln_trait_ch_function_value.cc
mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc
mln_trait_solve_SOURCES = mln_trait_solve.cc
mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.cc
@@ -1803,6 +1836,7 @@ mln_core_image_lazy_image_SOURCES = mln_core_image_lazy_image.cc
mln_core_image_t_image_SOURCES = mln_core_image_t_image.cc
mln_core_image_hexa_piter_SOURCES = mln_core_image_hexa_piter.cc
mln_core_image_value_enc_image_SOURCES = mln_core_image_value_enc_image.cc
+mln_core_image_fun_image_SOURCES = mln_core_image_fun_image.cc
mln_core_image_sub_image_if_SOURCES = mln_core_image_sub_image_if.cc
mln_core_image_all_SOURCES = mln_core_image_all.cc
mln_core_image_mono_rle_image_SOURCES = mln_core_image_mono_rle_image.cc
diff --git a/milena/tests/unit_test/mln_core_image_fun_image.cc b/milena/tests/unit_test/mln_core_image_fun_image.cc
new file mode 100644
index 0000000..36bde5f
--- /dev/null
+++ b/milena/tests/unit_test/mln_core_image_fun_image.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/core/image/fun_image.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/core/image/fun_image.hh>
+#include <mln/core/image/fun_image.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_internal_ch_function_value_impl.cc b/milena/tests/unit_test/mln_fun_internal_ch_function_value_impl.cc
new file mode 100644
index 0000000..63166aa
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_internal_ch_function_value_impl.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/internal/ch_function_value_impl.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/internal/ch_function_value_impl.hh>
+#include <mln/fun/internal/ch_function_value_impl.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_meta_hue.cc b/milena/tests/unit_test/mln_fun_meta_hue.cc
new file mode 100644
index 0000000..e65142d
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_meta_hue.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/meta/hue.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/meta/hue.hh>
+#include <mln/fun/meta/hue.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_meta_inty.cc b/milena/tests/unit_test/mln_fun_meta_inty.cc
new file mode 100644
index 0000000..6b31236
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_meta_inty.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/meta/inty.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/meta/inty.hh>
+#include <mln/fun/meta/inty.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_meta_red.cc b/milena/tests/unit_test/mln_fun_meta_red.cc
new file mode 100644
index 0000000..343f7ed
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_meta_red.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/meta/red.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/meta/red.hh>
+#include <mln/fun/meta/red.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_meta_sat.cc b/milena/tests/unit_test/mln_fun_meta_sat.cc
new file mode 100644
index 0000000..ee3e7b1
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_meta_sat.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/meta/sat.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/meta/sat.hh>
+#include <mln/fun/meta/sat.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_meta_to_enc.cc b/milena/tests/unit_test/mln_fun_meta_to_enc.cc
new file mode 100644
index 0000000..01a94ca
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_meta_to_enc.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/meta/to_enc.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/meta/to_enc.hh>
+#include <mln/fun/meta/to_enc.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_v2v_ch_function_value.cc b/milena/tests/unit_test/mln_fun_v2v_ch_function_value.cc
new file mode 100644
index 0000000..6f37975
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_v2v_ch_function_value.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/v2v/ch_function_value.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/v2v/ch_function_value.hh>
+#include <mln/fun/v2v/ch_function_value.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_v2w2v_cos.cc b/milena/tests/unit_test/mln_fun_v2w2v_cos.cc
new file mode 100644
index 0000000..860a918
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_v2w2v_cos.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/v2w2v/cos.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/v2w2v/cos.hh>
+#include <mln/fun/v2w2v/cos.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc b/milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc
new file mode 100644
index 0000000..4d6a930
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_v2w_w2v_norm.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/v2w_w2v/norm.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/v2w_w2v/norm.hh>
+#include <mln/fun/v2w_w2v/norm.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_vv2b_eq.cc b/milena/tests/unit_test/mln_fun_vv2b_eq.cc
new file mode 100644
index 0000000..66efcd7
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_vv2b_eq.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/vv2b/eq.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/vv2b/eq.hh>
+#include <mln/fun/vv2b/eq.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_vv2b_ge.cc b/milena/tests/unit_test/mln_fun_vv2b_ge.cc
new file mode 100644
index 0000000..531f5c7
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_vv2b_ge.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/vv2b/ge.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/vv2b/ge.hh>
+#include <mln/fun/vv2b/ge.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_vv2b_gt.cc b/milena/tests/unit_test/mln_fun_vv2b_gt.cc
new file mode 100644
index 0000000..94f9677
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_vv2b_gt.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/vv2b/gt.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/vv2b/gt.hh>
+#include <mln/fun/vv2b/gt.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_vv2b_implies.cc b/milena/tests/unit_test/mln_fun_vv2b_implies.cc
new file mode 100644
index 0000000..91457d0
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_vv2b_implies.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/vv2b/implies.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/vv2b/implies.hh>
+#include <mln/fun/vv2b/implies.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_vv2b_le.cc b/milena/tests/unit_test/mln_fun_vv2b_le.cc
new file mode 100644
index 0000000..9e13aa3
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_vv2b_le.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/vv2b/le.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/vv2b/le.hh>
+#include <mln/fun/vv2b/le.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_vv2b_lt.cc b/milena/tests/unit_test/mln_fun_vv2b_lt.cc
new file mode 100644
index 0000000..46d437d
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_vv2b_lt.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/fun/vv2b/lt.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/fun/vv2b/lt.hh>
+#include <mln/fun/vv2b/lt.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_trait_ch_function_value.cc b/milena/tests/unit_test/mln_trait_ch_function_value.cc
new file mode 100644
index 0000000..f6cb360
--- /dev/null
+++ b/milena/tests/unit_test/mln_trait_ch_function_value.cc
@@ -0,0 +1,11 @@
+// Unit test for mln/trait/ch_function_value.hh.
+// Generated by ./build_unit_test.sh, do not modify.
+
+// Include the file twice, so we detect missing inclusion guards.
+#include <mln/trait/ch_function_value.hh>
+#include <mln/trait/ch_function_value.hh>
+
+int main()
+{
+ // Nothing.
+}
--
1.5.6.5
1
0
* milena/mln/morpho/closing.hh,
* milena/mln/morpho/closing_area_on_vertices.hh,
* milena/mln/morpho/opening.hh,
* milena/mln/morpho/opening_area.hh,
* milena/mln/morpho/opening_area_on_vertices.hh,
* milena/mln/morpho/opening_attribute.hh,
* milena/mln/morpho/opening_height.hh,
* milena/mln/morpho/opening_volume.hh: return an image instead of
taking the output by argument.
* milena/tests/morpho/opening_area.cc,
* milena/tests/morpho/opening_height.cc,
* milena/tests/morpho/opening_volume.cc: update tests.
---
milena/ChangeLog | 18 +++++++++++++
milena/mln/morpho/closing.hh | 18 +++++++-------
milena/mln/morpho/closing_area_on_vertices.hh | 30 ++++++++++++++--------
milena/mln/morpho/opening.hh | 17 ++++++-------
milena/mln/morpho/opening_area.hh | 33 +++++++++++++++----------
milena/mln/morpho/opening_area_on_vertices.hh | 27 +++++++++++++-------
milena/mln/morpho/opening_attribute.hh | 28 ++++++++++++++-------
milena/mln/morpho/opening_height.hh | 28 +++++++++++++-------
milena/mln/morpho/opening_volume.hh | 28 +++++++++++++-------
milena/tests/morpho/opening_area.cc | 9 +++----
milena/tests/morpho/opening_height.cc | 5 ++-
milena/tests/morpho/opening_volume.cc | 5 ++-
12 files changed, 156 insertions(+), 90 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 114753f..a4bb060 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,21 @@
+2008-12-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup morpho.
+
+ * milena/mln/morpho/closing.hh,
+ * milena/mln/morpho/closing_area_on_vertices.hh,
+ * milena/mln/morpho/opening.hh,
+ * milena/mln/morpho/opening_area.hh,
+ * milena/mln/morpho/opening_area_on_vertices.hh,
+ * milena/mln/morpho/opening_attribute.hh,
+ * milena/mln/morpho/opening_height.hh,
+ * milena/mln/morpho/opening_volume.hh: return an image instead of
+ taking the output by argument.
+
+ * milena/tests/morpho/opening_area.cc,
+ * milena/tests/morpho/opening_height.cc,
+ * milena/tests/morpho/opening_volume.cc: update tests.
+
2008-12-15 Alexandre Abraham <abraham(a)lrde.epita.fr>
Add missing concept for bijective functions.
diff --git a/milena/mln/morpho/closing.hh b/milena/mln/morpho/closing.hh
index 932186c..e275760 100644
--- a/milena/mln/morpho/closing.hh
+++ b/milena/mln/morpho/closing.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 2008 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_MORPHO_CLOSING_HH
# define MLN_MORPHO_CLOSING_HH
-/*! \file mln/morpho/closing.hh
- *
- * \brief Morphological closing.
- */
+/// \file mln/morpho/closing.hh
+///
+/// Morphological closing.
# include <mln/morpho/includes.hh>
@@ -42,10 +42,10 @@ namespace mln
namespace morpho
{
- /*! Morphological closing.
- *
- * This operator is e_{-B} o d_B.
- */
+ /// Morphological closing.
+ ///
+ /// This operator is e_{-B} o d_B.
+ ///
template <typename I, typename W>
mln_concrete(I) closing(const Image<I>& input, const Window<W>& win);
diff --git a/milena/mln/morpho/closing_area_on_vertices.hh b/milena/mln/morpho/closing_area_on_vertices.hh
index 7af8e6e..cfaf955 100644
--- a/milena/mln/morpho/closing_area_on_vertices.hh
+++ b/milena/mln/morpho/closing_area_on_vertices.hh
@@ -47,25 +47,33 @@ namespace mln
/// Morphological area closing on a mln::line_graph_image computing
/// the area in terms of adjacent vertices.
- template <typename P2V, typename G, typename V2P, typename N, typename O>
- void closing_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
- const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output);
+ template <typename P2V, typename G, typename V2P, typename N>
+ pw::image<P2V, p_edges<G, V2P> >
+ closing_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
+ const Neighborhood<N>& nbh,
+ unsigned lambda);
# ifndef MLN_INCLUDE_ONLY
- template <typename P2V, typename G, typename V2P, typename N, typename O>
+ template <typename P2V, typename G, typename V2P, typename N>
inline
- void closing_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
- const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output)
+ pw::image<P2V, p_edges<G, V2P> >
+ closing_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
+ const Neighborhood<N>& nbh,
+ unsigned lambda)
{
- mln_precondition(exact(output).domain() == exact(input).domain());
+ trace::entering("morpho::closing_area_on_vertices");
+ mln_precondition(exact(input).has_data());
+
typedef p_edges<G, V2P> pe_t;
typedef accu::count_adjacent_vertices<P2V, pe_t> attribute_t;
- // FIXME: Change sig of closing_attribute!
- closing_attribute<attribute_t>(input, nbh, lambda, output);
+
+ pw::image<P2V, p_edges<G, V2P> > output;
+ output = closing_attribute<attribute_t>(input, nbh, lambda);
+
+ trace::exiting("morpho::closing_area_on_vertices");
+ return output;
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/morpho/opening.hh b/milena/mln/morpho/opening.hh
index d3204ff..7691f4a 100644
--- a/milena/mln/morpho/opening.hh
+++ b/milena/mln/morpho/opening.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 2008 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_MORPHO_OPENING_HH
# define MLN_MORPHO_OPENING_HH
-/*! \file mln/morpho/opening.hh
- *
- * \brief Morphological opening.
- */
+/// \file mln/morpho/opening.hh
+///
+/// Morphological opening.
# include <mln/morpho/includes.hh>
@@ -42,10 +42,9 @@ namespace mln
namespace morpho
{
- /*! Morphological opening.
- *
- * This operator is d_{-B} o e_B.
- */
+ /// Morphological opening.
+ ///
+ /// This operator is d_{-B} o e_B.
template <typename I, typename W>
mln_concrete(I) opening(const Image<I>& input, const Window<W>& win);
diff --git a/milena/mln/morpho/opening_area.hh b/milena/mln/morpho/opening_area.hh
index d400b22..211af4c 100644
--- a/milena/mln/morpho/opening_area.hh
+++ b/milena/mln/morpho/opening_area.hh
@@ -29,10 +29,9 @@
#ifndef MLN_MORPHO_OPENING_AREA_HH
# define MLN_MORPHO_OPENING_AREA_HH
-/*! \file mln/morpho/opening_area.hh
- *
- * \brief Morphological area opening.
- */
+/// \file mln/morpho/opening_area.hh
+///
+/// Morphological area opening.
# include <mln/morpho/opening_attribute.hh>
# include <mln/accu/count.hh>
@@ -45,22 +44,30 @@ namespace mln
{
/// Morphological area opening.
- template <typename I, typename N, typename O>
- void opening_area(const Image<I>& input, const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output);
+ template <typename I, typename N>
+ mln_concrete(I)
+ opening_area(const Image<I>& input, const Neighborhood<N>& nbh,
+ unsigned lambda);
# ifndef MLN_INCLUDE_ONLY
- template <typename I, typename N, typename O>
+ template <typename I, typename N>
inline
- void opening_area(const Image<I>& input, const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output)
+ mln_concrete(I)
+ opening_area(const Image<I>& input, const Neighborhood<N>& nbh,
+ unsigned lambda)
{
- mln_precondition(exact(output).domain() == exact(input).domain());
+ trace::entering("morpho::opening_area");
typedef util::pix<I> pix_t;
- // FIXME: Change sig of opening_attribute!
- opening_attribute< accu::count<pix_t> >(input, nbh, lambda, output);
+
+ mln_precondition(exact(input).has_data());
+
+ mln_concrete(I) output;
+ output= opening_attribute< accu::count<pix_t> >(input, nbh, lambda);
+
+ trace::exiting("morpho::opening_area");
+ return output;
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/morpho/opening_area_on_vertices.hh b/milena/mln/morpho/opening_area_on_vertices.hh
index b8e420e..5b080e7 100644
--- a/milena/mln/morpho/opening_area_on_vertices.hh
+++ b/milena/mln/morpho/opening_area_on_vertices.hh
@@ -48,25 +48,32 @@ namespace mln
/// Morphological area opening on a mln::line_graph_image computing
/// the area in terms of adjacent vertices.
- template <typename P2V, typename G, typename V2P, typename N, typename O>
- void opening_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
- const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output);
+ template <typename P2V, typename G, typename V2P, typename N>
+ pw::image<P2V, p_edges<G, V2P> >
+ opening_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
+ const Neighborhood<N>& nbh);
# ifndef MLN_INCLUDE_ONLY
- template <typename P2V, typename G, typename V2P, typename N, typename O>
- inline
+ template <typename P2V, typename G, typename V2P, typename N>
+ pw::image<P2V, p_edges<G, V2P> >
void opening_area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output)
+ unsigned lambda)
{
- mln_precondition(exact(output).domain() == exact(input).domain());
+ trace::entering("morpho::opening_area_on_vertices");
+
+ mln_precondition(exact(input).has_data());
+
typedef p_edges<G, V2P> pe_t;
typedef accu::count_adjacent_vertices<P2V, pe_t> attribute_t;
- // FIXME: Change sig of opening_attribute!
- opening_attribute<attribute_t>(input, nbh, lambda, output);
+
+ pw::image<P2V, p_edges<G, V2P> > output;
+ output = opening_attribute<attribute_t>(input, nbh, lambda);
+
+ trace::exiting("morpho::opening_area_on_vertices");
+ return output;
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/morpho/opening_attribute.hh b/milena/mln/morpho/opening_attribute.hh
index 7d9daa5..97dc514 100644
--- a/milena/mln/morpho/opening_attribute.hh
+++ b/milena/mln/morpho/opening_attribute.hh
@@ -30,7 +30,8 @@
# define MLN_MORPHO_OPENING_ATTRIBUTE_HH
/// \file mln/morpho/opening_attribute.hh
-/// \brief Morphological attribute opening.
+///
+/// Morphological attribute opening.
# include <mln/morpho/includes.hh>
# include <mln/canvas/morpho/algebraic_union_find.hh>
@@ -46,9 +47,10 @@ namespace mln
/// Morphological attribute opening.
template <typename A,
- typename I, typename N, typename O>
- void opening_attribute(const Image<I>& input, const Neighborhood<N>& nbh,
- mln_result(A) lambda, Image<O>& output);
+ typename I, typename N>
+ mln_concrete(I)
+ opening_attribute(const Image<I>& input, const Neighborhood<N>& nbh,
+ mln_result(A) lambda);
# ifndef MLN_INCLUDE_ONLY
@@ -100,18 +102,26 @@ namespace mln
} // end of namespace mln::morpho::impl
- template <typename A,
- typename I, typename N, typename O>
+ template <typename A, typename I, typename N>
inline
- void opening_attribute(const Image<I>& input,
- const Neighborhood<N>& nbh, mln_result(A) lambda,
- Image<O>& output)
+ mln_concrete(I)
+ opening_attribute(const Image<I>& input,
+ const Neighborhood<N>& nbh, mln_result(A) lambda)
{
+ trace::entering("morpho::opening_attribute");
+
+ mln_precondition(exact(input).has_data());
+
+ mln_concrete(I) output;
+ initialize(output, input);
+
typedef impl::opening_attribute_t<I, A> F;
F f(input, lambda);
canvas::morpho::algebraic_union_find(input, nbh, f, output);
mln_postcondition(output <= input);
+ trace::exiting("morpho::opening_attribute");
+ return output;
}
diff --git a/milena/mln/morpho/opening_height.hh b/milena/mln/morpho/opening_height.hh
index 726547e..36ace8f 100644
--- a/milena/mln/morpho/opening_height.hh
+++ b/milena/mln/morpho/opening_height.hh
@@ -30,7 +30,8 @@
# define MLN_MORPHO_OPENING_HEIGHT_HH
/// \file mln/morpho/opening_height.hh
-/// \brief Morphological height opening.
+///
+/// Morphological height opening.
# include <mln/morpho/opening_attribute.hh>
# include <mln/accu/height.hh>
@@ -43,21 +44,28 @@ namespace mln
{
/// Morphological height opening.
- template <typename I, typename N, typename O>
- void opening_height(const Image<I>& input, const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output);
+ template <typename I, typename N>
+ mln_concrete(I)
+ opening_height(const Image<I>& input, const Neighborhood<N>& nbh,
+ unsigned lambda);
# ifndef MLN_INCLUDE_ONLY
- template <typename I, typename N, typename O>
+ template <typename I, typename N>
inline
- void opening_height(const Image<I>& input, const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output)
+ mln_concrete(I)
+ opening_height(const Image<I>& input, const Neighborhood<N>& nbh,
+ unsigned lambda)
{
- mln_precondition(exact(output).domain() == exact(input).domain());
- // FIXME: Change sig of opening_attribute!
- opening_attribute< accu::height<I> >(input, nbh, lambda, output);
+ trace::entering("morpho::opening_height");
+ mln_precondition(exact(input).has_data());
+
+ mln_concrete(I) output;
+ output = opening_attribute< accu::height<I> >(input, nbh, lambda);
+
+ trace::exiting("morpho::opening_height");
+ return output;
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/morpho/opening_volume.hh b/milena/mln/morpho/opening_volume.hh
index e6ad080..127ae2c 100644
--- a/milena/mln/morpho/opening_volume.hh
+++ b/milena/mln/morpho/opening_volume.hh
@@ -30,7 +30,8 @@
# define MLN_MORPHO_OPENING_VOLUME_HH
/// \file mln/morpho/opening_volume.hh
-/// \brief Morphological volume opening.
+///
+/// Morphological volume opening.
# include <mln/morpho/opening_attribute.hh>
# include <mln/accu/volume.hh>
@@ -43,21 +44,28 @@ namespace mln
{
/// Morphological volume opening.
- template <typename I, typename N, typename O>
- void opening_volume(const Image<I>& input, const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output);
+ template <typename I, typename N>
+ mln_concrete(I)
+ opening_volume(const Image<I>& input, const Neighborhood<N>& nbh,
+ unsigned lambda);
# ifndef MLN_INCLUDE_ONLY
- template <typename I, typename N, typename O>
+ template <typename I, typename N>
inline
- void opening_volume(const Image<I>& input, const Neighborhood<N>& nbh,
- unsigned lambda, Image<O>& output)
+ mln_concrete(I)
+ opening_volume(const Image<I>& input, const Neighborhood<N>& nbh,
+ unsigned lambda)
{
- mln_precondition(exact(output).domain() == exact(input).domain());
- // FIXME: Change sig of opening_attribute!
- opening_attribute< accu::volume<I> >(input, nbh, lambda, output);
+ trace::entering("morpho::opening_volume");
+ mln_precondition(exact(input).has_data());
+
+ mln_concrete(I) output;
+ output = opening_attribute< accu::volume<I> >(input, nbh, lambda);
+
+ trace::exiting("morpho::opening_volume");
+ return output;
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/tests/morpho/opening_area.cc b/milena/tests/morpho/opening_area.cc
index 13a3955..9ae0e56 100644
--- a/milena/tests/morpho/opening_area.cc
+++ b/milena/tests/morpho/opening_area.cc
@@ -25,10 +25,9 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-/*! \file tests/morpho/opening_area.cc
- *
- * \brief Test on mln::morpho::opening_area.
- */
+/// \file tests/morpho/opening_area.cc
+///
+/// Test on mln::morpho::opening_area.
#include <mln/core/image/image2d.hh>
#include <mln/value/int_u8.hh>
@@ -52,6 +51,6 @@ int main()
io::pgm::load(lena, MLN_IMG_DIR "/lena.pgm");
image2d<int_u8> out(lena.domain());
- morpho::opening_area(lena, c4(), 510, out);
+ out = morpho::opening_area(lena, c4(), 510);
io::pgm::save(out, "out.pgm");
}
diff --git a/milena/tests/morpho/opening_height.cc b/milena/tests/morpho/opening_height.cc
index c834fea..8080425 100644
--- a/milena/tests/morpho/opening_height.cc
+++ b/milena/tests/morpho/opening_height.cc
@@ -26,7 +26,8 @@
// Public License.
/// \file tests/morpho/opening_height.cc
-/// \brief Test on mln::morpho::opening_height.
+///
+/// Test on mln::morpho::opening_height.
#include <mln/core/image/image2d.hh>
#include <mln/value/int_u8.hh>
@@ -48,6 +49,6 @@ int main()
io::pgm::load(lena, MLN_IMG_DIR "/lena.pgm");
image2d<int_u8> out(lena.domain());
- morpho::opening_height(lena, c4(), 20, out);
+ out = morpho::opening_height(lena, c4(), 20);
io::pgm::save(out, "out.pgm");
}
diff --git a/milena/tests/morpho/opening_volume.cc b/milena/tests/morpho/opening_volume.cc
index 75d03e0..0ccae72 100644
--- a/milena/tests/morpho/opening_volume.cc
+++ b/milena/tests/morpho/opening_volume.cc
@@ -26,7 +26,8 @@
// Public License.
/// \file tests/morpho/opening_volume.cc
-/// \brief Test on mln::morpho::opening_volume.
+///
+/// Test on mln::morpho::opening_volume.
#include <mln/core/image/image2d.hh>
#include <mln/value/int_u8.hh>
@@ -48,6 +49,6 @@ int main()
io::pgm::load(lena, MLN_IMG_DIR "/lena.pgm");
image2d<int_u8> out(lena.domain());
- morpho::opening_volume(lena, c4(), 10000, out);
+ out = morpho::opening_volume(lena, c4(), 10000);
io::pgm::save(out, "out.pgm");
}
--
1.5.6.5
1
0
16 Dec '08
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Augment the reference code to depict object labeling err.
* geraud/tufa_2008/steps.2.cc: Augment.
(label): Wrong object labeling image.
As a conclusion, labeling cannot come from the max label
propagated by the parent relationship.
steps.2.cc | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 81 insertions(+), 7 deletions(-)
Index: geraud/tufa_2008/steps.2.cc
--- geraud/tufa_2008/steps.2.cc (revision 3051)
+++ geraud/tufa_2008/steps.2.cc (working copy)
@@ -76,8 +76,14 @@
template <typename I, typename A, typename N>
- void run_run(const I& f, const A& a, const N& nbh)
+ mln_ch_value(I, util::set<unsigned>)
+ compute_labels(const I& f, const A& a, const N& nbh,
+ unsigned n_objects,
+ bool echo = false)
{
+ if (echo)
+ debug::println("f =", f);
+
typedef p_array<mln_psite(I)> S;
S s = level::sort_psites_increasing(a);
// s maps increasing attributes.
@@ -87,7 +93,6 @@
mln_ch_value(I, util::set<unsigned>) labels;
unsigned nbassins, current_n;
-
// Initialization.
{
mln_piter(A) p(f.domain());
@@ -104,6 +109,15 @@
// labels
mln_ch_value(I, unsigned) regmin = labeling::regional_minima(a, nbh,
nbassins);
+ if (n_objects >= nbassins)
+ {
+ std::cerr << "The number of expected objects is higher than the number of regional minima!" << std::endl;
+ std::abort();
+ }
+
+ if (echo)
+ debug::println("regmin(f) =", regmin);
+
initialize(labels, f);
for_all(p)
if (regmin(p) != 0) // p in a reg min of the attribute image
@@ -141,6 +155,27 @@
{
labels(p).insert(labels(r));
--current_n;
+ if (current_n == n_objects && echo)
+ {
+ // Filtering.
+ mln_concrete(I) g;
+ initialize(g, f);
+ mln_bkd_piter(S) p(s);
+ for_all(p)
+ if (par(p) == p)
+ g(p) = f(p);
+ else
+ g(p) = g(par(p));
+ debug::println("g =", g);
+
+ // Testing.
+ unsigned n_result;
+ mln_ch_value(I, unsigned) g_regmin;
+ g_regmin = labeling::regional_minima(g, nbh, n_result);
+ debug::println("regmin(g) =", g_regmin);
+
+ mln_invariant(n_result == n_objects);
+ }
}
}
}
@@ -148,27 +183,48 @@
}
}
- std::cout << std::endl;
- std::cout << "end = " << current_n << std::endl;
+ mln_invariant(current_n == 1); // All labels are merged into a single set.
+
+ return labels;
}
} // mln
+void usage(char* argv[])
+{
+ std::cerr << "usage: " << argv[0] << " input.pgm n echo" << std::endl;
+ std::cerr << "n: number of expected objects (n > 0)" << std::endl;
+ std::cerr << "echo: 0 (silent) or 1 (verbose)" << std::endl;
+ std::cerr << "merge using sets of labels from regional minima and save the highest label image" << std::endl;
+ std::abort();
+}
-int main(int, char* argv[])
+int main(int argc, char* argv[])
{
using namespace mln;
using value::int_u8;
- int_u8 n;
+ if (argc != 4)
+ usage(argv);
typedef image2d<int_u8> I;
I f;
+ // input image
io::pgm::load(f, argv[1]);
+ // n
+ int n = std::atoi(argv[2]);
+ if (n <= 0)
+ usage(argv);
+
+ // echo
+ int echo = std::atoi(argv[3]);
+ if (echo != 0 && echo != 1)
+ usage(argv);
+
typedef p_array<point2d> S;
S s = level::sort_psites_decreasing(f);
@@ -179,6 +235,24 @@
accu::count< util::pix<I> > attr;
image2d<unsigned> a = morpho::tree::compute_attribute_image(attr, t);
- run_run(f, a, c4());
+
+
+ image2d< util::set<unsigned> > labels = compute_labels(f, a, c4(), n, echo);
+ if (echo)
+ debug::println("labels =", labels);
+
+ {
+ image2d<unsigned> lab(f.domain());
+ mln_piter_(I) p(f.domain());
+ for_all(p)
+ {
+ mln_assertion(! labels(p).is_empty());
+ lab(p) = labels(p).last_element();
+ }
+ if (echo)
+ debug::println("max of labels (clearly NOT the objects image!) =", lab);
+
+ // We can observe that we do NOT get objects this way...
+ }
}
1
0
URL: https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
ChangeLog:
2008-12-15 Matthieu Garrigues <garrigues(a)lrde.epita.fr>
Finalize reconstructions.
Add the concept of "escape value".
* garrigues/union_find/canvas/reconstruction_on_function.hh: .
* garrigues/union_find/canvas/self_dual_reconstruction.hh: .
* garrigues/union_find/reconstructions_on_function.hh: .
* garrigues/union_find/leveling.cc: Rename as...
* garrigues/union_find/self_dual_reconstruction.cc: ...this.
* garrigues/union_find/self_dual_reconstruction.hh: .
---
canvas/reconstruction_on_function.hh | 4 +-
canvas/self_dual_reconstruction.hh | 13 ++++---
reconstructions_on_function.hh | 30 ++++++++++++----
self_dual_reconstruction.cc | 62 +++++++++++++++++++++++++++++++++++
self_dual_reconstruction.hh | 51 ++++++++++++++++++----------
5 files changed, 126 insertions(+), 34 deletions(-)
Index: trunk/milena/sandbox/garrigues/union_find/leveling.cc (deleted)
===================================================================
Index: trunk/milena/sandbox/garrigues/union_find/reconstructions_on_function.hh
===================================================================
--- trunk/milena/sandbox/garrigues/union_find/reconstructions_on_function.hh (revision 3050)
+++ trunk/milena/sandbox/garrigues/union_find/reconstructions_on_function.hh (revision 3051)
@@ -55,27 +55,32 @@
typedef I_ I;
typedef J_ J;
typedef mln_site(I) P;
+ typedef mln_value(I) V;
typedef p_array<mln_psite(I)> S;
reconstruction_on_function_by_dilation_t (const I& marker, const J& mask, mln_concrete(I)& output)
: marker(marker),
mask(mask),
output(output),
- s(level::sort_psites_decreasing(mask))
+ s(level::sort_psites_decreasing(mask)),
+ escape_value(mln_max(V))
{
}
- bool is_active(const P& p) { return output(p) <= mask(p); }
+ bool is_active(const P& r, const P& p) { return output(r) <= mask(p); }
+ void escape(const P& p) { output(p) = escape_value; }
void merge(const P& r, const P& p)
{
if (output(r) > output(p))
output(p) = output(r);
}
+
const I& marker; // F
const J& mask; // G
mln_concrete(I)& output; // O
S s;
+ const V escape_value;
};
@@ -85,23 +90,31 @@
typedef I_ I;
typedef J_ J;
typedef mln_site(I) P;
+ typedef mln_value(I) V;
typedef p_array<mln_psite(I)> S;
reconstruction_on_function_by_erosion_t (const I& marker, const J& mask, mln_concrete(I)& output)
: marker(marker),
mask(mask),
output(output),
- s(level::sort_psites_increasing(marker))
+ s(level::sort_psites_increasing(mask)),
+ escape_value(mln_min(V))
{
}
- bool is_active(const P& p) { return mask(p) <= output(p); }
- void merge(const P& r, const P& p) { output(p) = math::min(output(p), output(r)); }
+ bool is_active(const P& r, const P& p) { return output(r) >= mask(p); }
+ void escape(const P& p) { output(p) = escape_value; }
+ void merge(const P& r, const P& p)
+ {
+ if (output(r) < output(p))
+ output(p) = output(r);
+ }
const I& marker; // F
const J& mask; // G
mln_concrete(I)& output; // O
S s;
+ const V escape_value;
};
@@ -131,8 +144,8 @@
F f(marker, mask, output);
canvas::morpho::reconstruction_on_function(nbh, f);
-// mln_postcondition(marker <= output);
-// mln_postcondition(output <= mask);
+ mln_postcondition(marker <= output);
+ mln_postcondition(output <= mask);
trace::exiting("morpho::reconstruction_on_function_by_dilation");
return output;
@@ -163,7 +176,8 @@
F f(marker, mask, output);
canvas::morpho::reconstruction_on_function(nbh, f);
- mln_postcondition(marker >= output && output >= mask);
+ mln_postcondition(marker >= output);
+ mln_postcondition(output >= mask);
trace::exiting("morpho::reconstruction_on_function_by_erosion");
return output;
Index: trunk/milena/sandbox/garrigues/union_find/self_dual_reconstruction.cc
===================================================================
--- trunk/milena/sandbox/garrigues/union_find/self_dual_reconstruction.cc (revision 0)
+++ trunk/milena/sandbox/garrigues/union_find/self_dual_reconstruction.cc (revision 3051)
@@ -0,0 +1,62 @@
+// Copyright (C) 2007, 2008 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.
+
+# include <mln/core/alias/neighb2d.hh>
+# include <mln/core/image/image2d.hh>
+# include <mln/value/int_u8.hh>
+# include <mln/io/pgm/load.hh>
+# include <mln/io/pgm/save.hh>
+# include <mln/linear/gaussian.hh>
+
+# include "self_dual_reconstruction.hh"
+
+void usage(char** argv)
+{
+ std::cerr << "Usage: " << argv[0] << " input.pgm blur" << std::endl;
+ exit(1);
+}
+
+int main(int argc, char** argv)
+{
+ using namespace mln;
+
+ if (argc < 2)
+ usage(argv);
+
+ typedef image2d<value::int_u8> I;
+ typedef mln_value_(I) V;
+
+ I input = io::pgm::load<V>(argv[1]);
+ I output;
+
+ output = linear::gaussian(input, atoi(argv[2]));
+ io::pgm::save(output, "gaussian.pgm");
+
+ output = self_dual_reconstruction(output, input, c8());
+ io::pgm::save(output, "reconstruction.pgm");
+}
Index: trunk/milena/sandbox/garrigues/union_find/canvas/reconstruction_on_function.hh
===================================================================
--- trunk/milena/sandbox/garrigues/union_find/canvas/reconstruction_on_function.hh (revision 3050)
+++ trunk/milena/sandbox/garrigues/union_find/canvas/reconstruction_on_function.hh (revision 3051)
@@ -147,7 +147,7 @@
f.merge(r, p);
}
else
- f.output(p) = mln_max(V);
+ f.escape(p);
}
deja_vu(p) = true;
@@ -161,7 +161,7 @@
{
if (parent(p) == p) // if p is a root.
{
- if (f.output(p) == mln_max(V))
+ if (f.output(p) == f.escape_value)
f.output(p) = f.mask(p);
}
else
Index: trunk/milena/sandbox/garrigues/union_find/canvas/self_dual_reconstruction.hh
===================================================================
--- trunk/milena/sandbox/garrigues/union_find/canvas/self_dual_reconstruction.hh (revision 3050)
+++ trunk/milena/sandbox/garrigues/union_find/canvas/self_dual_reconstruction.hh (revision 3051)
@@ -144,6 +144,7 @@
for_all(n) if (f.mask.domain().has(n) && deja_vu(n))
{
+ mln_assertion(f.is_in_d1(n));
//do_union(n, p);
P r = find_root(parent, n);
if (r != p)
@@ -153,13 +154,15 @@
f.d1_merge(r, p);
}
else
- f.output(p) = mln_max(V);
+ f.d1_escape(p);
}
deja_vu(p) = true;
}
}
+ mln::level::fill(deja_vu, false);
+
// Body of D2.
{
mln_fwd_piter(S) p(f.d2_s);
@@ -171,6 +174,7 @@
for_all(n) if (f.mask.domain().has(n) && deja_vu(n))
{
+ mln_assertion(f.is_in_d2(n));
//do_union(n, p);
P r = find_root(parent, n);
if (r != p)
@@ -180,8 +184,7 @@
f.d2_merge(r, p);
}
else
- f.output(p) = mln_max(V);
-
+ f.d2_escape(p);
}
deja_vu(p) = true;
@@ -197,7 +200,7 @@
{
if (parent(p) == p) // if p is a root.
{
- if (f.output(p) == mln_max(V))
+ if (f.output(p) == f.d1_escape_value)
f.output(p) = f.mask(p);
}
else
@@ -211,7 +214,7 @@
{
if (parent(p) == p) // if p is a root.
{
- if (f.output(p) == mln_max(V))
+ if (f.output(p) == f.d2_escape_value)
f.output(p) = f.mask(p);
}
else
Index: trunk/milena/sandbox/garrigues/union_find/self_dual_reconstruction.hh
===================================================================
--- trunk/milena/sandbox/garrigues/union_find/self_dual_reconstruction.hh (revision 3050)
+++ trunk/milena/sandbox/garrigues/union_find/self_dual_reconstruction.hh (revision 3051)
@@ -55,55 +55,68 @@
template <typename I_, typename J_>
struct self_dual_reconstruction_t
{
- // d1 : marker(p) < mask(p)
- // d2 : marker(p) > mask(p)
+ // d1 : marker(p) < mask(p) -> dilation
+ // d2 : marker(p) > mask(p) -> erosion
typedef I_ I;
typedef J_ J;
typedef mln_site(I) P;
+ typedef mln_value(I) V;
typedef p_array<mln_psite(I)> S;
self_dual_reconstruction_t (const I& marker, const J& mask, mln_concrete(I)& output)
: marker(marker),
mask(mask),
- output(output)
- // d1_s(level::sort_psites_increasing(mask | (pw::value(marker) > pw::value(mask)))),
- // d2_s(level::sort_psites_decreasing(mask | (pw::value(marker) > pw::value(mask))))
- {
- S d1, d2;
- mln_piter(I) p(mask.domain());
- for_all(p)
- {
- if (is_in_d1(p))
- d1_s.append(p);
- else
- if (is_in_d2(p))
- d2_s.append(p);
+ output(output),
+ d1_s(level::sort_psites_decreasing(mask | (pw::value(marker) < pw::value(mask)))),
+ d2_s(level::sort_psites_increasing(mask | (pw::value(marker) > pw::value(mask)))),
+ d1_escape_value(mln_max(V)),
+ d2_escape_value(mln_min(V))
+ {
}
+ bool is_in_d1(const P& p) { return marker(p) < mask(p); }
+ bool is_in_d2(const P& p) { return marker(p) > mask(p); }
+
+
+
+ bool d1_is_active(const P& r, const P& p)
+ {
+ mln_assertion(is_in_d1(r) && is_in_d1(p));
+ return output(r) <= mask(p);
}
- bool is_in_d1(const P& p) { return marker(p) < mask(p); }
- bool d1_is_active(const P& r, const P& p) { return output(r) <= mask(p); }
void d1_merge(const P& r, const P& p)
{
+ mln_assertion(is_in_d1(r) && is_in_d1(p));
if (output(r) > output(p))
output(p) = output(r);
}
- bool is_in_d2(const P& p) { return marker(p) > mask(p); }
- bool d2_is_active(const P& r, const P& p) { return output(r) <= mask(p); }
+ void d1_escape(const P& p) { output(p) = d1_escape_value; }
+
+
+ bool d2_is_active(const P& r, const P& p)
+ {
+ mln_assertion(is_in_d2(r) && is_in_d2(p));
+ return output(r) >= mask(p);
+ }
+
void d2_merge(const P& r, const P& p)
{
+ mln_assertion(is_in_d2(r) && is_in_d2(p));
if (output(r) < output(p))
output(p) = output(r);
}
+ void d2_escape(const P& p) { output(p) = d2_escape_value; }
+
const I& marker; // F
const J& mask; // G
mln_concrete(I)& output; // O
S d1_s, d2_s;
+ const V d1_escape_value, d2_escape_value;
};
} // end of namespace mln::impl.
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Alexandre Abraham <abraham(a)lrde.epita.fr>
Add Autarkical Leveling, move files ot trunk.
* abraham/tests/morpho/levelings.cc: New
Test for autorkical leveling.
* abraham/tests/morpho/red_erosion.cc: New
Make red erosion with fun_image (not working yet).
* abraham/tests/morpho/red_erosion3.cc: New
Make red erosion with mixin.
* abraham/tests/fun/meta/red.cc: Update.
* abraham/tests/core/image/fun_image_const.cc: New.
* abraham/tests/core/image/fun_image_norm.cc: New.
* abraham/tests/core/image/fun_image_v2v.cc: New.
* abraham/tests/core/image/fun_image_v2w2v.cc: New.
* abraham/tests/value/mixin.cc: Update.
* abraham/mln/morpho/autarkical_leveling.hh: New
Autarkical leveling (see Golima).
* abraham/mln/morpho/topo_wst.hh: Update.
* abraham/mln/morpho/vector_median.hh: New
Morphological operator needed for autarkical leveliing.
* abraham/mln/core/image/thru.hh: Move to trunk under the
name fun_image.hh.
* abraham/mln/core/image/violent_cast_image.hh: Move to trunk.
* abraham/mln/core/concept/function.hh: Move to trunk.
* abraham/mln/fun/v2w2v: Move to trunk.
* abraham/mln/fun/v2w2v/cos.hh: Move to trunk.
* abraham/mln/fun/meta: Move to trunk.
* abraham/mln/fun/meta/hue.hh: Move to trunk.
* abraham/mln/fun/meta/inty.hh: Move to trunk.
* abraham/mln/fun/meta/sat.hh: Move to trunk.
* abraham/mln/fun/meta/to_enc.hh: Move to trunk.
* abraham/mln/fun/meta/red.hh: Move to trunk.
* abraham/mln/fun/v2w_w2v: Move to trunk.
* abraham/mln/fun/v2w_w2v/norm.hh: Move to trunk.
* abraham/mln/value/mixin.hh: Move to trunk.
* abraham/mln/value/op_less.hh: Move to trunk.
mln/core/concept/function.hh | 526 -----------------------------------
mln/core/image/thru.hh | 193 ------------
mln/core/image/violent_cast_image.hh | 180 -----------
mln/fun/meta/hue.hh | 64 ----
mln/fun/meta/inty.hh | 65 ----
mln/fun/meta/red.hh | 44 --
mln/fun/meta/sat.hh | 64 ----
mln/fun/meta/to_enc.hh | 57 ---
mln/fun/v2w2v/cos.hh | 95 ------
mln/fun/v2w_w2v/norm.hh | 155 ----------
mln/morpho/autarkical_leveling.hh | 290 +++++++++++++++++++
mln/morpho/topo_wst.hh | 24 -
mln/morpho/vector_median.hh | 129 ++++++++
mln/value/mixin.hh | 156 ----------
mln/value/op_less.hh | 46 ---
tests/core/image/fun_image_const.cc | 64 ++++
tests/core/image/fun_image_norm.cc | 63 ++++
tests/core/image/fun_image_v2v.cc | 56 +++
tests/core/image/fun_image_v2w2v.cc | 64 ++++
tests/fun/meta/red.cc | 4
tests/morpho/levelings.cc | 66 ++++
tests/morpho/red_erosion.cc | 41 ++
tests/morpho/red_erosion3.cc | 65 ++++
tests/value/mixin.cc | 14
24 files changed, 860 insertions(+), 1665 deletions(-)
Index: abraham/tests/morpho/levelings.cc
--- abraham/tests/morpho/levelings.cc (revision 0)
+++ abraham/tests/morpho/levelings.cc (revision 0)
@@ -0,0 +1,66 @@
+#include <mln/core/image/image2d.hh>
+#include <mln/io/ppm/save.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/value/int_u8.hh>
+#include <mln/morpho/vector_median.hh>
+#include <mln/morpho/autarkical_leveling.hh>
+#include <mln/fun/meta/red.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/mixin.hh>
+#include <mln/core/image/fun_image.hh>
+#include <mln/core/image/violent_cast_image.hh>
+
+namespace mln
+{
+ struct red_only
+ {
+ template <unsigned n>
+ value::rgb<n> max_() const
+ {
+ return value::rgb<n>(mln_max(typename value::rgb<n>::red_t), 0, 0);
+ }
+
+ value::rgb8 max () const
+ {
+ return value::rgb8(255, 0, 0);
+ }
+
+ template <unsigned n>
+ bool less(const value::rgb<n>& a, const value::rgb<n>& b)
+ {
+ return a.red() < b.red();
+ }
+ };
+
+}
+
+
+int main (int argc, const char * argv[])
+{
+ using namespace mln;
+ using namespace value;
+
+ if (argc < 2) {
+ std::cerr << "usage: " << argv[0] << " in.pgm [other_files.pgm]" << std::endl;
+ return 1;
+ }
+
+ typedef value::mixin<value::rgb8,red_only> Rgb;
+
+ for (int i = 1; i < argc; ++i)
+ {
+ border::thickness = 2;
+
+ image2d<rgb8> ima;
+ io::ppm::load(ima, argv[i]);
+
+ std::string name(argv[i]);
+ name.erase(name.length() - 4);
+
+ win::rectangle2d rect(8, 8);
+
+ io::ppm::save(morpho::autarkical_leveling(ima, morpho::vector_median(ima, rect), rect), name.append("_autarkical_leveled.ppm"));
+
+ }
+ return 0;
+}
Index: abraham/tests/morpho/red_erosion.cc
--- abraham/tests/morpho/red_erosion.cc (revision 0)
+++ abraham/tests/morpho/red_erosion.cc (revision 0)
@@ -0,0 +1,41 @@
+#include <mln/core/image/image2d.hh>
+#include <mln/io/ppm/save.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/value/int_u8.hh>
+#include <mln/morpho/erosion.hh>
+#include <mln/fun/meta/red.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/core/image/fun_image.hh>
+
+int main (int argc, const char * argv[])
+{
+ using namespace mln;
+ using namespace value;
+
+ typedef image2d<int_u8> image2dint;
+
+ if (argc < 2) {
+ std::cerr << "usage: " << argv[0] << " in.pgm [other_files.pgm]" << std::endl;
+ return 1;
+ }
+
+ for (int i = 1; i < argc; ++i)
+ {
+ border::thickness = 2;
+
+ image2d<rgb8> ima;
+ io::ppm::load(ima, argv[i]);
+
+ mln::fun_image<meta::red <rgb8>, image2d<rgb8> > red(ima);
+
+ std::string name(argv[i]);
+ name.erase(name.length() - 4);
+
+ win::rectangle2d rect(5, 5);
+ morpho::erosion(red, rect);
+
+ io::ppm::save(ima, name.append("_red_eroded.pgm"));
+
+ }
+ return 0;
+}
Index: abraham/tests/morpho/red_erosion3.cc
--- abraham/tests/morpho/red_erosion3.cc (revision 0)
+++ abraham/tests/morpho/red_erosion3.cc (revision 0)
@@ -0,0 +1,65 @@
+#include <mln/core/image/image2d.hh>
+#include <mln/io/ppm/save.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/value/int_u8.hh>
+#include <mln/morpho/erosion.hh>
+#include <mln/fun/meta/red.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/mixin.hh>
+#include <mln/core/image/fun_image.hh>
+#include <mln/core/image/violent_cast_image.hh>
+
+namespace mln
+{
+ struct red_only
+ {
+ template <unsigned n>
+ value::rgb<n> max_() const
+ {
+ return value::rgb<n>(mln_max(typename value::rgb<n>::red_t), 0, 0);
+ }
+
+ value::rgb8 max () const
+ {
+ return value::rgb8(255, 0, 0);
+ }
+
+ template <unsigned n>
+ bool less(const value::rgb<n>& a, const value::rgb<n>& b)
+ {
+ return a.red() < b.red();
+ }
+ };
+
+}
+
+
+int main (int argc, const char * argv[])
+{
+ using namespace mln;
+ using namespace value;
+
+ if (argc < 2) {
+ std::cerr << "usage: " << argv[0] << " in.pgm [other_files.pgm]" << std::endl;
+ return 1;
+ }
+
+ typedef value::mixin<value::rgb8,red_only> Rgb;
+
+ for (int i = 1; i < argc; ++i)
+ {
+ border::thickness = 2;
+
+ image2d<rgb8> ima;
+ io::ppm::load(ima, argv[i]);
+
+ std::string name(argv[i]);
+ name.erase(name.length() - 4);
+
+ win::rectangle2d rect(5, 5);
+
+ io::ppm::save(violent_cast_image_<rgb8>(morpho::erosion(violent_cast_image_<Rgb>(ima), rect)), name.append("_red_eroded.pgm"));
+
+ }
+ return 0;
+}
Index: abraham/tests/fun/meta/red.cc
--- abraham/tests/fun/meta/red.cc (revision 3049)
+++ abraham/tests/fun/meta/red.cc (working copy)
@@ -1,6 +1,6 @@
#include <mln/fun/meta/red.hh>
#include <mln/core/image/image2d.hh>
-#include <mln/core/image/thru.hh>
+#include <mln/core/image/fun_image.hh>
namespace mln
{
@@ -52,7 +52,7 @@
c.r = 1;
i(mln::point2d(2,1)) = c;
- mln::thru<mln::meta::red <C>, mln::image2d<C> > out(i);
+ mln::fun_image<mln::meta::red <C>, mln::image2d<C> > out(i);
mln_piter_(mln::image2d<C>) p(i.domain());
Index: abraham/tests/core/image/fun_image_const.cc
--- abraham/tests/core/image/fun_image_const.cc (revision 0)
+++ abraham/tests/core/image/fun_image_const.cc (revision 0)
@@ -0,0 +1,64 @@
+// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+//
+// 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.
+
+# include <mln/core/image/image2d.hh>
+# include <mln/core/image/fun_image.hh>
+# include <mln/fun/v2w2v/cos.hh>
+
+int main ()
+{
+
+ using namespace mln;
+
+ typedef const image2d<double> I;
+
+ double vs[6][5] = {
+
+ { 12, -3, 8, -4, 6 },
+ { -2, 22, -1, 45, -1 },
+ { -1, -4, -4, -4, -1 },
+ { -1, -4, -3, -4, -1 },
+ { -1, -4, -5, -3, -1 },
+ { -1, -1, -1, -1, -1 }
+
+ };
+
+ I ima(make::image(vs));
+ fun_image<mln::fun::v2w2v::cos<double>, I > out(ima);
+
+ double i = 0;
+
+ box_fwd_piter_<point2d> p(ima.domain());
+ for_all (p)
+ {
+ out(p) = i;
+ i += 1./40.;
+ }
+
+ for_all (p)
+ std::cout << out(p) << std::endl;
+}
Index: abraham/tests/core/image/fun_image_norm.cc
--- abraham/tests/core/image/fun_image_norm.cc (revision 0)
+++ abraham/tests/core/image/fun_image_norm.cc (revision 0)
@@ -0,0 +1,63 @@
+// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+//
+// 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.
+
+# include <mln/core/image/image2d.hh>
+# include <mln/core/image/fun_image.hh>
+# include <mln/fun/v2w_w2v/norm.hh>
+# include <mln/algebra/vec.hh>
+# include <mln/level/fill.hh>
+# include <mln/core/image/violent_cast_image.hh>
+
+#include <mln/morpho/erosion.hh>
+
+int main ()
+{
+
+ using namespace mln;
+ typedef image2d<algebra::vec<2, double> > I;
+
+ I ima(3, 2, 0);
+
+ ima(point2d(0,0)).set (1, 1);
+ ima(point2d(0,1)).set (1, 3);
+ ima(point2d(1,0)).set (4, 4);
+ ima(point2d(1,1)).set (-1, 3);
+ ima(point2d(2,0)).set (23, 23);
+ ima(point2d(2,1)).set (3, 1);
+
+ fun_image<mln::fun::v2w_w2v::l1_norm<algebra::vec<2, double>, double>, I > out(ima);
+ // level::fill(out, 1);
+
+ win::rectangle2d rect(3, 3);
+ morpho::erosion(out, rect);
+
+
+ box_fwd_piter_<point2d> p(ima.domain());
+
+ for_all (p)
+ std::cout << ima(p) << std::endl;
+}
Index: abraham/tests/core/image/fun_image_v2v.cc
--- abraham/tests/core/image/fun_image_v2v.cc (revision 0)
+++ abraham/tests/core/image/fun_image_v2v.cc (revision 0)
@@ -0,0 +1,56 @@
+// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+//
+// 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.
+
+# include <mln/core/image/image2d.hh>
+# include <mln/core/image/fun_image.hh>
+# include <mln/fun/v2v/abs.hh>
+
+int main ()
+{
+
+ using namespace mln;
+
+ typedef image2d<int> I;
+
+ int vs[6][5] = {
+
+ { -3, -3, -4, -4, -4 },
+ { -2, -1, -1, -1, -1 },
+ { -1, -4, -4, -4, -1 },
+ { -1, -4, -3, -4, -1 },
+ { -1, -4, -5, -3, -1 },
+ { -1, -1, -1, -1, -1 }
+
+ };
+
+ image2d<int> ima(make::image(vs));
+ fun_image<mln::fun::v2v::abs<int>, image2d<int> > out(ima);
+
+ box_fwd_piter_<point2d> p(ima.domain());
+ for_all (p)
+ mln_assertion (out(p) >= 0);
+}
Index: abraham/tests/core/image/fun_image_v2w2v.cc
--- abraham/tests/core/image/fun_image_v2w2v.cc (revision 0)
+++ abraham/tests/core/image/fun_image_v2w2v.cc (revision 0)
@@ -0,0 +1,64 @@
+// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+//
+// 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.
+
+# include <mln/core/image/image2d.hh>
+# include <mln/core/image/fun_image.hh>
+# include <mln/fun/v2w2v/cos.hh>
+
+int main ()
+{
+
+ using namespace mln;
+
+ typedef image2d<double> I;
+
+ double vs[6][5] = {
+
+ { 12, -3, 8, -4, 6 },
+ { -2, 22, -1, 45, -1 },
+ { -1, -4, -4, -4, -1 },
+ { -1, -4, -3, -4, -1 },
+ { -1, -4, -5, -3, -1 },
+ { -1, -1, -1, -1, -1 }
+
+ };
+
+ image2d<double> ima(make::image(vs));
+ fun_image<mln::fun::v2w2v::cos<double>, image2d<double> > out(ima);
+
+ double i = 0;
+
+ box_fwd_piter_<point2d> p(ima.domain());
+ for_all (p)
+ {
+ out(p) = i;
+ i += 1./40.;
+ }
+
+ for_all (p)
+ std::cout << out(p) << std::endl;
+}
Index: abraham/tests/value/mixin.cc
--- abraham/tests/value/mixin.cc (revision 3049)
+++ abraham/tests/value/mixin.cc (working copy)
@@ -83,14 +83,16 @@
value::rgb8 r(12, 13, 14);
value::rgb8 s(13, 14, 15);
+ value::rgb8 t(13, 20, 17);
- typedef value::mixin<value::rgb8,red_only> Rgb;
+ std::cout << mln_max(value::rgb8::red_t) << std::endl;
- std::cout << ( my_violent_cast<Rgb>(r) < my_violent_cast<Rgb>(s) ) << std::endl;
+ typedef value::mixin<value::rgb8,red_only> Rgb;
+ assert(my_violent_cast<Rgb>(r) < my_violent_cast<Rgb>(s));
+ assert(my_violent_cast<Rgb>(s) > my_violent_cast<Rgb>(r));
+ assert(my_violent_cast<Rgb>(s) == my_violent_cast<Rgb>(t));
+ assert(my_violent_cast<Rgb>(s) >= my_violent_cast<Rgb>(t));
-// std::cout
-// << ( *(value::mixin<value::rgb8, value::op_less>*)(void*) &r <
-// *(value::mixin<value::rgb8, value::op_less>*)(void*) &s )
-// << std::endl;
+ return 0;
}
Index: abraham/mln/morpho/autarkical_leveling.hh
--- abraham/mln/morpho/autarkical_leveling.hh (revision 0)
+++ abraham/mln/morpho/autarkical_leveling.hh (revision 0)
@@ -0,0 +1,145 @@
+// Copyright (C) 2007, 2008 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_MORPHO_AUTARKICAL_LEVELING_HH
+# define MLN_MORPHO_AUTARKICAL_LEVELING_HH
+
+/// \file mln/morpho/autarkical_leveling.hh
+///
+/// Morphological autarkical leveling filter.
+///
+/// \todo The overloads are hidden and I don't know why!
+
+# include <mln/morpho/includes.hh>
+# include <mln/morpho/general.hh>
+# include <mln/accu/land.hh>
+# include <mln/accu/land_basic.hh>
+# include <mln/accu/min.hh>
+# include <mln/accu/min_h.hh>
+# include <mln/norm/l2.hh>
+
+namespace mln
+{
+
+ namespace morpho
+ {
+
+ /// Morphological autarkical_leveling.
+ template <typename I, typename W>
+ mln_concrete(I)
+ autarkical_leveling(const Image<I>& input, const Image<I>& marker, const Window<W>& win);
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ namespace impl
+ {
+
+ // On set with centered window (overloads).
+
+ template <typename I, typename W>
+ mln_concrete(I)
+ autarkical_leveling(const Image<I>& input_, const Image<I>& marker_, const Window<W>& win_)
+ {
+ trace::entering("morpho::impl::general_on_set_centered__autarkical_leveling");
+
+ typedef mln_concrete(I) O;
+ const I& input = exact(input_);
+ const I& marker = exact(marker_);
+ const W& win = exact(win_);
+
+ O output;
+ output = clone(input);
+
+ bool modification = true;
+
+ mln_piter(I) p(input.domain());
+ mln_qiter(W) q(win, p);
+ mln_qiter(W) r(win, p);
+ for_all(p)
+ {
+ mln_psite(W) v;
+ double min_dist = std::numeric_limits<double>::infinity();
+ bool same_side = true;
+
+ for_all(q) if (input.domain().has(q))
+ {
+ for_all(r) if (input.domain().has(r) && q!=r)
+ if ((marker(q) - input(p)) * (marker(r) - input(p)) < 0)
+ {
+ same_side = false;
+ break;
+ }
+
+ if (!same_side)
+ break;
+
+ double dist = norm::l2(input(p) - marker(q));
+ if (dist < min_dist)
+ {
+ min_dist = dist;
+ v = q;
+ }
+ }
+ if (same_side)
+ output(p) = marker(v);
+ else
+ output(p) = input(p);
+ }
+
+ trace::exiting("morpho::impl::general_on_set_centered__autarkical_leveling");
+ return output;
+ }
+
+
+ } // end of namespace morpho::impl
+
+
+ template <typename I, typename W>
+ inline
+ mln_concrete(I)
+ autarkical_leveling(const Image<I>& input, const Image<I>& marker, const Window<W>& win)
+ {
+ trace::entering("morpho::autarkical_leveling");
+ mln_precondition(exact(input).has_data());
+ mln_precondition(! exact(win).is_empty());
+
+ mln_concrete(I) output = impl::autarkical_leveling(input, marker, win);
+
+ trace::exiting("morpho::autarkical_leveling");
+ return output;
+ }
+
+# endif // ! MLN_INCLUDE_ONLY
+
+ } // end of namespace mln::morpho
+
+} // end of namespace mln
+
+
+#endif // ! MLN_MORPHO_AUTARKICAL_LEVELING_HH
Index: abraham/mln/morpho/topo_wst.hh
Index: abraham/mln/morpho/vector_median.hh
--- abraham/mln/morpho/vector_median.hh (revision 0)
+++ abraham/mln/morpho/vector_median.hh (revision 0)
@@ -0,0 +1,129 @@
+// Copyright (C) 2007, 2008 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_MORPHO_VECTOR_MEDIAN_HH
+# define MLN_MORPHO_VECTOR_MEDIAN_HH
+
+/// \file mln/morpho/vector_median.hh
+///
+/// Morphological vector median filter.
+///
+/// \todo The overloads are hidden and I don't know why!
+
+# include <mln/morpho/includes.hh>
+# include <mln/morpho/general.hh>
+# include <mln/accu/land.hh>
+# include <mln/accu/land_basic.hh>
+# include <mln/accu/min.hh>
+# include <mln/accu/min_h.hh>
+# include <mln/norm/l2.hh>
+
+namespace mln
+{
+
+ namespace morpho
+ {
+
+ /// Morphological vector_median.
+ template <typename I, typename W>
+ mln_concrete(I)
+ vector_median(const Image<I>& input, const Window<W>& win);
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ namespace impl
+ {
+
+ // On set with centered window (overloads).
+
+ template <typename I, typename W>
+ mln_concrete(I)
+ vector_median(const Image<I>& input_, const Window<W>& win_)
+ {
+ trace::entering("morpho::impl::general_on_set_centered__vector_median");
+
+ typedef mln_concrete(I) O;
+ const I& input = exact(input_);
+ const W& win = exact(win_);
+
+ O output;
+ output = clone(input);
+
+ mln_piter(I) p(input.domain());
+ mln_qiter(W) q(win, p);
+ mln_qiter(W) r(win, p);
+ for_all(p)
+ {
+ mln_psite(W) v;
+ double min_dist = std::numeric_limits<double>::infinity();
+ for_all(q) if (input.domain().has(q))
+ {
+ double dist = 0;
+ for_all(r) if (input.domain().has(r) && q!=r)
+ dist += norm::l2(input(r) - input(q));
+ if (dist < min_dist)
+ {
+ min_dist = dist;
+ v = q;
+ }
+ }
+ output(p) = input(v);
+ }
+
+ trace::exiting("morpho::impl::general_on_set_centered__vector_median");
+ return output;
+ }
+
+
+ } // end of namespace morpho::impl
+
+
+ template <typename I, typename W>
+ inline
+ mln_concrete(I)
+ vector_median(const Image<I>& input, const Window<W>& win)
+ {
+ trace::entering("morpho::vector_median");
+ mln_precondition(exact(input).has_data());
+ mln_precondition(! exact(win).is_empty());
+
+ mln_concrete(I) output = impl::vector_median(input, win);
+
+ trace::exiting("morpho::vector_median");
+ return output;
+ }
+
+# endif // ! MLN_INCLUDE_ONLY
+
+ } // end of namespace mln::morpho
+
+} // end of namespace mln
+
+
+#endif // ! MLN_MORPHO_VECTOR_MEDIAN_HH
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Alexandre Abraham <abraham(a)lrde.epita.fr>
Add missing concept for bijective functions.
* mln/core/concept/function.hh: .
function.hh | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
Index: mln/core/concept/function.hh
--- mln/core/concept/function.hh (revision 3047)
+++ mln/core/concept/function.hh (working copy)
@@ -42,6 +42,8 @@
// Fwd decls.
template <typename E> struct Function;
template <typename E> struct Function_v2v;
+ template <typename E> struct Function_v2w2v;
+ template <typename E> struct Function_v2w_w2v;
template <typename E> struct Function_i2v;
template <typename E> struct Function_p2v;
template <typename E> struct Function_v2b;
@@ -104,6 +106,74 @@
};
+ /*----------------------------.
+ | Value <-> Value (Bijective) |
+ `----------------------------*/
+
+ // FIXME : should it also be a v2v function?
+
+ template <>
+ struct Function_v2w2v<void> { typedef Function<void> super; };
+
+ /*!
+ * \brief Base class for implementation of function-objects from
+ * value V to value W and vice versa.
+ *
+ * The parameter \a E is the exact type.
+ */
+
+ template <typename E>
+ struct Function_v2w2v : public Function<E>
+ {
+ typedef Function_v2w2v<void> category;
+
+ /*
+ result operator() (value);
+ value f_1 (result);
+ */
+
+ protected:
+ Function_v2w2v();
+ Function_v2w2v(const Function_v2w2v&);
+ };
+
+
+ /*---------------------------.
+ | Value <-> Value (Two ways) |
+ `---------------------------*/
+
+ // FIXME : should it also be a v2v function?
+
+ template <>
+ struct Function_v2w_w2v<void> { typedef Function<void> super; };
+
+ /*!
+ * \brief Base class for implementation of function-objects from
+ * value V to value W and from W to V thanks to the previous
+ * value V.
+ *
+ * The parameter \a E is the exact type.
+ *
+ * eg: f : x -> norm(x)
+ * f_1: (x, n) -> x' := x / norm(x) * n
+ */
+
+ template <typename E>
+ struct Function_v2w_w2v : public Function<E>
+ {
+ typedef Function_v2w_w2v<void> category;
+
+ /*
+ result operator() (value);
+ value f_1 (result, value);
+ */
+
+ protected:
+ Function_v2w_w2v();
+ Function_v2w_w2v(const Function_v2w_w2v&);
+ };
+
+
/*-----------------.
| Index -> Value. |
`-----------------*/
@@ -379,6 +449,32 @@
template <typename E>
inline
+ Function_v2w2v<E>::Function_v2w2v()
+ {
+ }
+
+ template <typename E>
+ inline
+ Function_v2w2v<E>::Function_v2w2v(const Function_v2w2v<E>& rhs)
+ : Function<E>(rhs)
+ {
+ }
+
+ template <typename E>
+ inline
+ Function_v2w_w2v<E>::Function_v2w_w2v()
+ {
+ }
+
+ template <typename E>
+ inline
+ Function_v2w_w2v<E>::Function_v2w_w2v(const Function_v2w_w2v<E>& rhs)
+ : Function<E>(rhs)
+ {
+ }
+
+ template <typename E>
+ inline
Function_i2v<E>::Function_i2v()
{
}
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Alexandre Abraham <abraham(a)lrde.epita.fr>
Add functors.
* mln/fun/meta: New.
* mln/fun/meta/red.hh: red meta accessor.
* mln/fun/v2w2v: New.
* mln/fun/v2w_w2v: New.
core/image/fun_image.hh | 56 +++++++++++++++++++++++++-----------------------
fun/meta/red.hh | 20 +++++++++++++++++
2 files changed, 50 insertions(+), 26 deletions(-)
Index: mln/core/image/fun_image.hh
--- mln/core/image/fun_image.hh (revision 3045)
+++ mln/core/image/fun_image.hh (working copy)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -25,13 +25,13 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_CORE_IMAGE_THRU_HH
-# define MLN_CORE_IMAGE_THRU_HH
+#ifndef MLN_CORE_IMAGE_FUN_IMAGE_HH
+# define MLN_CORE_IMAGE_FUN_IMAGE_HH
-/*! \file mln/core/image/thru.hh
+/*! \file mln/core/image/fun_image.hh
*
* \brief Definition of an image morpher that make the user see the
- * image thru a function
+ * image through a function
*
*/
@@ -46,13 +46,13 @@
{
// Fwd decl.
- template <typename F, typename I> class thru;
+ template <typename F, typename I> class fun_image;
namespace internal
{
- /// Data structure for \c mln::thru<T,I>.
+ /// Data structure for \c mln::fun_image<T,I>.
template <typename F, typename I>
- struct data< thru<F,I> >
+ struct data< fun_image<F,I> >
{
data( I& ima);
I& ima_;
@@ -66,8 +66,10 @@
{
template <typename F, typename I>
- struct image_< thru<F,I> > : default_image_morpher< I, mln_result(F), thru<F,I> >
+ struct image_< fun_image<F,I> > : default_image_morpher< I, mln_result(F), fun_image<F,I> >
{
+ // typedef trait::image::category::value_morpher category;
+ typedef trait::image::category::primary category; // does not work either
typedef trait::image::value_io::read_write value_io;
typedef trait::image::value_access::computed value_access;
typedef trait::image::value_storage::disrupted value_storage;
@@ -89,11 +91,13 @@
+
+
/*! \brief Class of image morpher which takes allow to view an image throught a morpher
*/
template <typename F, typename I>
- struct thru :
- public internal::image_value_morpher< I, mln_result(F), thru<F,I> >
+ struct fun_image :
+ public internal::image_value_morpher< I, mln_result(F), fun_image<F,I> >
{
/// Value associated type.
typedef mln_result(F) value;
@@ -102,13 +106,13 @@
typedef mln_result(F) rvalue;
/// Return type of read-write access.
- typedef mln::value::shell<F,I> lvalue; // FIXME : if I is const or F is Function_v2v, there is no shell
+ typedef mln::value::shell<F,I> lvalue;
/// Skeleton.
- typedef thru< tag::value_<mln_result(F)>, tag::image_<I> > skeleton;
+ typedef fun_image< tag::value_<mln_result(F)>, tag::image_<I> > skeleton;
/// Constructor.
- thru(Image<I>& ima);
+ fun_image(Image<I>& ima);
/// Initialize an empty image.
void init_(Image<I>& ima);
@@ -125,45 +129,45 @@
# ifndef MLN_INCLUDE_ONLY
- // internal::data< thru<T,I> >
+ // internal::data< fun_image<T,I> >
namespace internal
{
template <typename F, typename I>
inline
- data< thru<F,I> >::data(I& ima)
+ data< fun_image<F,I> >::data(I& ima)
: ima_(ima)
{
}
} // end of namespace mln::internal
- // thru<F,I>
+ // fun_image<F,I>
template <typename F, typename I>
inline
- thru<F,I>::thru(Image<I>& ima)
+ fun_image<F,I>::fun_image(Image<I>& ima)
{
mln_precondition(exact(ima).has_data());
- this->data_ = new internal::data< thru<F,I> >(exact(ima));
+ this->data_ = new internal::data< fun_image<F,I> >(exact(ima));
}
template <typename F, typename I>
inline
void
- thru<F,I>::init_(Image<I>& ima)
+ fun_image<F,I>::init_(Image<I>& ima)
{
mln_precondition(exact(ima).has_data());
- this->data_ = new internal::data<thru<F,I> >(exact(ima));
+ this->data_ = new internal::data<fun_image<F,I> >(exact(ima));
}
template <typename F, typename I>
inline
mln_result(F)
- thru<F,I>::operator()(const mln_psite(I)& p) const
+ fun_image<F,I>::operator()(const mln_psite(I)& p) const
{
mln_precondition(this->data_->ima_.has(p));
return f( this->data_->ima_(p) );
@@ -172,16 +176,16 @@
template <typename F, typename I>
inline
value::shell<F, I>
- thru<F,I>::operator()(const mln_psite(I)& p)
+ fun_image<F,I>::operator()(const mln_psite(I)& p)
{
return mln::value::shell<F, I>( this->data_->ima_, p );
}
// template <typename F, typename I>
- // thru<F, I> thru(Function<F> &f, Image<I> &i)
+ // fun_image<F, I> fun_image(Function<F> &f, Image<I> &i)
// {
- // return thru<F, I> (f, i);
+ // return fun_image<F, I> (f, i);
// }
@@ -190,4 +194,4 @@
} // end of namespace mln
-#endif // ! MLN_CORE_IMAGE_THRU_HH
+#endif // ! MLN_CORE_IMAGE_FUN_IMAGE_HH
Property changes on: mln/core/image/fun_image.hh
___________________________________________________________________
Added: svn:mergeinfo
Index: mln/fun/meta/red.hh
--- mln/fun/meta/red.hh (revision 3045)
+++ mln/fun/meta/red.hh (working copy)
@@ -29,6 +29,7 @@
# define MLN_FUN_META_RED_HH
# include <mln/core/concept/meta_fun.hh>
+# include <mln/value/rgb.hh>
namespace mln {
@@ -39,6 +40,25 @@
};
+ template <unsigned n>
+ struct function< meta::red< value::rgb<n> > > : public Function_v2w_w2v<function< meta::red < value::rgb<n> > > >
+ {
+ typedef value::rgb<n> value;
+
+ typedef typename value::red_t result;
+ result read(const value& c)
+ {
+ return c.red();
+ }
+
+ typedef result& lresult;
+ lresult write(value& c)
+ {
+ return c.red();
+ }
+ };
+
+
};
#endif // MLN_FUN_META_RED_HH
1
0
15 Dec '08
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Fetch Ugo's code to prepare merging it with 1st steps.
* jardonnet/n_cmpt/n_cmpt5.hh: Fix typo.
Copy to...
* geraud/tufa_2008/n_cmpt.cc: ...this new file.
Cleanup code.
Fix typos.
(main): New.
geraud/tufa_2008/n_cmpt.cc | 190 ++++++++++++++++++++++++--------------------
jardonnet/n_cmpt/n_cmpt5.hh | 2
2 files changed, 105 insertions(+), 87 deletions(-)
Index: jardonnet/n_cmpt/n_cmpt5.hh
--- jardonnet/n_cmpt/n_cmpt5.hh (revision 3044)
+++ jardonnet/n_cmpt/n_cmpt5.hh (working copy)
@@ -96,7 +96,7 @@
// number of minima
unsigned cmpts = label;
if (lambda > cmpts)
- std::cout << "warning : lambda value is to hight." << std::endl;
+ std::cout << "Warning: lambda value is too high!" << std::endl;
std::cout << cmpts << std::endl;
Index: geraud/tufa_2008/n_cmpt.cc
--- geraud/tufa_2008/n_cmpt.cc (revision 3043)
+++ geraud/tufa_2008/n_cmpt.cc (working copy)
@@ -1,4 +1,4 @@
-// Copyright (C) 2008 EPITA Research and Development Laboratory
+// Copyright (C) 2008 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
@@ -25,78 +25,68 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_N_CMPT3_HH
-# define MLN_N_CMPT3_HH
-
-# include <mln/labeling/regional_minima.hh>
+#include <mln/core/image/image2d.hh>
# include <mln/core/alias/neighb2d.hh>
-# include <mln/util/set.hh>
+
+#include <mln/value/int_u8.hh>
+#include <mln/value/int_u16.hh>
+#include <mln/io/pgm/load.hh>
# include <mln/debug/println.hh>
# include <mln/debug/iota.hh>
-# include <mln/accu/volume.hh>
+#include <mln/labeling/regional_minima.hh>
+#include <mln/level/fill.hh>
+
# include <mln/morpho/tree/data.hh>
# include <mln/morpho/tree/compute_attribute_image.hh>
-namespace mln
-{
-
- namespace n_cmpt
- {
+#include <mln/accu/volume.hh>
+#include <mln/accu/count.hh>
- template < typename I >
- void n_cmpt5(const I& (((((((ima))))))));
-# ifndef MLN_INCLUDE_ONLY
+namespace mln
+{
template <typename I>
inline
- mln_psite(I)
- find_root(I& parent,
- const mln_psite(I)& x)
+ mln_psite(I) find_root__(I& parent, const mln_psite(I)& x)
{
if (parent(x) == x)
return x;
else
- return parent(x) = find_root(parent, parent(x));
+ return parent(x) = find_root__(parent, parent(x));
}
- template < typename I, typename N>
- I
- n_cmpt3(const I& ima, const N& nbh,
- unsigned lambda)
- {
- std::cout << "/ima/" << std::endl;
- debug::println(ima);
- // compute volume image
- //---------------------
+ template <typename A, typename I, typename N>
+ mln_concrete(I)
+ n_cmpt(A a, const I& f, const N& nbh, unsigned lambda)
+ {
+ // Compute attribute image.
+ //-------------------------
typedef p_array<mln_psite(I)> S;
- typedef mln_ch_value(I,unsigned) V;
- typedef accu::volume<I> A;
+ typedef mln_ch_value(I, mln_result(A)) Attr;
- S sp = level::sort_psites_decreasing(ima);
- morpho::tree::data<I,S> t(ima, sp, nbh);
- V volume = morpho::tree::compute_attribute_image(A(), t);
- sp = level::sort_psites_increasing(volume);
- std::cout << "/volume/" << std::endl;
- debug::println(volume);
+ S s = level::sort_psites_decreasing(f);
+ morpho::tree::data<I,S> t(f, s, nbh);
+ Attr attr = morpho::tree::compute_attribute_image(a, t);
+ s = level::sort_psites_increasing(attr);
+ debug::println("attr =", attr);
- // get /volume/ regional minima
- //-----------------------------
+ // Compute regional minima of attribute image.
+ //--------------------------------------------
unsigned label;
- mln_ch_value(I, unsigned) min_v = labeling::regional_minima(volume, nbh, label);
- std::cout << "/volume/ regional minima" << std::endl;
- debug::println(min_v);
+ mln_ch_value(I, unsigned) min_v = labeling::regional_minima(attr, nbh, label);
+ debug::println("regmin =", min_v);
// number of minima
unsigned cmpts = label;
if (lambda > cmpts)
- std::cout << "warning : lambda value is to hight." << std::endl;
+ std::cout << "Warning: lambda value is too high!" << std::endl;
std::cout << cmpts << std::endl;
@@ -106,23 +96,21 @@
// init fused image
mln_ch_value(I, bool) fused;
- initialize(fused, volume);
+ initialize(fused, attr);
mln::level::fill(fused, false);
// prepare union find
- typedef mln_psite(V) P;
-
- //data
- mln_ch_value(V, accu::volume<V>) data(volume.domain());
+ typedef mln_psite(I) P;
//deja_vu
- mln_ch_value(V, bool) deja_vu(volume.domain());
- mln::level::fill(deja_vu, false);
+ mln_ch_value(I, bool) deja_vu;
+ initialize(deja_vu, f);
+ level::fill(deja_vu, false);
//parent
- mln_ch_value(V, P) parent(volume.domain());
+ mln_ch_value(I, P) parent(attr.domain());
{
- mln_fwd_piter(S) p(sp);
+ mln_fwd_piter(S) p(s);
for_all(p)
{
parent(p) = p;
@@ -133,32 +121,30 @@
}
}
- // UNION FIND ON VOLUME
- mln_fwd_piter(S) p(sp);
+ // UNION FIND ON ATTR
+ mln_fwd_piter(S) p(s);
mln_niter(N) n(nbh, p);
for_all(p)
{
- std::cout << p << std::endl;
- //if (volume(p) > lambda)
- // goto step2;
+ // std::cout << p << std::endl;
for_all(n)
{
- if (volume.domain().has(n) && deja_vu(n))
+ if (attr.domain().has(n) && deja_vu(n))
{
- //do_union(n, p);
- P r = find_root(parent, n);
+ P r = find_root__(parent, n);
if (r != p)
{
- std::cout << "neighb: " << n << std::endl;
- std::cout << "v(r): " << volume(r) << " v(p): " << volume(p) << " f(p): " << fused(p) << std::endl;
+ // std::cout << "neighb: " << n << std::endl;
+ // std::cout << "v(r): " << attr(r) << " v(p): "
+ // << attr(p) << " f(p): " << fused(p) << std::endl;
- //if (volume(r) != volume(p)) // r and p have different volumes
+ //if (attr(r) != attr(p)) // r and p have different attrs
// This check was wrong.
// you just fused with a minima.
- // then you fuse with a neighbor already fused that has the same volume as you
+ // then you fuse with a neighbor already fused that has the same attr as you
// a) 1 50 1
// 2 2 2
- // we don't have ( volume(r) == volume(p) ) => not fused(r)
+ // we don't have ( attr(r) == attr(p) ) => not fused(r)
// even if r and p are not minima
// problem :
@@ -166,39 +152,44 @@
// - when fusing cmpts (a) : same level, both fused. DEC
// One cmpt less if
- if (fused(r) && min_v(p) == 0) // p is not a minima
- if (fused(p)) // p already belong to a cmpt (fused for an another n)
- if (cmpts >= lambda) // union is still allowed
+
+// if (fused(r) && min_v(p) == 0) // p is not a minima
+// if (fused(p)) // p already belong to a cmpt (fused for an another n)
+// if (cmpts >= lambda) // union is still allowed
+
+ if (fused(r) && min_v(p) == 0 // p is not a minima
+ && fused(p) // p already belong to a cmpt (fused for an another n)
+ && cmpts >= lambda) // union is still allowed
{
- cmpts--;
- std::cout << "dec" << std::endl;
+ --cmpts;
+ // std::cout << "dec" << std::endl;
}
- mln_invariant(fused(r) || volume(r) == volume(p));
+ mln_invariant(fused(r) || attr(r) == attr(p));
// Union made if
if (cmpts >= lambda || // union is still allowed or
- not fused(r) || // r not fused or
- not fused(p) || // p not fused or
+ ! fused(r) || // r not fused or
+ ! fused(p) || // p not fused or
min_v(p) != 0) // p is a minima
{
- std::cout << "fuse" << p << n << std::endl;
+ // std::cout << "fusing " << p << " with " << n << std::endl;
parent(r) = p;
// This test is mandatory. Sometimes (--_) points are fused
- // tought none of these points belongs to a component (attached
+ // tough none of these points belongs to a component (attached
// to a local minima). In this case fused(p) must not be true
// since it can be fused again without removing a component.
- // looking if r is fused should be enought.
+ // looking if r is fused should be enough.
// This test force minima to be initialized fused.
if (fused(r))
fused(p) = true;
// If I try to fuse with something never fused I am on a plateau.
- // not fused(r) => ( volume(r) == volume(p) )
- mln_invariant(fused(r) || volume(r) == volume(p));
- // fused(r) and ( volume(r) == volume(p) ) happen on minima plateau.
+ // not fused(r) => ( attr(r) == attr(p) )
+ mln_invariant(fused(r) || attr(r) == attr(p));
+ // fused(r) and ( attr(r) == attr(p) ) happen on minima plateau.
// fused(n) = true; // useless ? probably yes because when we
// want to know that we really fuse component, we look at
@@ -206,7 +197,8 @@
// fused(n) is not an invariant: --_. And it is ok (I think).
// We don't have to retro-propagate fused.
- std::cerr << "volume " << volume(p) << " - " << cmpts << std::endl;
+
+ // std::cout << "attr " << attr(p) << " - " << cmpts << std::endl;
//debug::println(fused);
}
}
@@ -215,16 +207,17 @@
deja_vu(p) = true;
}
- mln_ch_value(I,value::int_u<16>) iota(ima.domain());
+ mln_ch_value(I,value::int_u<16>) iota(f.domain());
debug::iota(iota);
std::cout << std::endl;
std::cout << "cmpts : " << cmpts << std::endl;
// second pass
- I output(ima.domain());
+ mln_concrete(I) output;
+ initialize(output, f);
{
- mln_bkd_piter(S) p(sp);
+ mln_bkd_piter(S) p(s);
for_all(p)
if (parent(p) == p) // p is root.
output(p) = iota(p);
@@ -235,11 +228,36 @@
return output;
}
- } // end of namespace n_cmpt
+} // end of namespace mln
-# endif // ! MLN_INCLUDE_ONLY
-} // end of namespace mln
-#endif /* MLN_N_CMPT3_HH */
+void usage(char* argv[])
+{
+ std::cerr << "usage: " << argv[0] << " input.pgm n" << std::endl;
+ std::cerr << "n: expected number of basins" << std::endl;
+ std::abort();
+}
+
+
+int main(int argc, char* argv[])
+{
+ using namespace mln;
+ using value::int_u8;
+
+ if (argc != 3)
+ usage(argv);
+ typedef image2d<int_u8> I;
+ I f;
+ io::pgm::load(f, argv[1]);
+ debug::println("f =", f);
+
+ unsigned n = std::atoi(argv[2]);
+
+ accu::count< util::pix<I> > acc;
+ // accu::volume<I> acc;
+
+ image2d<int_u8> g = n_cmpt(acc, f, c4(), n + 1);
+ debug::println(g);
+}
1
0
* milena/headers.mk: do not distribute deleted headers.
* milena/mln/core/clock_neighb.hh: fix type ambiguity.
* milena/mln/core/image/mono_obased_rle_image.hh,
* milena/mln/core/image/mono_rle_image.hh,
* milena/mln/core/image/obased_rle_image.hh,
* milena/mln/core/image/rle_image.hh,
* milena/mln/core/image/value_enc_image.hh,
* milena/mln/core/image/bgraph_image.hh: Disable image properties
since they are not update with the new property names.
* milena/mln/core/image/bgraph_psite.hh: fix wrong include.
* milena/mln/core/image/fi_adaptor.hh,
* milena/mln/core/image/graph_image.hh,
* milena/mln/core/image/line_graph_image.hh: move to...
* milena/trash/fi_adaptor.hh,
* milena/trash/graph_image.hh,
* milena/trash/line_graph_image.hh: ... here.
* milena/mln/core/site_set/p_bgraph.hh,
* milena/mln/metal/ref.hh,
* milena/mln/topo/adj_higher_face_iter.hh,
* milena/mln/topo/adj_lower_face_iter.hh,
* milena/mln/topo/adj_lower_higher_face_iter.hh,
* milena/mln/topo/face_iter.hh,
* milena/mln/topo/n_face_iter.hh,
* milena/mln/util/internal/boost_graph.hh,
* milena/mln/util/internal/boost_graph_structure.hh,
* milena/mln/util/tree_to_image.hh: Add missing
includes/forward declarations.
* milena/tests/unit_test/Makefile.am: update test list.
* milena/tests/unit_test/mln_core_concept_doc_accumulator.cc,
* milena/tests/unit_test/mln_core_concept_doc_box.cc,
* milena/tests/unit_test/mln_core_concept_doc_dpoint.cc,
* milena/tests/unit_test/mln_core_concept_doc_generalized_pixel.cc,
* milena/tests/unit_test/mln_core_concept_doc_image.cc,
* milena/tests/unit_test/mln_core_concept_doc_image_fastest.cc,
* milena/tests/unit_test/mln_core_concept_doc_iterator.cc,
* milena/tests/unit_test/mln_core_concept_doc_neighborhood.cc,
* milena/tests/unit_test/mln_core_concept_doc_object.cc,
* milena/tests/unit_test/mln_core_concept_doc_pixel_iterator.cc,
* milena/tests/unit_test/mln_core_concept_doc_point_iterator.cc,
* milena/tests/unit_test/mln_core_concept_doc_point_site.cc,
* milena/tests/unit_test/mln_core_concept_doc_site_set.cc,
* milena/tests/unit_test/mln_core_concept_doc_value_iterator.cc,
* milena/tests/unit_test/mln_core_concept_doc_value_set.cc,
* milena/tests/unit_test/mln_core_concept_doc_weighted_window.cc,
* milena/tests/unit_test/mln_core_concept_doc_window.cc,
* milena/tests/unit_test/mln_core_image_fi_adaptor.cc,
* milena/tests/unit_test/mln_core_image_graph_image.cc,
* milena/tests/unit_test/mln_core_image_line_graph_image.cc,
* milena/tests/unit_test/mln_metal_has_neighborhood.cc: removed since
not needed anymore.
---
milena/ChangeLog | 64 +
milena/headers.mk | 4 -
milena/mln/core/clock_neighb.hh | 4 +-
milena/mln/core/image/bgraph_image.hh | 34 +-
milena/mln/core/image/bgraph_psite.hh | 7 +-
milena/mln/core/image/mono_obased_rle_image.hh | 31 +-
milena/mln/core/image/mono_rle_image.hh | 31 +-
milena/mln/core/image/obased_rle_image.hh | 16 +-
milena/mln/core/image/rle_image.hh | 31 +-
milena/mln/core/image/value_enc_image.hh | 40 +-
milena/mln/core/site_set/p_bgraph.hh | 5 +-
milena/mln/metal/ref.hh | 9 +-
milena/mln/topo/adj_higher_face_iter.hh | 17 +-
milena/mln/topo/adj_lower_face_iter.hh | 4 +
milena/mln/topo/adj_lower_higher_face_iter.hh | 4 +
milena/mln/topo/face_iter.hh | 6 +-
milena/mln/topo/n_face_iter.hh | 24 +-
milena/mln/util/internal/boost_graph.hh | 5 +-
milena/mln/util/internal/boost_graph_structure.hh | 33 +-
milena/mln/util/tree_to_image.hh | 22 +-
milena/tests/unit_test/Makefile.am | 3550 ++++++++++----------
.../unit_test/mln_core_concept_doc_accumulator.cc | 11 -
milena/tests/unit_test/mln_core_concept_doc_box.cc | 11 -
.../tests/unit_test/mln_core_concept_doc_dpoint.cc | 11 -
.../mln_core_concept_doc_generalized_pixel.cc | 11 -
.../tests/unit_test/mln_core_concept_doc_image.cc | 11 -
.../mln_core_concept_doc_image_fastest.cc | 11 -
.../unit_test/mln_core_concept_doc_iterator.cc | 11 -
.../unit_test/mln_core_concept_doc_neighborhood.cc | 11 -
.../tests/unit_test/mln_core_concept_doc_object.cc | 11 -
.../mln_core_concept_doc_pixel_iterator.cc | 11 -
.../mln_core_concept_doc_point_iterator.cc | 11 -
.../unit_test/mln_core_concept_doc_point_site.cc | 11 -
.../unit_test/mln_core_concept_doc_site_set.cc | 11 -
.../mln_core_concept_doc_value_iterator.cc | 11 -
.../unit_test/mln_core_concept_doc_value_set.cc | 11 -
.../mln_core_concept_doc_weighted_window.cc | 11 -
.../tests/unit_test/mln_core_concept_doc_window.cc | 11 -
.../tests/unit_test/mln_core_image_fi_adaptor.cc | 11 -
.../tests/unit_test/mln_core_image_graph_image.cc | 11 -
.../unit_test/mln_core_image_line_graph_image.cc | 11 -
.../tests/unit_test/mln_metal_has_neighborhood.cc | 11 -
milena/{mln/core/image => trash}/fi_adaptor.hh | 0
milena/{mln/core/image => trash}/graph_image.hh | 0
.../{mln/core/image => trash}/line_graph_image.hh | 0
45 files changed, 2002 insertions(+), 2170 deletions(-)
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_accumulator.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_box.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_dpoint.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_generalized_pixel.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_image.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_image_fastest.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_iterator.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_neighborhood.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_object.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_pixel_iterator.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_point_iterator.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_point_site.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_site_set.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_value_iterator.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_value_set.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_weighted_window.cc
delete mode 100644 milena/tests/unit_test/mln_core_concept_doc_window.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_fi_adaptor.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_graph_image.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_line_graph_image.cc
delete mode 100644 milena/tests/unit_test/mln_metal_has_neighborhood.cc
rename milena/{mln/core/image => trash}/fi_adaptor.hh (100%)
rename milena/{mln/core/image => trash}/graph_image.hh (100%)
rename milena/{mln/core/image => trash}/line_graph_image.hh (100%)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index ffd1318..ad21f8f 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,67 @@
+2008-12-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix unit tests.
+
+ * milena/headers.mk: do not distribute deleted headers.
+
+ * milena/mln/core/clock_neighb.hh: fix type ambiguity.
+
+ * milena/mln/core/image/mono_obased_rle_image.hh,
+ * milena/mln/core/image/mono_rle_image.hh,
+ * milena/mln/core/image/obased_rle_image.hh,
+ * milena/mln/core/image/rle_image.hh,
+ * milena/mln/core/image/value_enc_image.hh,
+ * milena/mln/core/image/bgraph_image.hh: Disable image properties
+ since they are not update with the new property names.
+
+ * milena/mln/core/image/bgraph_psite.hh: fix wrong include.
+
+ * milena/mln/core/image/fi_adaptor.hh,
+ * milena/mln/core/image/graph_image.hh,
+ * milena/mln/core/image/line_graph_image.hh: move to...
+
+ * milena/trash/fi_adaptor.hh,
+ * milena/trash/graph_image.hh,
+ * milena/trash/line_graph_image.hh: ... here.
+
+
+ * milena/mln/core/site_set/p_bgraph.hh,
+ * milena/mln/metal/ref.hh,
+ * milena/mln/topo/adj_higher_face_iter.hh,
+ * milena/mln/topo/adj_lower_face_iter.hh,
+ * milena/mln/topo/adj_lower_higher_face_iter.hh,
+ * milena/mln/topo/face_iter.hh,
+ * milena/mln/topo/n_face_iter.hh,
+ * milena/mln/util/internal/boost_graph.hh,
+ * milena/mln/util/internal/boost_graph_structure.hh,
+ * milena/mln/util/tree_to_image.hh: Add missing
+ includes/forward declarations.
+
+ * milena/tests/unit_test/Makefile.am: update test list.
+
+ * milena/tests/unit_test/mln_core_concept_doc_accumulator.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_box.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_dpoint.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_generalized_pixel.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_image.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_image_fastest.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_iterator.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_neighborhood.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_object.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_pixel_iterator.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_point_iterator.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_point_site.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_site_set.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_value_iterator.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_value_set.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_weighted_window.cc,
+ * milena/tests/unit_test/mln_core_concept_doc_window.cc,
+ * milena/tests/unit_test/mln_core_image_fi_adaptor.cc,
+ * milena/tests/unit_test/mln_core_image_graph_image.cc,
+ * milena/tests/unit_test/mln_core_image_line_graph_image.cc,
+ * milena/tests/unit_test/mln_metal_has_neighborhood.cc: removed since
+ not needed anymore.
+
2008-12-12 Matthieu Garrigues <garrigues(a)lrde.epita.fr>
Make level::compare use test::predicate.
diff --git a/milena/headers.mk b/milena/headers.mk
index 25f239c..e528542 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -513,7 +513,6 @@ mln/metal/int.hh \
mln/metal/abort.hh \
mln/metal/same_coord.hh \
mln/metal/templated_by.hh \
-mln/metal/has_neighborhood.hh \
mln/metal/goes_to.hh \
mln/metal/is_not_ref.hh \
mln/metal/converts_to.hh \
@@ -841,7 +840,6 @@ mln/core/clock_neighb2d.hh \
mln/core/pixter3d.hh \
mln/core/image/obased_rle_encode.hh \
mln/core/image/plain.hh \
-mln/core/image/graph_image.hh \
mln/core/image/image3d.hh \
mln/core/image/decorated_image.hh \
mln/core/image/extension_ima.hh \
@@ -885,10 +883,8 @@ mln/core/image/image2d_h.hh \
mln/core/image/image2d.hh \
mln/core/image/ch_piter.hh \
mln/core/image/complex_windows.hh \
-mln/core/image/fi_adaptor.hh \
mln/core/image/mono_obased_rle_encode.hh \
mln/core/image/status.txt \
-mln/core/image/line_graph_image.hh \
mln/core/image/value_encode.hh \
mln/core/image/essential.hh \
mln/core/a_point_of.hh \
diff --git a/milena/mln/core/clock_neighb.hh b/milena/mln/core/clock_neighb.hh
index be0245c..2c72506 100644
--- a/milena/mln/core/clock_neighb.hh
+++ b/milena/mln/core/clock_neighb.hh
@@ -137,10 +137,10 @@ namespace mln
template <typename D>
inline
- window<D>
+ mln::window<D>
clock_neighb<D>::win() const
{
- window<D> result;
+ mln::window<D> result;
for (unsigned i = 0; i < vec_.size(); ++i)
result.insert(vec_[i]);
return result;
diff --git a/milena/mln/core/image/bgraph_image.hh b/milena/mln/core/image/bgraph_image.hh
index 7cec611..c0a71e1 100644
--- a/milena/mln/core/image/bgraph_image.hh
+++ b/milena/mln/core/image/bgraph_image.hh
@@ -30,7 +30,8 @@
# define MLN_CORE_IMAGE_BGRAPH_IMAGE_HH
/// \file mln/core/image/bgraph_image.hh
-/// \brief Definition of a boost-graph-based image.
+///
+/// Definition of a boost-graph-based image.
# include <mln/trait/images.hh>
# include <mln/core/internal/image_primary.hh>
@@ -44,7 +45,7 @@
namespace mln
{
- // Fwd decl.
+ // Forward declaration
template <typename P, typename V> struct bgraph_image;
namespace internal
@@ -77,28 +78,27 @@ namespace mln
{
typedef trait::image::category::primary category;
- typedef trait::image::access::random access;
- typedef typename trait::image::space_from_point<P>::ret space;
- typedef trait::image::size::regular size;
- typedef trait::image::support::irregular support;
-
- typedef trait::image::border::none border;
- typedef trait::image::data::stored data;
- typedef trait::image::io::read_write io;
- typedef trait::image::speed::fast speed;
+ // FIXME: update with new properties.
+// typedef trait::image::access::random access;
+// typedef typename trait::image::space_from_point<P>::ret space;
+// typedef trait::image::size::regular size;
+// typedef trait::image::support::irregular support;
+//
+// typedef trait::image::border::none border;
+// typedef trait::image::data::stored data;
+// typedef trait::image::io::read_write io;
+// typedef trait::image::speed::fast speed;
};
} // end of namespace mln::trait
- /*! \brief Kind of image based on a boost graph structure.
- *
- */
+ /// Kind of image based on a boost graph structure.
template <typename P, typename V>
struct bgraph_image :
- public internal::image_primary< p_bgraph<P>, bgraph_image<P, V> >
+ public internal::image_primary< V, p_bgraph<P>, bgraph_image<P, V> >
{
- typedef mln::internal::image_base< V, p_bgraph<P>, bgraph_image<P, V> >
+ typedef mln::internal::image_primary< V, p_bgraph<P>, bgraph_image<P, V> >
super_;
/// Value associated type.
@@ -152,7 +152,7 @@ namespace mln
const P& node2(const typename p_bgraph<P>::edge_id& e) const;
};
- // Fwd decl.
+ // Initialization routine.
template <typename P, typename V>
void init_(tag::image_t,
bgraph_image<P, V>& target, const bgraph_image<P, V>& model);
diff --git a/milena/mln/core/image/bgraph_psite.hh b/milena/mln/core/image/bgraph_psite.hh
index 1eb01f3..78d03a3 100644
--- a/milena/mln/core/image/bgraph_psite.hh
+++ b/milena/mln/core/image/bgraph_psite.hh
@@ -30,9 +30,10 @@
# define MLN_CORE_IMAGE_BGRAPH_PSITE_HH
/// \file mln/core/image/bgraph_psite.hh
-/// \brief Definition of a boost-graph-based point site.
+///
+/// Definition of a boost-graph-based point site.
-# include <mln/core/site_set/p_graph.hh>
+# include <mln/core/site_set/p_bgraph.hh>
namespace mln
@@ -42,7 +43,7 @@ namespace mln
template<typename P> class p_bgraph;
- /// \brief Point site associated to a mln::graph_image.
+ /// Point site associated to a mln::graph_image.
template<typename P>
class bgraph_psite : public Point_Site< bgraph_psite<P> >
{
diff --git a/milena/mln/core/image/mono_obased_rle_image.hh b/milena/mln/core/image/mono_obased_rle_image.hh
index 160d6c4..7fcb95c 100644
--- a/milena/mln/core/image/mono_obased_rle_image.hh
+++ b/milena/mln/core/image/mono_obased_rle_image.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007.2008 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_IMAGE_MONO_OBASED_RLE_IMAGE_HH
# define MLN_CORE_IMAGE_MONO_OBASED_RLE_IMAGE_HH
-/*! \file mln/core/image/mono_obased_rle_image.hh
- *
- * \brief Definition of an image with rle encoding.
- */
+/// \file mln/core/image/mono_obased_rle_image.hh
+///
+/// Definition of an image with rle encoding.
# include <mln/core/internal/run_image.hh>
# include <mln/core/site_set/p_run.hh>
@@ -44,7 +44,7 @@
namespace mln
{
- // Fwd decl.
+ // Forward declaration.
template <typename P, typename T> struct mono_obased_rle_image;
@@ -85,22 +85,23 @@ namespace mln
{
typedef trait::image::category::primary category;
- typedef trait::image::access::browsing access;
+ // FIXME: update with new properties.
+// typedef trait::image::access::browsing access;
// FIXME: Put the right dimension.
- typedef trait::image::space::two_d space;
- typedef trait::image::size::regular size;
- typedef trait::image::support::aligned support;
-
- typedef trait::image::border::none border;
- typedef trait::image::data::linear data;
- typedef trait::image::io::read_only io;
- typedef trait::image::speed::slow speed;
+// typedef trait::image::space::two_d space;
+// typedef trait::image::size::regular size;
+// typedef trait::image::support::aligned support;
+//
+// typedef trait::image::border::none border;
+// typedef trait::image::data::linear data;
+// typedef trait::image::io::read_only io;
+// typedef trait::image::speed::slow speed;
};
} // end of namespace mln::trait
- /*! \brief RLE image with objects based on mln::mono_rle_image.
+ /*! RLE image with objects based on mln::mono_rle_image.
*
*
* Parameter \c P is the type of the image points.
diff --git a/milena/mln/core/image/mono_rle_image.hh b/milena/mln/core/image/mono_rle_image.hh
index b7e7c10..0a0f491 100644
--- a/milena/mln/core/image/mono_rle_image.hh
+++ b/milena/mln/core/image/mono_rle_image.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007,2008 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_IMAGE_MONO_RLE_IMAGE_HH
# define MLN_CORE_IMAGE_MONO_RLE_IMAGE_HH
-/*! \file mln/core/image/mono_rle_image.hh
- *
- * \brief Definition of an image with rle encoding.
- */
+/// \file mln/core/image/mono_rle_image.hh
+///
+/// Definition of an image with rle encoding.
# include <mln/core/internal/run_image.hh>
# include <mln/core/site_set/p_run.hh>
@@ -80,22 +80,25 @@ namespace mln
{
typedef trait::image::category::primary category;
- typedef trait::image::access::browsing access;
+ // FIXME: Update with new properties!
+
+// typedef trait::image::access::browsing access;
// FIXME: Put the right dimension.
- typedef trait::image::space::two_d space;
- typedef trait::image::size::regular size;
- typedef trait::image::support::aligned support;
-
- typedef trait::image::border::none border;
- typedef trait::image::data::linear data;
- typedef trait::image::io::read_only io;
- typedef trait::image::speed::slow speed;
+// typedef trait::image::space::two_d space;
+// typedef trait::image::size::regular size;
+// typedef trait::image::support::aligned support;
+//
+// typedef trait::image::border::none border;
+// typedef trait::image::data::linear data;
+// typedef trait::image::io::read_only io;
+// typedef trait::image::speed::slow speed;
+
};
} // end of namespace mln::trait
- /*! \brief Monochrome RLE image.
+ /*! Monochrome RLE image.
*
* RLE image with only one colour.
*
diff --git a/milena/mln/core/image/obased_rle_image.hh b/milena/mln/core/image/obased_rle_image.hh
index 8679fdb..624c181 100644
--- a/milena/mln/core/image/obased_rle_image.hh
+++ b/milena/mln/core/image/obased_rle_image.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007, 2008 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,10 @@
#ifndef MLN_CORE_IMAGE_OBASED_RLE_IMAGE_HH
# define MLN_CORE_IMAGE_OBASED_RLE_IMAGE_HH
-/*! \file mln/core/image/obased_rle_image.hh
- *
- * \brief Definition of an image with rle encoding.
- */
+/// \file mln/core/image/obased_rle_image.hh
+///
+/// Definition of an image with rle encoding.
+
# include <mln/core/internal/run_image.hh>
# include <mln/core/site_set/p_run.hh>
@@ -89,7 +90,8 @@ namespace mln
{
typedef trait::image::category::primary category;
- typedef trait::image::access::browsing access;
+ /// FIXME: Update with new properties!
+/* typedef trait::image::access::browsing access;
// FIXME: Put the right dimension.
typedef trait::image::space::two_d space;
typedef trait::image::size::regular size;
@@ -98,13 +100,13 @@ namespace mln
typedef trait::image::border::none border;
typedef trait::image::data::linear data;
typedef trait::image::io::read_only io;
- typedef trait::image::speed::slow speed;
+ typedef trait::image::speed::slow speed;*/
};
} // end of namespace mln::trait
- /*! \brief RLE image with objects.
+ /*! RLE image with objects.
*
*
* Parameter \c P is the type of the image points.
diff --git a/milena/mln/core/image/rle_image.hh b/milena/mln/core/image/rle_image.hh
index 56f54b5..91a4b66 100644
--- a/milena/mln/core/image/rle_image.hh
+++ b/milena/mln/core/image/rle_image.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007, 2008 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_IMAGE_RLE_IMAGE_HH
# define MLN_CORE_IMAGE_RLE_IMAGE_HH
-/*! \file mln/core/image/rle_image.hh
- *
- * \brief Definition of an image with rle encoding.
- */
+/// \file mln/core/image/rle_image.hh
+///
+/// Definition of an image with rle encoding.
# include <mln/core/internal/run_image.hh>
# include <mln/core/site_set/p_set_of.hh>
@@ -42,7 +42,7 @@
namespace mln
{
- // Fwd decl.
+ // Forward declaration
template <typename P, typename T> struct rle_image;
@@ -79,22 +79,23 @@ namespace mln
{
typedef trait::image::category::primary category;
- typedef trait::image::access::browsing access;
+ // FIXME: update with new properties.
+// typedef trait::image::access::browsing access;
// FIXME: Put the right dimension.
- typedef trait::image::space::two_d space;
- typedef trait::image::size::regular size;
- typedef trait::image::support::aligned support;
-
- typedef trait::image::border::none border;
- typedef trait::image::data::linear data;
- typedef trait::image::io::read_only io;
- typedef trait::image::speed::slow speed;
+// typedef trait::image::space::two_d space;
+// typedef trait::image::size::regular size;
+// typedef trait::image::support::aligned support;
+//
+// typedef trait::image::border::none border;
+// typedef trait::image::data::linear data;
+// typedef trait::image::io::read_only io;
+// typedef trait::image::speed::slow speed;
};
} // end of namespace mln::trait
- /*! \brief RLE image.
+ /*! RLE image.
*
*
* Parameter \c P is the type of the image points.
diff --git a/milena/mln/core/image/value_enc_image.hh b/milena/mln/core/image/value_enc_image.hh
index cb8de6e..d0a5a54 100644
--- a/milena/mln/core/image/value_enc_image.hh
+++ b/milena/mln/core/image/value_enc_image.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007, 2008 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_VALUE_ENC_IMAGE_CC_
# define MLN_CORE_VALUE_ENC_IMAGE_CC_
-/*! \file mln/core/image/value_enc_image.hh
- *
- * \brief Define the class value_enc_image.
- */
+/// \file mln/core/image/value_enc_image.hh
+///
+/// Define the class value_enc_image.
# include <mln/core/internal/image_primary.hh>
@@ -45,7 +45,7 @@
namespace mln
{
- // Fwd decl.
+ // Forward declaration
template <typename P, typename T> struct value_enc_image;
@@ -77,26 +77,26 @@ namespace mln
{
typedef trait::image::category::primary category;
- typedef trait::image::access::browsing access;
-
- // FIXME: Put the right dimension.
- typedef trait::image::space::two_d space;
-
- typedef trait::image::size::regular size;
- typedef trait::image::support::aligned support;
-
- typedef trait::image::border::none border;
- typedef trait::image::data::linear data;
- typedef trait::image::io::read_only io;
- typedef trait::image::speed::slow speed;
+// FIXME: update with new properties.
+// typedef trait::image::access::browsing access;
+//
+// // FIXME: Put the right dimension.
+// typedef trait::image::space::two_d space;
+//
+// typedef trait::image::size::regular size;
+// typedef trait::image::support::aligned support;
+//
+// typedef trait::image::border::none border;
+// typedef trait::image::data::linear data;
+// typedef trait::image::io::read_only io;
+// typedef trait::image::speed::slow speed;
};
} // end of namespace mln::trait
- /*! \brief Value encoded image.
- * Associate a value to set of runs.
- */
+ /// Value encoded image.
+ /// Associate a value to set of runs.
template <typename P, typename T>
class value_enc_image :
public internal::image_primary< P, p_array< p_set_of< p_run<P> > >,
diff --git a/milena/mln/core/site_set/p_bgraph.hh b/milena/mln/core/site_set/p_bgraph.hh
index 3dbd401..01a34da 100644
--- a/milena/mln/core/site_set/p_bgraph.hh
+++ b/milena/mln/core/site_set/p_bgraph.hh
@@ -41,7 +41,8 @@
/// \file mln/core/site_set/p_bgraph.hh
-/// \brief Definition of a point set based on a boost graph.
+///
+/// Definition of a point set based on a boost graph.
namespace mln
{
@@ -50,7 +51,7 @@ namespace mln
template<typename P>
struct p_bgraph
- : public internal::site_set_base_< graph_psite<P>, p_bgraph<P> >
+ : public internal::site_set_base_< bgraph_psite<P>, p_bgraph<P> >
{
typedef util::internal::boost_graph<P, util::empty> graph;
diff --git a/milena/mln/metal/ref.hh b/milena/mln/metal/ref.hh
index ac62f6b..53e1220 100644
--- a/milena/mln/metal/ref.hh
+++ b/milena/mln/metal/ref.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2008 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,11 +29,9 @@
#ifndef MLN_METAL_REF_HH
# define MLN_METAL_RFE_HH
-/*!
- * \file mln/metal/ref.hh
- *
- * \brief FIXME.
- */
+/// \file mln/metal/ref.hh
+///
+/// FIXME.
# define mlc_ref(T) typename mln::metal::ref< T >::ret
diff --git a/milena/mln/topo/adj_higher_face_iter.hh b/milena/mln/topo/adj_higher_face_iter.hh
index 0cac258..fcd9d0f 100644
--- a/milena/mln/topo/adj_higher_face_iter.hh
+++ b/milena/mln/topo/adj_higher_face_iter.hh
@@ -43,23 +43,28 @@ namespace mln
namespace topo
{
- // Forward declarations.
+ // Forward declaration.
template <unsigned D> class complex;
namespace internal
{
- template <typename F, typename E>
- class complex_iterator_base;
+ template <typename C, typename F, typename E>
+ class forward_complex_relative_iterator_base;
- } // end of namespace mln::topo::internal
+ template <typename C, typename F, typename E>
+ class backward_complex_relative_iterator_base;
+ template <unsigned D>
+ struct algebraic_face;
+
+ } // end of mln::topo::internal
/*------------------------------------.
| topo::adj_higher_face_fwd_iter<D>. |
`------------------------------------*/
- /// \brief Forward iterator on all the adjacent (n+1)-faces of the
+ /// Forward iterator on all the adjacent (n+1)-faces of the
/// n-face of an mln::complex<D>.
///
/// \arg \p D The dimension of the complex this iterator belongs to.
@@ -91,7 +96,7 @@ namespace mln
| topo::adj_higher_face_bkd_iter<D>. |
`------------------------------------*/
- /// \brief Backward iterator on all the adjacent (n+1)-faces of the
+ /// Backward iterator on all the adjacent (n+1)-faces of the
/// n-face of an mln::complex<D>.
///
/// \arg \p D The dimension of the complex this iterator belongs to.
diff --git a/milena/mln/topo/adj_lower_face_iter.hh b/milena/mln/topo/adj_lower_face_iter.hh
index 23bcc36..22c965a 100644
--- a/milena/mln/topo/adj_lower_face_iter.hh
+++ b/milena/mln/topo/adj_lower_face_iter.hh
@@ -29,6 +29,7 @@
# define MLN_TOPO_ADJ_LOWER_FACE_ITER_HH
/// \file mln/topo/adj_lower_face_iter.hh
+///
/// Definition of forward and backward iterators on the
/// adjacent (n-1)-faces of a (reference) n-face in a complex.
@@ -54,6 +55,9 @@ namespace mln
template <typename C, typename F, typename E>
class backward_complex_relative_iterator_base;
+ template <unsigned D>
+ struct algebraic_face;
+
} // end of namespace mln::topo::internal
diff --git a/milena/mln/topo/adj_lower_higher_face_iter.hh b/milena/mln/topo/adj_lower_higher_face_iter.hh
index f3c28c3..af177a1 100644
--- a/milena/mln/topo/adj_lower_higher_face_iter.hh
+++ b/milena/mln/topo/adj_lower_higher_face_iter.hh
@@ -47,6 +47,10 @@ namespace mln
// Forward declaration.
template <unsigned D> class complex;
+ template <unsigned D> class adj_lower_face_fwd_iter;
+ template <unsigned D> class adj_lower_face_bkd_iter;
+ template <unsigned D> class adj_higher_face_fwd_iter;
+ template <unsigned D> class adj_higher_face_bkd_iter;
namespace internal
{
diff --git a/milena/mln/topo/face_iter.hh b/milena/mln/topo/face_iter.hh
index a9b2665..5ed8faf 100644
--- a/milena/mln/topo/face_iter.hh
+++ b/milena/mln/topo/face_iter.hh
@@ -29,7 +29,7 @@
# define MLN_TOPO_FACE_ITER_HH
/// \file mln/topo/face_iter.hh
-/// \brief Definition of forward and backward iterators on all the
+/// Definition of forward and backward iterators on all the
/// faces of a complex.
# include <mln/topo/internal/complex_set_iterator_base.hh>
@@ -61,7 +61,7 @@ namespace mln
| topo::face_fwd_iter<D>. |
`-------------------------*/
- /// \brief Forward iterator on all the faces of an mln::complex<D>.
+ /// Forward iterator on all the faces of an mln::complex<D>.
///
/// \arg \p D The dimension of the complex this iterator belongs to.
template <unsigned D>
@@ -102,7 +102,7 @@ namespace mln
| topo::face_bkd_iter<D>. |
`-------------------------*/
- /// \brief Backward iterator on all the faces of an mln::complex<D>.
+ /// Backward iterator on all the faces of an mln::complex<D>.
///
/// \arg \p D The dimension of the complex this iterator belongs to.
template <unsigned D>
diff --git a/milena/mln/topo/n_face_iter.hh b/milena/mln/topo/n_face_iter.hh
index f12c511..e1edfc3 100644
--- a/milena/mln/topo/n_face_iter.hh
+++ b/milena/mln/topo/n_face_iter.hh
@@ -29,13 +29,14 @@
# define MLN_TOPO_N_FACE_ITER_HH
/// \file mln/topo/n_face_iter.hh
-/// \brief Definition of forward and backward iterators on all the
+///
+/// Definition of forward and backward iterators on all the
/// \a n-faces of a complex, \a n being a dynamic value.
# include <mln/topo/internal/complex_set_iterator_base.hh>
# include <mln/topo/face.hh>
-// FIXME: Factor a bit more? (Using complex_set_iterator_base.)
+// \todo Factor a bit more? (Using complex_set_iterator_base.)
// FIXME: Rename the old commplex_faces_{fwd,bkd}_iter as
// static_n_face_{fwd,bkd}_iter.
@@ -47,15 +48,24 @@ namespace mln
namespace topo
{
- // Forward declaration.
+ // Forward declarations.
template <unsigned D> class complex;
+ namespace internal
+ {
+
+ // Forward declaration.
+ template <typename F, typename E>
+ class complex_set_iterator_base;
+
+ } // end of namespace mln::topo::internal
+
/*---------------------------.
| topo::n_face_fwd_iter<D>. |
`---------------------------*/
- /// \brief Forward iterator on all the faces of an mln::complex<D>.
+ /// Forward iterator on all the faces of an mln::complex<D>.
///
/// \arg \p D The dimension of the complex this iterator belongs to.
template <unsigned D>
@@ -88,7 +98,7 @@ namespace mln
void next_();
/// \}
- /// \brief Accessors.
+ /// Accessors.
///
/// Shortcuts to face_'s accessors.
/// \{
@@ -109,7 +119,7 @@ namespace mln
| topo::n_face_bkd_iter<D>. |
`---------------------------*/
- /// \brief Backward iterator on all the faces of an mln::complex<D>.
+ /// Backward iterator on all the faces of an mln::complex<D>.
///
/// \arg \p D The dimension of the complex this iterator belongs to.
template <unsigned D>
@@ -142,7 +152,7 @@ namespace mln
void next_();
/// \}
- /// \brief Accessors.
+ /// Accessors.
///
/// Shortcuts to face_'s accessors.
/// \{
diff --git a/milena/mln/util/internal/boost_graph.hh b/milena/mln/util/internal/boost_graph.hh
index cf9d533..3e2e4da 100644
--- a/milena/mln/util/internal/boost_graph.hh
+++ b/milena/mln/util/internal/boost_graph.hh
@@ -30,7 +30,8 @@
# define MLN_UTIL_INTERNAL_BOOST_GRAPH_HH
/// \file mln/util/internal/boost_graph.hh
-/// \brief Definition of the boost::adjacenly_list decorator.
+///
+/// Definition of the boost::adjacenly_list decorator.
# include <boost/graph/adjacency_list.hpp>
@@ -45,7 +46,7 @@ namespace mln
namespace internal
{
- /// \brief Boost graph decorator base
+ /// Boost graph decorator base
/// Graph class which rests on boost::adjacency_list class.
template <typename VertexProperty = empty,
typename EdgeProperty = empty>
diff --git a/milena/mln/util/internal/boost_graph_structure.hh b/milena/mln/util/internal/boost_graph_structure.hh
index edb74d4..53ae2e7 100644
--- a/milena/mln/util/internal/boost_graph_structure.hh
+++ b/milena/mln/util/internal/boost_graph_structure.hh
@@ -28,12 +28,16 @@
/// \file mln/util/internal/boost_graph_structure.hh
-/// \brief Operations that interract with the boost_graph structure.
+///
+/// Operations that interract with the boost_graph structure.
#ifndef MLN_UTIL_INTERNAL_BOOST_GRAPH_STRUCTURE_HH_
# define MLN_UTIL_INTERNAL_BOOST_GRAPH_STRUCTURE_HH_
-/// fwd declaration
+# include <mln/util/internal/boost_graph.hh>
+
+
+/// forward declaration.
namespace mln
{
namespace util
@@ -46,11 +50,12 @@ namespace mln
}
}
+
namespace boost
{
namespace mlnu = mln::util::internal;
- /// \brief Adds edge (u,v) to the graph and returns the edge descriptor for
+ /// Adds edge (u,v) to the graph and returns the edge descriptor for
/// the new edge.
template <typename VProp, typename EProp>
std::pair<typename mlnu::boost_graph<VProp, EProp>::edge_descriptor, bool>
@@ -59,7 +64,7 @@ namespace boost
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Adds edge (u,v) to the graph and attaches p as the value of the
+ /// Adds edge (u,v) to the graph and attaches p as the value of the
/// edge's internal property storage.
template <typename VProp, typename EProp>
std::pair<typename mlnu::boost_graph<VProp, EProp>::edge_descriptor, bool>
@@ -69,14 +74,14 @@ namespace boost
edge_property_type& p,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Removes the edge (u,v) from the graph.
+ /// Removes the edge (u,v) from the graph.
template <typename VProp, typename EProp>
void
remove_edge(typename mlnu::boost_graph<VProp, EProp>::vertex_descriptor u,
typename mlnu::boost_graph<VProp, EProp>::vertex_descriptor v,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Removes the edge e from the graph.
+ /// Removes the edge e from the graph.
/// This differs from the remove_edge(u, v, g) function in the case of
/// a multigraph. This remove_edge(e, g) function removes a single edge,
/// whereas the remove_edge(u, v, g) function removes all edges (u,v).
@@ -86,14 +91,14 @@ namespace boost
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Same as remove_edge(*iter, g)
+ /// Same as remove_edge(*iter, g)
template <typename VProp, typename EProp>
void
remove_edge(typename mlnu::boost_graph<VProp, EProp>::out_edge_iterator iter,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Removes all out-edges of vertex u from the graph that
+ /// Removes all out-edges of vertex u from the graph that
/// satisfy the predicate.
template <typename VProp, typename EProp, class Predicate>
void
@@ -108,19 +113,19 @@ namespace boost
Predicate predicate,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Removes all edges of vertex u from the graph that
+ /// Removes all edges of vertex u from the graph that
/// satisfy the predicate.
template <typename VProp, typename EProp, class Predicate>
void remove_edge_if(Predicate predicate,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Adds a vertex to the graph.
+ /// Adds a vertex to the graph.
/// Returns the vertex descriptor for the new vertex.
template <typename VProp, typename EProp>
typename mlnu::boost_graph<VProp, EProp>::vertex_descriptor
add_vertex(typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Adds a vertex to the graph with the specified properties.
+ /// Adds a vertex to the graph with the specified properties.
/// Returns the vertex descriptor for the new vertex.
template <typename VProp, typename EProp>
typename mlnu::boost_graph<VProp, EProp>::vertex_descriptor
@@ -128,13 +133,13 @@ namespace boost
vertex_property_type& p,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Removes all edges to and from vertex u.
+ /// Removes all edges to and from vertex u.
template <typename VProp, typename EProp>
void
clear_vertex(typename mlnu::boost_graph<VProp, EProp>::vertex_descriptor u,
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Removes all out-edges to and from vertex u.
+ /// Removes all out-edges to and from vertex u.
template <typename VProp, typename EProp>
void
clear_out_edges(typename mlnu::boost_graph<VProp, EProp>::vertex_descriptor u,
@@ -147,7 +152,7 @@ namespace boost
typename mlnu::boost_graph<VProp, EProp>& g);
- /// \brief Remove vertex u from the vertex set of the graph.
+ /// Remove vertex u from the vertex set of the graph.
/// It is assumed that there are no edges to or from vertex u
/// when it is removed
template <typename VProp, typename EProp>
diff --git a/milena/mln/util/tree_to_image.hh b/milena/mln/util/tree_to_image.hh
index 40b31ae..9e7ddfc 100644
--- a/milena/mln/util/tree_to_image.hh
+++ b/milena/mln/util/tree_to_image.hh
@@ -35,6 +35,7 @@
/// image.
# include <mln/core/concept/image.hh>
+# include <mln/core/image/image2d.hh>
# include <mln/util/tree.hh>
# include <mln/core/site_set/p_set.hh>
# include <mln/level/fill.hh>
@@ -42,6 +43,13 @@
namespace mln
{
+ namespace level
+ {
+ template <typename I, typename D>
+ void fill(Image<I>& ima, const D& data);
+
+ }
+
namespace util
{
@@ -52,7 +60,7 @@ namespace mln
///
template <typename T, typename I>
void
- tree_to_image (tree<T>& tree, Image<I>& output_);
+ tree_to_image(tree<T>& tree, Image<I>& output_);
/// Display a tree.
///
@@ -133,7 +141,7 @@ namespace mln
const J& ima = exact(ima_);
mln_piter(p_set<point2d>) p(tree_node->elt().points);
- for_all (p)
+ for_all(p)
output(p) = true;
typename mln::util::tree_node<T>::children_t::iterator it = tree_node->children().begin();
for (;
@@ -152,11 +160,11 @@ namespace mln
trace::entering("util::impl::display_set");
const J& ima = exact(ima_);
- image2d<bool> out (ima.bbox ());
+ image2d<bool> out(ima.bbox());
level::fill(out, false);
- mln_piter(p_set<P>) p (s);
- for_all (p)
+ mln_piter(p_set<P>) p(s);
+ for_all(p)
out(p) = true;
trace::exiting("util::impl::display_set");
@@ -170,7 +178,7 @@ namespace mln
template <typename T, typename I>
inline
void
- tree_to_image (tree<T>& tree, Image<I>& output_)
+ tree_to_image(tree<T>& tree, Image<I>& output_)
{
trace::entering("util::tree_to_image");
@@ -210,7 +218,7 @@ namespace mln
const J& ima = exact(ima_);
- image2d<bool> output (ima.domain ());
+ image2d<bool> output(ima.domain());
level::fill(output, false);
impl::display_branch_rec(ima, tree_node, output);
diff --git a/milena/tests/unit_test/Makefile.am b/milena/tests/unit_test/Makefile.am
index 93d2b33..0ab70a9 100644
--- a/milena/tests/unit_test/Makefile.am
+++ b/milena/tests/unit_test/Makefile.am
@@ -3,1996 +3,1954 @@
include $(top_srcdir)/milena/tests/tests.mk
check_PROGRAMS = \
-mln_util_nil \
-mln_util_ord_pair \
-mln_util_ord \
+mln_histo_all \
+mln_histo_data \
+mln_histo_compute \
+mln_histo_essential \
+mln_geom_pmin_pmax \
+mln_geom_max_row \
+mln_geom_chamfer \
+mln_geom_min_row \
+mln_geom_seeds2tiling \
+mln_geom_size1d \
+mln_geom_all \
+mln_geom_size2d \
+mln_geom_max_ind \
+mln_geom_max_col \
+mln_geom_size3d \
+mln_geom_ninds \
+mln_geom_nslis \
+mln_geom_delta \
+mln_geom_resize \
+mln_geom_nsites \
+mln_geom_min_col \
+mln_geom_complex_geometry \
+mln_geom_ncols \
+mln_geom_nrows \
+mln_geom_min_ind \
+mln_geom_bbox \
+mln_geom_seeds2tiling_roundness \
+mln_geom_min_sli \
+mln_geom_essential \
+mln_geom_max_sli \
+mln_draw_box \
+mln_draw_all \
+mln_draw_plot \
+mln_draw_line \
+mln_draw_essential \
+mln_pw_image \
+mln_pw_all \
+mln_pw_value \
+mln_pw_cst \
+mln_pw_var \
+mln_pw_essential \
+mln_literal_zero \
+mln_literal_ops \
+mln_literal_origin \
+mln_literal_grays \
+mln_literal_all \
+mln_literal_colors \
+mln_literal_black \
+mln_literal_one \
+mln_literal_white \
+mln_literal_essential \
+mln_registration_get_rtransf \
+mln_registration_internal_rms \
+mln_registration_get_rot \
+mln_registration_all \
+mln_registration_multiscale \
+mln_registration_registration \
+mln_registration_essential \
+mln_registration_icp \
+mln_util_graph \
mln_util_max \
-mln_util_eat \
-mln_util_tree \
-mln_util_tree_fast_to_image \
-mln_util_tracked_ptr \
-mln_util_dindex \
-mln_util_site_pair \
-mln_util_set \
-mln_util_greater_point \
-mln_util_greater_psite \
-mln_util_ignore \
-mln_util_pix \
mln_util_lazy_set \
-mln_util_essential \
-mln_util_branch_iter \
-mln_util_graph \
-mln_util_index \
-mln_util_tree_to_fast \
-mln_util_line_graph \
+mln_util_set \
+mln_util_tree_to_image \
mln_util_lemmings \
-mln_util_all \
-mln_util_internal_boost_graph_property \
+mln_util_greater_point \
mln_util_internal_graph_iter_base \
-mln_util_internal_boost_graph \
-mln_util_internal_boost_graph_structure \
mln_util_internal_boost_graph_access \
-mln_util_internal_graph_base \
-mln_util_internal_vertex_impl \
+mln_util_internal_boost_graph_structure \
+mln_util_internal_graph_iter \
mln_util_internal_graph_nbh_iter \
-mln_util_internal_graph_nbh_iter_base \
+mln_util_internal_vertex_impl \
mln_util_internal_edge_impl \
-mln_util_internal_graph_iter \
+mln_util_internal_graph_base \
+mln_util_internal_boost_graph \
+mln_util_internal_graph_nbh_iter_base \
+mln_util_internal_boost_graph_property \
+mln_util_ord_pair \
+mln_util_edge \
+mln_util_all \
+mln_util_dindex \
+mln_util_tracked_ptr \
+mln_util_ignore \
+mln_util_greater_psite \
+mln_util_timer \
mln_util_yes \
+mln_util_line_graph \
+mln_util_ord \
+mln_util_tree_fast_to_image \
+mln_util_tree \
+mln_util_index \
mln_util_multi_site \
-mln_util_timer \
-mln_util_edge \
-mln_util_tree_fast \
+mln_util_branch_iter \
mln_util_branch_iter_ind \
-mln_util_tree_to_image \
-mln_util_vertex \
+mln_util_tree_to_fast \
mln_util_array \
-mln_fun_c \
-mln_fun_cast \
+mln_util_vertex \
+mln_util_pix \
+mln_util_tree_fast \
+mln_util_site_pair \
+mln_util_nil \
+mln_util_eat \
+mln_util_essential \
+mln_tag_init \
+mln_tag_skeleton \
+mln_tag_all \
+mln_tag_essential \
+mln_trace_entering \
+mln_trace_all \
+mln_trace_warning \
+mln_trace_exiting \
+mln_trace_resume \
+mln_trace_quiet \
+mln_trace_stop \
+mln_trace_essential \
+mln_make_graph \
+mln_make_double_neighb2d \
+mln_make_dpoint2d_h \
+mln_make_w_window \
+mln_make_image \
+mln_make_vec \
+mln_make_all \
+mln_make_dual_neighb \
+mln_make_w_window3d \
+mln_make_mat \
+mln_make_win_chamfer \
+mln_make_w_window2d_int \
+mln_make_box1d \
+mln_make_voronoi \
+mln_make_box2d \
+mln_make_w_window2d \
+mln_make_box3d \
+mln_make_relabelfun \
+mln_make_pixel \
+mln_make_pix \
+mln_make_box2d_h \
+mln_make_w_window1d \
+mln_make_image2d \
+mln_make_w_window_directional \
+mln_make_w_window3d_int \
+mln_make_essential \
+mln_make_w_window1d_int \
+mln_make_point2d_h \
+mln_display_all \
+mln_display_essential \
+mln_extension_adjust \
+mln_extension_duplicate \
+mln_extension_adjust_duplicate \
+mln_extension_all \
+mln_extension_adjust_fill \
+mln_extension_fill \
+mln_extension_essential \
+mln_fun_p2b_chess \
+mln_fun_p2b_all \
+mln_fun_p2b_has \
+mln_fun_p2b_big_chess \
+mln_fun_p2b_essential \
+mln_fun_p2p_mirror \
mln_fun_x2p_closest_point \
-mln_fun_x2p_essential \
mln_fun_x2p_all \
-mln_fun_p2v_elifs \
-mln_fun_p2v_iota \
-mln_fun_p2v_essential \
-mln_fun_p2v_all \
-mln_fun_p2v_ternary \
-mln_fun_vv2v_vec \
+mln_fun_x2p_essential \
+mln_fun_ops \
+mln_fun_c \
mln_fun_vv2v_max \
-mln_fun_vv2v_lxor \
-mln_fun_vv2v_essential \
+mln_fun_vv2v_lor \
mln_fun_vv2v_land_not \
-mln_fun_vv2v_macros \
+mln_fun_vv2v_vec \
mln_fun_vv2v_all \
-mln_fun_vv2v_min \
+mln_fun_vv2v_macros \
+mln_fun_vv2v_lxor \
mln_fun_vv2v_diff_abs \
mln_fun_vv2v_land \
-mln_fun_vv2v_lor \
-mln_fun_x2x_composed \
-mln_fun_x2x_essential \
-mln_fun_x2x_rotation \
-mln_fun_x2x_all \
-mln_fun_x2x_translation \
-mln_fun_essential \
-mln_fun_v2v_rgb_to_hsi \
-mln_fun_v2v_enc \
-mln_fun_v2v_cast \
-mln_fun_v2v_saturate \
+mln_fun_vv2v_min \
+mln_fun_vv2v_essential \
+mln_fun_internal_array_base \
+mln_fun_internal_x2x_linear_impl \
+mln_fun_internal_selector \
+mln_fun_p2v_ternary \
+mln_fun_p2v_iota \
+mln_fun_p2v_elifs \
+mln_fun_p2v_all \
+mln_fun_p2v_essential \
+mln_fun_all \
+mln_fun_v2b_lnot \
+mln_fun_v2b_all \
+mln_fun_v2b_threshold \
+mln_fun_v2b_essential \
mln_fun_v2v_norm \
-mln_fun_v2v_convert \
-mln_fun_v2v_id \
-mln_fun_v2v_essential \
mln_fun_v2v_linear \
+mln_fun_v2v_id \
+mln_fun_v2v_saturate \
+mln_fun_v2v_inc \
mln_fun_v2v_all \
-mln_fun_v2v_abs \
mln_fun_v2v_dec \
-mln_fun_v2v_inc \
-mln_fun_i2v_essential \
+mln_fun_v2v_abs \
+mln_fun_v2v_cast \
+mln_fun_v2v_rgb_to_hsi \
+mln_fun_v2v_enc \
+mln_fun_v2v_convert \
+mln_fun_v2v_essential \
+mln_fun_cast \
mln_fun_i2v_all \
-mln_fun_i2v_all_to \
mln_fun_i2v_array \
-mln_fun_ops \
-mln_fun_all \
-mln_fun_v2b_essential \
-mln_fun_v2b_lnot \
-mln_fun_v2b_all \
-mln_fun_v2b_threshold \
-mln_fun_internal_selector \
-mln_fun_internal_array_base \
-mln_fun_internal_x2x_linear_impl \
-mln_fun_l2l_essential \
-mln_fun_l2l_all \
+mln_fun_i2v_all_to \
+mln_fun_i2v_essential \
mln_fun_l2l_relabel \
-mln_fun_x2v_essential \
+mln_fun_l2l_all \
+mln_fun_l2l_essential \
+mln_fun_x2x_composed \
+mln_fun_x2x_all \
+mln_fun_x2x_translation \
+mln_fun_x2x_rotation \
+mln_fun_x2x_essential \
mln_fun_x2v_linear \
-mln_fun_x2v_all \
mln_fun_x2v_bilinear \
+mln_fun_x2v_all \
mln_fun_x2v_l1_norm \
mln_fun_x2v_nneighbor \
-mln_fun_p2p_mirror \
-mln_fun_p2b_essential \
-mln_fun_p2b_has \
-mln_fun_p2b_big_chess \
-mln_fun_p2b_all \
-mln_fun_p2b_chess \
-mln_extension_adjust \
-mln_extension_essential \
-mln_extension_fill \
-mln_extension_adjust_duplicate \
-mln_extension_adjust_fill \
-mln_extension_all \
-mln_extension_duplicate \
-mln_histo_data \
-mln_histo_essential \
-mln_histo_compute \
-mln_histo_all \
-mln_transform_distance_geodesic \
-mln_transform_essential \
-mln_transform_influence_zone_geodesic \
-mln_transform_distance_front \
-mln_transform_all \
-mln_transform_internal_distance_functor \
-mln_transform_internal_all \
-mln_transform_internal_influence_zone_functor \
-mln_transform_influence_zone_front \
-mln_trait_windows \
-mln_trait_images \
-mln_trait_solve \
-mln_trait_window_print \
-mln_trait_window_props \
-mln_trait_image_from_grid \
-mln_trait_site_sets \
+mln_fun_x2v_essential \
+mln_fun_essential \
+mln_all \
+mln_convert_to_p_set \
+mln_convert_to \
+mln_convert_to_upper_window \
+mln_convert_to_image \
+mln_convert_to_fun \
+mln_convert_all \
+mln_convert_to_window \
+mln_convert_from_to \
+mln_convert_impl_from_value_to_value \
+mln_convert_impl_all \
+mln_convert_impl_from_image_to_site_set \
+mln_convert_to_dpoint \
+mln_convert_to_p_array \
+mln_convert_to_rgb \
+mln_convert_essential \
+mln_value_float01_f \
+mln_value_float01_16 \
+mln_value_lut_vec \
+mln_value_glf \
+mln_value_other \
+mln_value_graylevel_f \
+mln_value_aliases \
+mln_value_label_16 \
+mln_value_ops \
+mln_value_set \
+mln_value_int_u_sat \
+mln_value_float01_8 \
+mln_value_int_u8 \
+mln_value_equiv \
+mln_value_internal_integer \
+mln_value_internal_gray_f \
+mln_value_internal_all \
+mln_value_internal_value_like \
+mln_value_internal_iterable_set \
+mln_value_internal_encoding \
+mln_value_internal_convert \
+mln_value_internal_gray_ \
+mln_value_internal_essential \
+mln_value_proxy \
+mln_value_viter \
+mln_value_graylevel \
+mln_value_all \
+mln_value_super_value \
+mln_value_builtin_symbolics \
+mln_value_builtin_ops \
+mln_value_builtin_all \
+mln_value_builtin_promotions \
+mln_value_builtin_integers \
+mln_value_builtin_floatings \
+mln_value_builtin_essential \
+mln_value_sign \
+mln_value_hsi \
+mln_value_interval \
+mln_value_gl16 \
+mln_value_scalar \
+mln_value_float01 \
+mln_value_cast \
+mln_value_int_u \
+mln_value_int_s8 \
+mln_value_int_s16 \
+mln_value_int_u16 \
+mln_value_label \
+mln_value_rgb \
+mln_value_stack \
+mln_value_concept_integer \
+mln_value_concept_structured \
+mln_value_concept_built_in \
+mln_value_concept_all \
+mln_value_concept_scalar \
+mln_value_concept_data \
+mln_value_concept_floating \
+mln_value_concept_symbolic \
+mln_value_concept_vectorial \
+mln_value_concept_essential \
+mln_value_int_s \
+mln_value_rgb8 \
+mln_value_int_s32 \
+mln_value_float01_ \
+mln_value_rgb16 \
+mln_value_int_u32 \
+mln_value_gl8 \
+mln_value_label_8 \
+mln_value_essential \
+mln_accu_tuple \
+mln_accu_min_h \
+mln_accu_max \
+mln_accu_lor \
+mln_accu_rank \
+mln_accu_transform_stop \
+mln_accu_maj_h \
+mln_accu_min_max \
+mln_accu_internal_base \
+mln_accu_transform_snake \
+mln_accu_rank_high_quant \
+mln_accu_count \
+mln_accu_median_h \
+mln_accu_all \
+mln_accu_land_basic \
+mln_accu_p \
+mln_accu_transform \
+mln_accu_median_alt \
+mln_accu_volume \
+mln_accu_sum \
+mln_accu_height \
+mln_accu_land \
+mln_accu_take \
+mln_accu_histo \
+mln_accu_pair \
+mln_accu_count_adjacent_vertices \
+mln_accu_convolve \
+mln_accu_v \
+mln_accu_rank_bool \
+mln_accu_min \
+mln_accu_transform_directional \
+mln_accu_compute \
+mln_accu_mean \
+mln_accu_lor_basic \
+mln_accu_transform_diagonal \
+mln_accu_nil \
+mln_accu_bbox \
+mln_accu_center \
+mln_accu_line \
+mln_accu_essential \
+mln_accu_max_h \
+mln_level_compare \
+mln_level_memset_ \
+mln_level_transform_inplace \
+mln_level_replace \
+mln_level_memcpy_ \
+mln_level_apply \
+mln_level_approx_all \
+mln_level_approx_essential \
+mln_level_approx_median \
+mln_level_saturate \
+mln_level_all \
+mln_level_paste \
+mln_level_fast_median \
+mln_level_abs \
+mln_level_fill_with_image \
+mln_level_transform \
+mln_level_fill_with_value \
+mln_level_stretch \
+mln_level_was_median \
+mln_level_compute \
+mln_level_convert \
+mln_level_to_enc \
+mln_level_naive_all \
+mln_level_naive_essential \
+mln_level_naive_median \
+mln_level_sort_psites \
+mln_level_update \
+mln_level_fill \
+mln_level_essential \
+mln_level_assign \
+mln_level_median \
+mln_math_jacobi \
+mln_math_max \
+mln_math_sqr \
+mln_math_all \
+mln_math_sign \
+mln_math_abs \
+mln_math_diff_abs \
+mln_math_round \
+mln_math_min \
+mln_math_sqrt \
+mln_math_essential \
+mln_math_round_sat \
+mln_binarization_includes \
+mln_binarization_all \
+mln_binarization_binarization \
+mln_binarization_threshold \
+mln_binarization_essential \
+mln_trait_site_set_props \
+mln_trait_site_set_print \
+mln_trait_promote \
mln_trait_solve_binary \
mln_trait_value_ \
-mln_trait_promote \
-mln_trait_essential \
-mln_trait_concrete \
-mln_trait_op_ord \
-mln_trait_op_div \
+mln_trait_all \
+mln_trait_value_all \
+mln_trait_value_nature \
+mln_trait_value_quant \
+mln_trait_value_kind \
+mln_trait_value_print \
+mln_trait_value_essential \
+mln_trait_images \
+mln_trait_window_props \
+mln_trait_window_print \
+mln_trait_ch_value \
+mln_trait_solve \
+mln_trait_solve_unary \
+mln_trait_op_postdec \
mln_trait_op_mod \
+mln_trait_op_lor \
+mln_trait_op_neq \
+mln_trait_op_plus \
+mln_trait_op_xor \
+mln_trait_op_all \
+mln_trait_op_geq \
+mln_trait_op_uminus \
mln_trait_op_not \
-mln_trait_op_or \
+mln_trait_op_times \
+mln_trait_op_less \
+mln_trait_op_decl \
+mln_trait_op_ord \
mln_trait_op_and \
-mln_trait_op_xor \
-mln_trait_op_essential \
+mln_trait_op_or \
+mln_trait_op_predec \
+mln_trait_op_minus \
+mln_trait_op_div \
+mln_trait_op_leq \
mln_trait_op_preinc \
mln_trait_op_greater \
-mln_trait_op_predec \
-mln_trait_op_neq \
mln_trait_op_postinc \
mln_trait_op_uplus \
-mln_trait_op_geq \
-mln_trait_op_uminus \
-mln_trait_op_all \
-mln_trait_op_plus \
+mln_trait_op_essential \
mln_trait_op_eq \
-mln_trait_op_leq \
-mln_trait_op_less \
-mln_trait_op_postdec \
-mln_trait_op_minus \
-mln_trait_op_times \
-mln_trait_op_decl \
-mln_trait_op_lor \
-mln_trait_all \
+mln_trait_concrete \
+mln_trait_windows \
+mln_trait_site_sets \
+mln_trait_image_from_grid \
mln_trait_undef \
-mln_trait_image_print \
mln_trait_image_props \
-mln_trait_solve_unary \
-mln_trait_site_set_print \
-mln_trait_site_set_props \
+mln_trait_image_print \
mln_trait_neighborhood \
-mln_trait_ch_value \
-mln_trait_value_print \
-mln_trait_value_nature \
-mln_trait_value_kind \
-mln_trait_value_quant \
-mln_trait_value_essential \
-mln_trait_value_all \
-mln_win_disk2d \
-mln_win_cuboid3d \
-mln_win_segment1d \
-mln_win_octagon2d \
+mln_trait_essential \
+mln_canvas_labeling \
+mln_canvas_browsing_hyper_directional \
+mln_canvas_browsing_snake_generic \
+mln_canvas_browsing_backdiagonal2d \
+mln_canvas_browsing_snake_vert \
+mln_canvas_browsing_snake_fwd \
+mln_canvas_browsing_all \
+mln_canvas_browsing_diagonal2d \
+mln_canvas_browsing_fwd \
+mln_canvas_browsing_dir_struct_elt_incr_update \
+mln_canvas_browsing_depth_first_search \
+mln_canvas_browsing_directional \
+mln_canvas_browsing_essential \
+mln_canvas_chamfer \
+mln_canvas_distance_geodesic \
+mln_canvas_all \
+mln_canvas_distance_front \
+mln_canvas_morpho_all \
+mln_canvas_morpho_algebraic_union_find \
+mln_canvas_morpho_essential \
+mln_canvas_essential \
+mln_metal_is_const \
+mln_metal_none \
+mln_metal_equal \
+mln_metal_unptr \
+mln_metal_not_equal \
+mln_metal_is_ref \
+mln_metal_ret \
+mln_metal_unqualif \
+mln_metal_is_not \
+mln_metal_vec \
+mln_metal_is \
+mln_metal_bool \
+mln_metal_all \
+mln_metal_math_pow \
+mln_metal_math_max \
+mln_metal_math_all \
+mln_metal_math_root \
+mln_metal_math_sqrt \
+mln_metal_mat \
+mln_metal_is_not_const \
+mln_metal_fix_return \
+mln_metal_ands \
+mln_metal_const \
+mln_metal_is_unqualif \
+mln_metal_unconst \
+mln_metal_bexpr \
+mln_metal_array2d \
+mln_metal_is_not_a \
+mln_metal_is_a \
+mln_metal_array1d \
+mln_metal_if \
+mln_metal_unref \
+mln_metal_array \
+mln_metal_ref \
+mln_metal_same_point \
+mln_metal_int \
+mln_metal_abort \
+mln_metal_same_coord \
+mln_metal_templated_by \
+mln_metal_goes_to \
+mln_metal_is_not_ref \
+mln_metal_converts_to \
+mln_metal_essential \
+mln_metal_array3d \
+mln_algebra_vec \
+mln_algebra_all \
+mln_algebra_h_vec \
+mln_algebra_mat \
+mln_algebra_h_mat \
+mln_algebra_quat \
+mln_algebra_essential \
+mln_linear_convolve_2x1d \
+mln_linear_all \
+mln_linear_ch_convolve \
+mln_linear_gaussian \
+mln_linear_convolve \
+mln_linear_sobel_2d \
+mln_linear_local_convolve \
+mln_linear_lap \
+mln_linear_convolve_directional \
+mln_linear_log \
+mln_linear_essential \
+mln_morpho_thinning \
+mln_morpho_meyer_wst \
+mln_morpho_opening \
+mln_morpho_includes \
+mln_morpho_elementary_opening \
+mln_morpho_elementary_gradient_internal \
+mln_morpho_elementary_dilation \
+mln_morpho_elementary_laplacian \
+mln_morpho_elementary_all \
+mln_morpho_elementary_gradient_external \
+mln_morpho_elementary_like_ero_fun \
+mln_morpho_elementary_gradient \
+mln_morpho_elementary_like_ero_set \
+mln_morpho_elementary_closing \
+mln_morpho_elementary_top_hat \
+mln_morpho_elementary_erosion \
+mln_morpho_elementary_essential \
+mln_morpho_thin_fit \
+mln_morpho_skeleton_constrained \
+mln_morpho_complementation \
+mln_morpho_line_gradient \
+mln_morpho_hit_or_miss \
+mln_morpho_closing_height \
+mln_morpho_plus \
+mln_morpho_general \
+mln_morpho_internal_elementary \
+mln_morpho_contrast \
+mln_morpho_opening_area \
+mln_morpho_opening_height \
+mln_morpho_thickening \
+mln_morpho_dilation \
+mln_morpho_laplacian \
+mln_morpho_all \
+mln_morpho_opening_attribute \
+mln_morpho_opening_volume \
+mln_morpho_closing_area_on_vertices \
+mln_morpho_closing_volume \
+mln_morpho_minus \
+mln_morpho_gradient \
+mln_morpho_tree_max \
+mln_morpho_tree_compute_parent \
+mln_morpho_tree_all \
+mln_morpho_tree_utils \
+mln_morpho_tree_data \
+mln_morpho_tree_compute_attribute_image \
+mln_morpho_opening_area_on_vertices \
+mln_morpho_min \
+mln_morpho_closing \
+mln_morpho_top_hat \
+mln_morpho_erosion \
+mln_morpho_Rd \
+mln_morpho_closing_area \
+mln_morpho_thick_miss \
+mln_morpho_closing_attribute \
+mln_morpho_rank_filter \
+mln_morpho_essential \
+mln_topo_n_face_iter \
+mln_topo_face_iter \
+mln_topo_is_simple_2d \
+mln_topo_centered_iter_adapter \
+mln_topo_internal_complex_set_iterator_base \
+mln_topo_internal_complex_iterator_base \
+mln_topo_internal_complex_relative_iterator_base \
+mln_topo_internal_complex_relative_iterator_sequence \
+mln_topo_algebraic_n_face \
+mln_topo_attic_faces_iter \
+mln_topo_adj_lower_dim_connected_n_face_iter \
+mln_topo_n_face \
+mln_topo_adj_lower_higher_face_iter \
+mln_topo_all \
+mln_topo_face_data \
+mln_topo_static_n_face_iter \
+mln_topo_face \
+mln_topo_adj_m_face_iter \
+mln_topo_complex \
+mln_topo_adj_higher_face_iter \
+mln_topo_adj_lower_face_iter \
+mln_topo_complex_iterators \
+mln_topo_center_only_iter \
+mln_topo_adj_higher_dim_connected_n_face_iter \
+mln_topo_algebraic_face \
+mln_topo_n_faces_set \
+mln_topo_essential \
+mln_essential_1d \
+mln_essential_routine \
+mln_essential_3d \
+mln_essential_2d \
+mln_win_inter \
mln_win_backdiag2d \
-mln_win_diag2d \
+mln_win_segment1d \
+mln_win_cuboid3d \
mln_win_vline2d \
-mln_win_essential \
+mln_win_octagon2d \
+mln_win_all \
+mln_win_multiple_size \
+mln_win_cube3d \
mln_win_shift \
mln_win_sym \
-mln_win_hline2d \
-mln_win_inter \
-mln_win_all \
mln_win_diff \
-mln_win_rectangle2d \
mln_win_multiple \
+mln_win_diag2d \
+mln_win_disk2d \
+mln_win_rectangle2d \
+mln_win_hline2d \
mln_win_line \
-mln_win_multiple_size \
-mln_win_cube3d \
-mln_core_category \
-mln_core_pixter1d \
-mln_core_routine_init \
-mln_core_routine_essential \
-mln_core_routine_primary \
-mln_core_routine_clone \
-mln_core_routine_ops \
-mln_core_routine_all \
-mln_core_routine_initialize \
-mln_core_routine_extend \
-mln_core_routine_exact \
-mln_core_trait_qlf_value \
-mln_core_trait_op_mult \
-mln_core_trait_essential \
-mln_core_trait_pixter \
-mln_core_trait_all \
-mln_core_a_point_of \
-mln_core_def_coordf \
+mln_win_essential \
+mln_core_clock_neighb \
+mln_core_pixter2d \
mln_core_def_low_quant_nbits \
-mln_core_def_essential \
mln_core_def_all \
+mln_core_def_coordf \
mln_core_def_coord \
-mln_core_dpoints_pixter \
+mln_core_def_essential \
+mln_core_site_set_box \
+mln_core_site_set_p_vertices \
+mln_core_site_set_p_vaccess \
+mln_core_site_set_p_if_piter \
+mln_core_site_set_p_run_piter \
+mln_core_site_set_p_key \
+mln_core_site_set_p_double \
+mln_core_site_set_p_complex_piter \
+mln_core_site_set_p_complex \
+mln_core_site_set_p_image \
+mln_core_site_set_attic_p_complex_faces_piter \
+mln_core_site_set_attic_p_faces_piter \
+mln_core_site_set_p_priority \
+mln_core_site_set_p_set_of \
+mln_core_site_set_all \
+mln_core_site_set_p_edges \
+mln_core_site_set_box_piter \
+mln_core_site_set_p_faces \
+mln_core_site_set_p_set \
+mln_core_site_set_p_queue \
+mln_core_site_set_p_if \
+mln_core_site_set_operators \
+mln_core_site_set_p_mutable_array_of \
+mln_core_site_set_p_edges_psite \
+mln_core_site_set_complex_psite \
+mln_core_site_set_p_run \
+mln_core_site_set_p_n_faces_piter \
+mln_core_site_set_p_centered \
+mln_core_site_set_p_bgraph \
+mln_core_site_set_p_bgraph_piter \
+mln_core_site_set_p_array \
+mln_core_site_set_p_vertices_psite \
+mln_core_site_set_p_line2d \
+mln_core_site_set_p_queue_fast \
+mln_core_site_set_p_graph_piter \
+mln_core_site_set_essential \
mln_core_dpsites_piter \
-mln_core_tags \
-mln_core_window \
-mln_core_pixter2d \
-mln_core_essential \
mln_core_w_window \
-mln_core_alias_point2d \
-mln_core_alias_box2d_h \
-mln_core_alias_box2d \
-mln_core_alias_point2d_h \
-mln_core_alias_neighb3d \
-mln_core_alias_window1d \
-mln_core_alias_point3df \
-mln_core_alias_w_window2d_int \
-mln_core_alias_point1d \
-mln_core_alias_w_window3d_float \
-mln_core_alias_w_window1d_int \
-mln_core_alias_dpoint2d_h \
-mln_core_alias_dpoint1d \
-mln_core_alias_complex_image \
-mln_core_alias_complex_geometry \
-mln_core_alias_p_run2d \
-mln_core_alias_w_window1d_float \
-mln_core_alias_w_window3d_int \
-mln_core_alias_box3d \
-mln_core_alias_neighb1d \
-mln_core_alias_neighb2d \
-mln_core_alias_w_window2d_float \
-mln_core_alias_window2d \
-mln_core_alias_window3d \
-mln_core_alias_point3d \
-mln_core_alias_dpoint3d \
-mln_core_alias_dpoint2d \
-mln_core_alias_box1d \
-mln_core_alias_p_runs2d \
-mln_core_point \
-mln_core_clock_neighb \
-mln_core_neighb \
-mln_core_dpoint \
-mln_core_var \
-mln_core_faces_psite \
-mln_core_contract \
-mln_core_macros \
-mln_core_all \
-mln_core_internal_image_primary \
-mln_core_internal_window_base \
+mln_core_grids \
+mln_core_dpoints_pixter \
mln_core_internal_graph_psite_base \
-mln_core_internal_data \
-mln_core_internal_site_set_impl \
-mln_core_internal_piter_adaptor \
-mln_core_internal_image_morpher \
+mln_core_internal_run_image \
+mln_core_internal_pixel_impl \
+mln_core_internal_site_set_base \
mln_core_internal_image_value_morpher \
-mln_core_internal_complex_window_p_base \
+mln_core_internal_site_iterator_base \
+mln_core_internal_complex_neighborhood_base \
+mln_core_internal_site_relative_iterator_base \
+mln_core_internal_site_set_impl \
+mln_core_internal_exact \
mln_core_internal_p_complex_piter_base \
-mln_core_internal_site_set_base \
mln_core_internal_neighb_niter_impl \
-mln_core_internal_site_set_iterator_base \
-mln_core_internal_set_of \
-mln_core_internal_check_image_fastest \
-mln_core_internal_check_image_all \
+mln_core_internal_pixel_iterator_base \
mln_core_internal_classical_window_base \
+mln_core_internal_data \
mln_core_internal_force_exact \
-mln_core_internal_pixel_iterator_base \
-mln_core_internal_coord_impl \
-mln_core_internal_pixel_impl \
-mln_core_internal_site_iterator_base \
-mln_core_internal_run_image \
+mln_core_internal_image_base \
+mln_core_internal_check_image_fastest \
+mln_core_internal_check_image_all \
mln_core_internal_fixme \
-mln_core_internal_pseudo_site_base \
mln_core_internal_morpher_lvalue \
mln_core_internal_image_domain_morpher \
-mln_core_internal_complex_neighborhood_base \
+mln_core_internal_image_primary \
+mln_core_internal_set_of \
+mln_core_internal_complex_window_p_base \
mln_core_internal_graph_window_base \
-mln_core_internal_image_identity \
-mln_core_internal_geom_bbox \
+mln_core_internal_piter_adaptor \
mln_core_internal_weighted_window_base \
mln_core_internal_neighborhood_base \
-mln_core_internal_site_relative_iterator_base \
-mln_core_internal_exact \
+mln_core_internal_image_morpher \
+mln_core_internal_coord_impl \
+mln_core_internal_geom_bbox \
+mln_core_internal_image_identity \
+mln_core_internal_pseudo_site_base \
+mln_core_internal_window_base \
mln_core_internal_box_impl \
-mln_core_internal_image_base \
+mln_core_internal_site_set_iterator_base \
+mln_core_contract \
+mln_core_all \
+mln_core_point \
+mln_core_neighb \
+mln_core_routine_initialize \
+mln_core_routine_primary \
+mln_core_routine_init \
+mln_core_routine_ops \
+mln_core_routine_all \
+mln_core_routine_clone \
+mln_core_routine_exact \
+mln_core_routine_extend \
+mln_core_routine_essential \
+mln_core_trait_op_mult \
+mln_core_trait_all \
+mln_core_trait_pixter \
+mln_core_trait_qlf_value \
+mln_core_trait_essential \
+mln_core_pixter1d \
+mln_core_category \
+mln_core_macros \
+mln_core_box_runstart_piter \
+mln_core_tags \
+mln_core_dpoint \
+mln_core_alias_dpoint2d_h \
+mln_core_alias_p_run2d \
+mln_core_alias_point3d \
+mln_core_alias_neighb3d \
+mln_core_alias_window3d \
+mln_core_alias_neighb2d \
+mln_core_alias_complex_image \
+mln_core_alias_w_window1d_float \
+mln_core_alias_neighb1d \
+mln_core_alias_w_window2d_float \
+mln_core_alias_w_window2d_int \
+mln_core_alias_box1d \
+mln_core_alias_box2d \
+mln_core_alias_window1d \
+mln_core_alias_point1d \
+mln_core_alias_box3d \
+mln_core_alias_dpoint3d \
+mln_core_alias_complex_geometry \
+mln_core_alias_w_window3d_float \
+mln_core_alias_box2d_h \
+mln_core_alias_point2d \
+mln_core_alias_window2d \
+mln_core_alias_p_runs2d \
+mln_core_alias_point3df \
+mln_core_alias_dpoint1d \
+mln_core_alias_w_window3d_int \
+mln_core_alias_dpoint2d \
+mln_core_alias_w_window1d_int \
+mln_core_alias_point2d_h \
+mln_core_window \
+mln_core_concept_site_proxy \
+mln_core_concept_point_site \
+mln_core_concept_box \
+mln_core_concept_generalized_pixel \
+mln_core_concept_graph \
+mln_core_concept_iterator \
+mln_core_concept_pseudo_site \
+mln_core_concept_image \
+mln_core_concept_value_set \
+mln_core_concept_proxy \
+mln_core_concept_site \
+mln_core_concept_weighted_window \
+mln_core_concept_all \
+mln_core_concept_gpoint \
+mln_core_concept_site_iterator \
+mln_core_concept_point \
+mln_core_concept_literal \
+mln_core_concept_pixel_iterator \
+mln_core_concept_value_iterator \
+mln_core_concept_meta_accumulator \
+mln_core_concept_gdpoint \
+mln_core_concept_regular_grid \
+mln_core_concept_mesh \
+mln_core_concept_dpoint \
+mln_core_concept_function \
+mln_core_concept_window \
+mln_core_concept_value \
+mln_core_concept_accumulator \
+mln_core_concept_site_set \
+mln_core_concept_object \
+mln_core_concept_delta_point_site \
+mln_core_concept_neighborhood \
+mln_core_concept_browsing \
+mln_core_pixel \
mln_core_clock_neighb2d \
+mln_core_pixter3d \
mln_core_image_obased_rle_encode \
mln_core_image_plain \
+mln_core_image_image3d \
mln_core_image_decorated_image \
-mln_core_image_graph_image \
-mln_core_image_complex_neighborhood_piter \
-mln_core_image_graph_window_piter \
-mln_core_image_hexa_piter \
-mln_core_image_rle_encode \
-mln_core_image_extension_val \
-mln_core_image_tr_image \
-mln_core_image_fi_adaptor \
mln_core_image_extension_ima \
-mln_core_image_sparse_encode \
-mln_core_image_lazy_image \
-mln_core_image_hexa \
mln_core_image_flat_image \
-mln_core_image_essential \
-mln_core_image_value_enc_image \
-mln_core_image_image_if \
-mln_core_image_complex_image \
-mln_core_image_image2d_h \
-mln_core_image_rle_image \
-mln_core_image_complex_window_piter \
-mln_core_image_mono_rle_image \
+mln_core_image_complex_neighborhood_piter \
+mln_core_image_tr_mesh \
mln_core_image_graph_elt_window \
-mln_core_image_interpolated \
-mln_core_image_image1d \
-mln_core_image_value_encode \
+mln_core_image_obased_rle_image \
mln_core_image_mono_obased_rle_image \
+mln_core_image_interpolated \
+mln_core_image_lazy_image \
mln_core_image_t_image \
-mln_core_image_image2d \
-mln_core_image_cast_image \
-mln_core_image_obased_rle_image \
+mln_core_image_hexa_piter \
+mln_core_image_value_enc_image \
+mln_core_image_sub_image_if \
mln_core_image_all \
-mln_core_image_complex_windows \
-mln_core_image_safe \
-mln_core_image_extended \
+mln_core_image_mono_rle_image \
+mln_core_image_complex_image \
+mln_core_image_cast_image \
+mln_core_image_rle_encode \
+mln_core_image_complex_window_piter \
+mln_core_image_tr_image \
+mln_core_image_sub_image \
+mln_core_image_rle_image \
+mln_core_image_line_graph_elt_window \
+mln_core_image_mono_rle_encode \
+mln_core_image_bgraph_psite \
mln_core_image_sparse_image \
mln_core_image_bgraph_image \
-mln_core_image_image3d \
-mln_core_image_bgraph_psite \
-mln_core_image_sub_image_if \
-mln_core_image_line_graph_elt_window \
-mln_core_image_tr_mesh \
-mln_core_image_sub_image \
-mln_core_image_ch_piter \
+mln_core_image_complex_neighborhoods \
+mln_core_image_graph_window_piter \
+mln_core_image_sparse_encode \
+mln_core_image_safe \
mln_core_image_extension_fun \
+mln_core_image_image1d \
+mln_core_image_extension_val \
+mln_core_image_image_if \
+mln_core_image_hexa \
+mln_core_image_extended \
+mln_core_image_image2d_h \
+mln_core_image_image2d \
+mln_core_image_ch_piter \
+mln_core_image_complex_windows \
mln_core_image_mono_obased_rle_encode \
-mln_core_image_line_graph_image \
-mln_core_image_mono_rle_encode \
-mln_core_image_complex_neighborhoods \
-mln_core_pixter3d \
-mln_core_concept_site \
-mln_core_concept_value \
-mln_core_concept_gdpoint \
-mln_core_concept_pseudo_site \
-mln_core_concept_delta_point_site \
-mln_core_concept_site_set \
-mln_core_concept_value_set \
-mln_core_concept_gpoint \
-mln_core_concept_site_proxy \
-mln_core_concept_window \
-mln_core_concept_mesh \
-mln_core_concept_box \
-mln_core_concept_graph \
-mln_core_concept_point \
-mln_core_concept_value_iterator \
-mln_core_concept_doc_site_set \
-mln_core_concept_doc_image_fastest \
-mln_core_concept_doc_value_set \
-mln_core_concept_doc_window \
-mln_core_concept_doc_box \
-mln_core_concept_doc_value_iterator \
-mln_core_concept_doc_weighted_window \
-mln_core_concept_doc_image \
-mln_core_concept_doc_dpoint \
-mln_core_concept_doc_iterator \
-mln_core_concept_doc_accumulator \
-mln_core_concept_doc_neighborhood \
-mln_core_concept_doc_pixel_iterator \
-mln_core_concept_doc_point_iterator \
-mln_core_concept_doc_object \
-mln_core_concept_doc_generalized_pixel \
-mln_core_concept_doc_point_site \
-mln_core_concept_weighted_window \
-mln_core_concept_image \
-mln_core_concept_function \
-mln_core_concept_browsing \
-mln_core_concept_dpoint \
-mln_core_concept_iterator \
-mln_core_concept_meta_accumulator \
-mln_core_concept_accumulator \
-mln_core_concept_all \
-mln_core_concept_proxy \
-mln_core_concept_neighborhood \
-mln_core_concept_pixel_iterator \
-mln_core_concept_literal \
-mln_core_concept_site_iterator \
-mln_core_concept_regular_grid \
-mln_core_concept_object \
-mln_core_concept_generalized_pixel \
-mln_core_concept_point_site \
-mln_core_site_set_p_array \
-mln_core_site_set_p_priority \
-mln_core_site_set_p_bgraph \
-mln_core_site_set_p_queue \
-mln_core_site_set_p_double \
-mln_core_site_set_p_set \
-mln_core_site_set_p_complex \
-mln_core_site_set_p_graph_piter \
-mln_core_site_set_p_n_faces_piter \
-mln_core_site_set_p_set_of \
-mln_core_site_set_p_vaccess \
-mln_core_site_set_box_piter \
-mln_core_site_set_p_vertices_psite \
-mln_core_site_set_complex_psite \
-mln_core_site_set_p_run \
-mln_core_site_set_essential \
-mln_core_site_set_box \
-mln_core_site_set_p_line2d \
-mln_core_site_set_p_edges_psite \
-mln_core_site_set_p_mutable_array_of \
-mln_core_site_set_p_run_piter \
-mln_core_site_set_p_faces \
-mln_core_site_set_operators \
-mln_core_site_set_p_if_piter \
-mln_core_site_set_all \
-mln_core_site_set_p_edges \
-mln_core_site_set_p_bgraph_piter \
-mln_core_site_set_p_centered \
-mln_core_site_set_p_key \
-mln_core_site_set_p_vertices \
-mln_core_site_set_p_if \
-mln_core_site_set_p_queue_fast \
-mln_core_site_set_p_image \
-mln_core_site_set_p_complex_piter \
-mln_core_site_set_attic_p_faces_piter \
-mln_core_site_set_attic_p_complex_faces_piter \
-mln_core_pixel \
-mln_core_box_runstart_piter \
-mln_core_grids \
-mln_io_abort \
-mln_io_pbm_all \
-mln_io_pbm_load \
-mln_io_pbm_save \
-mln_io_essential \
-mln_io_off_all \
-mln_io_off_load \
-mln_io_off_save \
-mln_io_pfm_all \
-mln_io_pfm_load \
-mln_io_pfm_save \
-mln_io_pgm_all \
+mln_core_image_value_encode \
+mln_core_image_essential \
+mln_core_a_point_of \
+mln_core_var \
+mln_core_essential \
+mln_core_faces_psite \
+mln_labeling_blobs \
+mln_labeling_background \
+mln_labeling_relabel \
+mln_labeling_all \
+mln_labeling_level \
+mln_labeling_flat_zones \
+mln_labeling_foreground \
+mln_labeling_regional_maxima \
+mln_labeling_compute \
+mln_labeling_regional_minima \
+mln_labeling_essential \
+mln_test_predicate \
+mln_test_all \
+mln_test_positive \
+mln_test_essential \
+mln_transform_distance_geodesic \
+mln_transform_internal_all \
+mln_transform_internal_distance_functor \
+mln_transform_internal_influence_zone_functor \
+mln_transform_all \
+mln_transform_influence_zone_front \
+mln_transform_distance_front \
+mln_transform_influence_zone_geodesic \
+mln_transform_essential \
+mln_arith_includes \
+mln_arith_plus \
+mln_arith_all \
+mln_arith_times \
+mln_arith_diff_abs \
+mln_arith_minus \
+mln_arith_min \
+mln_arith_revert \
+mln_arith_essential \
mln_io_pgm_load \
+mln_io_pgm_all \
mln_io_pgm_save \
+mln_io_ppm_load \
+mln_io_ppm_all \
+mln_io_ppm_save \
+mln_io_pfm_load \
+mln_io_pfm_all \
+mln_io_pfm_save \
mln_io_all \
-mln_io_fits_all \
-mln_io_fits_load \
+mln_io_pbm_load \
+mln_io_pbm_all \
+mln_io_pbm_save \
mln_io_pnm_max_component \
-mln_io_pnm_save_header \
-mln_io_pnm_macros \
-mln_io_pnm_all \
mln_io_pnm_load \
mln_io_pnm_load_header \
+mln_io_pnm_all \
+mln_io_pnm_macros \
mln_io_pnm_save \
-mln_io_ppm_all \
-mln_io_ppm_load \
-mln_io_ppm_save \
+mln_io_pnm_save_header \
mln_io_txt_all \
mln_io_txt_save \
-mln_make_vec \
-mln_make_box2d_h \
-mln_make_box2d \
-mln_make_point2d_h \
-mln_make_double_neighb2d \
-mln_make_w_window2d_int \
-mln_make_w_window1d \
-mln_make_relabelfun \
-mln_make_pix \
-mln_make_w_window1d_int \
-mln_make_dpoint2d_h \
-mln_make_essential \
-mln_make_graph \
-mln_make_w_window \
-mln_make_image \
-mln_make_w_window3d_int \
-mln_make_box3d \
-mln_make_image2d \
-mln_make_all \
-mln_make_dual_neighb \
-mln_make_win_chamfer \
-mln_make_pixel \
-mln_make_w_window2d \
-mln_make_w_window_directional \
-mln_make_box1d \
-mln_make_mat \
-mln_make_voronoi \
-mln_make_w_window3d \
-mln_topo_adj_lower_face_iter \
-mln_topo_adj_lower_dim_connected_n_face_iter \
-mln_topo_face_iter \
-mln_topo_algebraic_n_face \
-mln_topo_complex \
-mln_topo_face_data \
-mln_topo_adj_higher_dim_connected_n_face_iter \
-mln_topo_essential \
-mln_topo_static_n_face_iter \
-mln_topo_n_faces_set \
-mln_topo_adj_higher_face_iter \
-mln_topo_all \
-mln_topo_internal_complex_iterator_base \
-mln_topo_internal_complex_relative_iterator_sequence \
-mln_topo_internal_complex_relative_iterator_base \
-mln_topo_internal_complex_set_iterator_base \
-mln_topo_adj_m_face_iter \
-mln_topo_n_face \
-mln_topo_complex_iterators \
-mln_topo_adj_lower_higher_face_iter \
-mln_topo_is_simple_2d \
-mln_topo_face \
-mln_topo_center_only_iter \
-mln_topo_centered_iter_adapter \
-mln_topo_algebraic_face \
-mln_topo_n_face_iter \
-mln_topo_attic_faces_iter \
-mln_subsampling_essential \
-mln_subsampling_subsampling \
-mln_subsampling_all \
-mln_subsampling_gaussian_subsampling \
-mln_canvas_distance_geodesic \
-mln_canvas_labeling \
-mln_canvas_essential \
-mln_canvas_distance_front \
-mln_canvas_morpho_algebraic_union_find \
-mln_canvas_morpho_essential \
-mln_canvas_morpho_all \
-mln_canvas_all \
-mln_canvas_chamfer \
-mln_canvas_browsing_directional \
-mln_canvas_browsing_fwd \
-mln_canvas_browsing_essential \
-mln_canvas_browsing_snake_vert \
-mln_canvas_browsing_snake_fwd \
-mln_canvas_browsing_backdiagonal2d \
-mln_canvas_browsing_snake_generic \
-mln_canvas_browsing_all \
-mln_canvas_browsing_hyper_directional \
-mln_canvas_browsing_depth_first_search \
-mln_canvas_browsing_dir_struct_elt_incr_update \
-mln_canvas_browsing_diagonal2d \
-mln_estim_mean \
-mln_estim_essential \
-mln_estim_all \
-mln_estim_min_max \
-mln_estim_sum \
-mln_arith_essential \
-mln_arith_includes \
-mln_arith_all \
-mln_arith_plus \
-mln_arith_min \
-mln_arith_minus \
-mln_arith_revert \
-mln_arith_times \
-mln_arith_diff_abs \
-mln_algebra_vec \
-mln_algebra_h_mat \
-mln_algebra_quat \
-mln_algebra_essential \
-mln_algebra_all \
-mln_algebra_h_vec \
-mln_algebra_mat \
-mln_display_essential \
-mln_display_all \
-mln_test_positive \
-mln_test_essential \
-mln_test_all \
-mln_test_predicate \
-mln_border_mirror \
-mln_border_adjust \
-mln_border_find \
-mln_border_essential \
-mln_border_equalize \
-mln_border_fill \
-mln_border_resize \
-mln_border_all \
-mln_border_duplicate \
-mln_border_thickness \
-mln_border_get \
-mln_trace_exiting \
-mln_trace_entering \
-mln_trace_resume \
-mln_trace_stop \
-mln_trace_essential \
-mln_trace_quiet \
-mln_trace_all \
-mln_trace_warning \
-mln_debug_println_with_border \
-mln_debug_draw_graph \
+mln_io_abort \
+mln_io_fits_load \
+mln_io_fits_all \
+mln_io_off_load \
+mln_io_off_all \
+mln_io_off_save \
+mln_io_essential \
+mln_logical_includes \
+mln_logical_and_not \
+mln_logical_xor \
+mln_logical_all \
+mln_logical_not \
+mln_logical_and \
+mln_logical_or \
+mln_logical_essential \
+mln_norm_all \
+mln_norm_l1 \
+mln_norm_l2 \
+mln_norm_linfty \
+mln_norm_essential \
mln_debug_iota \
+mln_debug_all \
+mln_debug_println_with_border \
mln_debug_colorize \
-mln_debug_essential \
+mln_debug_draw_graph \
+mln_debug_put_word \
mln_debug_format \
-mln_debug_all \
mln_debug_println \
-mln_debug_put_word \
-mln_morpho_thick_miss \
-mln_morpho_opening_volume \
-mln_morpho_gradient \
-mln_morpho_closing_area_on_vertices \
-mln_morpho_meyer_wst \
-mln_morpho_closing_area \
-mln_morpho_Rd \
-mln_morpho_complementation \
-mln_morpho_opening_area_on_vertices \
-mln_morpho_thinning \
-mln_morpho_contrast \
-mln_morpho_opening_height \
-mln_morpho_erosion \
-mln_morpho_essential \
-mln_morpho_elementary_gradient \
-mln_morpho_elementary_erosion \
-mln_morpho_elementary_essential \
-mln_morpho_elementary_all \
-mln_morpho_elementary_like_ero_fun \
-mln_morpho_elementary_dilation \
-mln_morpho_elementary_opening \
-mln_morpho_elementary_closing \
-mln_morpho_elementary_like_ero_set \
-mln_morpho_elementary_laplacian \
-mln_morpho_elementary_gradient_internal \
-mln_morpho_elementary_gradient_external \
-mln_morpho_elementary_top_hat \
-mln_morpho_includes \
-mln_morpho_thickening \
-mln_morpho_opening_attribute \
-mln_morpho_closing_height \
-mln_morpho_line_gradient \
-mln_morpho_thin_fit \
-mln_morpho_opening_area \
-mln_morpho_all \
-mln_morpho_hit_or_miss \
-mln_morpho_internal_elementary \
-mln_morpho_plus \
-mln_morpho_dilation \
-mln_morpho_closing_attribute \
-mln_morpho_opening \
-mln_morpho_min \
-mln_morpho_minus \
-mln_morpho_closing_volume \
-mln_morpho_general \
-mln_morpho_skeleton_constrained \
-mln_morpho_tree_max \
-mln_morpho_tree_data \
-mln_morpho_tree_compute_parent \
-mln_morpho_tree_utils \
-mln_morpho_tree_compute_attribute_image \
-mln_morpho_tree_all \
-mln_morpho_rank_filter \
-mln_morpho_closing \
-mln_morpho_laplacian \
-mln_morpho_top_hat \
-mln_accu_nil \
-mln_accu_transform_stop \
-mln_accu_max \
-mln_accu_max_h \
-mln_accu_histo \
-mln_accu_center \
-mln_accu_rank_bool \
-mln_accu_mean \
-mln_accu_median_alt \
-mln_accu_convolve \
-mln_accu_essential \
-mln_accu_min_h \
-mln_accu_compute \
-mln_accu_take \
-mln_accu_transform_directional \
-mln_accu_pair \
-mln_accu_land_basic \
-mln_accu_all \
-mln_accu_height \
-mln_accu_internal_base \
-mln_accu_transform_diagonal \
-mln_accu_v \
-mln_accu_count \
-mln_accu_volume \
-mln_accu_lor_basic \
-mln_accu_tuple \
-mln_accu_min \
-mln_accu_median_h \
-mln_accu_transform_snake \
-mln_accu_line \
-mln_accu_count_adjacent_vertices \
-mln_accu_transform \
-mln_accu_min_max \
-mln_accu_land \
-mln_accu_bbox \
-mln_accu_sum \
-mln_accu_lor \
-mln_accu_rank_high_quant \
-mln_accu_p \
-mln_accu_rank \
-mln_accu_maj_h \
-mln_registration_get_rtransf \
-mln_registration_icp \
-mln_registration_essential \
-mln_registration_multiscale \
-mln_registration_all \
-mln_registration_internal_rms \
-mln_registration_get_rot \
-mln_registration_registration \
-mln_all \
-mln_pw_value \
-mln_pw_cst \
-mln_pw_essential \
-mln_pw_image \
-mln_pw_var \
-mln_pw_all \
-mln_binarization_essential \
-mln_binarization_includes \
-mln_binarization_all \
-mln_binarization_binarization \
-mln_binarization_threshold \
-mln_linear_log \
-mln_linear_ch_convolve \
-mln_linear_sobel_2d \
-mln_linear_local_convolve \
-mln_linear_convolve \
-mln_linear_essential \
-mln_linear_lap \
-mln_linear_convolve_directional \
-mln_linear_convolve_2x1d \
-mln_linear_all \
-mln_linear_gaussian \
-mln_essential_1d \
-mln_essential_2d \
-mln_essential_routine \
-mln_essential_3d \
-mln_metal_vec \
-mln_metal_is_not_ref \
-mln_metal_unconst \
-mln_metal_array3d \
-mln_metal_abort \
-mln_metal_has_neighborhood \
-mln_metal_ref \
-mln_metal_is_const \
-mln_metal_same_point \
-mln_metal_int \
-mln_metal_is \
-mln_metal_essential \
-mln_metal_unref \
-mln_metal_is_a \
-mln_metal_not_equal \
-mln_metal_none \
-mln_metal_is_unqualif \
-mln_metal_is_not \
-mln_metal_unptr \
-mln_metal_array1d \
-mln_metal_if \
-mln_metal_is_ref \
-mln_metal_is_not_a \
-mln_metal_all \
-mln_metal_same_coord \
-mln_metal_ands \
-mln_metal_array2d \
-mln_metal_templated_by \
-mln_metal_ret \
-mln_metal_is_not_const \
-mln_metal_math_root \
-mln_metal_math_max \
-mln_metal_math_all \
-mln_metal_math_pow \
-mln_metal_math_sqrt \
-mln_metal_bexpr \
-mln_metal_bool \
-mln_metal_fix_return \
-mln_metal_converts_to \
-mln_metal_goes_to \
-mln_metal_equal \
-mln_metal_unqualif \
-mln_metal_mat \
-mln_metal_array \
-mln_metal_const \
-mln_set_sym_diff \
-mln_set_essential \
-mln_set_compute \
-mln_set_has \
+mln_debug_essential \
+mln_estim_min_max \
+mln_estim_all \
+mln_estim_sum \
+mln_estim_mean \
+mln_estim_essential \
+mln_set_uni \
mln_set_inter \
mln_set_all \
-mln_set_diff \
-mln_set_uni \
mln_set_get \
-mln_convert_to_p_array \
-mln_convert_to_fun \
-mln_convert_to \
-mln_convert_to_image \
-mln_convert_to_p_set \
-mln_convert_impl_from_image_to_site_set \
-mln_convert_impl_all \
-mln_convert_impl_from_value_to_value \
-mln_convert_essential \
-mln_convert_all \
-mln_convert_to_upper_window \
-mln_convert_to_dpoint \
-mln_convert_to_rgb \
-mln_convert_from_to \
-mln_convert_to_window \
-mln_geom_nslis \
-mln_geom_size2d \
-mln_geom_max_row \
-mln_geom_size3d \
-mln_geom_seeds2tiling_roundness \
-mln_geom_delta \
-mln_geom_essential \
-mln_geom_max_ind \
-mln_geom_min_col \
-mln_geom_complex_geometry \
-mln_geom_nrows \
-mln_geom_seeds2tiling \
-mln_geom_min_sli \
-mln_geom_nsites \
-mln_geom_min_ind \
-mln_geom_ninds \
-mln_geom_resize \
-mln_geom_min_row \
-mln_geom_all \
-mln_geom_chamfer \
-mln_geom_ncols \
-mln_geom_pmin_pmax \
-mln_geom_size1d \
-mln_geom_max_sli \
-mln_geom_bbox \
-mln_geom_max_col \
-mln_literal_black \
-mln_literal_zero \
-mln_literal_essential \
-mln_literal_grays \
-mln_literal_ops \
-mln_literal_all \
-mln_literal_white \
-mln_literal_one \
-mln_literal_colors \
-mln_literal_origin \
-mln_level_compare \
-mln_level_saturate \
-mln_level_fill_with_image \
-mln_level_was_median \
-mln_level_convert \
-mln_level_sort_psites \
-mln_level_essential \
-mln_level_fill \
-mln_level_compute \
-mln_level_replace \
-mln_level_approx_essential \
-mln_level_approx_all \
-mln_level_approx_median \
-mln_level_stretch \
-mln_level_paste \
-mln_level_transform_inplace \
-mln_level_to_enc \
-mln_level_apply \
-mln_level_all \
-mln_level_update \
-mln_level_median \
-mln_level_memset_ \
-mln_level_assign \
-mln_level_memcpy_ \
-mln_level_fast_median \
-mln_level_transform \
-mln_level_abs \
-mln_level_naive_essential \
-mln_level_naive_all \
-mln_level_naive_median \
-mln_level_fill_with_value \
-mln_math_jacobi \
-mln_math_max \
-mln_math_round_sat \
-mln_math_round \
-mln_math_essential \
-mln_math_sqr \
-mln_math_all \
-mln_math_sign \
-mln_math_min \
-mln_math_abs \
-mln_math_diff_abs \
-mln_math_sqrt \
-mln_norm_l2 \
-mln_norm_linfty \
-mln_norm_essential \
-mln_norm_all \
-mln_norm_l1 \
-mln_logical_not \
-mln_logical_or \
-mln_logical_and \
-mln_logical_xor \
-mln_logical_essential \
-mln_logical_includes \
-mln_logical_all \
-mln_logical_and_not \
-mln_draw_essential \
-mln_draw_box \
-mln_draw_all \
-mln_draw_plot \
-mln_draw_line \
-mln_value_int_s16 \
-mln_value_cast \
-mln_value_builtin_floatings \
-mln_value_builtin_promotions \
-mln_value_builtin_integers \
-mln_value_builtin_essential \
-mln_value_builtin_ops \
-mln_value_builtin_all \
-mln_value_builtin_symbolics \
-mln_value_label_8 \
-mln_value_int_s \
-mln_value_rgb \
-mln_value_viter \
-mln_value_lut_vec \
-mln_value_set \
-mln_value_hsi \
-mln_value_int_u16 \
-mln_value_glf \
-mln_value_stack \
-mln_value_gl8 \
-mln_value_essential \
-mln_value_graylevel_f \
-mln_value_super_value \
-mln_value_equiv \
-mln_value_rgb16 \
-mln_value_float01_16 \
-mln_value_rgb8 \
-mln_value_int_s32 \
-mln_value_int_s8 \
-mln_value_int_u8 \
-mln_value_int_u32 \
-mln_value_float01 \
-mln_value_int_u \
-mln_value_ops \
-mln_value_interval \
-mln_value_int_u_sat \
-mln_value_all \
-mln_value_internal_encoding \
-mln_value_internal_convert \
-mln_value_internal_gray_f \
-mln_value_internal_essential \
-mln_value_internal_gray_ \
-mln_value_internal_integer \
-mln_value_internal_value_like \
-mln_value_internal_all \
-mln_value_internal_iterable_set \
-mln_value_proxy \
-mln_value_sign \
-mln_value_gl16 \
-mln_value_aliases \
-mln_value_float01_f \
-mln_value_float01_8 \
-mln_value_concept_structured \
-mln_value_concept_vectorial \
-mln_value_concept_data \
-mln_value_concept_built_in \
-mln_value_concept_essential \
-mln_value_concept_integer \
-mln_value_concept_floating \
-mln_value_concept_all \
-mln_value_concept_scalar \
-mln_value_concept_symbolic \
-mln_value_label_16 \
-mln_value_label \
-mln_value_float01_ \
-mln_value_other \
-mln_value_scalar \
-mln_value_graylevel \
-mln_tag_skeleton \
-mln_tag_init \
-mln_tag_essential \
-mln_tag_all \
-mln_labeling_regional_maxima \
-mln_labeling_background \
-mln_labeling_level \
-mln_labeling_flat_zones \
-mln_labeling_regional_minima \
-mln_labeling_essential \
-mln_labeling_compute \
-mln_labeling_blobs \
-mln_labeling_all \
-mln_labeling_foreground \
-mln_labeling_relabel
+mln_set_sym_diff \
+mln_set_has \
+mln_set_diff \
+mln_set_compute \
+mln_set_essential \
+mln_border_adjust \
+mln_border_duplicate \
+mln_border_find \
+mln_border_thickness \
+mln_border_all \
+mln_border_mirror \
+mln_border_get \
+mln_border_equalize \
+mln_border_resize \
+mln_border_fill \
+mln_border_essential \
+mln_subsampling_gaussian_subsampling \
+mln_subsampling_all \
+mln_subsampling_subsampling \
+mln_subsampling_essential
-mln_util_nil_SOURCES = mln_util_nil.cc
-mln_util_ord_pair_SOURCES = mln_util_ord_pair.cc
-mln_util_ord_SOURCES = mln_util_ord.cc
+mln_histo_all_SOURCES = mln_histo_all.cc
+mln_histo_data_SOURCES = mln_histo_data.cc
+mln_histo_compute_SOURCES = mln_histo_compute.cc
+mln_histo_essential_SOURCES = mln_histo_essential.cc
+mln_geom_pmin_pmax_SOURCES = mln_geom_pmin_pmax.cc
+mln_geom_max_row_SOURCES = mln_geom_max_row.cc
+mln_geom_chamfer_SOURCES = mln_geom_chamfer.cc
+mln_geom_min_row_SOURCES = mln_geom_min_row.cc
+mln_geom_seeds2tiling_SOURCES = mln_geom_seeds2tiling.cc
+mln_geom_size1d_SOURCES = mln_geom_size1d.cc
+mln_geom_all_SOURCES = mln_geom_all.cc
+mln_geom_size2d_SOURCES = mln_geom_size2d.cc
+mln_geom_max_ind_SOURCES = mln_geom_max_ind.cc
+mln_geom_max_col_SOURCES = mln_geom_max_col.cc
+mln_geom_size3d_SOURCES = mln_geom_size3d.cc
+mln_geom_ninds_SOURCES = mln_geom_ninds.cc
+mln_geom_nslis_SOURCES = mln_geom_nslis.cc
+mln_geom_delta_SOURCES = mln_geom_delta.cc
+mln_geom_resize_SOURCES = mln_geom_resize.cc
+mln_geom_nsites_SOURCES = mln_geom_nsites.cc
+mln_geom_min_col_SOURCES = mln_geom_min_col.cc
+mln_geom_complex_geometry_SOURCES = mln_geom_complex_geometry.cc
+mln_geom_ncols_SOURCES = mln_geom_ncols.cc
+mln_geom_nrows_SOURCES = mln_geom_nrows.cc
+mln_geom_min_ind_SOURCES = mln_geom_min_ind.cc
+mln_geom_bbox_SOURCES = mln_geom_bbox.cc
+mln_geom_seeds2tiling_roundness_SOURCES = mln_geom_seeds2tiling_roundness.cc
+mln_geom_min_sli_SOURCES = mln_geom_min_sli.cc
+mln_geom_essential_SOURCES = mln_geom_essential.cc
+mln_geom_max_sli_SOURCES = mln_geom_max_sli.cc
+mln_draw_box_SOURCES = mln_draw_box.cc
+mln_draw_all_SOURCES = mln_draw_all.cc
+mln_draw_plot_SOURCES = mln_draw_plot.cc
+mln_draw_line_SOURCES = mln_draw_line.cc
+mln_draw_essential_SOURCES = mln_draw_essential.cc
+mln_pw_image_SOURCES = mln_pw_image.cc
+mln_pw_all_SOURCES = mln_pw_all.cc
+mln_pw_value_SOURCES = mln_pw_value.cc
+mln_pw_cst_SOURCES = mln_pw_cst.cc
+mln_pw_var_SOURCES = mln_pw_var.cc
+mln_pw_essential_SOURCES = mln_pw_essential.cc
+mln_literal_zero_SOURCES = mln_literal_zero.cc
+mln_literal_ops_SOURCES = mln_literal_ops.cc
+mln_literal_origin_SOURCES = mln_literal_origin.cc
+mln_literal_grays_SOURCES = mln_literal_grays.cc
+mln_literal_all_SOURCES = mln_literal_all.cc
+mln_literal_colors_SOURCES = mln_literal_colors.cc
+mln_literal_black_SOURCES = mln_literal_black.cc
+mln_literal_one_SOURCES = mln_literal_one.cc
+mln_literal_white_SOURCES = mln_literal_white.cc
+mln_literal_essential_SOURCES = mln_literal_essential.cc
+mln_registration_get_rtransf_SOURCES = mln_registration_get_rtransf.cc
+mln_registration_internal_rms_SOURCES = mln_registration_internal_rms.cc
+mln_registration_get_rot_SOURCES = mln_registration_get_rot.cc
+mln_registration_all_SOURCES = mln_registration_all.cc
+mln_registration_multiscale_SOURCES = mln_registration_multiscale.cc
+mln_registration_registration_SOURCES = mln_registration_registration.cc
+mln_registration_essential_SOURCES = mln_registration_essential.cc
+mln_registration_icp_SOURCES = mln_registration_icp.cc
+mln_util_graph_SOURCES = mln_util_graph.cc
mln_util_max_SOURCES = mln_util_max.cc
-mln_util_eat_SOURCES = mln_util_eat.cc
-mln_util_tree_SOURCES = mln_util_tree.cc
-mln_util_tree_fast_to_image_SOURCES = mln_util_tree_fast_to_image.cc
-mln_util_tracked_ptr_SOURCES = mln_util_tracked_ptr.cc
-mln_util_dindex_SOURCES = mln_util_dindex.cc
-mln_util_site_pair_SOURCES = mln_util_site_pair.cc
-mln_util_set_SOURCES = mln_util_set.cc
-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_pix_SOURCES = mln_util_pix.cc
mln_util_lazy_set_SOURCES = mln_util_lazy_set.cc
-mln_util_essential_SOURCES = mln_util_essential.cc
-mln_util_branch_iter_SOURCES = mln_util_branch_iter.cc
-mln_util_graph_SOURCES = mln_util_graph.cc
-mln_util_index_SOURCES = mln_util_index.cc
-mln_util_tree_to_fast_SOURCES = mln_util_tree_to_fast.cc
-mln_util_line_graph_SOURCES = mln_util_line_graph.cc
+mln_util_set_SOURCES = mln_util_set.cc
+mln_util_tree_to_image_SOURCES = mln_util_tree_to_image.cc
mln_util_lemmings_SOURCES = mln_util_lemmings.cc
-mln_util_all_SOURCES = mln_util_all.cc
-mln_util_internal_boost_graph_property_SOURCES = mln_util_internal_boost_graph_property.cc
+mln_util_greater_point_SOURCES = mln_util_greater_point.cc
mln_util_internal_graph_iter_base_SOURCES = mln_util_internal_graph_iter_base.cc
-mln_util_internal_boost_graph_SOURCES = mln_util_internal_boost_graph.cc
-mln_util_internal_boost_graph_structure_SOURCES = mln_util_internal_boost_graph_structure.cc
mln_util_internal_boost_graph_access_SOURCES = mln_util_internal_boost_graph_access.cc
-mln_util_internal_graph_base_SOURCES = mln_util_internal_graph_base.cc
-mln_util_internal_vertex_impl_SOURCES = mln_util_internal_vertex_impl.cc
+mln_util_internal_boost_graph_structure_SOURCES = mln_util_internal_boost_graph_structure.cc
+mln_util_internal_graph_iter_SOURCES = mln_util_internal_graph_iter.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_vertex_impl_SOURCES = mln_util_internal_vertex_impl.cc
mln_util_internal_edge_impl_SOURCES = mln_util_internal_edge_impl.cc
-mln_util_internal_graph_iter_SOURCES = mln_util_internal_graph_iter.cc
+mln_util_internal_graph_base_SOURCES = mln_util_internal_graph_base.cc
+mln_util_internal_boost_graph_SOURCES = mln_util_internal_boost_graph.cc
+mln_util_internal_graph_nbh_iter_base_SOURCES = mln_util_internal_graph_nbh_iter_base.cc
+mln_util_internal_boost_graph_property_SOURCES = mln_util_internal_boost_graph_property.cc
+mln_util_ord_pair_SOURCES = mln_util_ord_pair.cc
+mln_util_edge_SOURCES = mln_util_edge.cc
+mln_util_all_SOURCES = mln_util_all.cc
+mln_util_dindex_SOURCES = mln_util_dindex.cc
+mln_util_tracked_ptr_SOURCES = mln_util_tracked_ptr.cc
+mln_util_ignore_SOURCES = mln_util_ignore.cc
+mln_util_greater_psite_SOURCES = mln_util_greater_psite.cc
+mln_util_timer_SOURCES = mln_util_timer.cc
mln_util_yes_SOURCES = mln_util_yes.cc
+mln_util_line_graph_SOURCES = mln_util_line_graph.cc
+mln_util_ord_SOURCES = mln_util_ord.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_index_SOURCES = mln_util_index.cc
mln_util_multi_site_SOURCES = mln_util_multi_site.cc
-mln_util_timer_SOURCES = mln_util_timer.cc
-mln_util_edge_SOURCES = mln_util_edge.cc
-mln_util_tree_fast_SOURCES = mln_util_tree_fast.cc
+mln_util_branch_iter_SOURCES = mln_util_branch_iter.cc
mln_util_branch_iter_ind_SOURCES = mln_util_branch_iter_ind.cc
-mln_util_tree_to_image_SOURCES = mln_util_tree_to_image.cc
-mln_util_vertex_SOURCES = mln_util_vertex.cc
+mln_util_tree_to_fast_SOURCES = mln_util_tree_to_fast.cc
mln_util_array_SOURCES = mln_util_array.cc
-mln_fun_c_SOURCES = mln_fun_c.cc
-mln_fun_cast_SOURCES = mln_fun_cast.cc
+mln_util_vertex_SOURCES = mln_util_vertex.cc
+mln_util_pix_SOURCES = mln_util_pix.cc
+mln_util_tree_fast_SOURCES = mln_util_tree_fast.cc
+mln_util_site_pair_SOURCES = mln_util_site_pair.cc
+mln_util_nil_SOURCES = mln_util_nil.cc
+mln_util_eat_SOURCES = mln_util_eat.cc
+mln_util_essential_SOURCES = mln_util_essential.cc
+mln_tag_init_SOURCES = mln_tag_init.cc
+mln_tag_skeleton_SOURCES = mln_tag_skeleton.cc
+mln_tag_all_SOURCES = mln_tag_all.cc
+mln_tag_essential_SOURCES = mln_tag_essential.cc
+mln_trace_entering_SOURCES = mln_trace_entering.cc
+mln_trace_all_SOURCES = mln_trace_all.cc
+mln_trace_warning_SOURCES = mln_trace_warning.cc
+mln_trace_exiting_SOURCES = mln_trace_exiting.cc
+mln_trace_resume_SOURCES = mln_trace_resume.cc
+mln_trace_quiet_SOURCES = mln_trace_quiet.cc
+mln_trace_stop_SOURCES = mln_trace_stop.cc
+mln_trace_essential_SOURCES = mln_trace_essential.cc
+mln_make_graph_SOURCES = mln_make_graph.cc
+mln_make_double_neighb2d_SOURCES = mln_make_double_neighb2d.cc
+mln_make_dpoint2d_h_SOURCES = mln_make_dpoint2d_h.cc
+mln_make_w_window_SOURCES = mln_make_w_window.cc
+mln_make_image_SOURCES = mln_make_image.cc
+mln_make_vec_SOURCES = mln_make_vec.cc
+mln_make_all_SOURCES = mln_make_all.cc
+mln_make_dual_neighb_SOURCES = mln_make_dual_neighb.cc
+mln_make_w_window3d_SOURCES = mln_make_w_window3d.cc
+mln_make_mat_SOURCES = mln_make_mat.cc
+mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc
+mln_make_w_window2d_int_SOURCES = mln_make_w_window2d_int.cc
+mln_make_box1d_SOURCES = mln_make_box1d.cc
+mln_make_voronoi_SOURCES = mln_make_voronoi.cc
+mln_make_box2d_SOURCES = mln_make_box2d.cc
+mln_make_w_window2d_SOURCES = mln_make_w_window2d.cc
+mln_make_box3d_SOURCES = mln_make_box3d.cc
+mln_make_relabelfun_SOURCES = mln_make_relabelfun.cc
+mln_make_pixel_SOURCES = mln_make_pixel.cc
+mln_make_pix_SOURCES = mln_make_pix.cc
+mln_make_box2d_h_SOURCES = mln_make_box2d_h.cc
+mln_make_w_window1d_SOURCES = mln_make_w_window1d.cc
+mln_make_image2d_SOURCES = mln_make_image2d.cc
+mln_make_w_window_directional_SOURCES = mln_make_w_window_directional.cc
+mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc
+mln_make_essential_SOURCES = mln_make_essential.cc
+mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc
+mln_make_point2d_h_SOURCES = mln_make_point2d_h.cc
+mln_display_all_SOURCES = mln_display_all.cc
+mln_display_essential_SOURCES = mln_display_essential.cc
+mln_extension_adjust_SOURCES = mln_extension_adjust.cc
+mln_extension_duplicate_SOURCES = mln_extension_duplicate.cc
+mln_extension_adjust_duplicate_SOURCES = mln_extension_adjust_duplicate.cc
+mln_extension_all_SOURCES = mln_extension_all.cc
+mln_extension_adjust_fill_SOURCES = mln_extension_adjust_fill.cc
+mln_extension_fill_SOURCES = mln_extension_fill.cc
+mln_extension_essential_SOURCES = mln_extension_essential.cc
+mln_fun_p2b_chess_SOURCES = mln_fun_p2b_chess.cc
+mln_fun_p2b_all_SOURCES = mln_fun_p2b_all.cc
+mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc
+mln_fun_p2b_big_chess_SOURCES = mln_fun_p2b_big_chess.cc
+mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc
+mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc
mln_fun_x2p_closest_point_SOURCES = mln_fun_x2p_closest_point.cc
-mln_fun_x2p_essential_SOURCES = mln_fun_x2p_essential.cc
mln_fun_x2p_all_SOURCES = mln_fun_x2p_all.cc
-mln_fun_p2v_elifs_SOURCES = mln_fun_p2v_elifs.cc
-mln_fun_p2v_iota_SOURCES = mln_fun_p2v_iota.cc
-mln_fun_p2v_essential_SOURCES = mln_fun_p2v_essential.cc
-mln_fun_p2v_all_SOURCES = mln_fun_p2v_all.cc
-mln_fun_p2v_ternary_SOURCES = mln_fun_p2v_ternary.cc
-mln_fun_vv2v_vec_SOURCES = mln_fun_vv2v_vec.cc
+mln_fun_x2p_essential_SOURCES = mln_fun_x2p_essential.cc
+mln_fun_ops_SOURCES = mln_fun_ops.cc
+mln_fun_c_SOURCES = mln_fun_c.cc
mln_fun_vv2v_max_SOURCES = mln_fun_vv2v_max.cc
-mln_fun_vv2v_lxor_SOURCES = mln_fun_vv2v_lxor.cc
-mln_fun_vv2v_essential_SOURCES = mln_fun_vv2v_essential.cc
+mln_fun_vv2v_lor_SOURCES = mln_fun_vv2v_lor.cc
mln_fun_vv2v_land_not_SOURCES = mln_fun_vv2v_land_not.cc
-mln_fun_vv2v_macros_SOURCES = mln_fun_vv2v_macros.cc
+mln_fun_vv2v_vec_SOURCES = mln_fun_vv2v_vec.cc
mln_fun_vv2v_all_SOURCES = mln_fun_vv2v_all.cc
-mln_fun_vv2v_min_SOURCES = mln_fun_vv2v_min.cc
+mln_fun_vv2v_macros_SOURCES = mln_fun_vv2v_macros.cc
+mln_fun_vv2v_lxor_SOURCES = mln_fun_vv2v_lxor.cc
mln_fun_vv2v_diff_abs_SOURCES = mln_fun_vv2v_diff_abs.cc
mln_fun_vv2v_land_SOURCES = mln_fun_vv2v_land.cc
-mln_fun_vv2v_lor_SOURCES = mln_fun_vv2v_lor.cc
-mln_fun_x2x_composed_SOURCES = mln_fun_x2x_composed.cc
-mln_fun_x2x_essential_SOURCES = mln_fun_x2x_essential.cc
-mln_fun_x2x_rotation_SOURCES = mln_fun_x2x_rotation.cc
-mln_fun_x2x_all_SOURCES = mln_fun_x2x_all.cc
-mln_fun_x2x_translation_SOURCES = mln_fun_x2x_translation.cc
-mln_fun_essential_SOURCES = mln_fun_essential.cc
-mln_fun_v2v_rgb_to_hsi_SOURCES = mln_fun_v2v_rgb_to_hsi.cc
-mln_fun_v2v_enc_SOURCES = mln_fun_v2v_enc.cc
-mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc
-mln_fun_v2v_saturate_SOURCES = mln_fun_v2v_saturate.cc
+mln_fun_vv2v_min_SOURCES = mln_fun_vv2v_min.cc
+mln_fun_vv2v_essential_SOURCES = mln_fun_vv2v_essential.cc
+mln_fun_internal_array_base_SOURCES = mln_fun_internal_array_base.cc
+mln_fun_internal_x2x_linear_impl_SOURCES = mln_fun_internal_x2x_linear_impl.cc
+mln_fun_internal_selector_SOURCES = mln_fun_internal_selector.cc
+mln_fun_p2v_ternary_SOURCES = mln_fun_p2v_ternary.cc
+mln_fun_p2v_iota_SOURCES = mln_fun_p2v_iota.cc
+mln_fun_p2v_elifs_SOURCES = mln_fun_p2v_elifs.cc
+mln_fun_p2v_all_SOURCES = mln_fun_p2v_all.cc
+mln_fun_p2v_essential_SOURCES = mln_fun_p2v_essential.cc
+mln_fun_all_SOURCES = mln_fun_all.cc
+mln_fun_v2b_lnot_SOURCES = mln_fun_v2b_lnot.cc
+mln_fun_v2b_all_SOURCES = mln_fun_v2b_all.cc
+mln_fun_v2b_threshold_SOURCES = mln_fun_v2b_threshold.cc
+mln_fun_v2b_essential_SOURCES = mln_fun_v2b_essential.cc
mln_fun_v2v_norm_SOURCES = mln_fun_v2v_norm.cc
-mln_fun_v2v_convert_SOURCES = mln_fun_v2v_convert.cc
-mln_fun_v2v_id_SOURCES = mln_fun_v2v_id.cc
-mln_fun_v2v_essential_SOURCES = mln_fun_v2v_essential.cc
mln_fun_v2v_linear_SOURCES = mln_fun_v2v_linear.cc
+mln_fun_v2v_id_SOURCES = mln_fun_v2v_id.cc
+mln_fun_v2v_saturate_SOURCES = mln_fun_v2v_saturate.cc
+mln_fun_v2v_inc_SOURCES = mln_fun_v2v_inc.cc
mln_fun_v2v_all_SOURCES = mln_fun_v2v_all.cc
-mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc
mln_fun_v2v_dec_SOURCES = mln_fun_v2v_dec.cc
-mln_fun_v2v_inc_SOURCES = mln_fun_v2v_inc.cc
-mln_fun_i2v_essential_SOURCES = mln_fun_i2v_essential.cc
+mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc
+mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc
+mln_fun_v2v_rgb_to_hsi_SOURCES = mln_fun_v2v_rgb_to_hsi.cc
+mln_fun_v2v_enc_SOURCES = mln_fun_v2v_enc.cc
+mln_fun_v2v_convert_SOURCES = mln_fun_v2v_convert.cc
+mln_fun_v2v_essential_SOURCES = mln_fun_v2v_essential.cc
+mln_fun_cast_SOURCES = mln_fun_cast.cc
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_ops_SOURCES = mln_fun_ops.cc
-mln_fun_all_SOURCES = mln_fun_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_all_SOURCES = mln_fun_v2b_all.cc
-mln_fun_v2b_threshold_SOURCES = mln_fun_v2b_threshold.cc
-mln_fun_internal_selector_SOURCES = mln_fun_internal_selector.cc
-mln_fun_internal_array_base_SOURCES = mln_fun_internal_array_base.cc
-mln_fun_internal_x2x_linear_impl_SOURCES = mln_fun_internal_x2x_linear_impl.cc
-mln_fun_l2l_essential_SOURCES = mln_fun_l2l_essential.cc
-mln_fun_l2l_all_SOURCES = mln_fun_l2l_all.cc
+mln_fun_i2v_all_to_SOURCES = mln_fun_i2v_all_to.cc
+mln_fun_i2v_essential_SOURCES = mln_fun_i2v_essential.cc
mln_fun_l2l_relabel_SOURCES = mln_fun_l2l_relabel.cc
-mln_fun_x2v_essential_SOURCES = mln_fun_x2v_essential.cc
+mln_fun_l2l_all_SOURCES = mln_fun_l2l_all.cc
+mln_fun_l2l_essential_SOURCES = mln_fun_l2l_essential.cc
+mln_fun_x2x_composed_SOURCES = mln_fun_x2x_composed.cc
+mln_fun_x2x_all_SOURCES = mln_fun_x2x_all.cc
+mln_fun_x2x_translation_SOURCES = mln_fun_x2x_translation.cc
+mln_fun_x2x_rotation_SOURCES = mln_fun_x2x_rotation.cc
+mln_fun_x2x_essential_SOURCES = mln_fun_x2x_essential.cc
mln_fun_x2v_linear_SOURCES = mln_fun_x2v_linear.cc
-mln_fun_x2v_all_SOURCES = mln_fun_x2v_all.cc
mln_fun_x2v_bilinear_SOURCES = mln_fun_x2v_bilinear.cc
+mln_fun_x2v_all_SOURCES = mln_fun_x2v_all.cc
mln_fun_x2v_l1_norm_SOURCES = mln_fun_x2v_l1_norm.cc
mln_fun_x2v_nneighbor_SOURCES = mln_fun_x2v_nneighbor.cc
-mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc
-mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc
-mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc
-mln_fun_p2b_big_chess_SOURCES = mln_fun_p2b_big_chess.cc
-mln_fun_p2b_all_SOURCES = mln_fun_p2b_all.cc
-mln_fun_p2b_chess_SOURCES = mln_fun_p2b_chess.cc
-mln_extension_adjust_SOURCES = mln_extension_adjust.cc
-mln_extension_essential_SOURCES = mln_extension_essential.cc
-mln_extension_fill_SOURCES = mln_extension_fill.cc
-mln_extension_adjust_duplicate_SOURCES = mln_extension_adjust_duplicate.cc
-mln_extension_adjust_fill_SOURCES = mln_extension_adjust_fill.cc
-mln_extension_all_SOURCES = mln_extension_all.cc
-mln_extension_duplicate_SOURCES = mln_extension_duplicate.cc
-mln_histo_data_SOURCES = mln_histo_data.cc
-mln_histo_essential_SOURCES = mln_histo_essential.cc
-mln_histo_compute_SOURCES = mln_histo_compute.cc
-mln_histo_all_SOURCES = mln_histo_all.cc
-mln_transform_distance_geodesic_SOURCES = mln_transform_distance_geodesic.cc
-mln_transform_essential_SOURCES = mln_transform_essential.cc
-mln_transform_influence_zone_geodesic_SOURCES = mln_transform_influence_zone_geodesic.cc
-mln_transform_distance_front_SOURCES = mln_transform_distance_front.cc
-mln_transform_all_SOURCES = mln_transform_all.cc
-mln_transform_internal_distance_functor_SOURCES = mln_transform_internal_distance_functor.cc
-mln_transform_internal_all_SOURCES = mln_transform_internal_all.cc
-mln_transform_internal_influence_zone_functor_SOURCES = mln_transform_internal_influence_zone_functor.cc
-mln_transform_influence_zone_front_SOURCES = mln_transform_influence_zone_front.cc
-mln_trait_windows_SOURCES = mln_trait_windows.cc
-mln_trait_images_SOURCES = mln_trait_images.cc
-mln_trait_solve_SOURCES = mln_trait_solve.cc
-mln_trait_window_print_SOURCES = mln_trait_window_print.cc
-mln_trait_window_props_SOURCES = mln_trait_window_props.cc
-mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc
-mln_trait_site_sets_SOURCES = mln_trait_site_sets.cc
+mln_fun_x2v_essential_SOURCES = mln_fun_x2v_essential.cc
+mln_fun_essential_SOURCES = mln_fun_essential.cc
+mln_all_SOURCES = mln_all.cc
+mln_convert_to_p_set_SOURCES = mln_convert_to_p_set.cc
+mln_convert_to_SOURCES = mln_convert_to.cc
+mln_convert_to_upper_window_SOURCES = mln_convert_to_upper_window.cc
+mln_convert_to_image_SOURCES = mln_convert_to_image.cc
+mln_convert_to_fun_SOURCES = mln_convert_to_fun.cc
+mln_convert_all_SOURCES = mln_convert_all.cc
+mln_convert_to_window_SOURCES = mln_convert_to_window.cc
+mln_convert_from_to_SOURCES = mln_convert_from_to.cc
+mln_convert_impl_from_value_to_value_SOURCES = mln_convert_impl_from_value_to_value.cc
+mln_convert_impl_all_SOURCES = mln_convert_impl_all.cc
+mln_convert_impl_from_image_to_site_set_SOURCES = mln_convert_impl_from_image_to_site_set.cc
+mln_convert_to_dpoint_SOURCES = mln_convert_to_dpoint.cc
+mln_convert_to_p_array_SOURCES = mln_convert_to_p_array.cc
+mln_convert_to_rgb_SOURCES = mln_convert_to_rgb.cc
+mln_convert_essential_SOURCES = mln_convert_essential.cc
+mln_value_float01_f_SOURCES = mln_value_float01_f.cc
+mln_value_float01_16_SOURCES = mln_value_float01_16.cc
+mln_value_lut_vec_SOURCES = mln_value_lut_vec.cc
+mln_value_glf_SOURCES = mln_value_glf.cc
+mln_value_other_SOURCES = mln_value_other.cc
+mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc
+mln_value_aliases_SOURCES = mln_value_aliases.cc
+mln_value_label_16_SOURCES = mln_value_label_16.cc
+mln_value_ops_SOURCES = mln_value_ops.cc
+mln_value_set_SOURCES = mln_value_set.cc
+mln_value_int_u_sat_SOURCES = mln_value_int_u_sat.cc
+mln_value_float01_8_SOURCES = mln_value_float01_8.cc
+mln_value_int_u8_SOURCES = mln_value_int_u8.cc
+mln_value_equiv_SOURCES = mln_value_equiv.cc
+mln_value_internal_integer_SOURCES = mln_value_internal_integer.cc
+mln_value_internal_gray_f_SOURCES = mln_value_internal_gray_f.cc
+mln_value_internal_all_SOURCES = mln_value_internal_all.cc
+mln_value_internal_value_like_SOURCES = mln_value_internal_value_like.cc
+mln_value_internal_iterable_set_SOURCES = mln_value_internal_iterable_set.cc
+mln_value_internal_encoding_SOURCES = mln_value_internal_encoding.cc
+mln_value_internal_convert_SOURCES = mln_value_internal_convert.cc
+mln_value_internal_gray__SOURCES = mln_value_internal_gray_.cc
+mln_value_internal_essential_SOURCES = mln_value_internal_essential.cc
+mln_value_proxy_SOURCES = mln_value_proxy.cc
+mln_value_viter_SOURCES = mln_value_viter.cc
+mln_value_graylevel_SOURCES = mln_value_graylevel.cc
+mln_value_all_SOURCES = mln_value_all.cc
+mln_value_super_value_SOURCES = mln_value_super_value.cc
+mln_value_builtin_symbolics_SOURCES = mln_value_builtin_symbolics.cc
+mln_value_builtin_ops_SOURCES = mln_value_builtin_ops.cc
+mln_value_builtin_all_SOURCES = mln_value_builtin_all.cc
+mln_value_builtin_promotions_SOURCES = mln_value_builtin_promotions.cc
+mln_value_builtin_integers_SOURCES = mln_value_builtin_integers.cc
+mln_value_builtin_floatings_SOURCES = mln_value_builtin_floatings.cc
+mln_value_builtin_essential_SOURCES = mln_value_builtin_essential.cc
+mln_value_sign_SOURCES = mln_value_sign.cc
+mln_value_hsi_SOURCES = mln_value_hsi.cc
+mln_value_interval_SOURCES = mln_value_interval.cc
+mln_value_gl16_SOURCES = mln_value_gl16.cc
+mln_value_scalar_SOURCES = mln_value_scalar.cc
+mln_value_float01_SOURCES = mln_value_float01.cc
+mln_value_cast_SOURCES = mln_value_cast.cc
+mln_value_int_u_SOURCES = mln_value_int_u.cc
+mln_value_int_s8_SOURCES = mln_value_int_s8.cc
+mln_value_int_s16_SOURCES = mln_value_int_s16.cc
+mln_value_int_u16_SOURCES = mln_value_int_u16.cc
+mln_value_label_SOURCES = mln_value_label.cc
+mln_value_rgb_SOURCES = mln_value_rgb.cc
+mln_value_stack_SOURCES = mln_value_stack.cc
+mln_value_concept_integer_SOURCES = mln_value_concept_integer.cc
+mln_value_concept_structured_SOURCES = mln_value_concept_structured.cc
+mln_value_concept_built_in_SOURCES = mln_value_concept_built_in.cc
+mln_value_concept_all_SOURCES = mln_value_concept_all.cc
+mln_value_concept_scalar_SOURCES = mln_value_concept_scalar.cc
+mln_value_concept_data_SOURCES = mln_value_concept_data.cc
+mln_value_concept_floating_SOURCES = mln_value_concept_floating.cc
+mln_value_concept_symbolic_SOURCES = mln_value_concept_symbolic.cc
+mln_value_concept_vectorial_SOURCES = mln_value_concept_vectorial.cc
+mln_value_concept_essential_SOURCES = mln_value_concept_essential.cc
+mln_value_int_s_SOURCES = mln_value_int_s.cc
+mln_value_rgb8_SOURCES = mln_value_rgb8.cc
+mln_value_int_s32_SOURCES = mln_value_int_s32.cc
+mln_value_float01__SOURCES = mln_value_float01_.cc
+mln_value_rgb16_SOURCES = mln_value_rgb16.cc
+mln_value_int_u32_SOURCES = mln_value_int_u32.cc
+mln_value_gl8_SOURCES = mln_value_gl8.cc
+mln_value_label_8_SOURCES = mln_value_label_8.cc
+mln_value_essential_SOURCES = mln_value_essential.cc
+mln_accu_tuple_SOURCES = mln_accu_tuple.cc
+mln_accu_min_h_SOURCES = mln_accu_min_h.cc
+mln_accu_max_SOURCES = mln_accu_max.cc
+mln_accu_lor_SOURCES = mln_accu_lor.cc
+mln_accu_rank_SOURCES = mln_accu_rank.cc
+mln_accu_transform_stop_SOURCES = mln_accu_transform_stop.cc
+mln_accu_maj_h_SOURCES = mln_accu_maj_h.cc
+mln_accu_min_max_SOURCES = mln_accu_min_max.cc
+mln_accu_internal_base_SOURCES = mln_accu_internal_base.cc
+mln_accu_transform_snake_SOURCES = mln_accu_transform_snake.cc
+mln_accu_rank_high_quant_SOURCES = mln_accu_rank_high_quant.cc
+mln_accu_count_SOURCES = mln_accu_count.cc
+mln_accu_median_h_SOURCES = mln_accu_median_h.cc
+mln_accu_all_SOURCES = mln_accu_all.cc
+mln_accu_land_basic_SOURCES = mln_accu_land_basic.cc
+mln_accu_p_SOURCES = mln_accu_p.cc
+mln_accu_transform_SOURCES = mln_accu_transform.cc
+mln_accu_median_alt_SOURCES = mln_accu_median_alt.cc
+mln_accu_volume_SOURCES = mln_accu_volume.cc
+mln_accu_sum_SOURCES = mln_accu_sum.cc
+mln_accu_height_SOURCES = mln_accu_height.cc
+mln_accu_land_SOURCES = mln_accu_land.cc
+mln_accu_take_SOURCES = mln_accu_take.cc
+mln_accu_histo_SOURCES = mln_accu_histo.cc
+mln_accu_pair_SOURCES = mln_accu_pair.cc
+mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc
+mln_accu_convolve_SOURCES = mln_accu_convolve.cc
+mln_accu_v_SOURCES = mln_accu_v.cc
+mln_accu_rank_bool_SOURCES = mln_accu_rank_bool.cc
+mln_accu_min_SOURCES = mln_accu_min.cc
+mln_accu_transform_directional_SOURCES = mln_accu_transform_directional.cc
+mln_accu_compute_SOURCES = mln_accu_compute.cc
+mln_accu_mean_SOURCES = mln_accu_mean.cc
+mln_accu_lor_basic_SOURCES = mln_accu_lor_basic.cc
+mln_accu_transform_diagonal_SOURCES = mln_accu_transform_diagonal.cc
+mln_accu_nil_SOURCES = mln_accu_nil.cc
+mln_accu_bbox_SOURCES = mln_accu_bbox.cc
+mln_accu_center_SOURCES = mln_accu_center.cc
+mln_accu_line_SOURCES = mln_accu_line.cc
+mln_accu_essential_SOURCES = mln_accu_essential.cc
+mln_accu_max_h_SOURCES = mln_accu_max_h.cc
+mln_level_compare_SOURCES = mln_level_compare.cc
+mln_level_memset__SOURCES = mln_level_memset_.cc
+mln_level_transform_inplace_SOURCES = mln_level_transform_inplace.cc
+mln_level_replace_SOURCES = mln_level_replace.cc
+mln_level_memcpy__SOURCES = mln_level_memcpy_.cc
+mln_level_apply_SOURCES = mln_level_apply.cc
+mln_level_approx_all_SOURCES = mln_level_approx_all.cc
+mln_level_approx_essential_SOURCES = mln_level_approx_essential.cc
+mln_level_approx_median_SOURCES = mln_level_approx_median.cc
+mln_level_saturate_SOURCES = mln_level_saturate.cc
+mln_level_all_SOURCES = mln_level_all.cc
+mln_level_paste_SOURCES = mln_level_paste.cc
+mln_level_fast_median_SOURCES = mln_level_fast_median.cc
+mln_level_abs_SOURCES = mln_level_abs.cc
+mln_level_fill_with_image_SOURCES = mln_level_fill_with_image.cc
+mln_level_transform_SOURCES = mln_level_transform.cc
+mln_level_fill_with_value_SOURCES = mln_level_fill_with_value.cc
+mln_level_stretch_SOURCES = mln_level_stretch.cc
+mln_level_was_median_SOURCES = mln_level_was_median.cc
+mln_level_compute_SOURCES = mln_level_compute.cc
+mln_level_convert_SOURCES = mln_level_convert.cc
+mln_level_to_enc_SOURCES = mln_level_to_enc.cc
+mln_level_naive_all_SOURCES = mln_level_naive_all.cc
+mln_level_naive_essential_SOURCES = mln_level_naive_essential.cc
+mln_level_naive_median_SOURCES = mln_level_naive_median.cc
+mln_level_sort_psites_SOURCES = mln_level_sort_psites.cc
+mln_level_update_SOURCES = mln_level_update.cc
+mln_level_fill_SOURCES = mln_level_fill.cc
+mln_level_essential_SOURCES = mln_level_essential.cc
+mln_level_assign_SOURCES = mln_level_assign.cc
+mln_level_median_SOURCES = mln_level_median.cc
+mln_math_jacobi_SOURCES = mln_math_jacobi.cc
+mln_math_max_SOURCES = mln_math_max.cc
+mln_math_sqr_SOURCES = mln_math_sqr.cc
+mln_math_all_SOURCES = mln_math_all.cc
+mln_math_sign_SOURCES = mln_math_sign.cc
+mln_math_abs_SOURCES = mln_math_abs.cc
+mln_math_diff_abs_SOURCES = mln_math_diff_abs.cc
+mln_math_round_SOURCES = mln_math_round.cc
+mln_math_min_SOURCES = mln_math_min.cc
+mln_math_sqrt_SOURCES = mln_math_sqrt.cc
+mln_math_essential_SOURCES = mln_math_essential.cc
+mln_math_round_sat_SOURCES = mln_math_round_sat.cc
+mln_binarization_includes_SOURCES = mln_binarization_includes.cc
+mln_binarization_all_SOURCES = mln_binarization_all.cc
+mln_binarization_binarization_SOURCES = mln_binarization_binarization.cc
+mln_binarization_threshold_SOURCES = mln_binarization_threshold.cc
+mln_binarization_essential_SOURCES = mln_binarization_essential.cc
+mln_trait_site_set_props_SOURCES = mln_trait_site_set_props.cc
+mln_trait_site_set_print_SOURCES = mln_trait_site_set_print.cc
+mln_trait_promote_SOURCES = mln_trait_promote.cc
mln_trait_solve_binary_SOURCES = mln_trait_solve_binary.cc
mln_trait_value__SOURCES = mln_trait_value_.cc
-mln_trait_promote_SOURCES = mln_trait_promote.cc
-mln_trait_essential_SOURCES = mln_trait_essential.cc
-mln_trait_concrete_SOURCES = mln_trait_concrete.cc
-mln_trait_op_ord_SOURCES = mln_trait_op_ord.cc
-mln_trait_op_div_SOURCES = mln_trait_op_div.cc
+mln_trait_all_SOURCES = mln_trait_all.cc
+mln_trait_value_all_SOURCES = mln_trait_value_all.cc
+mln_trait_value_nature_SOURCES = mln_trait_value_nature.cc
+mln_trait_value_quant_SOURCES = mln_trait_value_quant.cc
+mln_trait_value_kind_SOURCES = mln_trait_value_kind.cc
+mln_trait_value_print_SOURCES = mln_trait_value_print.cc
+mln_trait_value_essential_SOURCES = mln_trait_value_essential.cc
+mln_trait_images_SOURCES = mln_trait_images.cc
+mln_trait_window_props_SOURCES = mln_trait_window_props.cc
+mln_trait_window_print_SOURCES = mln_trait_window_print.cc
+mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc
+mln_trait_solve_SOURCES = mln_trait_solve.cc
+mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.cc
+mln_trait_op_postdec_SOURCES = mln_trait_op_postdec.cc
mln_trait_op_mod_SOURCES = mln_trait_op_mod.cc
+mln_trait_op_lor_SOURCES = mln_trait_op_lor.cc
+mln_trait_op_neq_SOURCES = mln_trait_op_neq.cc
+mln_trait_op_plus_SOURCES = mln_trait_op_plus.cc
+mln_trait_op_xor_SOURCES = mln_trait_op_xor.cc
+mln_trait_op_all_SOURCES = mln_trait_op_all.cc
+mln_trait_op_geq_SOURCES = mln_trait_op_geq.cc
+mln_trait_op_uminus_SOURCES = mln_trait_op_uminus.cc
mln_trait_op_not_SOURCES = mln_trait_op_not.cc
-mln_trait_op_or_SOURCES = mln_trait_op_or.cc
+mln_trait_op_times_SOURCES = mln_trait_op_times.cc
+mln_trait_op_less_SOURCES = mln_trait_op_less.cc
+mln_trait_op_decl_SOURCES = mln_trait_op_decl.cc
+mln_trait_op_ord_SOURCES = mln_trait_op_ord.cc
mln_trait_op_and_SOURCES = mln_trait_op_and.cc
-mln_trait_op_xor_SOURCES = mln_trait_op_xor.cc
-mln_trait_op_essential_SOURCES = mln_trait_op_essential.cc
+mln_trait_op_or_SOURCES = mln_trait_op_or.cc
+mln_trait_op_predec_SOURCES = mln_trait_op_predec.cc
+mln_trait_op_minus_SOURCES = mln_trait_op_minus.cc
+mln_trait_op_div_SOURCES = mln_trait_op_div.cc
+mln_trait_op_leq_SOURCES = mln_trait_op_leq.cc
mln_trait_op_preinc_SOURCES = mln_trait_op_preinc.cc
mln_trait_op_greater_SOURCES = mln_trait_op_greater.cc
-mln_trait_op_predec_SOURCES = mln_trait_op_predec.cc
-mln_trait_op_neq_SOURCES = mln_trait_op_neq.cc
mln_trait_op_postinc_SOURCES = mln_trait_op_postinc.cc
mln_trait_op_uplus_SOURCES = mln_trait_op_uplus.cc
-mln_trait_op_geq_SOURCES = mln_trait_op_geq.cc
-mln_trait_op_uminus_SOURCES = mln_trait_op_uminus.cc
-mln_trait_op_all_SOURCES = mln_trait_op_all.cc
-mln_trait_op_plus_SOURCES = mln_trait_op_plus.cc
+mln_trait_op_essential_SOURCES = mln_trait_op_essential.cc
mln_trait_op_eq_SOURCES = mln_trait_op_eq.cc
-mln_trait_op_leq_SOURCES = mln_trait_op_leq.cc
-mln_trait_op_less_SOURCES = mln_trait_op_less.cc
-mln_trait_op_postdec_SOURCES = mln_trait_op_postdec.cc
-mln_trait_op_minus_SOURCES = mln_trait_op_minus.cc
-mln_trait_op_times_SOURCES = mln_trait_op_times.cc
-mln_trait_op_decl_SOURCES = mln_trait_op_decl.cc
-mln_trait_op_lor_SOURCES = mln_trait_op_lor.cc
-mln_trait_all_SOURCES = mln_trait_all.cc
+mln_trait_concrete_SOURCES = mln_trait_concrete.cc
+mln_trait_windows_SOURCES = mln_trait_windows.cc
+mln_trait_site_sets_SOURCES = mln_trait_site_sets.cc
+mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc
mln_trait_undef_SOURCES = mln_trait_undef.cc
-mln_trait_image_print_SOURCES = mln_trait_image_print.cc
mln_trait_image_props_SOURCES = mln_trait_image_props.cc
-mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.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_image_print_SOURCES = mln_trait_image_print.cc
mln_trait_neighborhood_SOURCES = mln_trait_neighborhood.cc
-mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc
-mln_trait_value_print_SOURCES = mln_trait_value_print.cc
-mln_trait_value_nature_SOURCES = mln_trait_value_nature.cc
-mln_trait_value_kind_SOURCES = mln_trait_value_kind.cc
-mln_trait_value_quant_SOURCES = mln_trait_value_quant.cc
-mln_trait_value_essential_SOURCES = mln_trait_value_essential.cc
-mln_trait_value_all_SOURCES = mln_trait_value_all.cc
-mln_win_disk2d_SOURCES = mln_win_disk2d.cc
-mln_win_cuboid3d_SOURCES = mln_win_cuboid3d.cc
-mln_win_segment1d_SOURCES = mln_win_segment1d.cc
-mln_win_octagon2d_SOURCES = mln_win_octagon2d.cc
+mln_trait_essential_SOURCES = mln_trait_essential.cc
+mln_canvas_labeling_SOURCES = mln_canvas_labeling.cc
+mln_canvas_browsing_hyper_directional_SOURCES = mln_canvas_browsing_hyper_directional.cc
+mln_canvas_browsing_snake_generic_SOURCES = mln_canvas_browsing_snake_generic.cc
+mln_canvas_browsing_backdiagonal2d_SOURCES = mln_canvas_browsing_backdiagonal2d.cc
+mln_canvas_browsing_snake_vert_SOURCES = mln_canvas_browsing_snake_vert.cc
+mln_canvas_browsing_snake_fwd_SOURCES = mln_canvas_browsing_snake_fwd.cc
+mln_canvas_browsing_all_SOURCES = mln_canvas_browsing_all.cc
+mln_canvas_browsing_diagonal2d_SOURCES = mln_canvas_browsing_diagonal2d.cc
+mln_canvas_browsing_fwd_SOURCES = mln_canvas_browsing_fwd.cc
+mln_canvas_browsing_dir_struct_elt_incr_update_SOURCES = mln_canvas_browsing_dir_struct_elt_incr_update.cc
+mln_canvas_browsing_depth_first_search_SOURCES = mln_canvas_browsing_depth_first_search.cc
+mln_canvas_browsing_directional_SOURCES = mln_canvas_browsing_directional.cc
+mln_canvas_browsing_essential_SOURCES = mln_canvas_browsing_essential.cc
+mln_canvas_chamfer_SOURCES = mln_canvas_chamfer.cc
+mln_canvas_distance_geodesic_SOURCES = mln_canvas_distance_geodesic.cc
+mln_canvas_all_SOURCES = mln_canvas_all.cc
+mln_canvas_distance_front_SOURCES = mln_canvas_distance_front.cc
+mln_canvas_morpho_all_SOURCES = mln_canvas_morpho_all.cc
+mln_canvas_morpho_algebraic_union_find_SOURCES = mln_canvas_morpho_algebraic_union_find.cc
+mln_canvas_morpho_essential_SOURCES = mln_canvas_morpho_essential.cc
+mln_canvas_essential_SOURCES = mln_canvas_essential.cc
+mln_metal_is_const_SOURCES = mln_metal_is_const.cc
+mln_metal_none_SOURCES = mln_metal_none.cc
+mln_metal_equal_SOURCES = mln_metal_equal.cc
+mln_metal_unptr_SOURCES = mln_metal_unptr.cc
+mln_metal_not_equal_SOURCES = mln_metal_not_equal.cc
+mln_metal_is_ref_SOURCES = mln_metal_is_ref.cc
+mln_metal_ret_SOURCES = mln_metal_ret.cc
+mln_metal_unqualif_SOURCES = mln_metal_unqualif.cc
+mln_metal_is_not_SOURCES = mln_metal_is_not.cc
+mln_metal_vec_SOURCES = mln_metal_vec.cc
+mln_metal_is_SOURCES = mln_metal_is.cc
+mln_metal_bool_SOURCES = mln_metal_bool.cc
+mln_metal_all_SOURCES = mln_metal_all.cc
+mln_metal_math_pow_SOURCES = mln_metal_math_pow.cc
+mln_metal_math_max_SOURCES = mln_metal_math_max.cc
+mln_metal_math_all_SOURCES = mln_metal_math_all.cc
+mln_metal_math_root_SOURCES = mln_metal_math_root.cc
+mln_metal_math_sqrt_SOURCES = mln_metal_math_sqrt.cc
+mln_metal_mat_SOURCES = mln_metal_mat.cc
+mln_metal_is_not_const_SOURCES = mln_metal_is_not_const.cc
+mln_metal_fix_return_SOURCES = mln_metal_fix_return.cc
+mln_metal_ands_SOURCES = mln_metal_ands.cc
+mln_metal_const_SOURCES = mln_metal_const.cc
+mln_metal_is_unqualif_SOURCES = mln_metal_is_unqualif.cc
+mln_metal_unconst_SOURCES = mln_metal_unconst.cc
+mln_metal_bexpr_SOURCES = mln_metal_bexpr.cc
+mln_metal_array2d_SOURCES = mln_metal_array2d.cc
+mln_metal_is_not_a_SOURCES = mln_metal_is_not_a.cc
+mln_metal_is_a_SOURCES = mln_metal_is_a.cc
+mln_metal_array1d_SOURCES = mln_metal_array1d.cc
+mln_metal_if_SOURCES = mln_metal_if.cc
+mln_metal_unref_SOURCES = mln_metal_unref.cc
+mln_metal_array_SOURCES = mln_metal_array.cc
+mln_metal_ref_SOURCES = mln_metal_ref.cc
+mln_metal_same_point_SOURCES = mln_metal_same_point.cc
+mln_metal_int_SOURCES = mln_metal_int.cc
+mln_metal_abort_SOURCES = mln_metal_abort.cc
+mln_metal_same_coord_SOURCES = mln_metal_same_coord.cc
+mln_metal_templated_by_SOURCES = mln_metal_templated_by.cc
+mln_metal_goes_to_SOURCES = mln_metal_goes_to.cc
+mln_metal_is_not_ref_SOURCES = mln_metal_is_not_ref.cc
+mln_metal_converts_to_SOURCES = mln_metal_converts_to.cc
+mln_metal_essential_SOURCES = mln_metal_essential.cc
+mln_metal_array3d_SOURCES = mln_metal_array3d.cc
+mln_algebra_vec_SOURCES = mln_algebra_vec.cc
+mln_algebra_all_SOURCES = mln_algebra_all.cc
+mln_algebra_h_vec_SOURCES = mln_algebra_h_vec.cc
+mln_algebra_mat_SOURCES = mln_algebra_mat.cc
+mln_algebra_h_mat_SOURCES = mln_algebra_h_mat.cc
+mln_algebra_quat_SOURCES = mln_algebra_quat.cc
+mln_algebra_essential_SOURCES = mln_algebra_essential.cc
+mln_linear_convolve_2x1d_SOURCES = mln_linear_convolve_2x1d.cc
+mln_linear_all_SOURCES = mln_linear_all.cc
+mln_linear_ch_convolve_SOURCES = mln_linear_ch_convolve.cc
+mln_linear_gaussian_SOURCES = mln_linear_gaussian.cc
+mln_linear_convolve_SOURCES = mln_linear_convolve.cc
+mln_linear_sobel_2d_SOURCES = mln_linear_sobel_2d.cc
+mln_linear_local_convolve_SOURCES = mln_linear_local_convolve.cc
+mln_linear_lap_SOURCES = mln_linear_lap.cc
+mln_linear_convolve_directional_SOURCES = mln_linear_convolve_directional.cc
+mln_linear_log_SOURCES = mln_linear_log.cc
+mln_linear_essential_SOURCES = mln_linear_essential.cc
+mln_morpho_thinning_SOURCES = mln_morpho_thinning.cc
+mln_morpho_meyer_wst_SOURCES = mln_morpho_meyer_wst.cc
+mln_morpho_opening_SOURCES = mln_morpho_opening.cc
+mln_morpho_includes_SOURCES = mln_morpho_includes.cc
+mln_morpho_elementary_opening_SOURCES = mln_morpho_elementary_opening.cc
+mln_morpho_elementary_gradient_internal_SOURCES = mln_morpho_elementary_gradient_internal.cc
+mln_morpho_elementary_dilation_SOURCES = mln_morpho_elementary_dilation.cc
+mln_morpho_elementary_laplacian_SOURCES = mln_morpho_elementary_laplacian.cc
+mln_morpho_elementary_all_SOURCES = mln_morpho_elementary_all.cc
+mln_morpho_elementary_gradient_external_SOURCES = mln_morpho_elementary_gradient_external.cc
+mln_morpho_elementary_like_ero_fun_SOURCES = mln_morpho_elementary_like_ero_fun.cc
+mln_morpho_elementary_gradient_SOURCES = mln_morpho_elementary_gradient.cc
+mln_morpho_elementary_like_ero_set_SOURCES = mln_morpho_elementary_like_ero_set.cc
+mln_morpho_elementary_closing_SOURCES = mln_morpho_elementary_closing.cc
+mln_morpho_elementary_top_hat_SOURCES = mln_morpho_elementary_top_hat.cc
+mln_morpho_elementary_erosion_SOURCES = mln_morpho_elementary_erosion.cc
+mln_morpho_elementary_essential_SOURCES = mln_morpho_elementary_essential.cc
+mln_morpho_thin_fit_SOURCES = mln_morpho_thin_fit.cc
+mln_morpho_skeleton_constrained_SOURCES = mln_morpho_skeleton_constrained.cc
+mln_morpho_complementation_SOURCES = mln_morpho_complementation.cc
+mln_morpho_line_gradient_SOURCES = mln_morpho_line_gradient.cc
+mln_morpho_hit_or_miss_SOURCES = mln_morpho_hit_or_miss.cc
+mln_morpho_closing_height_SOURCES = mln_morpho_closing_height.cc
+mln_morpho_plus_SOURCES = mln_morpho_plus.cc
+mln_morpho_general_SOURCES = mln_morpho_general.cc
+mln_morpho_internal_elementary_SOURCES = mln_morpho_internal_elementary.cc
+mln_morpho_contrast_SOURCES = mln_morpho_contrast.cc
+mln_morpho_opening_area_SOURCES = mln_morpho_opening_area.cc
+mln_morpho_opening_height_SOURCES = mln_morpho_opening_height.cc
+mln_morpho_thickening_SOURCES = mln_morpho_thickening.cc
+mln_morpho_dilation_SOURCES = mln_morpho_dilation.cc
+mln_morpho_laplacian_SOURCES = mln_morpho_laplacian.cc
+mln_morpho_all_SOURCES = mln_morpho_all.cc
+mln_morpho_opening_attribute_SOURCES = mln_morpho_opening_attribute.cc
+mln_morpho_opening_volume_SOURCES = mln_morpho_opening_volume.cc
+mln_morpho_closing_area_on_vertices_SOURCES = mln_morpho_closing_area_on_vertices.cc
+mln_morpho_closing_volume_SOURCES = mln_morpho_closing_volume.cc
+mln_morpho_minus_SOURCES = mln_morpho_minus.cc
+mln_morpho_gradient_SOURCES = mln_morpho_gradient.cc
+mln_morpho_tree_max_SOURCES = mln_morpho_tree_max.cc
+mln_morpho_tree_compute_parent_SOURCES = mln_morpho_tree_compute_parent.cc
+mln_morpho_tree_all_SOURCES = mln_morpho_tree_all.cc
+mln_morpho_tree_utils_SOURCES = mln_morpho_tree_utils.cc
+mln_morpho_tree_data_SOURCES = mln_morpho_tree_data.cc
+mln_morpho_tree_compute_attribute_image_SOURCES = mln_morpho_tree_compute_attribute_image.cc
+mln_morpho_opening_area_on_vertices_SOURCES = mln_morpho_opening_area_on_vertices.cc
+mln_morpho_min_SOURCES = mln_morpho_min.cc
+mln_morpho_closing_SOURCES = mln_morpho_closing.cc
+mln_morpho_top_hat_SOURCES = mln_morpho_top_hat.cc
+mln_morpho_erosion_SOURCES = mln_morpho_erosion.cc
+mln_morpho_Rd_SOURCES = mln_morpho_Rd.cc
+mln_morpho_closing_area_SOURCES = mln_morpho_closing_area.cc
+mln_morpho_thick_miss_SOURCES = mln_morpho_thick_miss.cc
+mln_morpho_closing_attribute_SOURCES = mln_morpho_closing_attribute.cc
+mln_morpho_rank_filter_SOURCES = mln_morpho_rank_filter.cc
+mln_morpho_essential_SOURCES = mln_morpho_essential.cc
+mln_topo_n_face_iter_SOURCES = mln_topo_n_face_iter.cc
+mln_topo_face_iter_SOURCES = mln_topo_face_iter.cc
+mln_topo_is_simple_2d_SOURCES = mln_topo_is_simple_2d.cc
+mln_topo_centered_iter_adapter_SOURCES = mln_topo_centered_iter_adapter.cc
+mln_topo_internal_complex_set_iterator_base_SOURCES = mln_topo_internal_complex_set_iterator_base.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
+mln_topo_internal_complex_relative_iterator_sequence_SOURCES = mln_topo_internal_complex_relative_iterator_sequence.cc
+mln_topo_algebraic_n_face_SOURCES = mln_topo_algebraic_n_face.cc
+mln_topo_attic_faces_iter_SOURCES = mln_topo_attic_faces_iter.cc
+mln_topo_adj_lower_dim_connected_n_face_iter_SOURCES = mln_topo_adj_lower_dim_connected_n_face_iter.cc
+mln_topo_n_face_SOURCES = mln_topo_n_face.cc
+mln_topo_adj_lower_higher_face_iter_SOURCES = mln_topo_adj_lower_higher_face_iter.cc
+mln_topo_all_SOURCES = mln_topo_all.cc
+mln_topo_face_data_SOURCES = mln_topo_face_data.cc
+mln_topo_static_n_face_iter_SOURCES = mln_topo_static_n_face_iter.cc
+mln_topo_face_SOURCES = mln_topo_face.cc
+mln_topo_adj_m_face_iter_SOURCES = mln_topo_adj_m_face_iter.cc
+mln_topo_complex_SOURCES = mln_topo_complex.cc
+mln_topo_adj_higher_face_iter_SOURCES = mln_topo_adj_higher_face_iter.cc
+mln_topo_adj_lower_face_iter_SOURCES = mln_topo_adj_lower_face_iter.cc
+mln_topo_complex_iterators_SOURCES = mln_topo_complex_iterators.cc
+mln_topo_center_only_iter_SOURCES = mln_topo_center_only_iter.cc
+mln_topo_adj_higher_dim_connected_n_face_iter_SOURCES = mln_topo_adj_higher_dim_connected_n_face_iter.cc
+mln_topo_algebraic_face_SOURCES = mln_topo_algebraic_face.cc
+mln_topo_n_faces_set_SOURCES = mln_topo_n_faces_set.cc
+mln_topo_essential_SOURCES = mln_topo_essential.cc
+mln_essential_1d_SOURCES = mln_essential_1d.cc
+mln_essential_routine_SOURCES = mln_essential_routine.cc
+mln_essential_3d_SOURCES = mln_essential_3d.cc
+mln_essential_2d_SOURCES = mln_essential_2d.cc
+mln_win_inter_SOURCES = mln_win_inter.cc
mln_win_backdiag2d_SOURCES = mln_win_backdiag2d.cc
-mln_win_diag2d_SOURCES = mln_win_diag2d.cc
+mln_win_segment1d_SOURCES = mln_win_segment1d.cc
+mln_win_cuboid3d_SOURCES = mln_win_cuboid3d.cc
mln_win_vline2d_SOURCES = mln_win_vline2d.cc
-mln_win_essential_SOURCES = mln_win_essential.cc
+mln_win_octagon2d_SOURCES = mln_win_octagon2d.cc
+mln_win_all_SOURCES = mln_win_all.cc
+mln_win_multiple_size_SOURCES = mln_win_multiple_size.cc
+mln_win_cube3d_SOURCES = mln_win_cube3d.cc
mln_win_shift_SOURCES = mln_win_shift.cc
mln_win_sym_SOURCES = mln_win_sym.cc
-mln_win_hline2d_SOURCES = mln_win_hline2d.cc
-mln_win_inter_SOURCES = mln_win_inter.cc
-mln_win_all_SOURCES = mln_win_all.cc
mln_win_diff_SOURCES = mln_win_diff.cc
-mln_win_rectangle2d_SOURCES = mln_win_rectangle2d.cc
mln_win_multiple_SOURCES = mln_win_multiple.cc
+mln_win_diag2d_SOURCES = mln_win_diag2d.cc
+mln_win_disk2d_SOURCES = mln_win_disk2d.cc
+mln_win_rectangle2d_SOURCES = mln_win_rectangle2d.cc
+mln_win_hline2d_SOURCES = mln_win_hline2d.cc
mln_win_line_SOURCES = mln_win_line.cc
-mln_win_multiple_size_SOURCES = mln_win_multiple_size.cc
-mln_win_cube3d_SOURCES = mln_win_cube3d.cc
-mln_core_category_SOURCES = mln_core_category.cc
-mln_core_pixter1d_SOURCES = mln_core_pixter1d.cc
-mln_core_routine_init_SOURCES = mln_core_routine_init.cc
-mln_core_routine_essential_SOURCES = mln_core_routine_essential.cc
-mln_core_routine_primary_SOURCES = mln_core_routine_primary.cc
-mln_core_routine_clone_SOURCES = mln_core_routine_clone.cc
-mln_core_routine_ops_SOURCES = mln_core_routine_ops.cc
-mln_core_routine_all_SOURCES = mln_core_routine_all.cc
-mln_core_routine_initialize_SOURCES = mln_core_routine_initialize.cc
-mln_core_routine_extend_SOURCES = mln_core_routine_extend.cc
-mln_core_routine_exact_SOURCES = mln_core_routine_exact.cc
-mln_core_trait_qlf_value_SOURCES = mln_core_trait_qlf_value.cc
-mln_core_trait_op_mult_SOURCES = mln_core_trait_op_mult.cc
-mln_core_trait_essential_SOURCES = mln_core_trait_essential.cc
-mln_core_trait_pixter_SOURCES = mln_core_trait_pixter.cc
-mln_core_trait_all_SOURCES = mln_core_trait_all.cc
-mln_core_a_point_of_SOURCES = mln_core_a_point_of.cc
-mln_core_def_coordf_SOURCES = mln_core_def_coordf.cc
+mln_win_essential_SOURCES = mln_win_essential.cc
+mln_core_clock_neighb_SOURCES = mln_core_clock_neighb.cc
+mln_core_pixter2d_SOURCES = mln_core_pixter2d.cc
mln_core_def_low_quant_nbits_SOURCES = mln_core_def_low_quant_nbits.cc
-mln_core_def_essential_SOURCES = mln_core_def_essential.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_dpoints_pixter_SOURCES = mln_core_dpoints_pixter.cc
+mln_core_def_essential_SOURCES = mln_core_def_essential.cc
+mln_core_site_set_box_SOURCES = mln_core_site_set_box.cc
+mln_core_site_set_p_vertices_SOURCES = mln_core_site_set_p_vertices.cc
+mln_core_site_set_p_vaccess_SOURCES = mln_core_site_set_p_vaccess.cc
+mln_core_site_set_p_if_piter_SOURCES = mln_core_site_set_p_if_piter.cc
+mln_core_site_set_p_run_piter_SOURCES = mln_core_site_set_p_run_piter.cc
+mln_core_site_set_p_key_SOURCES = mln_core_site_set_p_key.cc
+mln_core_site_set_p_double_SOURCES = mln_core_site_set_p_double.cc
+mln_core_site_set_p_complex_piter_SOURCES = mln_core_site_set_p_complex_piter.cc
+mln_core_site_set_p_complex_SOURCES = mln_core_site_set_p_complex.cc
+mln_core_site_set_p_image_SOURCES = mln_core_site_set_p_image.cc
+mln_core_site_set_attic_p_complex_faces_piter_SOURCES = mln_core_site_set_attic_p_complex_faces_piter.cc
+mln_core_site_set_attic_p_faces_piter_SOURCES = mln_core_site_set_attic_p_faces_piter.cc
+mln_core_site_set_p_priority_SOURCES = mln_core_site_set_p_priority.cc
+mln_core_site_set_p_set_of_SOURCES = mln_core_site_set_p_set_of.cc
+mln_core_site_set_all_SOURCES = mln_core_site_set_all.cc
+mln_core_site_set_p_edges_SOURCES = mln_core_site_set_p_edges.cc
+mln_core_site_set_box_piter_SOURCES = mln_core_site_set_box_piter.cc
+mln_core_site_set_p_faces_SOURCES = mln_core_site_set_p_faces.cc
+mln_core_site_set_p_set_SOURCES = mln_core_site_set_p_set.cc
+mln_core_site_set_p_queue_SOURCES = mln_core_site_set_p_queue.cc
+mln_core_site_set_p_if_SOURCES = mln_core_site_set_p_if.cc
+mln_core_site_set_operators_SOURCES = mln_core_site_set_operators.cc
+mln_core_site_set_p_mutable_array_of_SOURCES = mln_core_site_set_p_mutable_array_of.cc
+mln_core_site_set_p_edges_psite_SOURCES = mln_core_site_set_p_edges_psite.cc
+mln_core_site_set_complex_psite_SOURCES = mln_core_site_set_complex_psite.cc
+mln_core_site_set_p_run_SOURCES = mln_core_site_set_p_run.cc
+mln_core_site_set_p_n_faces_piter_SOURCES = mln_core_site_set_p_n_faces_piter.cc
+mln_core_site_set_p_centered_SOURCES = mln_core_site_set_p_centered.cc
+mln_core_site_set_p_bgraph_SOURCES = mln_core_site_set_p_bgraph.cc
+mln_core_site_set_p_bgraph_piter_SOURCES = mln_core_site_set_p_bgraph_piter.cc
+mln_core_site_set_p_array_SOURCES = mln_core_site_set_p_array.cc
+mln_core_site_set_p_vertices_psite_SOURCES = mln_core_site_set_p_vertices_psite.cc
+mln_core_site_set_p_line2d_SOURCES = mln_core_site_set_p_line2d.cc
+mln_core_site_set_p_queue_fast_SOURCES = mln_core_site_set_p_queue_fast.cc
+mln_core_site_set_p_graph_piter_SOURCES = mln_core_site_set_p_graph_piter.cc
+mln_core_site_set_essential_SOURCES = mln_core_site_set_essential.cc
mln_core_dpsites_piter_SOURCES = mln_core_dpsites_piter.cc
-mln_core_tags_SOURCES = mln_core_tags.cc
-mln_core_window_SOURCES = mln_core_window.cc
-mln_core_pixter2d_SOURCES = mln_core_pixter2d.cc
-mln_core_essential_SOURCES = mln_core_essential.cc
mln_core_w_window_SOURCES = mln_core_w_window.cc
-mln_core_alias_point2d_SOURCES = mln_core_alias_point2d.cc
-mln_core_alias_box2d_h_SOURCES = mln_core_alias_box2d_h.cc
-mln_core_alias_box2d_SOURCES = mln_core_alias_box2d.cc
-mln_core_alias_point2d_h_SOURCES = mln_core_alias_point2d_h.cc
-mln_core_alias_neighb3d_SOURCES = mln_core_alias_neighb3d.cc
-mln_core_alias_window1d_SOURCES = mln_core_alias_window1d.cc
-mln_core_alias_point3df_SOURCES = mln_core_alias_point3df.cc
-mln_core_alias_w_window2d_int_SOURCES = mln_core_alias_w_window2d_int.cc
-mln_core_alias_point1d_SOURCES = mln_core_alias_point1d.cc
-mln_core_alias_w_window3d_float_SOURCES = mln_core_alias_w_window3d_float.cc
-mln_core_alias_w_window1d_int_SOURCES = mln_core_alias_w_window1d_int.cc
-mln_core_alias_dpoint2d_h_SOURCES = mln_core_alias_dpoint2d_h.cc
-mln_core_alias_dpoint1d_SOURCES = mln_core_alias_dpoint1d.cc
-mln_core_alias_complex_image_SOURCES = mln_core_alias_complex_image.cc
-mln_core_alias_complex_geometry_SOURCES = mln_core_alias_complex_geometry.cc
-mln_core_alias_p_run2d_SOURCES = mln_core_alias_p_run2d.cc
-mln_core_alias_w_window1d_float_SOURCES = mln_core_alias_w_window1d_float.cc
-mln_core_alias_w_window3d_int_SOURCES = mln_core_alias_w_window3d_int.cc
-mln_core_alias_box3d_SOURCES = mln_core_alias_box3d.cc
-mln_core_alias_neighb1d_SOURCES = mln_core_alias_neighb1d.cc
-mln_core_alias_neighb2d_SOURCES = mln_core_alias_neighb2d.cc
-mln_core_alias_w_window2d_float_SOURCES = mln_core_alias_w_window2d_float.cc
-mln_core_alias_window2d_SOURCES = mln_core_alias_window2d.cc
-mln_core_alias_window3d_SOURCES = mln_core_alias_window3d.cc
-mln_core_alias_point3d_SOURCES = mln_core_alias_point3d.cc
-mln_core_alias_dpoint3d_SOURCES = mln_core_alias_dpoint3d.cc
-mln_core_alias_dpoint2d_SOURCES = mln_core_alias_dpoint2d.cc
-mln_core_alias_box1d_SOURCES = mln_core_alias_box1d.cc
-mln_core_alias_p_runs2d_SOURCES = mln_core_alias_p_runs2d.cc
-mln_core_point_SOURCES = mln_core_point.cc
-mln_core_clock_neighb_SOURCES = mln_core_clock_neighb.cc
-mln_core_neighb_SOURCES = mln_core_neighb.cc
-mln_core_dpoint_SOURCES = mln_core_dpoint.cc
-mln_core_var_SOURCES = mln_core_var.cc
-mln_core_faces_psite_SOURCES = mln_core_faces_psite.cc
-mln_core_contract_SOURCES = mln_core_contract.cc
-mln_core_macros_SOURCES = mln_core_macros.cc
-mln_core_all_SOURCES = mln_core_all.cc
-mln_core_internal_image_primary_SOURCES = mln_core_internal_image_primary.cc
-mln_core_internal_window_base_SOURCES = mln_core_internal_window_base.cc
+mln_core_grids_SOURCES = mln_core_grids.cc
+mln_core_dpoints_pixter_SOURCES = mln_core_dpoints_pixter.cc
mln_core_internal_graph_psite_base_SOURCES = mln_core_internal_graph_psite_base.cc
-mln_core_internal_data_SOURCES = mln_core_internal_data.cc
-mln_core_internal_site_set_impl_SOURCES = mln_core_internal_site_set_impl.cc
-mln_core_internal_piter_adaptor_SOURCES = mln_core_internal_piter_adaptor.cc
-mln_core_internal_image_morpher_SOURCES = mln_core_internal_image_morpher.cc
+mln_core_internal_run_image_SOURCES = mln_core_internal_run_image.cc
+mln_core_internal_pixel_impl_SOURCES = mln_core_internal_pixel_impl.cc
+mln_core_internal_site_set_base_SOURCES = mln_core_internal_site_set_base.cc
mln_core_internal_image_value_morpher_SOURCES = mln_core_internal_image_value_morpher.cc
-mln_core_internal_complex_window_p_base_SOURCES = mln_core_internal_complex_window_p_base.cc
+mln_core_internal_site_iterator_base_SOURCES = mln_core_internal_site_iterator_base.cc
+mln_core_internal_complex_neighborhood_base_SOURCES = mln_core_internal_complex_neighborhood_base.cc
+mln_core_internal_site_relative_iterator_base_SOURCES = mln_core_internal_site_relative_iterator_base.cc
+mln_core_internal_site_set_impl_SOURCES = mln_core_internal_site_set_impl.cc
+mln_core_internal_exact_SOURCES = mln_core_internal_exact.cc
mln_core_internal_p_complex_piter_base_SOURCES = mln_core_internal_p_complex_piter_base.cc
-mln_core_internal_site_set_base_SOURCES = mln_core_internal_site_set_base.cc
mln_core_internal_neighb_niter_impl_SOURCES = mln_core_internal_neighb_niter_impl.cc
-mln_core_internal_site_set_iterator_base_SOURCES = mln_core_internal_site_set_iterator_base.cc
-mln_core_internal_set_of_SOURCES = mln_core_internal_set_of.cc
-mln_core_internal_check_image_fastest_SOURCES = mln_core_internal_check_image_fastest.cc
-mln_core_internal_check_image_all_SOURCES = mln_core_internal_check_image_all.cc
+mln_core_internal_pixel_iterator_base_SOURCES = mln_core_internal_pixel_iterator_base.cc
mln_core_internal_classical_window_base_SOURCES = mln_core_internal_classical_window_base.cc
+mln_core_internal_data_SOURCES = mln_core_internal_data.cc
mln_core_internal_force_exact_SOURCES = mln_core_internal_force_exact.cc
-mln_core_internal_pixel_iterator_base_SOURCES = mln_core_internal_pixel_iterator_base.cc
-mln_core_internal_coord_impl_SOURCES = mln_core_internal_coord_impl.cc
-mln_core_internal_pixel_impl_SOURCES = mln_core_internal_pixel_impl.cc
-mln_core_internal_site_iterator_base_SOURCES = mln_core_internal_site_iterator_base.cc
-mln_core_internal_run_image_SOURCES = mln_core_internal_run_image.cc
+mln_core_internal_image_base_SOURCES = mln_core_internal_image_base.cc
+mln_core_internal_check_image_fastest_SOURCES = mln_core_internal_check_image_fastest.cc
+mln_core_internal_check_image_all_SOURCES = mln_core_internal_check_image_all.cc
mln_core_internal_fixme_SOURCES = mln_core_internal_fixme.cc
-mln_core_internal_pseudo_site_base_SOURCES = mln_core_internal_pseudo_site_base.cc
mln_core_internal_morpher_lvalue_SOURCES = mln_core_internal_morpher_lvalue.cc
mln_core_internal_image_domain_morpher_SOURCES = mln_core_internal_image_domain_morpher.cc
-mln_core_internal_complex_neighborhood_base_SOURCES = mln_core_internal_complex_neighborhood_base.cc
+mln_core_internal_image_primary_SOURCES = mln_core_internal_image_primary.cc
+mln_core_internal_set_of_SOURCES = mln_core_internal_set_of.cc
+mln_core_internal_complex_window_p_base_SOURCES = mln_core_internal_complex_window_p_base.cc
mln_core_internal_graph_window_base_SOURCES = mln_core_internal_graph_window_base.cc
-mln_core_internal_image_identity_SOURCES = mln_core_internal_image_identity.cc
-mln_core_internal_geom_bbox_SOURCES = mln_core_internal_geom_bbox.cc
+mln_core_internal_piter_adaptor_SOURCES = mln_core_internal_piter_adaptor.cc
mln_core_internal_weighted_window_base_SOURCES = mln_core_internal_weighted_window_base.cc
mln_core_internal_neighborhood_base_SOURCES = mln_core_internal_neighborhood_base.cc
-mln_core_internal_site_relative_iterator_base_SOURCES = mln_core_internal_site_relative_iterator_base.cc
-mln_core_internal_exact_SOURCES = mln_core_internal_exact.cc
+mln_core_internal_image_morpher_SOURCES = mln_core_internal_image_morpher.cc
+mln_core_internal_coord_impl_SOURCES = mln_core_internal_coord_impl.cc
+mln_core_internal_geom_bbox_SOURCES = mln_core_internal_geom_bbox.cc
+mln_core_internal_image_identity_SOURCES = mln_core_internal_image_identity.cc
+mln_core_internal_pseudo_site_base_SOURCES = mln_core_internal_pseudo_site_base.cc
+mln_core_internal_window_base_SOURCES = mln_core_internal_window_base.cc
mln_core_internal_box_impl_SOURCES = mln_core_internal_box_impl.cc
-mln_core_internal_image_base_SOURCES = mln_core_internal_image_base.cc
+mln_core_internal_site_set_iterator_base_SOURCES = mln_core_internal_site_set_iterator_base.cc
+mln_core_contract_SOURCES = mln_core_contract.cc
+mln_core_all_SOURCES = mln_core_all.cc
+mln_core_point_SOURCES = mln_core_point.cc
+mln_core_neighb_SOURCES = mln_core_neighb.cc
+mln_core_routine_initialize_SOURCES = mln_core_routine_initialize.cc
+mln_core_routine_primary_SOURCES = mln_core_routine_primary.cc
+mln_core_routine_init_SOURCES = mln_core_routine_init.cc
+mln_core_routine_ops_SOURCES = mln_core_routine_ops.cc
+mln_core_routine_all_SOURCES = mln_core_routine_all.cc
+mln_core_routine_clone_SOURCES = mln_core_routine_clone.cc
+mln_core_routine_exact_SOURCES = mln_core_routine_exact.cc
+mln_core_routine_extend_SOURCES = mln_core_routine_extend.cc
+mln_core_routine_essential_SOURCES = mln_core_routine_essential.cc
+mln_core_trait_op_mult_SOURCES = mln_core_trait_op_mult.cc
+mln_core_trait_all_SOURCES = mln_core_trait_all.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_trait_essential_SOURCES = mln_core_trait_essential.cc
+mln_core_pixter1d_SOURCES = mln_core_pixter1d.cc
+mln_core_category_SOURCES = mln_core_category.cc
+mln_core_macros_SOURCES = mln_core_macros.cc
+mln_core_box_runstart_piter_SOURCES = mln_core_box_runstart_piter.cc
+mln_core_tags_SOURCES = mln_core_tags.cc
+mln_core_dpoint_SOURCES = mln_core_dpoint.cc
+mln_core_alias_dpoint2d_h_SOURCES = mln_core_alias_dpoint2d_h.cc
+mln_core_alias_p_run2d_SOURCES = mln_core_alias_p_run2d.cc
+mln_core_alias_point3d_SOURCES = mln_core_alias_point3d.cc
+mln_core_alias_neighb3d_SOURCES = mln_core_alias_neighb3d.cc
+mln_core_alias_window3d_SOURCES = mln_core_alias_window3d.cc
+mln_core_alias_neighb2d_SOURCES = mln_core_alias_neighb2d.cc
+mln_core_alias_complex_image_SOURCES = mln_core_alias_complex_image.cc
+mln_core_alias_w_window1d_float_SOURCES = mln_core_alias_w_window1d_float.cc
+mln_core_alias_neighb1d_SOURCES = mln_core_alias_neighb1d.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_box1d_SOURCES = mln_core_alias_box1d.cc
+mln_core_alias_box2d_SOURCES = mln_core_alias_box2d.cc
+mln_core_alias_window1d_SOURCES = mln_core_alias_window1d.cc
+mln_core_alias_point1d_SOURCES = mln_core_alias_point1d.cc
+mln_core_alias_box3d_SOURCES = mln_core_alias_box3d.cc
+mln_core_alias_dpoint3d_SOURCES = mln_core_alias_dpoint3d.cc
+mln_core_alias_complex_geometry_SOURCES = mln_core_alias_complex_geometry.cc
+mln_core_alias_w_window3d_float_SOURCES = mln_core_alias_w_window3d_float.cc
+mln_core_alias_box2d_h_SOURCES = mln_core_alias_box2d_h.cc
+mln_core_alias_point2d_SOURCES = mln_core_alias_point2d.cc
+mln_core_alias_window2d_SOURCES = mln_core_alias_window2d.cc
+mln_core_alias_p_runs2d_SOURCES = mln_core_alias_p_runs2d.cc
+mln_core_alias_point3df_SOURCES = mln_core_alias_point3df.cc
+mln_core_alias_dpoint1d_SOURCES = mln_core_alias_dpoint1d.cc
+mln_core_alias_w_window3d_int_SOURCES = mln_core_alias_w_window3d_int.cc
+mln_core_alias_dpoint2d_SOURCES = mln_core_alias_dpoint2d.cc
+mln_core_alias_w_window1d_int_SOURCES = mln_core_alias_w_window1d_int.cc
+mln_core_alias_point2d_h_SOURCES = mln_core_alias_point2d_h.cc
+mln_core_window_SOURCES = mln_core_window.cc
+mln_core_concept_site_proxy_SOURCES = mln_core_concept_site_proxy.cc
+mln_core_concept_point_site_SOURCES = mln_core_concept_point_site.cc
+mln_core_concept_box_SOURCES = mln_core_concept_box.cc
+mln_core_concept_generalized_pixel_SOURCES = mln_core_concept_generalized_pixel.cc
+mln_core_concept_graph_SOURCES = mln_core_concept_graph.cc
+mln_core_concept_iterator_SOURCES = mln_core_concept_iterator.cc
+mln_core_concept_pseudo_site_SOURCES = mln_core_concept_pseudo_site.cc
+mln_core_concept_image_SOURCES = mln_core_concept_image.cc
+mln_core_concept_value_set_SOURCES = mln_core_concept_value_set.cc
+mln_core_concept_proxy_SOURCES = mln_core_concept_proxy.cc
+mln_core_concept_site_SOURCES = mln_core_concept_site.cc
+mln_core_concept_weighted_window_SOURCES = mln_core_concept_weighted_window.cc
+mln_core_concept_all_SOURCES = mln_core_concept_all.cc
+mln_core_concept_gpoint_SOURCES = mln_core_concept_gpoint.cc
+mln_core_concept_site_iterator_SOURCES = mln_core_concept_site_iterator.cc
+mln_core_concept_point_SOURCES = mln_core_concept_point.cc
+mln_core_concept_literal_SOURCES = mln_core_concept_literal.cc
+mln_core_concept_pixel_iterator_SOURCES = mln_core_concept_pixel_iterator.cc
+mln_core_concept_value_iterator_SOURCES = mln_core_concept_value_iterator.cc
+mln_core_concept_meta_accumulator_SOURCES = mln_core_concept_meta_accumulator.cc
+mln_core_concept_gdpoint_SOURCES = mln_core_concept_gdpoint.cc
+mln_core_concept_regular_grid_SOURCES = mln_core_concept_regular_grid.cc
+mln_core_concept_mesh_SOURCES = mln_core_concept_mesh.cc
+mln_core_concept_dpoint_SOURCES = mln_core_concept_dpoint.cc
+mln_core_concept_function_SOURCES = mln_core_concept_function.cc
+mln_core_concept_window_SOURCES = mln_core_concept_window.cc
+mln_core_concept_value_SOURCES = mln_core_concept_value.cc
+mln_core_concept_accumulator_SOURCES = mln_core_concept_accumulator.cc
+mln_core_concept_site_set_SOURCES = mln_core_concept_site_set.cc
+mln_core_concept_object_SOURCES = mln_core_concept_object.cc
+mln_core_concept_delta_point_site_SOURCES = mln_core_concept_delta_point_site.cc
+mln_core_concept_neighborhood_SOURCES = mln_core_concept_neighborhood.cc
+mln_core_concept_browsing_SOURCES = mln_core_concept_browsing.cc
+mln_core_pixel_SOURCES = mln_core_pixel.cc
mln_core_clock_neighb2d_SOURCES = mln_core_clock_neighb2d.cc
+mln_core_pixter3d_SOURCES = mln_core_pixter3d.cc
mln_core_image_obased_rle_encode_SOURCES = mln_core_image_obased_rle_encode.cc
mln_core_image_plain_SOURCES = mln_core_image_plain.cc
+mln_core_image_image3d_SOURCES = mln_core_image_image3d.cc
mln_core_image_decorated_image_SOURCES = mln_core_image_decorated_image.cc
-mln_core_image_graph_image_SOURCES = mln_core_image_graph_image.cc
-mln_core_image_complex_neighborhood_piter_SOURCES = mln_core_image_complex_neighborhood_piter.cc
-mln_core_image_graph_window_piter_SOURCES = mln_core_image_graph_window_piter.cc
-mln_core_image_hexa_piter_SOURCES = mln_core_image_hexa_piter.cc
-mln_core_image_rle_encode_SOURCES = mln_core_image_rle_encode.cc
-mln_core_image_extension_val_SOURCES = mln_core_image_extension_val.cc
-mln_core_image_tr_image_SOURCES = mln_core_image_tr_image.cc
-mln_core_image_fi_adaptor_SOURCES = mln_core_image_fi_adaptor.cc
mln_core_image_extension_ima_SOURCES = mln_core_image_extension_ima.cc
-mln_core_image_sparse_encode_SOURCES = mln_core_image_sparse_encode.cc
-mln_core_image_lazy_image_SOURCES = mln_core_image_lazy_image.cc
-mln_core_image_hexa_SOURCES = mln_core_image_hexa.cc
mln_core_image_flat_image_SOURCES = mln_core_image_flat_image.cc
-mln_core_image_essential_SOURCES = mln_core_image_essential.cc
-mln_core_image_value_enc_image_SOURCES = mln_core_image_value_enc_image.cc
-mln_core_image_image_if_SOURCES = mln_core_image_image_if.cc
-mln_core_image_complex_image_SOURCES = mln_core_image_complex_image.cc
-mln_core_image_image2d_h_SOURCES = mln_core_image_image2d_h.cc
-mln_core_image_rle_image_SOURCES = mln_core_image_rle_image.cc
-mln_core_image_complex_window_piter_SOURCES = mln_core_image_complex_window_piter.cc
-mln_core_image_mono_rle_image_SOURCES = mln_core_image_mono_rle_image.cc
+mln_core_image_complex_neighborhood_piter_SOURCES = mln_core_image_complex_neighborhood_piter.cc
+mln_core_image_tr_mesh_SOURCES = mln_core_image_tr_mesh.cc
mln_core_image_graph_elt_window_SOURCES = mln_core_image_graph_elt_window.cc
-mln_core_image_interpolated_SOURCES = mln_core_image_interpolated.cc
-mln_core_image_image1d_SOURCES = mln_core_image_image1d.cc
-mln_core_image_value_encode_SOURCES = mln_core_image_value_encode.cc
+mln_core_image_obased_rle_image_SOURCES = mln_core_image_obased_rle_image.cc
mln_core_image_mono_obased_rle_image_SOURCES = mln_core_image_mono_obased_rle_image.cc
+mln_core_image_interpolated_SOURCES = mln_core_image_interpolated.cc
+mln_core_image_lazy_image_SOURCES = mln_core_image_lazy_image.cc
mln_core_image_t_image_SOURCES = mln_core_image_t_image.cc
-mln_core_image_image2d_SOURCES = mln_core_image_image2d.cc
-mln_core_image_cast_image_SOURCES = mln_core_image_cast_image.cc
-mln_core_image_obased_rle_image_SOURCES = mln_core_image_obased_rle_image.cc
+mln_core_image_hexa_piter_SOURCES = mln_core_image_hexa_piter.cc
+mln_core_image_value_enc_image_SOURCES = mln_core_image_value_enc_image.cc
+mln_core_image_sub_image_if_SOURCES = mln_core_image_sub_image_if.cc
mln_core_image_all_SOURCES = mln_core_image_all.cc
-mln_core_image_complex_windows_SOURCES = mln_core_image_complex_windows.cc
-mln_core_image_safe_SOURCES = mln_core_image_safe.cc
-mln_core_image_extended_SOURCES = mln_core_image_extended.cc
+mln_core_image_mono_rle_image_SOURCES = mln_core_image_mono_rle_image.cc
+mln_core_image_complex_image_SOURCES = mln_core_image_complex_image.cc
+mln_core_image_cast_image_SOURCES = mln_core_image_cast_image.cc
+mln_core_image_rle_encode_SOURCES = mln_core_image_rle_encode.cc
+mln_core_image_complex_window_piter_SOURCES = mln_core_image_complex_window_piter.cc
+mln_core_image_tr_image_SOURCES = mln_core_image_tr_image.cc
+mln_core_image_sub_image_SOURCES = mln_core_image_sub_image.cc
+mln_core_image_rle_image_SOURCES = mln_core_image_rle_image.cc
+mln_core_image_line_graph_elt_window_SOURCES = mln_core_image_line_graph_elt_window.cc
+mln_core_image_mono_rle_encode_SOURCES = mln_core_image_mono_rle_encode.cc
+mln_core_image_bgraph_psite_SOURCES = mln_core_image_bgraph_psite.cc
mln_core_image_sparse_image_SOURCES = mln_core_image_sparse_image.cc
mln_core_image_bgraph_image_SOURCES = mln_core_image_bgraph_image.cc
-mln_core_image_image3d_SOURCES = mln_core_image_image3d.cc
-mln_core_image_bgraph_psite_SOURCES = mln_core_image_bgraph_psite.cc
-mln_core_image_sub_image_if_SOURCES = mln_core_image_sub_image_if.cc
-mln_core_image_line_graph_elt_window_SOURCES = mln_core_image_line_graph_elt_window.cc
-mln_core_image_tr_mesh_SOURCES = mln_core_image_tr_mesh.cc
-mln_core_image_sub_image_SOURCES = mln_core_image_sub_image.cc
-mln_core_image_ch_piter_SOURCES = mln_core_image_ch_piter.cc
+mln_core_image_complex_neighborhoods_SOURCES = mln_core_image_complex_neighborhoods.cc
+mln_core_image_graph_window_piter_SOURCES = mln_core_image_graph_window_piter.cc
+mln_core_image_sparse_encode_SOURCES = mln_core_image_sparse_encode.cc
+mln_core_image_safe_SOURCES = mln_core_image_safe.cc
mln_core_image_extension_fun_SOURCES = mln_core_image_extension_fun.cc
+mln_core_image_image1d_SOURCES = mln_core_image_image1d.cc
+mln_core_image_extension_val_SOURCES = mln_core_image_extension_val.cc
+mln_core_image_image_if_SOURCES = mln_core_image_image_if.cc
+mln_core_image_hexa_SOURCES = mln_core_image_hexa.cc
+mln_core_image_extended_SOURCES = mln_core_image_extended.cc
+mln_core_image_image2d_h_SOURCES = mln_core_image_image2d_h.cc
+mln_core_image_image2d_SOURCES = mln_core_image_image2d.cc
+mln_core_image_ch_piter_SOURCES = mln_core_image_ch_piter.cc
+mln_core_image_complex_windows_SOURCES = mln_core_image_complex_windows.cc
mln_core_image_mono_obased_rle_encode_SOURCES = mln_core_image_mono_obased_rle_encode.cc
-mln_core_image_line_graph_image_SOURCES = mln_core_image_line_graph_image.cc
-mln_core_image_mono_rle_encode_SOURCES = mln_core_image_mono_rle_encode.cc
-mln_core_image_complex_neighborhoods_SOURCES = mln_core_image_complex_neighborhoods.cc
-mln_core_pixter3d_SOURCES = mln_core_pixter3d.cc
-mln_core_concept_site_SOURCES = mln_core_concept_site.cc
-mln_core_concept_value_SOURCES = mln_core_concept_value.cc
-mln_core_concept_gdpoint_SOURCES = mln_core_concept_gdpoint.cc
-mln_core_concept_pseudo_site_SOURCES = mln_core_concept_pseudo_site.cc
-mln_core_concept_delta_point_site_SOURCES = mln_core_concept_delta_point_site.cc
-mln_core_concept_site_set_SOURCES = mln_core_concept_site_set.cc
-mln_core_concept_value_set_SOURCES = mln_core_concept_value_set.cc
-mln_core_concept_gpoint_SOURCES = mln_core_concept_gpoint.cc
-mln_core_concept_site_proxy_SOURCES = mln_core_concept_site_proxy.cc
-mln_core_concept_window_SOURCES = mln_core_concept_window.cc
-mln_core_concept_mesh_SOURCES = mln_core_concept_mesh.cc
-mln_core_concept_box_SOURCES = mln_core_concept_box.cc
-mln_core_concept_graph_SOURCES = mln_core_concept_graph.cc
-mln_core_concept_point_SOURCES = mln_core_concept_point.cc
-mln_core_concept_value_iterator_SOURCES = mln_core_concept_value_iterator.cc
-mln_core_concept_doc_site_set_SOURCES = mln_core_concept_doc_site_set.cc
-mln_core_concept_doc_image_fastest_SOURCES = mln_core_concept_doc_image_fastest.cc
-mln_core_concept_doc_value_set_SOURCES = mln_core_concept_doc_value_set.cc
-mln_core_concept_doc_window_SOURCES = mln_core_concept_doc_window.cc
-mln_core_concept_doc_box_SOURCES = mln_core_concept_doc_box.cc
-mln_core_concept_doc_value_iterator_SOURCES = mln_core_concept_doc_value_iterator.cc
-mln_core_concept_doc_weighted_window_SOURCES = mln_core_concept_doc_weighted_window.cc
-mln_core_concept_doc_image_SOURCES = mln_core_concept_doc_image.cc
-mln_core_concept_doc_dpoint_SOURCES = mln_core_concept_doc_dpoint.cc
-mln_core_concept_doc_iterator_SOURCES = mln_core_concept_doc_iterator.cc
-mln_core_concept_doc_accumulator_SOURCES = mln_core_concept_doc_accumulator.cc
-mln_core_concept_doc_neighborhood_SOURCES = mln_core_concept_doc_neighborhood.cc
-mln_core_concept_doc_pixel_iterator_SOURCES = mln_core_concept_doc_pixel_iterator.cc
-mln_core_concept_doc_point_iterator_SOURCES = mln_core_concept_doc_point_iterator.cc
-mln_core_concept_doc_object_SOURCES = mln_core_concept_doc_object.cc
-mln_core_concept_doc_generalized_pixel_SOURCES = mln_core_concept_doc_generalized_pixel.cc
-mln_core_concept_doc_point_site_SOURCES = mln_core_concept_doc_point_site.cc
-mln_core_concept_weighted_window_SOURCES = mln_core_concept_weighted_window.cc
-mln_core_concept_image_SOURCES = mln_core_concept_image.cc
-mln_core_concept_function_SOURCES = mln_core_concept_function.cc
-mln_core_concept_browsing_SOURCES = mln_core_concept_browsing.cc
-mln_core_concept_dpoint_SOURCES = mln_core_concept_dpoint.cc
-mln_core_concept_iterator_SOURCES = mln_core_concept_iterator.cc
-mln_core_concept_meta_accumulator_SOURCES = mln_core_concept_meta_accumulator.cc
-mln_core_concept_accumulator_SOURCES = mln_core_concept_accumulator.cc
-mln_core_concept_all_SOURCES = mln_core_concept_all.cc
-mln_core_concept_proxy_SOURCES = mln_core_concept_proxy.cc
-mln_core_concept_neighborhood_SOURCES = mln_core_concept_neighborhood.cc
-mln_core_concept_pixel_iterator_SOURCES = mln_core_concept_pixel_iterator.cc
-mln_core_concept_literal_SOURCES = mln_core_concept_literal.cc
-mln_core_concept_site_iterator_SOURCES = mln_core_concept_site_iterator.cc
-mln_core_concept_regular_grid_SOURCES = mln_core_concept_regular_grid.cc
-mln_core_concept_object_SOURCES = mln_core_concept_object.cc
-mln_core_concept_generalized_pixel_SOURCES = mln_core_concept_generalized_pixel.cc
-mln_core_concept_point_site_SOURCES = mln_core_concept_point_site.cc
-mln_core_site_set_p_array_SOURCES = mln_core_site_set_p_array.cc
-mln_core_site_set_p_priority_SOURCES = mln_core_site_set_p_priority.cc
-mln_core_site_set_p_bgraph_SOURCES = mln_core_site_set_p_bgraph.cc
-mln_core_site_set_p_queue_SOURCES = mln_core_site_set_p_queue.cc
-mln_core_site_set_p_double_SOURCES = mln_core_site_set_p_double.cc
-mln_core_site_set_p_set_SOURCES = mln_core_site_set_p_set.cc
-mln_core_site_set_p_complex_SOURCES = mln_core_site_set_p_complex.cc
-mln_core_site_set_p_graph_piter_SOURCES = mln_core_site_set_p_graph_piter.cc
-mln_core_site_set_p_n_faces_piter_SOURCES = mln_core_site_set_p_n_faces_piter.cc
-mln_core_site_set_p_set_of_SOURCES = mln_core_site_set_p_set_of.cc
-mln_core_site_set_p_vaccess_SOURCES = mln_core_site_set_p_vaccess.cc
-mln_core_site_set_box_piter_SOURCES = mln_core_site_set_box_piter.cc
-mln_core_site_set_p_vertices_psite_SOURCES = mln_core_site_set_p_vertices_psite.cc
-mln_core_site_set_complex_psite_SOURCES = mln_core_site_set_complex_psite.cc
-mln_core_site_set_p_run_SOURCES = mln_core_site_set_p_run.cc
-mln_core_site_set_essential_SOURCES = mln_core_site_set_essential.cc
-mln_core_site_set_box_SOURCES = mln_core_site_set_box.cc
-mln_core_site_set_p_line2d_SOURCES = mln_core_site_set_p_line2d.cc
-mln_core_site_set_p_edges_psite_SOURCES = mln_core_site_set_p_edges_psite.cc
-mln_core_site_set_p_mutable_array_of_SOURCES = mln_core_site_set_p_mutable_array_of.cc
-mln_core_site_set_p_run_piter_SOURCES = mln_core_site_set_p_run_piter.cc
-mln_core_site_set_p_faces_SOURCES = mln_core_site_set_p_faces.cc
-mln_core_site_set_operators_SOURCES = mln_core_site_set_operators.cc
-mln_core_site_set_p_if_piter_SOURCES = mln_core_site_set_p_if_piter.cc
-mln_core_site_set_all_SOURCES = mln_core_site_set_all.cc
-mln_core_site_set_p_edges_SOURCES = mln_core_site_set_p_edges.cc
-mln_core_site_set_p_bgraph_piter_SOURCES = mln_core_site_set_p_bgraph_piter.cc
-mln_core_site_set_p_centered_SOURCES = mln_core_site_set_p_centered.cc
-mln_core_site_set_p_key_SOURCES = mln_core_site_set_p_key.cc
-mln_core_site_set_p_vertices_SOURCES = mln_core_site_set_p_vertices.cc
-mln_core_site_set_p_if_SOURCES = mln_core_site_set_p_if.cc
-mln_core_site_set_p_queue_fast_SOURCES = mln_core_site_set_p_queue_fast.cc
-mln_core_site_set_p_image_SOURCES = mln_core_site_set_p_image.cc
-mln_core_site_set_p_complex_piter_SOURCES = mln_core_site_set_p_complex_piter.cc
-mln_core_site_set_attic_p_faces_piter_SOURCES = mln_core_site_set_attic_p_faces_piter.cc
-mln_core_site_set_attic_p_complex_faces_piter_SOURCES = mln_core_site_set_attic_p_complex_faces_piter.cc
-mln_core_pixel_SOURCES = mln_core_pixel.cc
-mln_core_box_runstart_piter_SOURCES = mln_core_box_runstart_piter.cc
-mln_core_grids_SOURCES = mln_core_grids.cc
-mln_io_abort_SOURCES = mln_io_abort.cc
-mln_io_pbm_all_SOURCES = mln_io_pbm_all.cc
-mln_io_pbm_load_SOURCES = mln_io_pbm_load.cc
-mln_io_pbm_save_SOURCES = mln_io_pbm_save.cc
-mln_io_essential_SOURCES = mln_io_essential.cc
-mln_io_off_all_SOURCES = mln_io_off_all.cc
-mln_io_off_load_SOURCES = mln_io_off_load.cc
-mln_io_off_save_SOURCES = mln_io_off_save.cc
-mln_io_pfm_all_SOURCES = mln_io_pfm_all.cc
-mln_io_pfm_load_SOURCES = mln_io_pfm_load.cc
-mln_io_pfm_save_SOURCES = mln_io_pfm_save.cc
-mln_io_pgm_all_SOURCES = mln_io_pgm_all.cc
+mln_core_image_value_encode_SOURCES = mln_core_image_value_encode.cc
+mln_core_image_essential_SOURCES = mln_core_image_essential.cc
+mln_core_a_point_of_SOURCES = mln_core_a_point_of.cc
+mln_core_var_SOURCES = mln_core_var.cc
+mln_core_essential_SOURCES = mln_core_essential.cc
+mln_core_faces_psite_SOURCES = mln_core_faces_psite.cc
+mln_labeling_blobs_SOURCES = mln_labeling_blobs.cc
+mln_labeling_background_SOURCES = mln_labeling_background.cc
+mln_labeling_relabel_SOURCES = mln_labeling_relabel.cc
+mln_labeling_all_SOURCES = mln_labeling_all.cc
+mln_labeling_level_SOURCES = mln_labeling_level.cc
+mln_labeling_flat_zones_SOURCES = mln_labeling_flat_zones.cc
+mln_labeling_foreground_SOURCES = mln_labeling_foreground.cc
+mln_labeling_regional_maxima_SOURCES = mln_labeling_regional_maxima.cc
+mln_labeling_compute_SOURCES = mln_labeling_compute.cc
+mln_labeling_regional_minima_SOURCES = mln_labeling_regional_minima.cc
+mln_labeling_essential_SOURCES = mln_labeling_essential.cc
+mln_test_predicate_SOURCES = mln_test_predicate.cc
+mln_test_all_SOURCES = mln_test_all.cc
+mln_test_positive_SOURCES = mln_test_positive.cc
+mln_test_essential_SOURCES = mln_test_essential.cc
+mln_transform_distance_geodesic_SOURCES = mln_transform_distance_geodesic.cc
+mln_transform_internal_all_SOURCES = mln_transform_internal_all.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_transform_all_SOURCES = mln_transform_all.cc
+mln_transform_influence_zone_front_SOURCES = mln_transform_influence_zone_front.cc
+mln_transform_distance_front_SOURCES = mln_transform_distance_front.cc
+mln_transform_influence_zone_geodesic_SOURCES = mln_transform_influence_zone_geodesic.cc
+mln_transform_essential_SOURCES = mln_transform_essential.cc
+mln_arith_includes_SOURCES = mln_arith_includes.cc
+mln_arith_plus_SOURCES = mln_arith_plus.cc
+mln_arith_all_SOURCES = mln_arith_all.cc
+mln_arith_times_SOURCES = mln_arith_times.cc
+mln_arith_diff_abs_SOURCES = mln_arith_diff_abs.cc
+mln_arith_minus_SOURCES = mln_arith_minus.cc
+mln_arith_min_SOURCES = mln_arith_min.cc
+mln_arith_revert_SOURCES = mln_arith_revert.cc
+mln_arith_essential_SOURCES = mln_arith_essential.cc
mln_io_pgm_load_SOURCES = mln_io_pgm_load.cc
+mln_io_pgm_all_SOURCES = mln_io_pgm_all.cc
mln_io_pgm_save_SOURCES = mln_io_pgm_save.cc
+mln_io_ppm_load_SOURCES = mln_io_ppm_load.cc
+mln_io_ppm_all_SOURCES = mln_io_ppm_all.cc
+mln_io_ppm_save_SOURCES = mln_io_ppm_save.cc
+mln_io_pfm_load_SOURCES = mln_io_pfm_load.cc
+mln_io_pfm_all_SOURCES = mln_io_pfm_all.cc
+mln_io_pfm_save_SOURCES = mln_io_pfm_save.cc
mln_io_all_SOURCES = mln_io_all.cc
-mln_io_fits_all_SOURCES = mln_io_fits_all.cc
-mln_io_fits_load_SOURCES = mln_io_fits_load.cc
+mln_io_pbm_load_SOURCES = mln_io_pbm_load.cc
+mln_io_pbm_all_SOURCES = mln_io_pbm_all.cc
+mln_io_pbm_save_SOURCES = mln_io_pbm_save.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_macros_SOURCES = mln_io_pnm_macros.cc
-mln_io_pnm_all_SOURCES = mln_io_pnm_all.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_all_SOURCES = mln_io_pnm_all.cc
+mln_io_pnm_macros_SOURCES = mln_io_pnm_macros.cc
mln_io_pnm_save_SOURCES = mln_io_pnm_save.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
+mln_io_pnm_save_header_SOURCES = mln_io_pnm_save_header.cc
mln_io_txt_all_SOURCES = mln_io_txt_all.cc
mln_io_txt_save_SOURCES = mln_io_txt_save.cc
-mln_make_vec_SOURCES = mln_make_vec.cc
-mln_make_box2d_h_SOURCES = mln_make_box2d_h.cc
-mln_make_box2d_SOURCES = mln_make_box2d.cc
-mln_make_point2d_h_SOURCES = mln_make_point2d_h.cc
-mln_make_double_neighb2d_SOURCES = mln_make_double_neighb2d.cc
-mln_make_w_window2d_int_SOURCES = mln_make_w_window2d_int.cc
-mln_make_w_window1d_SOURCES = mln_make_w_window1d.cc
-mln_make_relabelfun_SOURCES = mln_make_relabelfun.cc
-mln_make_pix_SOURCES = mln_make_pix.cc
-mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc
-mln_make_dpoint2d_h_SOURCES = mln_make_dpoint2d_h.cc
-mln_make_essential_SOURCES = mln_make_essential.cc
-mln_make_graph_SOURCES = mln_make_graph.cc
-mln_make_w_window_SOURCES = mln_make_w_window.cc
-mln_make_image_SOURCES = mln_make_image.cc
-mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc
-mln_make_box3d_SOURCES = mln_make_box3d.cc
-mln_make_image2d_SOURCES = mln_make_image2d.cc
-mln_make_all_SOURCES = mln_make_all.cc
-mln_make_dual_neighb_SOURCES = mln_make_dual_neighb.cc
-mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc
-mln_make_pixel_SOURCES = mln_make_pixel.cc
-mln_make_w_window2d_SOURCES = mln_make_w_window2d.cc
-mln_make_w_window_directional_SOURCES = mln_make_w_window_directional.cc
-mln_make_box1d_SOURCES = mln_make_box1d.cc
-mln_make_mat_SOURCES = mln_make_mat.cc
-mln_make_voronoi_SOURCES = mln_make_voronoi.cc
-mln_make_w_window3d_SOURCES = mln_make_w_window3d.cc
-mln_topo_adj_lower_face_iter_SOURCES = mln_topo_adj_lower_face_iter.cc
-mln_topo_adj_lower_dim_connected_n_face_iter_SOURCES = mln_topo_adj_lower_dim_connected_n_face_iter.cc
-mln_topo_face_iter_SOURCES = mln_topo_face_iter.cc
-mln_topo_algebraic_n_face_SOURCES = mln_topo_algebraic_n_face.cc
-mln_topo_complex_SOURCES = mln_topo_complex.cc
-mln_topo_face_data_SOURCES = mln_topo_face_data.cc
-mln_topo_adj_higher_dim_connected_n_face_iter_SOURCES = mln_topo_adj_higher_dim_connected_n_face_iter.cc
-mln_topo_essential_SOURCES = mln_topo_essential.cc
-mln_topo_static_n_face_iter_SOURCES = mln_topo_static_n_face_iter.cc
-mln_topo_n_faces_set_SOURCES = mln_topo_n_faces_set.cc
-mln_topo_adj_higher_face_iter_SOURCES = mln_topo_adj_higher_face_iter.cc
-mln_topo_all_SOURCES = mln_topo_all.cc
-mln_topo_internal_complex_iterator_base_SOURCES = mln_topo_internal_complex_iterator_base.cc
-mln_topo_internal_complex_relative_iterator_sequence_SOURCES = mln_topo_internal_complex_relative_iterator_sequence.cc
-mln_topo_internal_complex_relative_iterator_base_SOURCES = mln_topo_internal_complex_relative_iterator_base.cc
-mln_topo_internal_complex_set_iterator_base_SOURCES = mln_topo_internal_complex_set_iterator_base.cc
-mln_topo_adj_m_face_iter_SOURCES = mln_topo_adj_m_face_iter.cc
-mln_topo_n_face_SOURCES = mln_topo_n_face.cc
-mln_topo_complex_iterators_SOURCES = mln_topo_complex_iterators.cc
-mln_topo_adj_lower_higher_face_iter_SOURCES = mln_topo_adj_lower_higher_face_iter.cc
-mln_topo_is_simple_2d_SOURCES = mln_topo_is_simple_2d.cc
-mln_topo_face_SOURCES = mln_topo_face.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_algebraic_face_SOURCES = mln_topo_algebraic_face.cc
-mln_topo_n_face_iter_SOURCES = mln_topo_n_face_iter.cc
-mln_topo_attic_faces_iter_SOURCES = mln_topo_attic_faces_iter.cc
-mln_subsampling_essential_SOURCES = mln_subsampling_essential.cc
-mln_subsampling_subsampling_SOURCES = mln_subsampling_subsampling.cc
-mln_subsampling_all_SOURCES = mln_subsampling_all.cc
-mln_subsampling_gaussian_subsampling_SOURCES = mln_subsampling_gaussian_subsampling.cc
-mln_canvas_distance_geodesic_SOURCES = mln_canvas_distance_geodesic.cc
-mln_canvas_labeling_SOURCES = mln_canvas_labeling.cc
-mln_canvas_essential_SOURCES = mln_canvas_essential.cc
-mln_canvas_distance_front_SOURCES = mln_canvas_distance_front.cc
-mln_canvas_morpho_algebraic_union_find_SOURCES = mln_canvas_morpho_algebraic_union_find.cc
-mln_canvas_morpho_essential_SOURCES = mln_canvas_morpho_essential.cc
-mln_canvas_morpho_all_SOURCES = mln_canvas_morpho_all.cc
-mln_canvas_all_SOURCES = mln_canvas_all.cc
-mln_canvas_chamfer_SOURCES = mln_canvas_chamfer.cc
-mln_canvas_browsing_directional_SOURCES = mln_canvas_browsing_directional.cc
-mln_canvas_browsing_fwd_SOURCES = mln_canvas_browsing_fwd.cc
-mln_canvas_browsing_essential_SOURCES = mln_canvas_browsing_essential.cc
-mln_canvas_browsing_snake_vert_SOURCES = mln_canvas_browsing_snake_vert.cc
-mln_canvas_browsing_snake_fwd_SOURCES = mln_canvas_browsing_snake_fwd.cc
-mln_canvas_browsing_backdiagonal2d_SOURCES = mln_canvas_browsing_backdiagonal2d.cc
-mln_canvas_browsing_snake_generic_SOURCES = mln_canvas_browsing_snake_generic.cc
-mln_canvas_browsing_all_SOURCES = mln_canvas_browsing_all.cc
-mln_canvas_browsing_hyper_directional_SOURCES = mln_canvas_browsing_hyper_directional.cc
-mln_canvas_browsing_depth_first_search_SOURCES = mln_canvas_browsing_depth_first_search.cc
-mln_canvas_browsing_dir_struct_elt_incr_update_SOURCES = mln_canvas_browsing_dir_struct_elt_incr_update.cc
-mln_canvas_browsing_diagonal2d_SOURCES = mln_canvas_browsing_diagonal2d.cc
-mln_estim_mean_SOURCES = mln_estim_mean.cc
-mln_estim_essential_SOURCES = mln_estim_essential.cc
-mln_estim_all_SOURCES = mln_estim_all.cc
-mln_estim_min_max_SOURCES = mln_estim_min_max.cc
-mln_estim_sum_SOURCES = mln_estim_sum.cc
-mln_arith_essential_SOURCES = mln_arith_essential.cc
-mln_arith_includes_SOURCES = mln_arith_includes.cc
-mln_arith_all_SOURCES = mln_arith_all.cc
-mln_arith_plus_SOURCES = mln_arith_plus.cc
-mln_arith_min_SOURCES = mln_arith_min.cc
-mln_arith_minus_SOURCES = mln_arith_minus.cc
-mln_arith_revert_SOURCES = mln_arith_revert.cc
-mln_arith_times_SOURCES = mln_arith_times.cc
-mln_arith_diff_abs_SOURCES = mln_arith_diff_abs.cc
-mln_algebra_vec_SOURCES = mln_algebra_vec.cc
-mln_algebra_h_mat_SOURCES = mln_algebra_h_mat.cc
-mln_algebra_quat_SOURCES = mln_algebra_quat.cc
-mln_algebra_essential_SOURCES = mln_algebra_essential.cc
-mln_algebra_all_SOURCES = mln_algebra_all.cc
-mln_algebra_h_vec_SOURCES = mln_algebra_h_vec.cc
-mln_algebra_mat_SOURCES = mln_algebra_mat.cc
-mln_display_essential_SOURCES = mln_display_essential.cc
-mln_display_all_SOURCES = mln_display_all.cc
-mln_test_positive_SOURCES = mln_test_positive.cc
-mln_test_essential_SOURCES = mln_test_essential.cc
-mln_test_all_SOURCES = mln_test_all.cc
-mln_test_predicate_SOURCES = mln_test_predicate.cc
-mln_border_mirror_SOURCES = mln_border_mirror.cc
-mln_border_adjust_SOURCES = mln_border_adjust.cc
-mln_border_find_SOURCES = mln_border_find.cc
-mln_border_essential_SOURCES = mln_border_essential.cc
-mln_border_equalize_SOURCES = mln_border_equalize.cc
-mln_border_fill_SOURCES = mln_border_fill.cc
-mln_border_resize_SOURCES = mln_border_resize.cc
-mln_border_all_SOURCES = mln_border_all.cc
-mln_border_duplicate_SOURCES = mln_border_duplicate.cc
-mln_border_thickness_SOURCES = mln_border_thickness.cc
-mln_border_get_SOURCES = mln_border_get.cc
-mln_trace_exiting_SOURCES = mln_trace_exiting.cc
-mln_trace_entering_SOURCES = mln_trace_entering.cc
-mln_trace_resume_SOURCES = mln_trace_resume.cc
-mln_trace_stop_SOURCES = mln_trace_stop.cc
-mln_trace_essential_SOURCES = mln_trace_essential.cc
-mln_trace_quiet_SOURCES = mln_trace_quiet.cc
-mln_trace_all_SOURCES = mln_trace_all.cc
-mln_trace_warning_SOURCES = mln_trace_warning.cc
-mln_debug_println_with_border_SOURCES = mln_debug_println_with_border.cc
-mln_debug_draw_graph_SOURCES = mln_debug_draw_graph.cc
+mln_io_abort_SOURCES = mln_io_abort.cc
+mln_io_fits_load_SOURCES = mln_io_fits_load.cc
+mln_io_fits_all_SOURCES = mln_io_fits_all.cc
+mln_io_off_load_SOURCES = mln_io_off_load.cc
+mln_io_off_all_SOURCES = mln_io_off_all.cc
+mln_io_off_save_SOURCES = mln_io_off_save.cc
+mln_io_essential_SOURCES = mln_io_essential.cc
+mln_logical_includes_SOURCES = mln_logical_includes.cc
+mln_logical_and_not_SOURCES = mln_logical_and_not.cc
+mln_logical_xor_SOURCES = mln_logical_xor.cc
+mln_logical_all_SOURCES = mln_logical_all.cc
+mln_logical_not_SOURCES = mln_logical_not.cc
+mln_logical_and_SOURCES = mln_logical_and.cc
+mln_logical_or_SOURCES = mln_logical_or.cc
+mln_logical_essential_SOURCES = mln_logical_essential.cc
+mln_norm_all_SOURCES = mln_norm_all.cc
+mln_norm_l1_SOURCES = mln_norm_l1.cc
+mln_norm_l2_SOURCES = mln_norm_l2.cc
+mln_norm_linfty_SOURCES = mln_norm_linfty.cc
+mln_norm_essential_SOURCES = mln_norm_essential.cc
mln_debug_iota_SOURCES = mln_debug_iota.cc
+mln_debug_all_SOURCES = mln_debug_all.cc
+mln_debug_println_with_border_SOURCES = mln_debug_println_with_border.cc
mln_debug_colorize_SOURCES = mln_debug_colorize.cc
-mln_debug_essential_SOURCES = mln_debug_essential.cc
+mln_debug_draw_graph_SOURCES = mln_debug_draw_graph.cc
+mln_debug_put_word_SOURCES = mln_debug_put_word.cc
mln_debug_format_SOURCES = mln_debug_format.cc
-mln_debug_all_SOURCES = mln_debug_all.cc
mln_debug_println_SOURCES = mln_debug_println.cc
-mln_debug_put_word_SOURCES = mln_debug_put_word.cc
-mln_morpho_thick_miss_SOURCES = mln_morpho_thick_miss.cc
-mln_morpho_opening_volume_SOURCES = mln_morpho_opening_volume.cc
-mln_morpho_gradient_SOURCES = mln_morpho_gradient.cc
-mln_morpho_closing_area_on_vertices_SOURCES = mln_morpho_closing_area_on_vertices.cc
-mln_morpho_meyer_wst_SOURCES = mln_morpho_meyer_wst.cc
-mln_morpho_closing_area_SOURCES = mln_morpho_closing_area.cc
-mln_morpho_Rd_SOURCES = mln_morpho_Rd.cc
-mln_morpho_complementation_SOURCES = mln_morpho_complementation.cc
-mln_morpho_opening_area_on_vertices_SOURCES = mln_morpho_opening_area_on_vertices.cc
-mln_morpho_thinning_SOURCES = mln_morpho_thinning.cc
-mln_morpho_contrast_SOURCES = mln_morpho_contrast.cc
-mln_morpho_opening_height_SOURCES = mln_morpho_opening_height.cc
-mln_morpho_erosion_SOURCES = mln_morpho_erosion.cc
-mln_morpho_essential_SOURCES = mln_morpho_essential.cc
-mln_morpho_elementary_gradient_SOURCES = mln_morpho_elementary_gradient.cc
-mln_morpho_elementary_erosion_SOURCES = mln_morpho_elementary_erosion.cc
-mln_morpho_elementary_essential_SOURCES = mln_morpho_elementary_essential.cc
-mln_morpho_elementary_all_SOURCES = mln_morpho_elementary_all.cc
-mln_morpho_elementary_like_ero_fun_SOURCES = mln_morpho_elementary_like_ero_fun.cc
-mln_morpho_elementary_dilation_SOURCES = mln_morpho_elementary_dilation.cc
-mln_morpho_elementary_opening_SOURCES = mln_morpho_elementary_opening.cc
-mln_morpho_elementary_closing_SOURCES = mln_morpho_elementary_closing.cc
-mln_morpho_elementary_like_ero_set_SOURCES = mln_morpho_elementary_like_ero_set.cc
-mln_morpho_elementary_laplacian_SOURCES = mln_morpho_elementary_laplacian.cc
-mln_morpho_elementary_gradient_internal_SOURCES = mln_morpho_elementary_gradient_internal.cc
-mln_morpho_elementary_gradient_external_SOURCES = mln_morpho_elementary_gradient_external.cc
-mln_morpho_elementary_top_hat_SOURCES = mln_morpho_elementary_top_hat.cc
-mln_morpho_includes_SOURCES = mln_morpho_includes.cc
-mln_morpho_thickening_SOURCES = mln_morpho_thickening.cc
-mln_morpho_opening_attribute_SOURCES = mln_morpho_opening_attribute.cc
-mln_morpho_closing_height_SOURCES = mln_morpho_closing_height.cc
-mln_morpho_line_gradient_SOURCES = mln_morpho_line_gradient.cc
-mln_morpho_thin_fit_SOURCES = mln_morpho_thin_fit.cc
-mln_morpho_opening_area_SOURCES = mln_morpho_opening_area.cc
-mln_morpho_all_SOURCES = mln_morpho_all.cc
-mln_morpho_hit_or_miss_SOURCES = mln_morpho_hit_or_miss.cc
-mln_morpho_internal_elementary_SOURCES = mln_morpho_internal_elementary.cc
-mln_morpho_plus_SOURCES = mln_morpho_plus.cc
-mln_morpho_dilation_SOURCES = mln_morpho_dilation.cc
-mln_morpho_closing_attribute_SOURCES = mln_morpho_closing_attribute.cc
-mln_morpho_opening_SOURCES = mln_morpho_opening.cc
-mln_morpho_min_SOURCES = mln_morpho_min.cc
-mln_morpho_minus_SOURCES = mln_morpho_minus.cc
-mln_morpho_closing_volume_SOURCES = mln_morpho_closing_volume.cc
-mln_morpho_general_SOURCES = mln_morpho_general.cc
-mln_morpho_skeleton_constrained_SOURCES = mln_morpho_skeleton_constrained.cc
-mln_morpho_tree_max_SOURCES = mln_morpho_tree_max.cc
-mln_morpho_tree_data_SOURCES = mln_morpho_tree_data.cc
-mln_morpho_tree_compute_parent_SOURCES = mln_morpho_tree_compute_parent.cc
-mln_morpho_tree_utils_SOURCES = mln_morpho_tree_utils.cc
-mln_morpho_tree_compute_attribute_image_SOURCES = mln_morpho_tree_compute_attribute_image.cc
-mln_morpho_tree_all_SOURCES = mln_morpho_tree_all.cc
-mln_morpho_rank_filter_SOURCES = mln_morpho_rank_filter.cc
-mln_morpho_closing_SOURCES = mln_morpho_closing.cc
-mln_morpho_laplacian_SOURCES = mln_morpho_laplacian.cc
-mln_morpho_top_hat_SOURCES = mln_morpho_top_hat.cc
-mln_accu_nil_SOURCES = mln_accu_nil.cc
-mln_accu_transform_stop_SOURCES = mln_accu_transform_stop.cc
-mln_accu_max_SOURCES = mln_accu_max.cc
-mln_accu_max_h_SOURCES = mln_accu_max_h.cc
-mln_accu_histo_SOURCES = mln_accu_histo.cc
-mln_accu_center_SOURCES = mln_accu_center.cc
-mln_accu_rank_bool_SOURCES = mln_accu_rank_bool.cc
-mln_accu_mean_SOURCES = mln_accu_mean.cc
-mln_accu_median_alt_SOURCES = mln_accu_median_alt.cc
-mln_accu_convolve_SOURCES = mln_accu_convolve.cc
-mln_accu_essential_SOURCES = mln_accu_essential.cc
-mln_accu_min_h_SOURCES = mln_accu_min_h.cc
-mln_accu_compute_SOURCES = mln_accu_compute.cc
-mln_accu_take_SOURCES = mln_accu_take.cc
-mln_accu_transform_directional_SOURCES = mln_accu_transform_directional.cc
-mln_accu_pair_SOURCES = mln_accu_pair.cc
-mln_accu_land_basic_SOURCES = mln_accu_land_basic.cc
-mln_accu_all_SOURCES = mln_accu_all.cc
-mln_accu_height_SOURCES = mln_accu_height.cc
-mln_accu_internal_base_SOURCES = mln_accu_internal_base.cc
-mln_accu_transform_diagonal_SOURCES = mln_accu_transform_diagonal.cc
-mln_accu_v_SOURCES = mln_accu_v.cc
-mln_accu_count_SOURCES = mln_accu_count.cc
-mln_accu_volume_SOURCES = mln_accu_volume.cc
-mln_accu_lor_basic_SOURCES = mln_accu_lor_basic.cc
-mln_accu_tuple_SOURCES = mln_accu_tuple.cc
-mln_accu_min_SOURCES = mln_accu_min.cc
-mln_accu_median_h_SOURCES = mln_accu_median_h.cc
-mln_accu_transform_snake_SOURCES = mln_accu_transform_snake.cc
-mln_accu_line_SOURCES = mln_accu_line.cc
-mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc
-mln_accu_transform_SOURCES = mln_accu_transform.cc
-mln_accu_min_max_SOURCES = mln_accu_min_max.cc
-mln_accu_land_SOURCES = mln_accu_land.cc
-mln_accu_bbox_SOURCES = mln_accu_bbox.cc
-mln_accu_sum_SOURCES = mln_accu_sum.cc
-mln_accu_lor_SOURCES = mln_accu_lor.cc
-mln_accu_rank_high_quant_SOURCES = mln_accu_rank_high_quant.cc
-mln_accu_p_SOURCES = mln_accu_p.cc
-mln_accu_rank_SOURCES = mln_accu_rank.cc
-mln_accu_maj_h_SOURCES = mln_accu_maj_h.cc
-mln_registration_get_rtransf_SOURCES = mln_registration_get_rtransf.cc
-mln_registration_icp_SOURCES = mln_registration_icp.cc
-mln_registration_essential_SOURCES = mln_registration_essential.cc
-mln_registration_multiscale_SOURCES = mln_registration_multiscale.cc
-mln_registration_all_SOURCES = mln_registration_all.cc
-mln_registration_internal_rms_SOURCES = mln_registration_internal_rms.cc
-mln_registration_get_rot_SOURCES = mln_registration_get_rot.cc
-mln_registration_registration_SOURCES = mln_registration_registration.cc
-mln_all_SOURCES = mln_all.cc
-mln_pw_value_SOURCES = mln_pw_value.cc
-mln_pw_cst_SOURCES = mln_pw_cst.cc
-mln_pw_essential_SOURCES = mln_pw_essential.cc
-mln_pw_image_SOURCES = mln_pw_image.cc
-mln_pw_var_SOURCES = mln_pw_var.cc
-mln_pw_all_SOURCES = mln_pw_all.cc
-mln_binarization_essential_SOURCES = mln_binarization_essential.cc
-mln_binarization_includes_SOURCES = mln_binarization_includes.cc
-mln_binarization_all_SOURCES = mln_binarization_all.cc
-mln_binarization_binarization_SOURCES = mln_binarization_binarization.cc
-mln_binarization_threshold_SOURCES = mln_binarization_threshold.cc
-mln_linear_log_SOURCES = mln_linear_log.cc
-mln_linear_ch_convolve_SOURCES = mln_linear_ch_convolve.cc
-mln_linear_sobel_2d_SOURCES = mln_linear_sobel_2d.cc
-mln_linear_local_convolve_SOURCES = mln_linear_local_convolve.cc
-mln_linear_convolve_SOURCES = mln_linear_convolve.cc
-mln_linear_essential_SOURCES = mln_linear_essential.cc
-mln_linear_lap_SOURCES = mln_linear_lap.cc
-mln_linear_convolve_directional_SOURCES = mln_linear_convolve_directional.cc
-mln_linear_convolve_2x1d_SOURCES = mln_linear_convolve_2x1d.cc
-mln_linear_all_SOURCES = mln_linear_all.cc
-mln_linear_gaussian_SOURCES = mln_linear_gaussian.cc
-mln_essential_1d_SOURCES = mln_essential_1d.cc
-mln_essential_2d_SOURCES = mln_essential_2d.cc
-mln_essential_routine_SOURCES = mln_essential_routine.cc
-mln_essential_3d_SOURCES = mln_essential_3d.cc
-mln_metal_vec_SOURCES = mln_metal_vec.cc
-mln_metal_is_not_ref_SOURCES = mln_metal_is_not_ref.cc
-mln_metal_unconst_SOURCES = mln_metal_unconst.cc
-mln_metal_array3d_SOURCES = mln_metal_array3d.cc
-mln_metal_abort_SOURCES = mln_metal_abort.cc
-mln_metal_has_neighborhood_SOURCES = mln_metal_has_neighborhood.cc
-mln_metal_ref_SOURCES = mln_metal_ref.cc
-mln_metal_is_const_SOURCES = mln_metal_is_const.cc
-mln_metal_same_point_SOURCES = mln_metal_same_point.cc
-mln_metal_int_SOURCES = mln_metal_int.cc
-mln_metal_is_SOURCES = mln_metal_is.cc
-mln_metal_essential_SOURCES = mln_metal_essential.cc
-mln_metal_unref_SOURCES = mln_metal_unref.cc
-mln_metal_is_a_SOURCES = mln_metal_is_a.cc
-mln_metal_not_equal_SOURCES = mln_metal_not_equal.cc
-mln_metal_none_SOURCES = mln_metal_none.cc
-mln_metal_is_unqualif_SOURCES = mln_metal_is_unqualif.cc
-mln_metal_is_not_SOURCES = mln_metal_is_not.cc
-mln_metal_unptr_SOURCES = mln_metal_unptr.cc
-mln_metal_array1d_SOURCES = mln_metal_array1d.cc
-mln_metal_if_SOURCES = mln_metal_if.cc
-mln_metal_is_ref_SOURCES = mln_metal_is_ref.cc
-mln_metal_is_not_a_SOURCES = mln_metal_is_not_a.cc
-mln_metal_all_SOURCES = mln_metal_all.cc
-mln_metal_same_coord_SOURCES = mln_metal_same_coord.cc
-mln_metal_ands_SOURCES = mln_metal_ands.cc
-mln_metal_array2d_SOURCES = mln_metal_array2d.cc
-mln_metal_templated_by_SOURCES = mln_metal_templated_by.cc
-mln_metal_ret_SOURCES = mln_metal_ret.cc
-mln_metal_is_not_const_SOURCES = mln_metal_is_not_const.cc
-mln_metal_math_root_SOURCES = mln_metal_math_root.cc
-mln_metal_math_max_SOURCES = mln_metal_math_max.cc
-mln_metal_math_all_SOURCES = mln_metal_math_all.cc
-mln_metal_math_pow_SOURCES = mln_metal_math_pow.cc
-mln_metal_math_sqrt_SOURCES = mln_metal_math_sqrt.cc
-mln_metal_bexpr_SOURCES = mln_metal_bexpr.cc
-mln_metal_bool_SOURCES = mln_metal_bool.cc
-mln_metal_fix_return_SOURCES = mln_metal_fix_return.cc
-mln_metal_converts_to_SOURCES = mln_metal_converts_to.cc
-mln_metal_goes_to_SOURCES = mln_metal_goes_to.cc
-mln_metal_equal_SOURCES = mln_metal_equal.cc
-mln_metal_unqualif_SOURCES = mln_metal_unqualif.cc
-mln_metal_mat_SOURCES = mln_metal_mat.cc
-mln_metal_array_SOURCES = mln_metal_array.cc
-mln_metal_const_SOURCES = mln_metal_const.cc
-mln_set_sym_diff_SOURCES = mln_set_sym_diff.cc
-mln_set_essential_SOURCES = mln_set_essential.cc
-mln_set_compute_SOURCES = mln_set_compute.cc
-mln_set_has_SOURCES = mln_set_has.cc
+mln_debug_essential_SOURCES = mln_debug_essential.cc
+mln_estim_min_max_SOURCES = mln_estim_min_max.cc
+mln_estim_all_SOURCES = mln_estim_all.cc
+mln_estim_sum_SOURCES = mln_estim_sum.cc
+mln_estim_mean_SOURCES = mln_estim_mean.cc
+mln_estim_essential_SOURCES = mln_estim_essential.cc
+mln_set_uni_SOURCES = mln_set_uni.cc
mln_set_inter_SOURCES = mln_set_inter.cc
mln_set_all_SOURCES = mln_set_all.cc
-mln_set_diff_SOURCES = mln_set_diff.cc
-mln_set_uni_SOURCES = mln_set_uni.cc
mln_set_get_SOURCES = mln_set_get.cc
-mln_convert_to_p_array_SOURCES = mln_convert_to_p_array.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_set_SOURCES = mln_convert_to_p_set.cc
-mln_convert_impl_from_image_to_site_set_SOURCES = mln_convert_impl_from_image_to_site_set.cc
-mln_convert_impl_all_SOURCES = mln_convert_impl_all.cc
-mln_convert_impl_from_value_to_value_SOURCES = mln_convert_impl_from_value_to_value.cc
-mln_convert_essential_SOURCES = mln_convert_essential.cc
-mln_convert_all_SOURCES = mln_convert_all.cc
-mln_convert_to_upper_window_SOURCES = mln_convert_to_upper_window.cc
-mln_convert_to_dpoint_SOURCES = mln_convert_to_dpoint.cc
-mln_convert_to_rgb_SOURCES = mln_convert_to_rgb.cc
-mln_convert_from_to_SOURCES = mln_convert_from_to.cc
-mln_convert_to_window_SOURCES = mln_convert_to_window.cc
-mln_geom_nslis_SOURCES = mln_geom_nslis.cc
-mln_geom_size2d_SOURCES = mln_geom_size2d.cc
-mln_geom_max_row_SOURCES = mln_geom_max_row.cc
-mln_geom_size3d_SOURCES = mln_geom_size3d.cc
-mln_geom_seeds2tiling_roundness_SOURCES = mln_geom_seeds2tiling_roundness.cc
-mln_geom_delta_SOURCES = mln_geom_delta.cc
-mln_geom_essential_SOURCES = mln_geom_essential.cc
-mln_geom_max_ind_SOURCES = mln_geom_max_ind.cc
-mln_geom_min_col_SOURCES = mln_geom_min_col.cc
-mln_geom_complex_geometry_SOURCES = mln_geom_complex_geometry.cc
-mln_geom_nrows_SOURCES = mln_geom_nrows.cc
-mln_geom_seeds2tiling_SOURCES = mln_geom_seeds2tiling.cc
-mln_geom_min_sli_SOURCES = mln_geom_min_sli.cc
-mln_geom_nsites_SOURCES = mln_geom_nsites.cc
-mln_geom_min_ind_SOURCES = mln_geom_min_ind.cc
-mln_geom_ninds_SOURCES = mln_geom_ninds.cc
-mln_geom_resize_SOURCES = mln_geom_resize.cc
-mln_geom_min_row_SOURCES = mln_geom_min_row.cc
-mln_geom_all_SOURCES = mln_geom_all.cc
-mln_geom_chamfer_SOURCES = mln_geom_chamfer.cc
-mln_geom_ncols_SOURCES = mln_geom_ncols.cc
-mln_geom_pmin_pmax_SOURCES = mln_geom_pmin_pmax.cc
-mln_geom_size1d_SOURCES = mln_geom_size1d.cc
-mln_geom_max_sli_SOURCES = mln_geom_max_sli.cc
-mln_geom_bbox_SOURCES = mln_geom_bbox.cc
-mln_geom_max_col_SOURCES = mln_geom_max_col.cc
-mln_literal_black_SOURCES = mln_literal_black.cc
-mln_literal_zero_SOURCES = mln_literal_zero.cc
-mln_literal_essential_SOURCES = mln_literal_essential.cc
-mln_literal_grays_SOURCES = mln_literal_grays.cc
-mln_literal_ops_SOURCES = mln_literal_ops.cc
-mln_literal_all_SOURCES = mln_literal_all.cc
-mln_literal_white_SOURCES = mln_literal_white.cc
-mln_literal_one_SOURCES = mln_literal_one.cc
-mln_literal_colors_SOURCES = mln_literal_colors.cc
-mln_literal_origin_SOURCES = mln_literal_origin.cc
-mln_level_compare_SOURCES = mln_level_compare.cc
-mln_level_saturate_SOURCES = mln_level_saturate.cc
-mln_level_fill_with_image_SOURCES = mln_level_fill_with_image.cc
-mln_level_was_median_SOURCES = mln_level_was_median.cc
-mln_level_convert_SOURCES = mln_level_convert.cc
-mln_level_sort_psites_SOURCES = mln_level_sort_psites.cc
-mln_level_essential_SOURCES = mln_level_essential.cc
-mln_level_fill_SOURCES = mln_level_fill.cc
-mln_level_compute_SOURCES = mln_level_compute.cc
-mln_level_replace_SOURCES = mln_level_replace.cc
-mln_level_approx_essential_SOURCES = mln_level_approx_essential.cc
-mln_level_approx_all_SOURCES = mln_level_approx_all.cc
-mln_level_approx_median_SOURCES = mln_level_approx_median.cc
-mln_level_stretch_SOURCES = mln_level_stretch.cc
-mln_level_paste_SOURCES = mln_level_paste.cc
-mln_level_transform_inplace_SOURCES = mln_level_transform_inplace.cc
-mln_level_to_enc_SOURCES = mln_level_to_enc.cc
-mln_level_apply_SOURCES = mln_level_apply.cc
-mln_level_all_SOURCES = mln_level_all.cc
-mln_level_update_SOURCES = mln_level_update.cc
-mln_level_median_SOURCES = mln_level_median.cc
-mln_level_memset__SOURCES = mln_level_memset_.cc
-mln_level_assign_SOURCES = mln_level_assign.cc
-mln_level_memcpy__SOURCES = mln_level_memcpy_.cc
-mln_level_fast_median_SOURCES = mln_level_fast_median.cc
-mln_level_transform_SOURCES = mln_level_transform.cc
-mln_level_abs_SOURCES = mln_level_abs.cc
-mln_level_naive_essential_SOURCES = mln_level_naive_essential.cc
-mln_level_naive_all_SOURCES = mln_level_naive_all.cc
-mln_level_naive_median_SOURCES = mln_level_naive_median.cc
-mln_level_fill_with_value_SOURCES = mln_level_fill_with_value.cc
-mln_math_jacobi_SOURCES = mln_math_jacobi.cc
-mln_math_max_SOURCES = mln_math_max.cc
-mln_math_round_sat_SOURCES = mln_math_round_sat.cc
-mln_math_round_SOURCES = mln_math_round.cc
-mln_math_essential_SOURCES = mln_math_essential.cc
-mln_math_sqr_SOURCES = mln_math_sqr.cc
-mln_math_all_SOURCES = mln_math_all.cc
-mln_math_sign_SOURCES = mln_math_sign.cc
-mln_math_min_SOURCES = mln_math_min.cc
-mln_math_abs_SOURCES = mln_math_abs.cc
-mln_math_diff_abs_SOURCES = mln_math_diff_abs.cc
-mln_math_sqrt_SOURCES = mln_math_sqrt.cc
-mln_norm_l2_SOURCES = mln_norm_l2.cc
-mln_norm_linfty_SOURCES = mln_norm_linfty.cc
-mln_norm_essential_SOURCES = mln_norm_essential.cc
-mln_norm_all_SOURCES = mln_norm_all.cc
-mln_norm_l1_SOURCES = mln_norm_l1.cc
-mln_logical_not_SOURCES = mln_logical_not.cc
-mln_logical_or_SOURCES = mln_logical_or.cc
-mln_logical_and_SOURCES = mln_logical_and.cc
-mln_logical_xor_SOURCES = mln_logical_xor.cc
-mln_logical_essential_SOURCES = mln_logical_essential.cc
-mln_logical_includes_SOURCES = mln_logical_includes.cc
-mln_logical_all_SOURCES = mln_logical_all.cc
-mln_logical_and_not_SOURCES = mln_logical_and_not.cc
-mln_draw_essential_SOURCES = mln_draw_essential.cc
-mln_draw_box_SOURCES = mln_draw_box.cc
-mln_draw_all_SOURCES = mln_draw_all.cc
-mln_draw_plot_SOURCES = mln_draw_plot.cc
-mln_draw_line_SOURCES = mln_draw_line.cc
-mln_value_int_s16_SOURCES = mln_value_int_s16.cc
-mln_value_cast_SOURCES = mln_value_cast.cc
-mln_value_builtin_floatings_SOURCES = mln_value_builtin_floatings.cc
-mln_value_builtin_promotions_SOURCES = mln_value_builtin_promotions.cc
-mln_value_builtin_integers_SOURCES = mln_value_builtin_integers.cc
-mln_value_builtin_essential_SOURCES = mln_value_builtin_essential.cc
-mln_value_builtin_ops_SOURCES = mln_value_builtin_ops.cc
-mln_value_builtin_all_SOURCES = mln_value_builtin_all.cc
-mln_value_builtin_symbolics_SOURCES = mln_value_builtin_symbolics.cc
-mln_value_label_8_SOURCES = mln_value_label_8.cc
-mln_value_int_s_SOURCES = mln_value_int_s.cc
-mln_value_rgb_SOURCES = mln_value_rgb.cc
-mln_value_viter_SOURCES = mln_value_viter.cc
-mln_value_lut_vec_SOURCES = mln_value_lut_vec.cc
-mln_value_set_SOURCES = mln_value_set.cc
-mln_value_hsi_SOURCES = mln_value_hsi.cc
-mln_value_int_u16_SOURCES = mln_value_int_u16.cc
-mln_value_glf_SOURCES = mln_value_glf.cc
-mln_value_stack_SOURCES = mln_value_stack.cc
-mln_value_gl8_SOURCES = mln_value_gl8.cc
-mln_value_essential_SOURCES = mln_value_essential.cc
-mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc
-mln_value_super_value_SOURCES = mln_value_super_value.cc
-mln_value_equiv_SOURCES = mln_value_equiv.cc
-mln_value_rgb16_SOURCES = mln_value_rgb16.cc
-mln_value_float01_16_SOURCES = mln_value_float01_16.cc
-mln_value_rgb8_SOURCES = mln_value_rgb8.cc
-mln_value_int_s32_SOURCES = mln_value_int_s32.cc
-mln_value_int_s8_SOURCES = mln_value_int_s8.cc
-mln_value_int_u8_SOURCES = mln_value_int_u8.cc
-mln_value_int_u32_SOURCES = mln_value_int_u32.cc
-mln_value_float01_SOURCES = mln_value_float01.cc
-mln_value_int_u_SOURCES = mln_value_int_u.cc
-mln_value_ops_SOURCES = mln_value_ops.cc
-mln_value_interval_SOURCES = mln_value_interval.cc
-mln_value_int_u_sat_SOURCES = mln_value_int_u_sat.cc
-mln_value_all_SOURCES = mln_value_all.cc
-mln_value_internal_encoding_SOURCES = mln_value_internal_encoding.cc
-mln_value_internal_convert_SOURCES = mln_value_internal_convert.cc
-mln_value_internal_gray_f_SOURCES = mln_value_internal_gray_f.cc
-mln_value_internal_essential_SOURCES = mln_value_internal_essential.cc
-mln_value_internal_gray__SOURCES = mln_value_internal_gray_.cc
-mln_value_internal_integer_SOURCES = mln_value_internal_integer.cc
-mln_value_internal_value_like_SOURCES = mln_value_internal_value_like.cc
-mln_value_internal_all_SOURCES = mln_value_internal_all.cc
-mln_value_internal_iterable_set_SOURCES = mln_value_internal_iterable_set.cc
-mln_value_proxy_SOURCES = mln_value_proxy.cc
-mln_value_sign_SOURCES = mln_value_sign.cc
-mln_value_gl16_SOURCES = mln_value_gl16.cc
-mln_value_aliases_SOURCES = mln_value_aliases.cc
-mln_value_float01_f_SOURCES = mln_value_float01_f.cc
-mln_value_float01_8_SOURCES = mln_value_float01_8.cc
-mln_value_concept_structured_SOURCES = mln_value_concept_structured.cc
-mln_value_concept_vectorial_SOURCES = mln_value_concept_vectorial.cc
-mln_value_concept_data_SOURCES = mln_value_concept_data.cc
-mln_value_concept_built_in_SOURCES = mln_value_concept_built_in.cc
-mln_value_concept_essential_SOURCES = mln_value_concept_essential.cc
-mln_value_concept_integer_SOURCES = mln_value_concept_integer.cc
-mln_value_concept_floating_SOURCES = mln_value_concept_floating.cc
-mln_value_concept_all_SOURCES = mln_value_concept_all.cc
-mln_value_concept_scalar_SOURCES = mln_value_concept_scalar.cc
-mln_value_concept_symbolic_SOURCES = mln_value_concept_symbolic.cc
-mln_value_label_16_SOURCES = mln_value_label_16.cc
-mln_value_label_SOURCES = mln_value_label.cc
-mln_value_float01__SOURCES = mln_value_float01_.cc
-mln_value_other_SOURCES = mln_value_other.cc
-mln_value_scalar_SOURCES = mln_value_scalar.cc
-mln_value_graylevel_SOURCES = mln_value_graylevel.cc
-mln_tag_skeleton_SOURCES = mln_tag_skeleton.cc
-mln_tag_init_SOURCES = mln_tag_init.cc
-mln_tag_essential_SOURCES = mln_tag_essential.cc
-mln_tag_all_SOURCES = mln_tag_all.cc
-mln_labeling_regional_maxima_SOURCES = mln_labeling_regional_maxima.cc
-mln_labeling_background_SOURCES = mln_labeling_background.cc
-mln_labeling_level_SOURCES = mln_labeling_level.cc
-mln_labeling_flat_zones_SOURCES = mln_labeling_flat_zones.cc
-mln_labeling_regional_minima_SOURCES = mln_labeling_regional_minima.cc
-mln_labeling_essential_SOURCES = mln_labeling_essential.cc
-mln_labeling_compute_SOURCES = mln_labeling_compute.cc
-mln_labeling_blobs_SOURCES = mln_labeling_blobs.cc
-mln_labeling_all_SOURCES = mln_labeling_all.cc
-mln_labeling_foreground_SOURCES = mln_labeling_foreground.cc
-mln_labeling_relabel_SOURCES = mln_labeling_relabel.cc
+mln_set_sym_diff_SOURCES = mln_set_sym_diff.cc
+mln_set_has_SOURCES = mln_set_has.cc
+mln_set_diff_SOURCES = mln_set_diff.cc
+mln_set_compute_SOURCES = mln_set_compute.cc
+mln_set_essential_SOURCES = mln_set_essential.cc
+mln_border_adjust_SOURCES = mln_border_adjust.cc
+mln_border_duplicate_SOURCES = mln_border_duplicate.cc
+mln_border_find_SOURCES = mln_border_find.cc
+mln_border_thickness_SOURCES = mln_border_thickness.cc
+mln_border_all_SOURCES = mln_border_all.cc
+mln_border_mirror_SOURCES = mln_border_mirror.cc
+mln_border_get_SOURCES = mln_border_get.cc
+mln_border_equalize_SOURCES = mln_border_equalize.cc
+mln_border_resize_SOURCES = mln_border_resize.cc
+mln_border_fill_SOURCES = mln_border_fill.cc
+mln_border_essential_SOURCES = mln_border_essential.cc
+mln_subsampling_gaussian_subsampling_SOURCES = mln_subsampling_gaussian_subsampling.cc
+mln_subsampling_all_SOURCES = mln_subsampling_all.cc
+mln_subsampling_subsampling_SOURCES = mln_subsampling_subsampling.cc
+mln_subsampling_essential_SOURCES = mln_subsampling_essential.cc
TESTS = $(check_PROGRAMS)
diff --git a/milena/tests/unit_test/mln_core_concept_doc_accumulator.cc b/milena/tests/unit_test/mln_core_concept_doc_accumulator.cc
deleted file mode 100644
index 7fbfa77..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_accumulator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/accumulator.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/accumulator.hh>
-#include <mln/core/concept/doc/accumulator.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_box.cc b/milena/tests/unit_test/mln_core_concept_doc_box.cc
deleted file mode 100644
index 79cc60c..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_box.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/box.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/box.hh>
-#include <mln/core/concept/doc/box.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_dpoint.cc b/milena/tests/unit_test/mln_core_concept_doc_dpoint.cc
deleted file mode 100644
index c8187db..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_dpoint.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/dpoint.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/dpoint.hh>
-#include <mln/core/concept/doc/dpoint.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_generalized_pixel.cc b/milena/tests/unit_test/mln_core_concept_doc_generalized_pixel.cc
deleted file mode 100644
index d65652f..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_generalized_pixel.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/generalized_pixel.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/generalized_pixel.hh>
-#include <mln/core/concept/doc/generalized_pixel.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_image.cc b/milena/tests/unit_test/mln_core_concept_doc_image.cc
deleted file mode 100644
index 9d726e5..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_image.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/image.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/image.hh>
-#include <mln/core/concept/doc/image.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_image_fastest.cc b/milena/tests/unit_test/mln_core_concept_doc_image_fastest.cc
deleted file mode 100644
index 449453d..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_image_fastest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/image_fastest.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/image_fastest.hh>
-#include <mln/core/concept/doc/image_fastest.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_iterator.cc b/milena/tests/unit_test/mln_core_concept_doc_iterator.cc
deleted file mode 100644
index 0583e27..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_iterator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/iterator.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/iterator.hh>
-#include <mln/core/concept/doc/iterator.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_neighborhood.cc b/milena/tests/unit_test/mln_core_concept_doc_neighborhood.cc
deleted file mode 100644
index 2b5033b..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_neighborhood.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/neighborhood.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/neighborhood.hh>
-#include <mln/core/concept/doc/neighborhood.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_object.cc b/milena/tests/unit_test/mln_core_concept_doc_object.cc
deleted file mode 100644
index 3a43a53..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_object.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/object.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/object.hh>
-#include <mln/core/concept/doc/object.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_pixel_iterator.cc b/milena/tests/unit_test/mln_core_concept_doc_pixel_iterator.cc
deleted file mode 100644
index d15816c..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_pixel_iterator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/pixel_iterator.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/pixel_iterator.hh>
-#include <mln/core/concept/doc/pixel_iterator.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_point_iterator.cc b/milena/tests/unit_test/mln_core_concept_doc_point_iterator.cc
deleted file mode 100644
index b70d2a0..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_point_iterator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/point_iterator.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/point_iterator.hh>
-#include <mln/core/concept/doc/point_iterator.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_point_site.cc b/milena/tests/unit_test/mln_core_concept_doc_point_site.cc
deleted file mode 100644
index c7f2672..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_point_site.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/point_site.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/point_site.hh>
-#include <mln/core/concept/doc/point_site.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_site_set.cc b/milena/tests/unit_test/mln_core_concept_doc_site_set.cc
deleted file mode 100644
index 843849c..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_site_set.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/site_set.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/site_set.hh>
-#include <mln/core/concept/doc/site_set.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_value_iterator.cc b/milena/tests/unit_test/mln_core_concept_doc_value_iterator.cc
deleted file mode 100644
index 6393d1a..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_value_iterator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/value_iterator.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/value_iterator.hh>
-#include <mln/core/concept/doc/value_iterator.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_value_set.cc b/milena/tests/unit_test/mln_core_concept_doc_value_set.cc
deleted file mode 100644
index 7255ad0..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_value_set.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/value_set.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/value_set.hh>
-#include <mln/core/concept/doc/value_set.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_weighted_window.cc b/milena/tests/unit_test/mln_core_concept_doc_weighted_window.cc
deleted file mode 100644
index 054f228..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_weighted_window.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/weighted_window.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/weighted_window.hh>
-#include <mln/core/concept/doc/weighted_window.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_concept_doc_window.cc b/milena/tests/unit_test/mln_core_concept_doc_window.cc
deleted file mode 100644
index dbbb545..0000000
--- a/milena/tests/unit_test/mln_core_concept_doc_window.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/concept/doc/window.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/concept/doc/window.hh>
-#include <mln/core/concept/doc/window.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_fi_adaptor.cc b/milena/tests/unit_test/mln_core_image_fi_adaptor.cc
deleted file mode 100644
index 54650ec..0000000
--- a/milena/tests/unit_test/mln_core_image_fi_adaptor.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/image/fi_adaptor.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/image/fi_adaptor.hh>
-#include <mln/core/image/fi_adaptor.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_graph_image.cc b/milena/tests/unit_test/mln_core_image_graph_image.cc
deleted file mode 100644
index 9ffffac..0000000
--- a/milena/tests/unit_test/mln_core_image_graph_image.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/image/graph_image.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/image/graph_image.hh>
-#include <mln/core/image/graph_image.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_line_graph_image.cc b/milena/tests/unit_test/mln_core_image_line_graph_image.cc
deleted file mode 100644
index d44b8d8..0000000
--- a/milena/tests/unit_test/mln_core_image_line_graph_image.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/core/image/line_graph_image.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/core/image/line_graph_image.hh>
-#include <mln/core/image/line_graph_image.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_metal_has_neighborhood.cc b/milena/tests/unit_test/mln_metal_has_neighborhood.cc
deleted file mode 100644
index ffc296a..0000000
--- a/milena/tests/unit_test/mln_metal_has_neighborhood.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Unit test for mln/metal/has_neighborhood.hh.
-// Generated by ./build_unit_test.sh, do not modify.
-
-// Include the file twice, so we detect missing inclusion guards.
-#include <mln/metal/has_neighborhood.hh>
-#include <mln/metal/has_neighborhood.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/mln/core/image/fi_adaptor.hh b/milena/trash/fi_adaptor.hh
similarity index 100%
rename from milena/mln/core/image/fi_adaptor.hh
rename to milena/trash/fi_adaptor.hh
diff --git a/milena/mln/core/image/graph_image.hh b/milena/trash/graph_image.hh
similarity index 100%
rename from milena/mln/core/image/graph_image.hh
rename to milena/trash/graph_image.hh
diff --git a/milena/mln/core/image/line_graph_image.hh b/milena/trash/line_graph_image.hh
similarity index 100%
rename from milena/mln/core/image/line_graph_image.hh
rename to milena/trash/line_graph_image.hh
--
1.5.6.5
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Ugo Jardonnet <jardonnet(a)lrde.epita.fr>
Add stuff for report.
* jardonnet/n_cmpt/tikz.hh: Save clustering steps.
* jardonnet/n_cmpt/tikz.cc: Update.
tikz.cc | 4 ++--
tikz.hh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 59 insertions(+), 4 deletions(-)
Index: jardonnet/n_cmpt/tikz.hh
--- jardonnet/n_cmpt/tikz.hh (revision 3042)
+++ jardonnet/n_cmpt/tikz.hh (working copy)
@@ -32,6 +32,10 @@
# include <mln/core/alias/neighb2d.hh>
# include <mln/util/set.hh>
+# include <mln/value/rgb8.hh>
+
+# include <mln/literal/all.hh>
+
# include <mln/debug/println.hh>
# include <mln/debug/iota.hh>
@@ -40,6 +44,33 @@
# include <mln/morpho/tree/compute_attribute_image.hh>
# include <mln/level/paste.hh>
+#include <mln/level/transform.hh>
+
+namespace mln
+{
+
+ struct colorize : Function_v2v< colorize >
+ {
+ typedef value::rgb8 result;
+ colorize(unsigned max)
+ : lut(max + 1)
+ {
+ lut[0] = literal::black;
+ for (unsigned i = 1; i <= max; ++i)
+ lut[i] = result(100 + std::rand() % 150,
+ 100 + std::rand() % 150,
+ 100 + std::rand() % 150);
+ }
+ result operator()(unsigned i) const
+ {
+ return lut[i];
+ }
+ std::vector<result> lut;
+ };
+
+} // mln
+
+
namespace mln
{
@@ -142,6 +173,11 @@
}
}
+ mln_ch_value(I,value::int_u<16>) iota(ima.domain());
+ debug::iota(iota);
+ colorize col(100);
+ int k = 0;
+
// UNION FIND ON VOLUME
mln_fwd_piter(S) p(sp);
mln_niter(N) n(nbh, p);
@@ -203,6 +239,8 @@
if (fused(r))
fused(p) = true;
+ iota(p) = iota(r);
+
// If I try to fuse with something never fused I am on a plateau.
// not fused(r) => ( volume(r) == volume(p) )
@@ -222,10 +260,27 @@
}
}
deja_vu(p) = true;
+
+ I tik(ima.domain());
+ mln_bkd_piter(S) d(sp);
+ for_all(d)
+ {
+ if (parent(d) == d) // p is root.
+ tik(d) = iota(d) * 10;
+ else
+ tik(d) = tik(parent(d));
}
- mln_ch_value(I,value::int_u<16>) iota(ima.domain());
- debug::iota(iota);
+ //mln_ch_value(I, value::rgb8) tik_rgb = level::transform(tik, col);
+
+ //tik_rgb(p) = literal::red;
+ tik(p) = 255;
+
+ std::ostringstream is;
+ is << "tik_00" << k++ << ".tex";
+
+ io::tikz::save(tik, is.str());
+ }
std::cout << std::endl;
std::cout << "cmpts : " << cmpts << std::endl;
Index: jardonnet/n_cmpt/tikz.cc
--- jardonnet/n_cmpt/tikz.cc (revision 3042)
+++ jardonnet/n_cmpt/tikz.cc (working copy)
@@ -15,7 +15,7 @@
#include <cmath>
-#include "tickz.hh"
+#include "tikz.hh"
using namespace mln;
using namespace mln::value;
@@ -59,5 +59,5 @@
int_u8 tab[] = {2,3,1,0,2,3,4,5,1,1,0,5,6,8,7,1,1,2,3,4};
image1d<int_u8> ima1= make::image(tab);
- n_cmpt::n_cmpt3(ima, c4(), lambda);
+ io::pgm::save(n_cmpt::n_cmpt3(ima, c4(), lambda), "out.pgm");
}
1
0