---
ChangeLog | 77 ++++++++++++++++++++
milena/doc/Doxyfile.in | 62 +++++++++++++++-
milena/mln/arith/min.hh | 2 +-
milena/mln/arith/plus.hh | 1 -
milena/mln/core/concept/doc/point_iterator.hh | 2 +-
milena/mln/core/concept/point_site.hh | 56 ++++++++-------
milena/mln/core/dpsites_piter.hh | 8 +-
milena/mln/core/faces_psite.hh | 2 +-
milena/mln/core/image/bgraph_image.hh | 2 +-
milena/mln/core/image/bgraph_psite.hh | 4 +-
.../mln/core/image/complex_higher_neighborhood.hh | 2 +-
milena/mln/core/image/complex_higher_window_p.hh | 2 +-
milena/mln/core/image/complex_image.hh | 2 +-
.../image/complex_lower_higher_neighborhood.hh | 2 +-
.../core/image/complex_lower_higher_window_p.hh | 2 +-
.../mln/core/image/complex_lower_neighborhood.hh | 2 +-
milena/mln/core/image/complex_lower_window_p.hh | 2 +-
milena/mln/core/image/decorated_image.hh | 4 +-
milena/mln/core/image/graph_image.hh | 2 +-
milena/mln/core/image/graph_psite.hh | 2 +-
milena/mln/core/image/line_graph_image.hh | 2 +-
milena/mln/core/image/line_graph_psite.hh | 2 +-
milena/mln/core/image/obased_rle_image.hh | 10 ++--
milena/mln/core/image/value_enc_image.hh | 12 ++--
milena/mln/core/routine/clone.hh | 6 +-
.../core/site_set/attic/p_complex_faces_piter.hh | 2 +-
milena/mln/core/site_set/attic/p_faces_piter.hh | 2 +-
milena/mln/core/site_set/complex_psite.hh | 2 +-
milena/mln/core/site_set/p_bgraph.hh | 10 ++--
milena/mln/core/site_set/p_bgraph_piter.hh | 4 +-
milena/mln/core/site_set/p_complex.hh | 6 +-
milena/mln/core/site_set/p_faces.hh | 8 +-
milena/mln/core/site_set/p_graph.hh | 2 +-
milena/mln/core/site_set/p_line_graph.hh | 2 +-
milena/mln/core/window.hh | 2 +-
milena/mln/display/color_pretty.hh | 4 +-
milena/mln/fun/c.hh | 2 +-
milena/mln/fun/x2x/geom/composed.hh | 2 +-
milena/mln/fun/x2x/geom/rotation.hh | 2 +-
milena/mln/fun/x2x/geom/translation.hh | 2 +-
milena/mln/geom/resize.hh | 4 +-
milena/mln/geom/seeds2tiling.hh | 21 +++---
milena/mln/geom/seeds2tiling_roundness.hh | 32 ++++----
milena/mln/level/fill_with_image.hh | 24 ++++---
milena/mln/level/fill_with_value.hh | 18 +++--
milena/mln/level/paste.hh | 35 +++++-----
milena/mln/linear/sobel.hh | 35 ++++++----
milena/mln/neighb/image.hh | 2 +-
milena/mln/pw/image.hh | 2 +-
milena/mln/topo/attic/faces_iter.hh | 2 +-
milena/mln/topo/complex.hh | 2 +-
milena/mln/topo/complex_iterators.hh | 2 +-
.../internal/complex_relative_iterator_base.hh | 2 +-
.../internal/complex_relative_iterator_sequence.hh | 12 ++--
.../mln/topo/internal/complex_set_iterator_base.hh | 2 +-
milena/mln/topo/n_faces_set.hh | 2 +-
milena/mln/util/branch_iter.hh | 2 +-
milena/mln/util/branch_iter_ind.hh | 2 +-
milena/mln/util/greater_point.hh | 4 +-
milena/mln/util/greater_psite.hh | 2 +-
milena/mln/util/internal/boost_graph.hh | 6 +-
milena/mln/util/internal/graph_edge.hh | 4 +-
milena/mln/util/internal/graph_edge_impl.hh | 8 +-
milena/mln/util/internal/graph_edge_psite.hh | 2 +-
milena/mln/util/internal/graph_vertex_impl.hh | 8 +-
milena/mln/win/cuboid3d.hh | 8 +-
milena/mln/win/multiple.hh | 2 +-
milena/tests/core/site_set/p_vertices.cc | 1 -
milena/tests/extension/fill.cc | 2 +-
milena/tests/morpho/complex_image_morpho.cc | 2 +-
70 files changed, 358 insertions(+), 214 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8d04386..2757d06 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,80 @@
+2008-10-07 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix most of the doxygen warnings.
+ * milena/mln/arith/min.hh,
+ * milena/mln/arith/plus.hh,
+ * milena/mln/core/concept/doc/point_iterator.hh,
+ * milena/mln/core/concept/point_site.hh,
+ * milena/mln/core/dpsites_piter.hh,
+ * milena/mln/core/faces_psite.hh,
+ * milena/mln/core/image/bgraph_image.hh,
+ * milena/mln/core/image/bgraph_psite.hh,
+ * milena/mln/core/image/complex_higher_neighborhood.hh,
+ * milena/mln/core/image/complex_higher_window_p.hh,
+ * milena/mln/core/image/complex_image.hh,
+ * milena/mln/core/image/complex_lower_higher_neighborhood.hh,
+ * milena/mln/core/image/complex_lower_higher_window_p.hh,
+ * milena/mln/core/image/complex_lower_neighborhood.hh,
+ * milena/mln/core/image/complex_lower_window_p.hh,
+ * milena/mln/core/image/decorated_image.hh,
+ * milena/mln/core/image/graph_image.hh,
+ * milena/mln/core/image/graph_psite.hh,
+ * milena/mln/core/image/line_graph_image.hh,
+ * milena/mln/core/image/line_graph_psite.hh,
+ * milena/mln/core/image/obased_rle_image.hh,
+ * milena/mln/core/image/value_enc_image.hh,
+ * milena/mln/core/routine/clone.hh,
+ * milena/mln/core/site_set/attic/p_complex_faces_piter.hh,
+ * milena/mln/core/site_set/attic/p_faces_piter.hh,
+ * milena/mln/core/site_set/complex_psite.hh,
+ * milena/mln/core/site_set/p_bgraph.hh,
+ * milena/mln/core/site_set/p_bgraph_piter.hh,
+ * milena/mln/core/site_set/p_complex.hh,
+ * milena/mln/core/site_set/p_faces.hh,
+ * milena/mln/core/site_set/p_graph.hh,
+ * milena/mln/core/site_set/p_line_graph.hh,
+ * milena/mln/core/window.hh,
+ * milena/mln/display/color_pretty.hh,
+ * milena/mln/fun/c.hh,
+ * milena/mln/fun/x2x/geom/composed.hh,
+ * milena/mln/fun/x2x/geom/rotation.hh,
+ * milena/mln/fun/x2x/geom/translation.hh,
+ * milena/mln/geom/resize.hh,
+ * milena/mln/geom/seeds2tiling.hh,
+ * milena/mln/geom/seeds2tiling_roundness.hh,
+ * milena/mln/level/fill_with_image.hh,
+ * milena/mln/level/fill_with_value.hh,
+ * milena/mln/level/paste.hh,
+ * milena/mln/linear/sobel.hh,
+ * milena/mln/neighb/image.hh,
+ * milena/mln/pw/image.hh,
+ * milena/mln/topo/attic/faces_iter.hh,
+ * milena/mln/topo/complex.hh,
+ * milena/mln/topo/complex_iterators.hh,
+ * milena/mln/topo/internal/complex_relative_iterator_base.hh,
+ * milena/mln/topo/internal/complex_relative_iterator_sequence.hh,
+ * milena/mln/topo/internal/complex_set_iterator_base.hh,
+ * milena/mln/topo/n_faces_set.hh,
+ * milena/mln/util/branch_iter.hh,
+ * milena/mln/util/branch_iter_ind.hh,
+ * milena/mln/util/greater_point.hh,
+ * milena/mln/util/greater_psite.hh,
+ * milena/mln/util/internal/boost_graph.hh,
+ * milena/mln/util/internal/graph_edge.hh,
+ * milena/mln/util/internal/graph_edge_impl.hh,
+ * milena/mln/util/internal/graph_edge_psite.hh,
+ * milena/mln/util/internal/graph_vertex_impl.hh,
+ * milena/mln/win/cuboid3d.hh,
+ * milena/mln/win/multiple.hh,
+ * milena/tests/core/site_set/p_vertices.cc,
+ * milena/tests/extension/fill.cc,
+ * milena/tests/morpho/complex_image_morpho.cc:
+ Cleanup up doxygen comments.
+
+ * milena/doc/Doxyfile.in:
+ Add new predefined macros.
+
+
2008-10-03 Guillaume Lazzara <z(a)lrde.epita.fr>
Various small fixes.
diff --git a/milena/doc/Doxyfile.in b/milena/doc/Doxyfile.in
index f29fb14..b583d66 100644
--- a/milena/doc/Doxyfile.in
+++ b/milena/doc/Doxyfile.in
@@ -211,15 +211,71 @@ PREDEFINED = "mlc_unqualif(T)=typename mln::metal::unqualif<T>::ret"
"mln_lvalue(T)=typename T::lvalue" \
"mln_mesh(T)=typename T::mesh" \
"mln_coord(T)=typename T::coord" \
- "mln_point(T)=typename T::point" \
- "mln_dpoint(T)=typename T::dpoint" \
+ "mln_site(T)=typename T::site" \
+ "mln_psite(T)=typename T::psite" \
+ "mln_dpsite(T)=typename T::dpsite" \
"mln_accu_with(A, T)=typename A::template with< T >::ret" \
"mln_trait_op_plus(L, R)=typename mln::trait::op::plus< L , R >::ret" \
"mln_trait_op_minus(L, R)=typename mln::trait::op::minus< L , R >::ret" \
"mln_trait_op_times(L, R)=typename mln::trait::op::times< L , R >::ret" \
"mln_trait_op_div(L, R)=typename mln::trait::op::div< L , R >::ret" \
"mln_trait_op_mod(L, R)=typename mln::trait::op::mod< L , R >::ret" \
- "mln_trait_op_uminus(T)=typename mln::trait::op::uminus< T >::ret"
+ "mln_trait_op_uminus(T)=typename mln::trait::op::uminus< T >::ret" \
+ "mln_ch_value(I, V)=typename mln::trait::ch_value< I, V >::ret" \
+ "mlc_unqualif_(T)=mln::metal::unqualif<T>::ret" \
+ "mln_piter_(T)=T::piter" \
+ "mln_fwd_piter_(T)=T::fwd_piter" \
+ "mln_bkd_piter_(T)=T::bkd_piter" \
+ "mln_qiter_(T)=T::qiter" \
+ "mln_fwd_qiter_(T)=T::fwd_qiter" \
+ "mln_bkd_qiter_(T)=T::bkd_qiter" \
+ "mln_niter_(T)=T::niter" \
+ "mln_fwd_niter_(T)=T::fwd_niter" \
+ "mln_bkd_niter_(T)=T::bkd_niter" \
+ "mln_viter_(T)=T::viter" \
+ "mln_fwd_viter_(T)=T::fwd_viter" \
+ "mln_bkd_viter_(T)=T::bkd_viter" \
+ "mln_result_(T)=T::result" \
+ "mln_enc_(T)=T::enc" \
+ "mln_value_(T)=T::value" \
+ "mln_qlf_value_(T)=T::qlf_value" \
+ "mln_pset_(T)=T::pset" \
+ "mln_sum_(T)=mln::value::props<T>::sum" \
+ "mln_vset_(T)=T::vset" \
+ "mln_rvalue_(T)=T::rvalue" \
+ "mln_lvalue_(T)=T::lvalue" \
+ "mln_mesh_(T)=T::mesh" \
+ "mln_coord_(T)=T::coord" \
+ "mln_site_(T)=T::site" \
+ "mln_psite_(T)=T::psite" \
+ "mln_dpsite_(T)=T::dpsite" \
+ "mln_accu_with_(A, T)=A::template with< T >::ret" \
+ "mln_trait_op_plus_(L, R)=mln::trait::op::plus< L , R >::ret" \
+ "mln_trait_op_minus_(L, R)=mln::trait::op::minus< L , R >::ret" \
+ "mln_trait_op_times_(L, R)=mln::trait::op::times< L , R >::ret" \
+ "mln_trait_op_div_(L, R)=mln::trait::op::div< L , R >::ret" \
+ "mln_trait_op_mod_(L, R)=mln::trait::op::mod< L , R >::ret" \
+ "mln_trait_op_uminus_(T)=mln::trait::op::uminus< T >::ret" \
+ "mln_ch_value_(I, V)=typename mln::trait::ch_value< I, V >::ret" \
+ "mln_ch_value(I, V)_=mln::trait::ch_value< I, V >::ret" \
+ "mln_morpher_lvalue(I)=typename internal::morpher_lvalue_<I>::ret" \
+ "mln_concrete(I)=typename mln::trait::concrete< I >::ret" \
+ "mln_concrete_ch_value(I, V)=typename mln::trait::ch_value< typename mln::trait::concrete< I >::ret, V >::ret" \
+ "mlc_const(T)=typename mln::metal::const_< T >::ret" \
+ "mlc_const_return(T)=typename mln::metal::const_return_< T >::ret" \
+ "mln_element(T)=typename T::element" \
+ "mln_element_(T)=T::element" \
+ "mln_delta(T)=typename T::delta" \
+ "mln_delta_(T)=T::delta" \
+ "mln_dpoint(T)=typename T::dpoint" \
+ "mln_dpoint_(T)=T::dpoint" \
+ "mln_point(T)=typename T::point" \
+ "mln_point_(T)=T::point" \
+ "mln_gradient_component(I)=typename mln::trait::ch_value< I, mln::value::props< typename I::value >::sum >::ret" \
+ "mln_gradient(I)=mln::value::stack_image< I::point::dim, mln::trait::ch_value< I, mln::value::props< typename I::value >::sum >::ret >"
+
+
+
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
diff --git a/milena/mln/arith/min.hh b/milena/mln/arith/min.hh
index cd2ef1d..a8aaa10 100644
--- a/milena/mln/arith/min.hh
+++ b/milena/mln/arith/min.hh
@@ -55,7 +55,7 @@ namespace mln
*/
template <typename L, typename R>
mln_concrete(L)
- min(const Image<L>& lhs, const Image<R>& rhs);
+ min(const Image<L>& lhs, const Image<R>& rhs);
/*! Point-wise min of image \p lhs in image \p rhs.
diff --git a/milena/mln/arith/plus.hh b/milena/mln/arith/plus.hh
index 4c834d1..a18026a 100644
--- a/milena/mln/arith/plus.hh
+++ b/milena/mln/arith/plus.hh
@@ -176,7 +176,6 @@ namespace mln
*
* \param[in] input The image.
* \param[in] val The value.
- * \param[in] f Function.
* \result The result image.
*
* \pre \p input.has_data
diff --git a/milena/mln/core/concept/doc/point_iterator.hh b/milena/mln/core/concept/doc/point_iterator.hh
index 5c6b3dc..e3fe330 100644
--- a/milena/mln/core/concept/doc/point_iterator.hh
+++ b/milena/mln/core/concept/doc/point_iterator.hh
@@ -25,7 +25,7 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-/*! \file mln/core/concept/doc/site_iterator.hh
+/*! \file mln/core/concept/doc/point_iterator.hh
* \brief This file documents the concept of mln::Site_Iterator.
*/
diff --git a/milena/mln/core/concept/point_site.hh b/milena/mln/core/concept/point_site.hh
index c807734..44a5fd2 100644
--- a/milena/mln/core/concept/point_site.hh
+++ b/milena/mln/core/concept/point_site.hh
@@ -171,38 +171,42 @@ namespace mln
operator-(const Point_Site<L>& lhs, const Point_Site<R>& rhs);
- /*! \brief Add a delta-point \p rhs to a point site \p lhs.
- *
- * \param[in] p A point site.
- * \param[in] dp A delta-point.
- *
- * The type of \p dp has to compatible with the type of \p p.
- *
- * \return A point (temporary object).
- *
- * \relates mln::Point_Site
- * \see mln::Delta_Point_Site
- */
+ /// \brief Add a delta-point \p rhs to a point site \p lhs.
+ ///
+ /// \param[in] p A point site.
+ /// \param[in] dp A delta-point.
+ ///
+ /// The type of \p dp has to compatible with the type of \p p.
+ ///
+ /// \return A point (temporary object).
+ ///
+ /// \relates mln::Point_Site
+ /// \see mln::Delta_Point_Site
+ ///
+ /// \{
template <typename P, typename D>
mln_point(P)
operator+(const Point_Site<P>& p, const Delta_Point_Site<D>& dp);
-
-
- /*! \brief Substract a delta-point \p rhs to a point site \p lhs.
- *
- * \param[in] p A point site.
- * \param[in] dp A delta-point.
- *
- * The type of \p dp has to compatible with the type of \p p.
- *
- * \return A point (temporary object).
- *
- * \see mln::Dpoint
- * \see mln::Delta_Point_Site
- */
+ /// }
+
+
+ /// \brief Substract a delta-point \p dp to a point site \p p.
+ ///
+ /// \param[in] p A point site.
+ /// \param[in] dp A delta-point.
+ ///
+ /// The type of \p dp has to compatible with the type of \p p.
+ ///
+ /// \return A point (temporary object).
+ ///
+ /// \see mln::Dpoint
+ /// \see mln::Delta_Point_Site
+ ///
+ /// \{
template <typename P, typename D>
mln_point(P)
operator-(const Point_Site<P>& p, const Delta_Point_Site<D>& dp);
+ /// \}
/*! \brief Print a point site \p p into the output stream \p ostr.
diff --git a/milena/mln/core/dpsites_piter.hh b/milena/mln/core/dpsites_piter.hh
index 00ecd8a..99d95f5 100644
--- a/milena/mln/core/dpsites_piter.hh
+++ b/milena/mln/core/dpsites_piter.hh
@@ -55,8 +55,8 @@ namespace mln
/*! \brief Constructor.
*
- * \param[in] dps Object that can provide an array of delta-points.
- * \param[in] p_ref Center point to iterate around.
+ * \param[in] v Object that can provide an array of delta-points.
+ * \param[in] c Center point to iterate around.
*/
template <typename P>
dpsites_fwd_piter(const V& v, const P& c);
@@ -99,8 +99,8 @@ namespace mln
/*! \brief Constructor.
*
- * \param[in] dps Object that can provide an array of delta-points.
- * \param[in] p_ref Center point to iterate around.
+ * \param[in] v Object that can provide an array of delta-points.
+ * \param[in] c Center point to iterate around.
*/
template <typename P>
dpsites_bkd_piter(const V& v, const P& c);
diff --git a/milena/mln/core/faces_psite.hh b/milena/mln/core/faces_psite.hh
index d4c6913..6b3b7f1 100644
--- a/milena/mln/core/faces_psite.hh
+++ b/milena/mln/core/faces_psite.hh
@@ -264,7 +264,7 @@ namespace mln
template <unsigned N, unsigned D, typename P>
inline
void
- faces_psite<N, D, P>::change_target(const p_faces<N, D, P>& new_target)
+ faces_psite<N, D, P>::change_target(const target& new_target)
{
// Update both pc_ and face_.
pf_ = &new_target;
diff --git a/milena/mln/core/image/bgraph_image.hh b/milena/mln/core/image/bgraph_image.hh
index dffbd63..aa8f75b 100644
--- a/milena/mln/core/image/bgraph_image.hh
+++ b/milena/mln/core/image/bgraph_image.hh
@@ -106,7 +106,7 @@ namespace mln
/// Return type of read-write access.
///
/// We use the associated type \c reference instead of a plain
- /// reference on th value type (\v V), because it's the only way
+ /// reference on th value type (\tparam V), because it's the only way
/// to safely form a reference on the element in the case of a
/// std::vector<bool>.
typedef typename std::vector<V>::reference lvalue;
diff --git a/milena/mln/core/image/bgraph_psite.hh b/milena/mln/core/image/bgraph_psite.hh
index d1445c5..cd57d1e 100644
--- a/milena/mln/core/image/bgraph_psite.hh
+++ b/milena/mln/core/image/bgraph_psite.hh
@@ -100,7 +100,7 @@ namespace mln
/// FIXME: Is it normal to have to call super_() ?
template<typename P>
inline
- bgraph_psite<P>::bgraph_psite(const bgraph_psite<P>& rhs)
+ bgraph_psite<P>::bgraph_psite(const self_& rhs)
: super_(),
pg_(rhs.pg_),
id_(rhs.id_)
@@ -110,7 +110,7 @@ namespace mln
template<typename P>
inline
bgraph_psite<P>&
- bgraph_psite<P>::operator= (const bgraph_psite<P>& rhs)
+ bgraph_psite<P>::operator= (const self_& rhs)
{
if (&rhs == this)
return *this;
diff --git a/milena/mln/core/image/complex_higher_neighborhood.hh b/milena/mln/core/image/complex_higher_neighborhood.hh
index ed26932..b3fc4b9 100644
--- a/milena/mln/core/image/complex_higher_neighborhood.hh
+++ b/milena/mln/core/image/complex_higher_neighborhood.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_IMAGE_COMPLEX_HIGHER_NEIGHBORHOOD_HH
# define MLN_CORE_IMAGE_COMPLEX_HIGHER_NEIGHBORHOOD_HH
-/// \file mln/core/complex_higher_neighborhood.hh
+/// \file mln/core/image/complex_higher_neighborhood.hh
/// \brief A neighborhood centered on a n-face of complex returning its
/// adjacent (n+1)-faces.
diff --git a/milena/mln/core/image/complex_higher_window_p.hh b/milena/mln/core/image/complex_higher_window_p.hh
index 8e68544..39108c4 100644
--- a/milena/mln/core/image/complex_higher_window_p.hh
+++ b/milena/mln/core/image/complex_higher_window_p.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_IMAGE_COMPLEX_HIGHER_WINDOW_P_HH
# define MLN_CORE_IMAGE_COMPLEX_HIGHER_WINDOW_P_HH
-/// \file mln/core/complex_higher_window_p.hh
+/// \file mln/core/image/complex_higher_window_p.hh
/// \brief Definition of a window centered on a n-face of complex
/// returning its adjacent (n+1)-faces as well as the center n-face.
diff --git a/milena/mln/core/image/complex_image.hh b/milena/mln/core/image/complex_image.hh
index add88e9..1cc5fe6 100644
--- a/milena/mln/core/image/complex_image.hh
+++ b/milena/mln/core/image/complex_image.hh
@@ -119,7 +119,7 @@ namespace mln
/// \brief Return type of read-write access.
///
/// We use the associated type \c reference instead of a plain
- /// reference on th value type (\v V), because it's the only way
+ /// reference on th value type (\tparam V), because it's the only way
/// to safely form a reference on the element in the case of a
/// std::vector<bool>.
typedef typename std::vector<V>::reference lvalue;
diff --git a/milena/mln/core/image/complex_lower_higher_neighborhood.hh b/milena/mln/core/image/complex_lower_higher_neighborhood.hh
index 9127442..bb99e0e 100644
--- a/milena/mln/core/image/complex_lower_higher_neighborhood.hh
+++ b/milena/mln/core/image/complex_lower_higher_neighborhood.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_IMAGE_COMPLEX_LOWER_HIGHER_NEIGHBORHOOD_HH
# define MLN_CORE_IMAGE_COMPLEX_LOWER_HIGHER_NEIGHBORHOOD_HH
-/// \file mln/core/complex_lower_higher_neighborhood.hh
+/// \file mln/core/image/complex_lower_higher_neighborhood.hh
/// \brief A neighborhood centered on a n-face of complex returning its
/// adjacent (n-1)-faces and (n+1)-faces.
diff --git a/milena/mln/core/image/complex_lower_higher_window_p.hh b/milena/mln/core/image/complex_lower_higher_window_p.hh
index a3260df..9b0d79d 100644
--- a/milena/mln/core/image/complex_lower_higher_window_p.hh
+++ b/milena/mln/core/image/complex_lower_higher_window_p.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_IMAGE_COMPLEX_LOWER_HIGHER_WINDOW_P_HH
# define MLN_CORE_IMAGE_COMPLEX_LOWER_HIGHER_WINDOW_P_HH
-/// \file mln/core/complex_lower_higher_window_p.hh
+/// \file mln/core/image/complex_lower_higher_window_p.hh
/// \brief Definition of a window centered on a n-face of complex
/// returning its adjacent (n-1)-faces and (n+1)-faces as well as the
/// center n-face.
diff --git a/milena/mln/core/image/complex_lower_neighborhood.hh b/milena/mln/core/image/complex_lower_neighborhood.hh
index c02b8b8..0c17bf5 100644
--- a/milena/mln/core/image/complex_lower_neighborhood.hh
+++ b/milena/mln/core/image/complex_lower_neighborhood.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_IMAGE_COMPLEX_LOWER_NEIGHBORHOOD_HH
# define MLN_CORE_IMAGE_COMPLEX_LOWER_NEIGHBORHOOD_HH
-/// \file mln/core/complex_lower_neighborhood.hh
+/// \file mln/core/image/complex_lower_neighborhood.hh
/// \brief A neighborhood centered on a n-face of complex returning its
/// adjacent (n-1)-faces.
diff --git a/milena/mln/core/image/complex_lower_window_p.hh b/milena/mln/core/image/complex_lower_window_p.hh
index d346d4a..aaa1e1e 100644
--- a/milena/mln/core/image/complex_lower_window_p.hh
+++ b/milena/mln/core/image/complex_lower_window_p.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_IMAGE_COMPLEX_LOWER_WINDOW_P_HH
# define MLN_CORE_IMAGE_COMPLEX_LOWER_WINDOW_P_HH
-/// \file mln/core/complex_lower_window_p.hh
+/// \file mln/core/image/complex_lower_window_p.hh
/// \brief Definition of a window centered on a n-face of complex
/// returning its adjacent (n-1)-faces as well as the center n-face.
diff --git a/milena/mln/core/image/decorated_image.hh b/milena/mln/core/image/decorated_image.hh
index 2d84a18..1d1473d 100644
--- a/milena/mln/core/image/decorated_image.hh
+++ b/milena/mln/core/image/decorated_image.hh
@@ -196,7 +196,7 @@ namespace mln
template <typename I, typename D>
inline
typename decorated_image<I,D>::rvalue
- decorated_image<I,D>::operator()(const mln_psite(I)& p) const
+ decorated_image<I,D>::operator()(const psite& p) const
{
mln_precondition(this->delegatee_() != 0);
return read_(p);
@@ -205,7 +205,7 @@ namespace mln
template <typename I, typename D>
inline
typename decorated_image<I,D>::lvalue
- decorated_image<I,D>::operator()(const mln_psite(I)& p)
+ decorated_image<I,D>::operator()(const psite& p)
{
mln_precondition(this->delegatee_() != 0);
// Return a proxy.
diff --git a/milena/mln/core/image/graph_image.hh b/milena/mln/core/image/graph_image.hh
index 29335ca..bb041a3 100644
--- a/milena/mln/core/image/graph_image.hh
+++ b/milena/mln/core/image/graph_image.hh
@@ -115,7 +115,7 @@ namespace mln
/// \brief Return type of read-write access.
///
/// We use the associated type \c reference instead of a plain
- /// reference on th value type (\v V), because it's the only way
+ /// reference on th value type (\tparam V), because it's the only way
/// to safely form a reference on the element in the case of a
/// std::vector<bool>.
typedef typename std::vector<V>::reference lvalue;
diff --git a/milena/mln/core/image/graph_psite.hh b/milena/mln/core/image/graph_psite.hh
index 0a70497..23b0638 100644
--- a/milena/mln/core/image/graph_psite.hh
+++ b/milena/mln/core/image/graph_psite.hh
@@ -229,7 +229,7 @@ namespace mln
template <typename P>
inline
void
- graph_psite<P>::change_target(const p_graph<P>& new_target)
+ graph_psite<P>::change_target(const target& new_target)
{
pg_ = &new_target;
invalidate();
diff --git a/milena/mln/core/image/line_graph_image.hh b/milena/mln/core/image/line_graph_image.hh
index 3ae371b..482b29d 100644
--- a/milena/mln/core/image/line_graph_image.hh
+++ b/milena/mln/core/image/line_graph_image.hh
@@ -129,7 +129,7 @@ namespace mln
/// \brief Return type of read-write access.
///
/// We use the associated type \c reference instead of a plain
- /// reference on th value type (\v V), because it's the only way
+ /// reference on th value type (\tparam V), because it's the only way
/// to safely form a reference on the element in the case of a
/// std::vector<bool>.
typedef typename std::vector<V>::reference lvalue;
diff --git a/milena/mln/core/image/line_graph_psite.hh b/milena/mln/core/image/line_graph_psite.hh
index 383f1ac..df79d88 100644
--- a/milena/mln/core/image/line_graph_psite.hh
+++ b/milena/mln/core/image/line_graph_psite.hh
@@ -247,7 +247,7 @@ namespace mln
template <typename P>
inline
void
- line_graph_psite<P>::change_target(const p_line_graph<P>& new_target)
+ line_graph_psite<P>::change_target(const target& new_target)
{
plg_ = &new_target;
invalidate();
diff --git a/milena/mln/core/image/obased_rle_image.hh b/milena/mln/core/image/obased_rle_image.hh
index 6f1689e..8679fdb 100644
--- a/milena/mln/core/image/obased_rle_image.hh
+++ b/milena/mln/core/image/obased_rle_image.hh
@@ -160,11 +160,11 @@ namespace mln
namespace internal
{
- // internal::data_< obased_rle_image<P,T> >
+ // internal::data< obased_rle_image<P,T> >
template <typename P, typename T>
inline
- data_< obased_rle_image<P,T> >::data_(const std::set<T>& values)
+ data< obased_rle_image<P,T> >::data(const std::set<T>& values)
: obj_(values.size()),
bbox_(values.size())
{
@@ -175,7 +175,7 @@ namespace mln
template <typename P, typename T>
inline
unsigned
- data_< obased_rle_image<P,T> >::memory_size() const
+ data< obased_rle_image<P,T> >::memory_size() const
{
return domain_.memory_size() + bbox_.size()
* (sizeof(T) + sizeof(box<P>) + sizeof(std::vector<unsigned>))
@@ -185,7 +185,7 @@ namespace mln
template <typename P, typename T>
inline
void
- data_< obased_rle_image<P,T> >::finalize()
+ data< obased_rle_image<P,T> >::finalize()
{
domain_.finalize();
}
@@ -272,7 +272,7 @@ namespace mln
template <typename P, typename T>
inline
- const box<P>&
+ const box<P>&
obased_rle_image<P, T>::bbox_of_run(unsigned i) const
{
mln_assertion(i < this->data_->bbox_.size());
diff --git a/milena/mln/core/image/value_enc_image.hh b/milena/mln/core/image/value_enc_image.hh
index c6f336e..cb8de6e 100644
--- a/milena/mln/core/image/value_enc_image.hh
+++ b/milena/mln/core/image/value_enc_image.hh
@@ -127,10 +127,10 @@ namespace mln
/// Tell if the image has the given point site.
bool has(const psite& ps) const;
- /// Read-only access to the image value located at the site \site.
+ /// Read-only access to the image value located at the site \p site.
rvalue operator() (const psite& site) const;
- /// Read-write access to the image value located at the site \site.
+ /// Read-write access to the image value located at the site \p site.
lvalue operator() (const psite& site);
/// Test if this image has been initialized.
@@ -211,7 +211,7 @@ namespace mln
template <typename P, typename T>
inline
bool
- value_enc_image<P, T>::has(const typename value_enc_image<P, T>::psite& site)
+ value_enc_image<P, T>::has(const psite& site)
const
{
return this->data_->domain_.has(site);
@@ -220,8 +220,7 @@ namespace mln
template <typename P, typename T>
inline
typename value_enc_image<P, T>::rvalue
- value_enc_image<P, T>::operator() (const typename
- value_enc_image<P, T>::psite& site)
+ value_enc_image<P, T>::operator() (const psite& site)
const
{
mln_precondition(this->has(site));
@@ -232,8 +231,7 @@ namespace mln
template <typename P, typename T>
inline
typename value_enc_image<P, T>::lvalue
- value_enc_image<P, T>::operator() (const typename
- value_enc_image<P, T>::psite& site)
+ value_enc_image<P, T>::operator() (const psite& site)
{
mln_precondition(this->has(site));
diff --git a/milena/mln/core/routine/clone.hh b/milena/mln/core/routine/clone.hh
index 0a8859a..6fd902d 100644
--- a/milena/mln/core/routine/clone.hh
+++ b/milena/mln/core/routine/clone.hh
@@ -41,13 +41,13 @@
namespace mln
{
- /*! \brief Clone the image \p ima with the values of the image \p
+ /*! \brief Clone the image \p model with the values of the image \p
* data.
*
- * \param[in] ima The image to be cloneed.
+ * \param[in] model The image to be cloneed.
* \result The clone.
*
- * \pre ima.has_data
+ * \pre model.has_data
*/
template <typename I>
mln_concrete(I) clone(const Image<I>& model);
diff --git a/milena/mln/core/site_set/attic/p_complex_faces_piter.hh b/milena/mln/core/site_set/attic/p_complex_faces_piter.hh
index 59ab7b4..936b10e 100644
--- a/milena/mln/core/site_set/attic/p_complex_faces_piter.hh
+++ b/milena/mln/core/site_set/attic/p_complex_faces_piter.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_SITE_SET_P_COMPLEX_FACES_PITER_HH
# define MLN_CORE_SITE_SET_P_COMPLEX_FACES_PITER_HH
-/// \file mln/core/site_set/p_complex_faces_piter.hh
+/// \file mln/core/site_set/attic/p_complex_faces_piter.hh
/// \brief Definition of point iterator on the n-faces of a
/// complex-based pset.
///
diff --git a/milena/mln/core/site_set/attic/p_faces_piter.hh b/milena/mln/core/site_set/attic/p_faces_piter.hh
index 4f28082..efd9edd 100644
--- a/milena/mln/core/site_set/attic/p_faces_piter.hh
+++ b/milena/mln/core/site_set/attic/p_faces_piter.hh
@@ -28,7 +28,7 @@
#ifndef MLN_CORE_SITE_SET_P_FACES_PITER_HH
# define MLN_CORE_SITE_SET_P_FACES_PITER_HH
-/// \file mln/core/site_set/p_faces_piter.hh
+/// \file mln/core/site_set/attic/p_faces_piter.hh
/// \brief Definition of point iterator on complex-based pset.
///
/// Types defined here are akin to parametrized typedefs: the code is
diff --git a/milena/mln/core/site_set/complex_psite.hh b/milena/mln/core/site_set/complex_psite.hh
index 1fe3ccc..5dd476b 100644
--- a/milena/mln/core/site_set/complex_psite.hh
+++ b/milena/mln/core/site_set/complex_psite.hh
@@ -266,7 +266,7 @@ namespace mln
template <unsigned D, typename P>
inline
void
- complex_psite<D, P>::change_target(const p_complex<D, P>& new_target)
+ complex_psite<D, P>::change_target(const target& new_target)
{
// Update both pc_ and face_.
pc_ = &new_target;
diff --git a/milena/mln/core/site_set/p_bgraph.hh b/milena/mln/core/site_set/p_bgraph.hh
index e08d788..04cde3a 100644
--- a/milena/mln/core/site_set/p_bgraph.hh
+++ b/milena/mln/core/site_set/p_bgraph.hh
@@ -113,7 +113,7 @@ namespace mln
template<typename P>
inline
- p_bgraph<P>::p_bgraph (typename p_bgraph<P>::graph* gr)
+ p_bgraph<P>::p_bgraph (graph* gr)
: gr_ (gr)
{
mln_precondition(gr != 0);
@@ -167,14 +167,14 @@ namespace mln
template <typename P>
const P&
- p_bgraph<P>::point_from_id(const typename p_bgraph<P>::node_id& id) const
+ p_bgraph<P>::point_from_id(const node_id& id) const
{
return this->gr_->operator[](id);
}
template <typename P>
P&
- p_bgraph<P>::point_from_id(const typename p_bgraph<P>::node_id& id)
+ p_bgraph<P>::point_from_id(const node_id& id)
{
return this->gr_->operator[](id);
}
@@ -184,7 +184,7 @@ namespace mln
/// information. Is it bad??
template <typename P>
const P&
- p_bgraph<P>::node1(const typename p_bgraph<P>::edge_id& e) const
+ p_bgraph<P>::node1(const edge_id& e) const
{
return this->point_from_id(source(e, *this->gr_));
}
@@ -192,7 +192,7 @@ namespace mln
/// FIXME: same as node1...
template <typename P>
const P&
- p_bgraph<P>::node2(const typename p_bgraph<P>::edge_id& e) const
+ p_bgraph<P>::node2(const edge_id& e) const
{
return this->point_from_id(target(e, *this->gr_));
}
diff --git a/milena/mln/core/site_set/p_bgraph_piter.hh b/milena/mln/core/site_set/p_bgraph_piter.hh
index 0e50841..2633700 100644
--- a/milena/mln/core/site_set/p_bgraph_piter.hh
+++ b/milena/mln/core/site_set/p_bgraph_piter.hh
@@ -223,7 +223,7 @@ namespace mln
template<typename P>
inline
- p_bgraph_piter_<P>::operator P() const
+ p_bgraph_piter_<P>::operator point() const
{
mln_precondition(is_valid());
return p_;
@@ -231,7 +231,7 @@ namespace mln
template<typename P>
inline
- p_bgraph_piter_<P>::operator bgraph_psite<P>() const
+ p_bgraph_piter_<P>::operator psite() const
{
mln_precondition(is_valid());
bgraph_psite<P> tmp(pg_, *cur_);
diff --git a/milena/mln/core/site_set/p_complex.hh b/milena/mln/core/site_set/p_complex.hh
index 3ef413a..9613bd6 100644
--- a/milena/mln/core/site_set/p_complex.hh
+++ b/milena/mln/core/site_set/p_complex.hh
@@ -98,8 +98,8 @@ namespace mln
/* FIXME: Aggregate site data (location). */
- /// A complex psite set based on a the \N-faces of a complex of
- /// dimension \p D (a \p D-complex).
+ /// A complex psite set based on a the N-faces of a complex of
+ /// dimension \tparam D (a \p D-complex).
template <unsigned D, typename P>
class p_complex
: public internal::site_set_base_< complex_psite<D, P>, p_complex<D, P> >
@@ -110,7 +110,7 @@ namespace mln
public:
/// \brief Construct a complex psite set from a complex.
///
- /// \param gr The complex upon which the complex psite set is built.
+ /// \param cplx The complex upon which the complex psite set is built.
p_complex (const topo::complex<D>& cplx);
/// Associated types.
diff --git a/milena/mln/core/site_set/p_faces.hh b/milena/mln/core/site_set/p_faces.hh
index 6df4ded..0d79798 100644
--- a/milena/mln/core/site_set/p_faces.hh
+++ b/milena/mln/core/site_set/p_faces.hh
@@ -70,8 +70,8 @@ namespace mln
} // end of namespace mln::trait
- /// A complex psite set based on a the \N-faces of a complex of
- /// dimension \p D (a \p D-complex).
+ /// A complex psite set based on a the \tparam N -faces of a complex of
+ /// dimension \tparam D (a \p D-complex).
template <unsigned N, unsigned D, typename P>
struct p_faces
: public internal::site_set_base_< faces_psite<N, D, P>,
@@ -82,12 +82,12 @@ namespace mln
/// \brief Construct a faces psite set from an mln::complex.
///
- /// \param gr The complex upon which the complex psite set is built.
+ /// \param cplx The complex upon which the complex psite set is built.
p_faces(const topo::complex<D>& cplx);
/// \brief Construct a faces psite set from an mln::p_complex.
///
- /// \param gr The complex upon which the complex psite set is built.
+ /// \param pc The complex upon which the complex psite set is built.
///
/// \todo When available, get location information from \a pc.
p_faces(const p_complex<D, P>& pc);
diff --git a/milena/mln/core/site_set/p_graph.hh b/milena/mln/core/site_set/p_graph.hh
index b714d0b..b530152 100644
--- a/milena/mln/core/site_set/p_graph.hh
+++ b/milena/mln/core/site_set/p_graph.hh
@@ -200,7 +200,7 @@ namespace mln
template <typename P>
inline
- p_graph<P>::p_graph(const util::graph<P>& gr)
+ p_graph<P>::p_graph(const graph& gr)
// Create a deep, managed copy of GR.
: gr_ (new util::graph<P>(gr))
{
diff --git a/milena/mln/core/site_set/p_line_graph.hh b/milena/mln/core/site_set/p_line_graph.hh
index ec3ce39..d86cb9d 100644
--- a/milena/mln/core/site_set/p_line_graph.hh
+++ b/milena/mln/core/site_set/p_line_graph.hh
@@ -188,7 +188,7 @@ namespace mln
template <typename P>
inline
- p_line_graph<P>::p_line_graph(const util::graph<P>& gr)
+ p_line_graph<P>::p_line_graph(const graph& gr)
// Create a deep, managed copy of GR.
: gr_(new util::graph<P>(gr))
{
diff --git a/milena/mln/core/window.hh b/milena/mln/core/window.hh
index 9689983..18a2355 100644
--- a/milena/mln/core/window.hh
+++ b/milena/mln/core/window.hh
@@ -192,7 +192,7 @@ namespace mln
/*! \brief Equality comparison between windows \p lhs and \p rhs.
*
- * \relates mln::window<D>
+ * \relates mln::window
*/
template <typename D>
bool operator==(const window<D>& lhs, const window<D>& rhs);
diff --git a/milena/mln/display/color_pretty.hh b/milena/mln/display/color_pretty.hh
index 337bcdc..6bd992d 100644
--- a/milena/mln/display/color_pretty.hh
+++ b/milena/mln/display/color_pretty.hh
@@ -51,7 +51,7 @@ namespace mln
/*! Return new image colored from an image \p input_. with the
* color red for the pixels not in the domain of \p input_.
*
- * \param[in] ima The image in gray level to color.
+ * \param[in] input_ The image in gray level to color.
*
* \return colored image from \p input_ in rgb8 with red for the
* color filled when the point is in bounding box of \p input_ but
@@ -69,7 +69,7 @@ namespace mln
/*! Return new image colored from an image \p input_. with the
* color red for the pixels not in the domain of \p input_.
*
- * \param[in] ima The image whose domain let to define the domain
+ * \param[in] input_ The image whose domain let to define the domain
* of the returned image.
* \param[in] s1_ The p_set where the points will be colored in red.
* \param[in] s2_ The p_set where the points will be colored in green.
diff --git a/milena/mln/fun/c.hh b/milena/mln/fun/c.hh
index 97a0f76..8ee9c24 100644
--- a/milena/mln/fun/c.hh
+++ b/milena/mln/fun/c.hh
@@ -88,7 +88,7 @@ namespace mln
namespace fun
{
-
+
template <typename F> struct C;
diff --git a/milena/mln/fun/x2x/geom/composed.hh b/milena/mln/fun/x2x/geom/composed.hh
index a0409a8..12af4f0 100644
--- a/milena/mln/fun/x2x/geom/composed.hh
+++ b/milena/mln/fun/x2x/geom/composed.hh
@@ -28,7 +28,7 @@
#ifndef MLN_FUN_X2X_GEOM_COMPOSED_HH
# define MLN_FUN_X2X_GEOM_COMPOSED_HH
-/*! \file mln/fun/x2x/composed.hh
+/*! \file mln/fun/x2x/geom/composed.hh
*
* \brief Definition of a composed transformation.
*/
diff --git a/milena/mln/fun/x2x/geom/rotation.hh b/milena/mln/fun/x2x/geom/rotation.hh
index 5f93436..be83cc5 100644
--- a/milena/mln/fun/x2x/geom/rotation.hh
+++ b/milena/mln/fun/x2x/geom/rotation.hh
@@ -28,7 +28,7 @@
#ifndef MLN_FUN_X2X_ROTATION_HH
# define MLN_FUN_X2X_ROTATION_HH
-/*! \file mln/fun/x2x/rotation.hh
+/*! \file mln/fun/x2x/geom/rotation.hh
*
* \brief Define a rotation function.
*/
diff --git a/milena/mln/fun/x2x/geom/translation.hh b/milena/mln/fun/x2x/geom/translation.hh
index a250aed..87c4b3a 100644
--- a/milena/mln/fun/x2x/geom/translation.hh
+++ b/milena/mln/fun/x2x/geom/translation.hh
@@ -28,7 +28,7 @@
#ifndef MLN_FUN_X2X_TRANSLATION_HH
# define MLN_FUN_X2X_TRANSLATION_HH
-/*! \file mln/fun/x2x/translation.hh
+/*! \file mln/fun/x2x/geom/translation.hh
*
* \brief Define a translation function.
*/
diff --git a/milena/mln/geom/resize.hh b/milena/mln/geom/resize.hh
index 03c565b..7474b59 100644
--- a/milena/mln/geom/resize.hh
+++ b/milena/mln/geom/resize.hh
@@ -54,8 +54,8 @@ namespace mln
* \param[in] input_ The image to resize.
* \param[in] ratio The ratio of the resize image.
*
- * \precondition \p input_ has to be initialized.
- * \precondition \p ratio <= 1.
+ * \pre \p input_ has to be initialized.
+ * \pre \p ratio <= 1.
*
* \return The resized image.
*/
diff --git a/milena/mln/geom/seeds2tiling.hh b/milena/mln/geom/seeds2tiling.hh
index a8fdd34..33dd716 100644
--- a/milena/mln/geom/seeds2tiling.hh
+++ b/milena/mln/geom/seeds2tiling.hh
@@ -48,17 +48,18 @@ namespace mln
namespace geom
{
- /*! Take a labeled image \p ima_ with seeds and extend them
- * until creating tiles.
- *
- * \param[in,out] ima_ The labeled image with seed.
- * \param[in] nbh The neighborhood to use on this algorithm.
- *
- * \pre \p ima_ has to be initialized.
- *
- */
+ /// \brief Take a labeled image \p ima_ with seeds and extend them
+ /// until creating tiles.
+ ///
+ /// \param[in,out] ima_ The labeled image with seed.
+ /// \param[in] nbh The neighborhood to use on this algorithm.
+ ///
+ /// \pre \p ima_ has to be initialized.
+ ///
+ /// \{
template <typename I, typename N>
I seeds2tiling (Image<I>& ima_, const Neighborhood<N>& nbh);
+ /// \}
# ifndef MLN_INCLUDE_ONLY
@@ -119,7 +120,7 @@ namespace mln
} // end of namespace mln::geom::impl
- /// Facade
+ // Facade
template <typename I, typename N>
inline
I seeds2tiling(Image<I>& ima_, const Neighborhood<N>& nbh)
diff --git a/milena/mln/geom/seeds2tiling_roundness.hh b/milena/mln/geom/seeds2tiling_roundness.hh
index 89a2c5e..235de82 100644
--- a/milena/mln/geom/seeds2tiling_roundness.hh
+++ b/milena/mln/geom/seeds2tiling_roundness.hh
@@ -51,24 +51,24 @@ namespace mln
namespace geom
{
- /*! Take a labeled image \p ima_ with seeds and extend them until
- * creating tiles rounder than the primary version.
- *
- * \param[in,out] ima_ The labeled image with seed.
- * \param[in] win_w The weight window using by geom::chamfer to
- * compute distance.
- * \param[in] max Unsigned using by geom::chamfer to compute
- * the distance.
- * \param[in] nbh The neighborhood to use on this algorithm.
- *
- * \pre \p ima_ has to be initialized.
- *
- */
+ /// \brief Take a labeled image \p ima_ with seeds and extend them until
+ /// creating tiles rounder than the primary version.
+ ///
+ /// \param[in,out] ima_ The labeled image with seed.
+ /// \param[in] w_win The weight window using by geom::chamfer to
+ /// compute distance.
+ /// \param[in] max Unsigned using by geom::chamfer to compute
+ /// the distance.
+ /// \param[in] nbh_ The neighborhood to use on this algorithm.
+ ///
+ /// \pre \p ima_ has to be initialized.
+ ///
+ /// \{
template <typename I, typename N>
I
seeds2tiling_roundness (Image<I>& ima_, const w_window2d_int& w_win,
- unsigned max, const Neighborhood<N>& nbh);
-
+ unsigned max, const Neighborhood<N>& nbh_);
+ /// \}
# ifndef MLN_INCLUDE_ONLY
@@ -122,7 +122,7 @@ namespace mln
} // end of namespace mln::geom::impl
- /// Facade
+ // Facade
template <typename I, typename N>
inline
I
diff --git a/milena/mln/level/fill_with_image.hh b/milena/mln/level/fill_with_image.hh
index 42cbf82..47b6e7f 100644
--- a/milena/mln/level/fill_with_image.hh
+++ b/milena/mln/level/fill_with_image.hh
@@ -48,18 +48,20 @@ namespace mln
namespace level
{
- /*! Fill the image \p ima with the values of the image \p data.
- *
- * \param[in,out] ima The image to be filled.
- * \param[in] data The image.
- *
- * \warning The definition domain of \p ima has to be included in
- * the one of \p data.
- *
- * \pre \p ima.domain <= \p data.domain.
- */
+ /// Fill the image \p ima with the values of the image \p data.
+ ///
+ /// \param[in,out] ima The image to be filled.
+ /// \param[in] data The image.
+ ///
+ /// \warning The definition domain of \p ima has to be included in
+ /// the one of \p data.
+ ///
+ /// \pre \p ima.domain <= \p data.domain.
+ ///
+ /// \{
template <typename I, typename J>
void fill_with_image(Image<I>& ima, const Image<J>& data);
+ /// \}
@@ -115,7 +117,7 @@ namespace mln
} // end of namespace mln::level::impl
- /// Facade.
+ // Facade.
template <typename I, typename J>
inline
diff --git a/milena/mln/level/fill_with_value.hh b/milena/mln/level/fill_with_value.hh
index db9cf76..3fd47c6 100644
--- a/milena/mln/level/fill_with_value.hh
+++ b/milena/mln/level/fill_with_value.hh
@@ -57,15 +57,17 @@ namespace mln
namespace level
{
- /*! Fill the whole image \p ima with the single value \p v.
- *
- * \param[in,out] ima The image to be filled.
- * \param[in] val The value to assign to all sites.
- *
- * \pre \p ima has to be initialized.
- */
+ /// \brief Fill the whole image \p ima with the single value \p v.
+ ///
+ /// \param[in,out] ima The image to be filled.
+ /// \param[in] val The value to assign to all sites.
+ ///
+ /// \pre \p ima has to be initialized.
+ ///
+ /// \{
template <typename I, typename V>
void fill_with_value(Image<I>& ima, const V& val);
+ /// \}
@@ -118,7 +120,7 @@ namespace mln
} // end of namespace mln::level::impl
- /// Facade.
+ // Facade.
template <typename I, typename V>
inline
diff --git a/milena/mln/level/paste.hh b/milena/mln/level/paste.hh
index 4ecf407..938d406 100644
--- a/milena/mln/level/paste.hh
+++ b/milena/mln/level/paste.hh
@@ -49,25 +49,26 @@ namespace mln
namespace level
{
- /*!
- * \brief Paste the contents of image \p data into the image \p
- * destination.
- *
- * \param[in] data The input image providing pixels values.
- * \param[in,out] destination The image in which values are
- * assigned.
- *
- * This routine runs: \n
- * for all p of \p data, \p destination(p) = \p data(p).
- *
- * \warning The definition domain of \p data has to be included in
- * the one of \p destination; so using mln::safe_image does not
- * make pasting outside the destination domain work.
- *
- * \pre \p data.domain <= \p destination.domain
- */
+ /// \brief Paste the contents of image \p data into the image \p
+ /// destination.
+ ///
+ /// \param[in] data The input image providing pixels values.
+ /// \param[in,out] destination The image in which values are
+ /// assigned.
+ ///
+ /// This routine runs: \n
+ /// for all p of \p data, \p destination(p) = \p data(p).
+ ///
+ /// \warning The definition domain of \p data has to be included in
+ /// the one of \p destination; so using mln::safe_image does not
+ /// make pasting outside the destination domain work.
+ ///
+ /// \pre \p data.domain <= \p destination.domain
+ ///
+ /// \{
template <typename I, typename J>
void paste(const Image<I>& data, Image<J>& destination);
+ /// \}
diff --git a/milena/mln/linear/sobel.hh b/milena/mln/linear/sobel.hh
index 4cf3b1e..cb7ff76 100644
--- a/milena/mln/linear/sobel.hh
+++ b/milena/mln/linear/sobel.hh
@@ -82,45 +82,51 @@ namespace mln
/// Compute the Sobel gradient of an image.
///
- /// \param output A vectorial output image.
- /// \param
+ /// \param[in] input A vectorial output image.
+ /// \{
template <typename I>
mln_gradient(I) sobel(const Image<I>& input);
+ /// \}
/// Compute the norm of the Sobel gradient of an image.
- ///
+ ///
/// \param input a vectorial input image
- /// \param output the norm-image of the Sobel gradient of the input image
/// \param norm a norm functor (\see mln/fun/v2v/norm.hh),
/// defaulting to the L1-norm (mln::fun::v2v::l1_norm).
- /* FIXME: Add constraints on N (mln::Function_v2v<N>). */
+ /// \return the norm-image of the Sobel gradient of the input image
+ /// FIXME: Add constraints on N (mln::Function_v2v<N>).
+ /// \{
template <typename I, typename N>
- mln_ch_value(I, mln_result(N)) sobel_norm(const Image<I>& input, N norm);
+ mln_ch_value(I, mln_result(N)) sobel_norm(const Image<I>& input, N norm);
+ /// \}
/// \brief Compute the L-1 norm of the Sobel gradient of an image.
///
/// This function is a shortcut for the general
/// mln::linear::sobel_norm function.
+ /// \{
template <typename I>
mln_ch_value(I, mln_sum(mln_value(I))) sobel_norm(const Image<I>& input);
+ /// \}
# ifndef MLN_INCLUDE_ONLY
-/// \brief Ensure type \a V is a scalar value.
+/// \brief Ensure type \p V is a scalar value.
///
/// For internal use only (#undef'd before the end of this file). (We
/// might want to export this macro to the user interface; if so,
/// rename it and move it elsewhere.)
///
-/* FIXME: At the moment (rev. 1645), we cannot use mlc_is_a to check
- whether V derives from trait::value::nature::scalar like this
-
- mlc_is_a(trait::value_<V>::nature, trait::value::nature::scalar)::check()
-
- since `mlc_is_a' doesn't work on non template classes (yet). Hence
- the ugly workaround based on comprehensive checks. */
+/// FIXME: At the moment (rev. 1645), we cannot use mlc_is_a to check
+/// whether V derives from trait::value::nature::scalar like this
+///
+/// mlc_is_a(trait::value_<V>::nature, trait::value::nature::scalar)::check()
+///
+/// since `mlc_is_a' doesn't work on non template classes (yet). Hence
+/// the ugly workaround based on comprehensive checks.
+/// \{
# define mlc_internal_ensure_is_scalar(V) \
mlc_or(mlc_equal(typename mln::trait::value_<V>::nature, \
mln::trait::value::nature::scalar), \
@@ -128,6 +134,7 @@ namespace mln
mln::trait::value::nature::integer), \
mlc_equal(typename mln::trait::value_<V>::nature, \
mln::trait::value::nature::floating)))::check()
+/// \}
namespace impl
{
diff --git a/milena/mln/neighb/image.hh b/milena/mln/neighb/image.hh
index 398f318..11380a3 100644
--- a/milena/mln/neighb/image.hh
+++ b/milena/mln/neighb/image.hh
@@ -176,7 +176,7 @@ namespace mln
{
template <typename I, typename N>
inline
- data< neighb::image<I, N> >::data(I& ima, const N& nbh)
+ data< mln::neighb::image<I, N> >::data(I& ima, const N& nbh)
: ima_(ima),
nbh_(nbh)
{
diff --git a/milena/mln/pw/image.hh b/milena/mln/pw/image.hh
index 831b493..beb40e6 100644
--- a/milena/mln/pw/image.hh
+++ b/milena/mln/pw/image.hh
@@ -201,7 +201,7 @@ namespace mln
template <typename F, typename S>
inline
- data< pw::image<F,S> >::data(const F& f, const S& ps)
+ data< mln::pw::image<F,S> >::data(const F& f, const S& ps)
: f_(f),
pset_(ps)
{
diff --git a/milena/mln/topo/attic/faces_iter.hh b/milena/mln/topo/attic/faces_iter.hh
index 5306835..11b247f 100644
--- a/milena/mln/topo/attic/faces_iter.hh
+++ b/milena/mln/topo/attic/faces_iter.hh
@@ -28,7 +28,7 @@
#ifndef MLN_TOPO_FACES_ITER_HH
# define MLN_TOPO_FACES_ITER_HH
-/// \file mln/topo/faces_iter.hh
+/// \file mln/topo/attic/faces_iter.hh
/// \brief Definition of forward and backward iterators on the n-faces
/// of a complex.
diff --git a/milena/mln/topo/complex.hh b/milena/mln/topo/complex.hh
index d3d2e18..f186f4f 100644
--- a/milena/mln/topo/complex.hh
+++ b/milena/mln/topo/complex.hh
@@ -28,7 +28,7 @@
#ifndef MLN_TOPO_COMPLEX_HH
# define MLN_TOPO_COMPLEX_HH
-/// \file mln/core/topo/complex.hh
+/// \file mln/topo/complex.hh
/// \brief Structures for general complexes.
///
/// A complex defines a topological space which can be used as a
diff --git a/milena/mln/topo/complex_iterators.hh b/milena/mln/topo/complex_iterators.hh
index 170e19c..0db739c 100644
--- a/milena/mln/topo/complex_iterators.hh
+++ b/milena/mln/topo/complex_iterators.hh
@@ -28,7 +28,7 @@
#ifndef MLN_TOPO_COMPLEX_ITERATORS_HH
# define MLN_TOPO_COMPLEX_ITERATORS_HH
-/// \file mln/core/topo/complex_iterators.hh
+/// \file mln/topo/complex_iterators.hh
/// \brief Iterators on complexes.
///
/// This file includes all iterators on faces.
diff --git a/milena/mln/topo/internal/complex_relative_iterator_base.hh b/milena/mln/topo/internal/complex_relative_iterator_base.hh
index c59f16b..7275989 100644
--- a/milena/mln/topo/internal/complex_relative_iterator_base.hh
+++ b/milena/mln/topo/internal/complex_relative_iterator_base.hh
@@ -309,7 +309,7 @@ namespace mln
template <typename F, typename E>
inline
- complex_relative_iterator_base<F, E>::operator const F&() const
+ complex_relative_iterator_base<F, E>::operator const face&() const
{
return f_;
}
diff --git a/milena/mln/topo/internal/complex_relative_iterator_sequence.hh b/milena/mln/topo/internal/complex_relative_iterator_sequence.hh
index 6725bc0..424ff71 100644
--- a/milena/mln/topo/internal/complex_relative_iterator_sequence.hh
+++ b/milena/mln/topo/internal/complex_relative_iterator_sequence.hh
@@ -128,7 +128,7 @@ namespace mln
// Ensure I1 and I2 are compatible.
mlc_equal(mln_face(I1), mln_face(I2))::check();
- invalidate();
+ invalidate();
}
template <typename I1, typename I2, typename E>
@@ -145,11 +145,11 @@ namespace mln
template <typename I1, typename I2, typename E>
inline
void
- complex_relative_iterator_sequence<I1, I2, E>::center_at(const mln_face(I1)& c)
+ complex_relative_iterator_sequence<I1, I2, E>::center_at(const face& c)
{
- iter1_.center_at(c);
- iter2_.center_at(c);
- invalidate();
+ iter1_.center_at(c);
+ iter2_.center_at(c);
+ invalidate();
}
template <typename I1, typename I2, typename E>
@@ -209,7 +209,7 @@ namespace mln
template <typename I1, typename I2, typename E>
inline
- complex_relative_iterator_sequence<I1, I2, E>::operator const mln_face(I1)&() const
+ complex_relative_iterator_sequence<I1, I2, E>::operator const face&() const
{
return f_;
}
diff --git a/milena/mln/topo/internal/complex_set_iterator_base.hh b/milena/mln/topo/internal/complex_set_iterator_base.hh
index 51f67c1..fd09b19 100644
--- a/milena/mln/topo/internal/complex_set_iterator_base.hh
+++ b/milena/mln/topo/internal/complex_set_iterator_base.hh
@@ -159,7 +159,7 @@ namespace mln
template <typename F, typename E>
inline
- complex_set_iterator_base<F, E>::operator const F&() const
+ complex_set_iterator_base<F, E>::operator const face&() const
{
return f_;
}
diff --git a/milena/mln/topo/n_faces_set.hh b/milena/mln/topo/n_faces_set.hh
index 65f56d9..f0b3615 100644
--- a/milena/mln/topo/n_faces_set.hh
+++ b/milena/mln/topo/n_faces_set.hh
@@ -28,7 +28,7 @@
#ifndef MLN_TOPO_N_FACES_SET_HH
# define MLN_TOPO_N_FACES_SET_HH
-/// \file mln/topo/n_face_set.hh
+/// \file mln/topo/n_faces_set.hh
/// \brief Set of n-face of a complex.
#include <vector>
diff --git a/milena/mln/util/branch_iter.hh b/milena/mln/util/branch_iter.hh
index e9aeccd..a03d417 100644
--- a/milena/mln/util/branch_iter.hh
+++ b/milena/mln/util/branch_iter.hh
@@ -100,7 +100,7 @@ namespace mln
template <typename T>
inline
- branch_iter<T>::operator tree_node<T>&() const
+ branch_iter<T>::operator util::tree_node<T>&() const
{
mln_assertion(n_);
return *n_;
diff --git a/milena/mln/util/branch_iter_ind.hh b/milena/mln/util/branch_iter_ind.hh
index 06c1026..ca91870 100644
--- a/milena/mln/util/branch_iter_ind.hh
+++ b/milena/mln/util/branch_iter_ind.hh
@@ -112,7 +112,7 @@ namespace mln
template <typename T>
inline
- branch_iter_ind<T>::operator tree_node<T>&() const
+ branch_iter_ind<T>::operator util::tree_node<T>&() const
{
mln_assertion(n_);
return *n_;
diff --git a/milena/mln/util/greater_point.hh b/milena/mln/util/greater_point.hh
index 1e5d856..f6f4f5c 100644
--- a/milena/mln/util/greater_point.hh
+++ b/milena/mln/util/greater_point.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2005, 2008 EPITA Research and Development Laboratory (LRDE)
+:/ Copyright (C) 2005, 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
@@ -73,7 +73,7 @@ namespace mln {
template <typename I>
bool
- greater_point<I>::operator()(const mln_psite(I)& x, const mln_psite(I)& y)
+ greater_point<I>::operator()(const point& x, const point& y)
{
return ima_(x) > ima_(y);
}
diff --git a/milena/mln/util/greater_psite.hh b/milena/mln/util/greater_psite.hh
index 8da8307..0aa3e3d 100644
--- a/milena/mln/util/greater_psite.hh
+++ b/milena/mln/util/greater_psite.hh
@@ -73,7 +73,7 @@ namespace mln {
template <typename I>
bool
- greater_psite<I>::operator()(const mln_psite(I)& x, const mln_psite(I)& y)
+ greater_psite<I>::operator()(const psite& x, const psite& y)
{
return ima_(x) > ima_(y);
}
diff --git a/milena/mln/util/internal/boost_graph.hh b/milena/mln/util/internal/boost_graph.hh
index 5d92836..1d6a661 100644
--- a/milena/mln/util/internal/boost_graph.hh
+++ b/milena/mln/util/internal/boost_graph.hh
@@ -190,8 +190,7 @@ namespace mln
template <typename V, typename E>
inline
typename boost_graph<V, E>::vertex_bundled&
- boost_graph<V, E>::operator[](typename boost_graph<V, E>::
- vertex_descriptor v)
+ boost_graph<V, E>::operator[](vertex_descriptor v)
{
return this->graph_[v];
}
@@ -199,8 +198,7 @@ namespace mln
template <typename V, typename E>
inline
const typename boost_graph<V, E>::vertex_bundled&
- boost_graph<V, E>::operator[](typename boost_graph<V, E>::
- vertex_descriptor v) const
+ boost_graph<V, E>::operator[](vertex_descriptor v) const
{
return this->graph_[v];
}
diff --git a/milena/mln/util/internal/graph_edge.hh b/milena/mln/util/internal/graph_edge.hh
index 18f9858..d878685 100644
--- a/milena/mln/util/internal/graph_edge.hh
+++ b/milena/mln/util/internal/graph_edge.hh
@@ -65,13 +65,13 @@ namespace mln
/// Return the edge id.
unsigned id() const;
- /// Set \att id_ with \p id;
+ /// Set id_ with \p id;
void update_id(unsigned id);
/// Return pointer of the graph holding this edge.
const graph_t * g() const;
- /// Set \att g_ with \p g;
+ /// Set g_ with \p g;
void change_graph(const graph_t& g);
/// \}
diff --git a/milena/mln/util/internal/graph_edge_impl.hh b/milena/mln/util/internal/graph_edge_impl.hh
index 2ed90c5..7f77f2a 100644
--- a/milena/mln/util/internal/graph_edge_impl.hh
+++ b/milena/mln/util/internal/graph_edge_impl.hh
@@ -25,10 +25,10 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_CORE_INTERNAL_EDGE_IMPL_HH
-# define MLN_CORE_INTERNAL_EDGE_IMPL_HH
+#ifndef MLN_CORE_INTERNAL_GRAPH_EDGE_IMPL_HH
+# define MLN_CORE_INTERNAL_GRAPH_EDGE_IMPL_HH
-/*! \file mln/core/internal/edge_impl.hh
+/*! \file mln/util/internal/graph_edge_impl.hh
*
* \brief Define a couple of implementation classes to provide methods
* to classes of generalized edges.
@@ -86,4 +86,4 @@ namespace mln
#endif // ! MLN_INCLUDE_ONLY
-#endif // ! MLN_CORE_INTERNAL_EDGE_IMPL_HH
+#endif // ! MLN_CORE_INTERNAL_GRAPH_EDGE_IMPL_HH
diff --git a/milena/mln/util/internal/graph_edge_psite.hh b/milena/mln/util/internal/graph_edge_psite.hh
index 5e00d18..3861af6 100644
--- a/milena/mln/util/internal/graph_edge_psite.hh
+++ b/milena/mln/util/internal/graph_edge_psite.hh
@@ -38,7 +38,7 @@ namespace mln
} // end of namespace mln
-/// \file mln/util/internal/edge_psite.hh
+/// \file mln/util/internal/graph_edge_psite.hh
/// \brief Implementation of p_edges psite.
namespace mln
diff --git a/milena/mln/util/internal/graph_vertex_impl.hh b/milena/mln/util/internal/graph_vertex_impl.hh
index 863cf25..3abfaf5 100644
--- a/milena/mln/util/internal/graph_vertex_impl.hh
+++ b/milena/mln/util/internal/graph_vertex_impl.hh
@@ -25,10 +25,10 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_CORE_INTERNAL_VERTEX_IMPL_HH
-# define MLN_CORE_INTERNAL_VERTEX_IMPL_HH
+#ifndef MLN_CORE_INTERNAL_GRAPH_VERTEX_IMPL_HH
+# define MLN_CORE_INTERNAL_GRAPH_VERTEX_IMPL_HH
-/*! \file mln/core/internal/vertex_impl.hh
+/*! \file mln/util/internal/graph_vertex_impl.hh
*
* \brief Define a couple of implementation classes to provide methods
* to classes of generalized vertexs.
@@ -86,4 +86,4 @@ namespace mln
#endif // ! MLN_INCLUDE_ONLY
-#endif // ! MLN_CORE_INTERNAL_VERTEX_IMPL_HH
+#endif // ! MLN_CORE_INTERNAL_GRAPH_VERTEX_IMPL_HH
diff --git a/milena/mln/win/cuboid3d.hh b/milena/mln/win/cuboid3d.hh
index b32d509..796daab 100644
--- a/milena/mln/win/cuboid3d.hh
+++ b/milena/mln/win/cuboid3d.hh
@@ -43,7 +43,7 @@ namespace mln
namespace win
{
-
+
/** \brief Cuboid defined on the 3-D square grid.
A cuboid3d is a 3-D window with cuboid (also known as
@@ -56,19 +56,19 @@ namespace mln
o o o o o o o\n
o o o o o o o\n
o o o o o o o\n
- o o o o o o \on
+ o o o o o o o\n
o o o o o o o\n
o o o o o o o\n
o o o x o o o\n
o o o o o o o\n
- o o o o o o \on
+ o o o o o o o\n
o o o o o o o\n
o o o o o o o\n
o o o o o o o\n
o o o o o o o\n
- o o o o o o \on
+ o o o o o o o\n
is defined with depth = 3, height = 5 and width = 7.
diff --git a/milena/mln/win/multiple.hh b/milena/mln/win/multiple.hh
index 16a8dc5..c81dae7 100644
--- a/milena/mln/win/multiple.hh
+++ b/milena/mln/win/multiple.hh
@@ -129,7 +129,7 @@ namespace mln
template <typename W, typename F>
- class multiple_qiter
+ class multiple_qiter
: public internal::site_relative_iterator_base< multiple<W,F>,
multiple_qiter<W,F> >
{
diff --git a/milena/tests/core/site_set/p_vertices.cc b/milena/tests/core/site_set/p_vertices.cc
index 6db4609..cdee10b 100644
--- a/milena/tests/core/site_set/p_vertices.cc
+++ b/milena/tests/core/site_set/p_vertices.cc
@@ -68,7 +68,6 @@ int main()
g.add_edge (5, 3);
g.add_edge (2, 1);
-// typedef point2d (*fun_t)(const util::vertex<util::graph>&);
typedef p_vertices<util::graph, my_fun<util::graph> > p_vertices;
p_vertices pv(g, my_fun<util::graph>());
diff --git a/milena/tests/extension/fill.cc b/milena/tests/extension/fill.cc
index 04e178f..4fd53ab 100644
--- a/milena/tests/extension/fill.cc
+++ b/milena/tests/extension/fill.cc
@@ -25,7 +25,7 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-/*! \file tests/core/extension/fill.cc
+/*! \file tests/extension/fill.cc
*
* \brief Tests on mln::extension::fill.
*/
diff --git a/milena/tests/morpho/complex_image_morpho.cc b/milena/tests/morpho/complex_image_morpho.cc
index 1d01c17..e8b7d25 100644
--- a/milena/tests/morpho/complex_image_morpho.cc
+++ b/milena/tests/morpho/complex_image_morpho.cc
@@ -25,7 +25,7 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-/// \file tests/core/image/complex_image_morpho.cc
+/// \file tests/morpho/complex_image_morpho.cc
/// \brief Test of mln::complex_image with morphological filters.
#include <iostream>
--
1.5.6.5
---
milena/doc/tutorial/tutorial.tex | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/milena/doc/tutorial/tutorial.tex b/milena/doc/tutorial/tutorial.tex
index 4cce4c5..0a8a26a 100644
--- a/milena/doc/tutorial/tutorial.tex
+++ b/milena/doc/tutorial/tutorial.tex
@@ -726,7 +726,7 @@ First, create an image:
Memory has been allocated so data can be stored but site values
have not been initialized yet. So we fill img with the value 'a':
\begin{lstlisting}[frame=single]
- level::fill(inplace(imga), 'a');
+ level::fill(imga.rw(), 'a');
\end{lstlisting}
The "fill" algorithm is located in the sub-namespace "level" since this
@@ -746,8 +746,8 @@ Most algorithms in Olena are constructed following the classical scheme: "output
algo(input)", where the input image is only read. However some few algorithms
take an input image in order to modify it. To enforce this particular feature,
the user shall explicitly state that the image is provided so that its data is
-modified "inplace". The algorithm call shall be "level::fill(inplace(ima),
-val)". When forgetting the "inplace(..)" statement it does not compile.
+modified "read/write". The algorithm call shall be "level::fill(ima.rw(),
+val)". When forgetting the "rw()" call it does not compile.
\section{Paste}
@@ -758,10 +758,10 @@ data for the sites (5, 5) to (14, 14) (so it has 100 sites).
image1d<char> imgb(5, 5, 14, 14);
// We initialize the image values.
- level::fill(inplace(imgb), 'b');
+ level::fill(imgb.rw(), 'b');
// Last we now paste the contents of img3b in img3a...
- level::paste(imgb, inplace(imga));
+ level::paste(imgb, imga.rw()));
// ...and print the result.
debug::println(imga);
@@ -875,12 +875,12 @@ arr.append(point2d(4, 0));
// We restrict the image to the sites
// contained in arr and fill these ones
// with 0.
-// We must call "inplace" here.
-fill(inplace(ima | arr), 0);
+// We must call "rw()" here.
+fill((ima | arr).rw(), 0);
mln_VAR(ima2, ima | arr);
-// We do not need to call "inplace" here.
+// We do not need to call "rw()" here.
fill(ima2, 0);
\end{lstlisting}
@@ -918,7 +918,7 @@ The previous example can be written more quickly:
image2d<int_u8> lab = labeling::blobs(ima, c4(), nlabels);
// Fill the sites of component 2 with red.
- fill(inplace(lab.domain(2)), color::red);
+ fill(lab.domain(2).rw(), color::red);
\end{lstlisting}
Here is an example using a C function:
--
1.5.6.5
https://svn.lrde.epita.fr/svn/oln/branches/cleanup-2008/milena
Index: ChangeLog
from Nicolas Ballas <ballas(a)lrde.epita.fr>
Add documentation about the image properties.
* doc/tutorial/design: New.
* doc/tutorial/design/include: New.
* doc/tutorial/design/include/properties.tex,
* doc/tutorial/design/include/imagetours.tex,
* doc/tutorial/design/design.tex: New documentation files.
* doc/tutorial/design/Makefile: New.
* doc/tutorial/images_tour.txt: Update.
* sandbox/ballas/doc/image_tours.txt: Fix typo mistakes.
doc/tutorial/design/Makefile | 29 ++
doc/tutorial/design/design.tex | 52 +++
doc/tutorial/design/include/imagetours.tex | 299 +++++++++++++++++++++
doc/tutorial/design/include/properties.tex | 402 +++++++++++++++++++++++++++++
sandbox/ballas/doc/image_tours.txt | 2
5 files changed, 783 insertions(+), 1 deletion(-)
Index: doc/tutorial/design/include/properties.tex
--- doc/tutorial/design/include/properties.tex (revision 0)
+++ doc/tutorial/design/include/properties.tex (revision 0)
@@ -0,0 +1,402 @@
+\section{Properties}
+
+
+\subsection{Notation}
+
+A property has several values.
+Furthermore the values of a property can be seen as a hierarchy.
+Hence, we need to define a notation to represent these hierarchies.
+\begin{itemize}
+
+\item \verb+category: primary+ means that \verb+primary+ is a value of the
+property category.
+
+\item
+\begin{verbatim}
+category: any
+ |
+ +--- primary
+ |
+ +--- morpher
+\end{verbatim}
+\end{itemize} It means that \verb+primary+ and \verb+morpher+ inherit from
+\verb+any+
+
+\subsection{Properties defining the image}
+
+%%%%%%%%%%%%%%%%%%
+% Category %
+%%%%%%%%%%%%%%%%%%
+\subsubsection{category}
+\index{Property: category}
+
+
+\begin{verbatim}
+ category: any
+ |
+ +--- primary
+ |
+ +--- morpher
+ |
+ +--- domain_morpher
+ |
+ +--- value_morpher
+ |
+ +--- identity_morpher
+\end{verbatim}
+
+
+This property specifies the category of an image type.
+Primary images are instantiated in the first place; they don't need any
+prior image type definition.
+Morpher images transform an image type into another one.
+Morphers are a non-intrusive way to add or modify some behaviors in an
+existing class.
+
+
+%% FIXME image morpher
+
+%%%%%%%%%%%%%%%%%%
+% Size %
+%%%%%%%%%%%%%%%%%%
+\subsubsection{size}
+\index{Property: size}
+
+\begin{verbatim}
+ size: any
+ |
+ +--- regular
+ |
+ +--- huge
+\end{verbatim}
+
+
+The size property gives an indication about the memory needed by an image.
+A $huge$ image is an image which cannot be fully stored in the RAM.
+Accessing a $huge$ image is slower than accessing a $regular$ image.
+Indeed, to access to a $huge$ image, we first need to load in the RAM a part of
+the image from another storage device.
+
+\subsection{Properties related to the image localization}
+
+%%%%%%%%%%%%%%%%%%
+% Localization %
+%%%%%%%%%%%%%%%%%%
+\subsubsection{localization}
+\index{Property: localization}
+
+\begin{verbatim}
+ localization: /any/
+ |
+ + -- none
+ |
+ + -- space
+ |
+ + -- /grid/
+ |
+ + -- isotropic_grid
+ | |
+ | + -- basic_grid
+ |
+ + -- anisotropic_grid
+
+\end{verbatim}
+
+This property defines the underlying support of the images.
+The support of an image describes the image geometry and the relationship
+between its sites.
+An image on a non-localized space has this property set to $none$.
+An image on a localized space has this property set to $space$.
+An image based on a isotropic grid has this property set to $isotropic\_gride$
+An image based on a anisotropic grid has this property set to
+$anisotropic\_gride$
+An image based on a aligned and orthogonal grid has its property set to
+$basic\_grid$
+
+%% FIXME: Is it true?
+If an image has its \verb+localization+ set to $space$, the user must define
+the neighborhood relationships between the sites.
+Otherwise, the image underlying grid defines the neighborhood relationships.
+
+
+%% FIXME Image de different type de grid
+
+%%%%%%%%%%%%%%%%%%
+% Space %
+%%%%%%%%%%%%%%%%%%
+\subsubsection{space}
+\index{Property: space}
+
+\begin{verbatim}
+ dimension: any
+ |
+ +--- none
+ |
+ +--- some
+ |
+ +--- one_d
+ |
+ +--- two_d
+ |
+ +--- three_d
+
+
+\end{verbatim}
+
+This property specifies the dimension of the image.
+An image in Milena can either be in one dimension, two dimensions or three dimensions.
+An image can also have no dimension specified.
+
+
+
+\subsection{Property related to the image values}
+
+
+%%%
+%%% Data storage
+%%%
+\subsubsection{value\_access}
+\index{Property: value\_access}
+
+\begin{verbatim}
+value\_access: any
+ |
+ +--- direct
+ |
+ +--- indirect
+ |
+ +--- computed
+\end{verbatim}
+
+
+Image values can either be computed on the fly by a function or stored in
+memory. If an image type has a direct acces on the values in memory, it is
+possible to take a reference of them. In this case, this property is set to
+$direct$. In the other case, this property is set $indirect$. When an image
+computes its values on the fly, this property is refined to $computed$.
+
+
+\subsubsection{vw\_storage}
+\index{Property: vw\_storage}
+
+\begin{verbatim}
+vw_storage: any
+ |
+ +--- /ram/
+ | |
+ | +--- singleton
+ | |
+ | +--- one_block
+ | |
+ | +--- piecewise
+ +--- irrelevant
+\end{verbatim}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% access %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsubsection{pw\_io}
+\index{Property: pw\_io}
+
+\begin{verbatim}
+
+ pw_io: any
+ |
+ +--- read
+ |
+ +--- read_write
+\end{verbatim}
+
+
+All the image types in Milena provide an access to its values through
+\verb+ima(p)+ where \verb+ima+ is an image and \verb+p+ a site.
+
+This property describes the read/write accessibility of this access.
+If the image is read only, \verb+pw_io+ is set to $read$.
+If the image is readable and writable, \verb+pw_io+ is set to $read\_write$.\\
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% Speed %
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% FIXME detais fast image..., add normal image
+\subsubsection{speed}
+\index{Property: speed}
+
+\begin{verbatim}
+
+ speed: any
+ |
+ +--- slow
+ |
+ +--- fast
+ |
+ +--- fastest
+\end{verbatim}
+
+ This property gives some information about the time needed to access a
+value from a site through \verb+ima(p)+ where \verb+ima+ is an image and
+\verb+p+ a site.
+
+If the \verb+speed+ property is equal to $slow$, $ima(p)$ complexity is greater
+than $O(1)$.
+If this property is equal to $fast$, $ima(p)$ complexity is in
+$O(1)$
+If this property is equal to $fastest$, $ima(p)$ complexity is
+in $O(1)$. Furthermore, in this case, $ima$ has an extended domain, and $ima$
+values have a pointer semantics (it is possible to directly iterate on the
+image pixels).
+
+\subsubsection{vw\_io}
+\index{Property: vw\_io}
+
+%% FIXME functions that modify globaly all the values...
+\begin{verbatim}
+
+ vw_io: any
+ |
+ +--- /vm_some/
+ | |
+ | +--- vw_read
+ | |
+ | +--- vw_read_write
+ +--- vw_none
+\end{verbatim}
+
+\subsubsection{vw\_set}
+\index{Property: vw\_set}
+
+\begin{verbatim}
+
+ vw_io: any
+ |
+ +--- /some/
+ | |
+ | +--- uni
+ | |
+ | +--- multi
+ +--- none
+\end{verbatim}
+
+
+
+
+
+\subsection{Properties related to the extended domain}
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% ext_domain %
+%%%%%%%%%%%%%%%%%%%%%%%%
+\subsubsection{ext\_domain}
+\index{Property: ext\_domain}
+
+\begin{verbatim}
+ ext_domain: any
+ |
+ +--- none
+ |
+ +--- some
+ |
+ +--- fixed
+ |
+ +--- infinite
+ |
+ +--- extendable
+\end{verbatim}
+
+This property indicates if the image has an extended domain.
+An extended domain grows the image domain by adding dummy values
+on the image border.
+\begin{table}[!h]
+ \begin{center}
+ \begin{tabular}{c|c|c|c|c|c}
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}}\\
+ \hline
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}}\\
+ \hline
+ {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{red}{12}}} &
+ {\textbf{\textcolor{red}{2}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}}\\
+ \hline
+ {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{red}{2}}} &
+ {\textbf{\textcolor{red}{15}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}}\\
+ \hline
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}}\\
+ \hline
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}} &
+ {\textbf{\textcolor{green}{1}}} & {\textbf{\textcolor{green}{1}}}\\
+ \end{tabular}
+ The values equal to {\textbf{\textcolor{green}{1}}} represent the extended domain.
+ \end{center}
+ \label{tab:pprop01}\caption{Image with an extended domain of size 2.}
+\end{table}
+An extended domain increases the performances of the image processing
+algorithms.
+Indeed, image processing algorithms often use the neighbors of the image
+sites.
+With an extended border it isn't necessary to test if the neighbors of an image
+site are included in the image domain.
+The size of the extended domain can differ (\verb+fixed+, \verb+infinite+ or
+\verb+extendable+).
+
+
+
+%% FIXME illustration
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% ext_value %
+%%%%%%%%%%%%%%%%%%%%%%%%
+\subsubsection{ext\_value}
+\index{Property: ext\_value}
+
+\begin{verbatim}
+ ext_value: any
+ |
+ +--- undefined
+ |
+ +--- single
+ |
+ +--- multiple
+\end{verbatim}
+
+If all the extended domain sites share the same value (in memory), this property
+is set to ``single''.
+If each site of the image extended domain has its proper value, this property
+is set to ``multiple''.
+Otherwise, this property is set to ``undefined''.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% ext_io %
+%%%%%%%%%%%%%%%%%%%%%%%%
+\subsubsection{ext\_io}
+\index{Property: ext\_io}
+
+\begin{verbatim}
+
+ ext_io: any
+ |
+ +--- /some/
+ | |
+ | +--- read
+ | |
+ | +--- read_write
+ +--- none
+\end{verbatim}
+
+This property describes the read/write accessibility of the image extended
+border values.
Index: doc/tutorial/design/include/imagetours.tex
--- doc/tutorial/design/include/imagetours.tex (revision 0)
+++ doc/tutorial/design/include/imagetours.tex (revision 0)
@@ -0,0 +1,299 @@
+%% Outline:
+%% This file gives a quick overview of the following image types:
+
+%% image2d<T>
+%% mmap_image2d<T>
+%% file_image2d<T>
+%% tiled_image
+%% fun_image<S,F>
+%% flat_image<S,T>
+%% pkey_image<P,T>
+%% pvkeys_image<P,T>
+
+%% graph-based images...
+
+%% rle_image<P,T>
+%% sparse_image<P, T>
+%% value_enc_image<P, T>
+
+%% f_image<F,I>
+%% f_images<F,n,I>
+%% lut_image<I,T>
+
+%% sub_image
+%% image_if
+%% hexa<I>
+%% translated_image
+
+
+\section{Images tour}
+
+\subsection{Introduction}
+
+
+In the Milena library, an image can be seen as an application
+$site$ to $value$.
+A $site$ is a localized object in space.
+Points in $1D$, $2D$ or $3D$, are the sites objects commonly used in the
+library.
+However, the $site$ concept allows Milena to deal with complicated image type
+(for instance see the \verb+graph_image+ type).
+
+So, an image is composed by a set of localized objects, $sites$, that
+compose the definition domain of the image.
+A value is associated to each site of the image. This is the destination domain
+of the image.
+To access to a value of an image nammed $ima$ localized at the point p, we
+just use the mathematic notation: \verb+ima(p)+.
+
+Obviously, every image types of Milena provide an access $site$ to $value$,
+through \verb+ima(p)+. Yet, depending on the image type, the values can be
+stored in different way in memory.
+For instance, in the \verb+image2d+, all the values are stored directly in a
+memory buffer.
+On the contrary, some images compress the space taken by the destination set
+like the \verb+rle_image+.
+These images use runs.
+A run is a succession of points that share the same value. It is encoded by
+a point (the beginning of the run), and an integer (the length of the run).
+Runs allows \verb+rle_image+ to gain space in memory.\\
+
+%% Explain what is a run
+
+%% Explain the different template parameters T/S/F...
+All the image types are parametrized by different static parameters.
+In this document, we will used the following namming convention for the
+image types parameters:
+\begin{itemize}
+\item{\verb+T+:} represents an image value type.
+\item{\verb+S+:} represents a type of a $sites$ set.
+\item{\verb+F+:} is a type of a function $site$ to $value$.
+\item{\verb+P+:} represents a $site$ type.
+\item{\verb+I+:} represents an image type.
+\end{itemize}
+
+\subsection{Primary images}
+
+%% Primary image definition
+
+Primary images are a major category of Milena image type.
+Primary images are not based on another image type.
+They are sufficient to define themselves.
+Thus, a primary image types directly holds in memory its data (values).
+
+
+\begin{itemize}
+
+\item{\verb+image2d<T>+}: rectangular images based on a 2d grid with all its
+values stored in a buffer in memory. An extended domain is added to the image
+domain.
+
+Related image type: \verb+image1d<T>+, \verb+image3d<T>+.
+
+
+\item{\verb+mmap_image2d<T>+:} this image2d-like type has its values data
+``memory mapped''.
+
+Related image types: \verb+mmap_image1d<T>+, \verb+mmap_image3d<T>+.
+
+\item{\verb+file_image2d<T>+:} this image2d-like type has its values data
+stored in a file.
+
+Related image types: \verb+file_image1d<T>+, \verb+file_image3d<T>+.
+
+\item{\verb+tiled_image<T>+:} FIXME.
+
+\item{\verb+fun_image<S, F>+:} image type defined by a domain \verb+S+ and a
+function f of type \verb+F+: $site \rightarrow value$.
+f associates some values to each site composing the image.
+
+\item{\verb+flat_image<S, T>+:} defined by a domain and a value $v$.
+All the sites composing a flat image share the same value $v$.
+
+\item{\verb+pkey_image<P, T>+:} defined by couples $(p,v)$ where the $site$ p
+is a key to retrieve the values v. A map, a sorted associative container, is
+used to store the couples $(p,v)$.
+
+\item{\verb+pvkeys_image<P, T>+:} defined by couples $(p,v)$ where the site p is a key, and at the same time, coherently maintaining couples
+($v$, list of $p$) where the value v is the key.
+
+
+%% FIXME Graph Image
+\item{\verb+graph_image+:} FIXME
+
+%% FIXME what is a run...
+\item{\verb+rle_image<P, T>+:} defined by couples $(r, v)$, where $r$ is a run
+and $v$ a value. A value is associated to each run.
+
+\item{\verb+sparse_image<P, T>+:} defined by couples ($r$, list of $v$) where a
+run $r$ is associated to a list of values. A value is associated to each
+point composing a run.
+
+\item{\verb+value_enc_image<P, T>+:} defined by couples ($v$, list of $r$).
+A list of run is associated to every values composing the image. This is a
+value-driven image.
+
+\end{itemize}
+
+\subsection{Morphers}
+
+%% Morpher definition
+A morpher transforms a type into another one.
+It can be seen as an extension of the decorator design pattern.
+Morphers are a non-intrusive way to add or modify some behaviors in an
+existing class.
+Here, the image morphers rest upon another image (the input image(s) which
+will be transformed).
+Since, it extends an image, an image morpher is also an image type.
+
+The Milena library provide different kinds of morphers.
+Domain morphers only modify the domain (the set of points/sites composing the image) of the input image.
+Value morphers only change the input image values (cast the values into another
+type\ldots{})
+Identity morphers don't modify either the definition domain or the image
+values.
+
+
+
+\subsubsection{Domain morphers}
+
+\begin{itemize}
+
+\item{\verb+sub_image<I, S>+:} restrict an image to a given sites set.
+
+\item{\verb+image_if<I, F>+:} restrict the input image domain to all the image
+sites that satisfy a condition expressed by a function.
+
+\item{\verb+hexa<I>+:} make a hexagonal mesh of the input image (the input
+image must be an image in two dimension).
+
+\item{\verb+translated image<I, T>+:} apply a translation of $dp$, a given
+delta-point to all the sites composing the input image.
+\end{itemize}
+
+\subsubsection{Value morphers}
+
+\begin{itemize}
+
+\item{\verb+f_image<F, I>+:} transform the image values through a "function".
+
+\item{\verb+f_images<F, n, I>+:} takes $n$ values from $n$ input images,
+and transform them through a function (that return only one value).
+
+\item{\verb+lut_image<I, T>+:} use a translation table, to do a binding between the input image values and the morpher output values.
+
+\end{itemize}
+
+
+\subsubsection{Identity morphers}
+
+\begin{itemize}
+\item FIXME...
+\end{itemize}
+
+
+\subsection{Data access:}
+
+\begin{tabular}{ccl}
+
+image type & ima(p) & Details\\
+\hline
+
+\verb+image2d<T>+ &
+\lstinline+values[p.row][p.col]+ &
+\verb+values+ is a buffer containing all the image\\
+&
+&
+values.\\
+
+\\
+
+\verb+fun_image<S, F>+ &
+\lstinline+f(p)+ &
+\verb+f+ is the function associated to the image.\\
+
+\verb+flat_image<T>+ &
+\lstinline+v+ &
+\verb+v+ is the flat value.\\
+
+\\
+
+\verb+pkey_image<P, T>+ &
+\lstinline+map[p]+ &
+\verb+map+ is a table that associates a value to\\
+&
+&
+each key \verb+p+.\\
+
+\verb+pkeys_image<P, T>+ &
+\lstinline+map[p]+ &
+same as \verb+pkey_image<P, T>+.\\
+
+\\
+
+\verb+rle_image<P, T>+ &
+\lstinline+values[r.in_index()]+ &
+\verb+values+ is an array that associates a value\\
+&
+&
+to each run.\\
+&
+&
+\verb+in_index+ returns the index of the run in\\
+&
+&
+the image.\\
+
+\verb+sparse_image<P, T>+ &
+\lstinline+values[r.in_index()][r.out_index()]+ &
+\verb+values+ is an 2D array that associates a\\
+&
+&
+value to each point in a run.\\
+&
+&
+\verb+in_index+ returns the index of the run in\\
+&
+&
+the image.\\
+&
+&
+\verb+out_index+ returns the index of the current\\
+&
+&
+point in the run.\\
+
+\verb+value_enc_image<P, T>+ &
+\lstinline+values[r.in_index()]+ &
+\verb+values+ is an array that associates a values\\
+&
+&
+to each run.\\
+
+\\
+
+\verb+f_image<F, I>+ &
+\lstinline+f(ref(p))+ &
+\verb+f+ is the function associated to the morpher.\\
+&
+&
+\verb+ref+ is the underlying image.\\
+
+\verb+f_images<F, n, I>+ &
+\lstinline+f(ref_1(p), ref_2(p), ... ref_n(p))+ &
+\verb+f+ is the function associated to the morpher.\\
+&
+&
+\verb+ref_n+ are the underlying images.\\
+
+
+\verb+lut_image<I, T>+ &
+\lstinline+lut[ref(p)]+ &
+\verb+lut+ is the morpher translation table.\\
+&
+&
+\verb+ref_n+ are the underlying images.\\
+
+\end{tabular}
+
+
Index: doc/tutorial/design/design.tex
--- doc/tutorial/design/design.tex (revision 0)
+++ doc/tutorial/design/design.tex (revision 0)
@@ -0,0 +1,52 @@
+\documentclass{article}
+
+%% Packages
+\usepackage{latexsym}
+\usepackage{exscale}
+\usepackage{amssymb}
+\usepackage{amsbsy}
+\usepackage{epstopdf}
+\usepackage{graphicx}
+\usepackage{makeidx}
+%%\usepackage{placeins}
+\usepackage{amsmath}
+\usepackage{color}
+\usepackage{listings}
+%%\usepackage[all]{hypcap}
+
+\title{Milena - Images and properties}
+\author{LRDE}
+\date{}
+
+\makeindex
+%%\usepackage[nottoc, notlof, notlot]{tocbibind}
+
+\lstset{
+ frame=single,
+ basicstyle=\ttfamily,
+ framexleftmargin=1mm,
+ xleftmargin=1mm,
+ framexrightmargin=1mm,
+ xrightmargin=1mm,
+ language=C++,
+ basicstyle=\small,
+ keywordstyle=\color{blue}\bfseries,
+ commentstyle=\color{red}\textit,
+ stringstyle=\color{green}\ttfamily
+}
+
+%%%LISTINGS SETTINGS
+
+
+
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\include{include/imagetours}
+\include{include/properties}
+
+\end{document}
Index: doc/tutorial/design/Makefile
--- doc/tutorial/design/Makefile (revision 0)
+++ doc/tutorial/design/Makefile (revision 0)
@@ -0,0 +1,29 @@
+FILE = design.tex
+FILEGEN = $(FILE:.tex=.pdf)
+SOURCE =
+PDFLATEX = pdflatex
+
+FIND=find .
+RM=rm
+RMOPT=-rf
+
+all: pdf
+
+light: $(FILE) $(SOURCE)
+ $(PDFLATEX) $(FILE)
+
+pdf: $(FILE) $(SOURCE)
+ $(PDFLATEX) $(FILE)
+ $(PDFLATEX) $(FILE)
+ $(PDFLATEX) $(FILE)
+
+clean:
+ $(FIND) \( -name '*.toc' -o -name '*.aux' -o -name '*.bat' \) \
+ -exec $(RM) $(RMOPT) {} \;
+ $(FIND) \( -name '*.glo' -o -name '*.log' -o -name '*.out' \) \
+ -exec $(RM) $(RMOPT) {} \;
+ $(FIND) \( -name '#*' -o -name '*.aux' -o -name '*~' \
+ -o -name '*.idx' \) -exec $(RM) $(RMOPT) {} \;
+
+distclean: clean
+ $(RM) $(RMOPT) $(FILEGEN)
Index: doc/tutorial/images_tour.txt
Index: sandbox/ballas/doc/image_tours.txt
--- sandbox/ballas/doc/image_tours.txt (revision 2528)
+++ sandbox/ballas/doc/image_tours.txt (working copy)
@@ -47,7 +47,7 @@
Some operators are only defined in special cases. Properties provide a way to
check that the operator's input types respect the operator requirements.
-frf
+
*** Specialization of an Algorithm
Example: