
* headers.mk: add new headers to distribution. * mln/algebra/quat.hh: add a new overload of rotate(). * mln/canvas/labeling/level.hh, * mln/canvas/labeling.hh: handle labeling abortion with trace::warning. * mln/core/internal/graph_psite_base.hh: remove a useless forward declaration. * mln/io/raw/all.hh: Rewrite, completely wrong... * mln/accu/compute.hh, * mln/core/image/tr_image.hh, * mln/core/site_set/p_queue.hh, * mln/io/raw/load.hh, * mln/io/raw/save.hh, * mln/value/shell.hh: update doc. * mln/math/jacobi.hh: add missing casts and fix a bug with macros and missing semicolons in for loops. * tests/unit_test/Makefile.am, * tests/unit_test/mln_convert_impl_from_site_set_to_image.cc, * tests/unit_test/mln_core_image_p2p_image.cc, * tests/unit_test/mln_core_image_slice_image.cc, * tests/unit_test/mln_debug_slices_2d.cc, * tests/unit_test/mln_fun_p2p_all.cc, * tests/unit_test/mln_fun_p2p_translation.cc, * tests/unit_test/mln_level_sort_offsets.cc: add new unit tests. --- milena/ChangeLog | 36 ++++++++++++++++++++ milena/headers.mk | 7 ++++ milena/mln/accu/compute.hh | 4 +- milena/mln/algebra/quat.hh | 24 ++++++++++--- milena/mln/canvas/labeling.hh | 4 +-- milena/mln/core/alias/point3d.hh | 1 + milena/mln/core/image/tr_image.hh | 22 +++++------- milena/mln/core/internal/graph_psite_base.hh | 4 -- milena/mln/core/site_set/p_queue.hh | 2 +- milena/mln/io/raw/all.hh | 23 ++++++------ milena/mln/io/raw/load.hh | 1 + milena/mln/io/raw/save.hh | 2 + milena/mln/labeling/level.hh | 2 - milena/mln/math/jacobi.hh | 25 ++++++++++--- milena/mln/value/shell.hh | 2 +- milena/tests/unit_test/Makefile.am | 14 ++++++++ .../mln_convert_impl_from_site_set_to_image.cc | 11 ++++++ milena/tests/unit_test/mln_core_image_p2p_image.cc | 11 ++++++ .../tests/unit_test/mln_core_image_slice_image.cc | 11 ++++++ milena/tests/unit_test/mln_debug_slices_2d.cc | 11 ++++++ milena/tests/unit_test/mln_fun_p2p_all.cc | 11 ++++++ milena/tests/unit_test/mln_fun_p2p_translation.cc | 11 ++++++ milena/tests/unit_test/mln_level_sort_offsets.cc | 11 ++++++ 23 files changed, 200 insertions(+), 50 deletions(-) create mode 100644 milena/tests/unit_test/mln_convert_impl_from_site_set_to_image.cc create mode 100644 milena/tests/unit_test/mln_core_image_p2p_image.cc create mode 100644 milena/tests/unit_test/mln_core_image_slice_image.cc create mode 100644 milena/tests/unit_test/mln_debug_slices_2d.cc create mode 100644 milena/tests/unit_test/mln_fun_p2p_all.cc create mode 100644 milena/tests/unit_test/mln_fun_p2p_translation.cc create mode 100644 milena/tests/unit_test/mln_level_sort_offsets.cc diff --git a/milena/ChangeLog b/milena/ChangeLog index d4ee97a..cdee4a7 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,5 +1,41 @@ 2009-02-02 Guillaume Lazzara <z@lrde.epita.fr> + Various small fixes. + + * headers.mk: add new headers to distribution. + + * mln/algebra/quat.hh: add a new overload of rotate(). + + * mln/canvas/labeling/level.hh, + * mln/canvas/labeling.hh: handle labeling abortion with + trace::warning. + + * mln/core/internal/graph_psite_base.hh: remove a useless forward + declaration. + + * mln/io/raw/all.hh: Rewrite, completely wrong... + + * mln/accu/compute.hh, + * mln/core/image/tr_image.hh, + * mln/core/site_set/p_queue.hh, + * mln/io/raw/load.hh, + * mln/io/raw/save.hh, + * mln/value/shell.hh: update doc. + + * mln/math/jacobi.hh: add missing casts and fix a bug with macros and + missing semicolons in for loops. + + * tests/unit_test/Makefile.am, + * tests/unit_test/mln_convert_impl_from_site_set_to_image.cc, + * tests/unit_test/mln_core_image_p2p_image.cc, + * tests/unit_test/mln_core_image_slice_image.cc, + * tests/unit_test/mln_debug_slices_2d.cc, + * tests/unit_test/mln_fun_p2p_all.cc, + * tests/unit_test/mln_fun_p2p_translation.cc, + * tests/unit_test/mln_level_sort_offsets.cc: add new unit tests. + +2009-02-02 Guillaume Lazzara <z@lrde.epita.fr> + Add a new overload of make::image3d. * mln/make/image3d.hh: create an image3d from a single image. diff --git a/milena/headers.mk b/milena/headers.mk index bb97122..d109eb7 100644 --- a/milena/headers.mk +++ b/milena/headers.mk @@ -181,6 +181,8 @@ mln/fun/p2b/all.hh \ mln/fun/p2b/has.hh \ mln/fun/p2b/big_chess.hh \ mln/fun/p2b/essential.hh \ +mln/fun/p2p/all.hh \ +mln/fun/p2p/translation.hh \ mln/fun/p2p/mirror.hh \ mln/fun/x2p/closest_point.hh \ mln/fun/x2p/all.hh \ @@ -274,6 +276,7 @@ mln/convert/from_to.hh \ mln/convert/impl/from_value_to_value.hh \ mln/convert/impl/all.hh \ mln/convert/impl/from_double_to_value.hh \ +mln/convert/impl/from_site_set_to_image.hh \ mln/convert/impl/from_image_to_site_set.hh \ mln/convert/impl/from_float_to_value.hh \ mln/convert/impl/from_int_to_value.hh \ @@ -397,6 +400,7 @@ mln/accu/line.hh \ mln/accu/essential.hh \ mln/accu/max_h.hh \ mln/level/compare.hh \ +mln/level/sort_offsets.hh \ mln/level/transform_inplace.hh \ mln/level/replace.hh \ mln/level/apply.hh \ @@ -931,6 +935,8 @@ mln/core/image/image_if.hh \ mln/core/image/hexa.hh \ mln/core/image/line_graph_elt_neighborhood.hh \ mln/core/image/extended.hh \ +mln/core/image/p2p_image.hh \ +mln/core/image/slice_image.hh \ mln/core/image/image2d_h.hh \ mln/core/image/image2d.hh \ mln/core/image/ch_piter.hh \ @@ -1035,6 +1041,7 @@ mln/debug/all.hh \ mln/debug/println_with_border.hh \ mln/debug/println.spe.hh \ mln/debug/colorize.hh \ +mln/debug/slices_2d.hh \ mln/debug/draw_graph.hh \ mln/debug/put_word.hh \ mln/debug/quiet.hh \ diff --git a/milena/mln/accu/compute.hh b/milena/mln/accu/compute.hh index 69af068..a632fa8 100644 --- a/milena/mln/accu/compute.hh +++ b/milena/mln/accu/compute.hh @@ -86,7 +86,7 @@ namespace mln namespace generic { - + template <typename A, typename I> mln_result(A) compute(const Accumulator<A>&, const Image<I>& input_) @@ -106,7 +106,7 @@ namespace mln } } // end of namespace mln::accu::impl::generic - + } // end of namespace mln::accu::impl diff --git a/milena/mln/algebra/quat.hh b/milena/mln/algebra/quat.hh index 13590d0..9dee769 100644 --- a/milena/mln/algebra/quat.hh +++ b/milena/mln/algebra/quat.hh @@ -32,6 +32,8 @@ /// \file mln/algebra/quat.hh /// /// Define a class for quaternion algebra values. +/// +/// \todo Inline computations in rotate routine. # include <cmath> @@ -194,8 +196,10 @@ namespace mln quat& set_unit(); /// Rotate using quaternion definition of a rotation - template <unsigned n> - algebra::vec<n,float> rotate(const algebra::vec<n,float>& v); + template <unsigned n, typename T> + algebra::vec<n,float> rotate(const algebra::vec<n,T>& v) const; + + quat rotate(const quat& q) const; /// Transform into unit quaternion. template <typename T> @@ -257,7 +261,6 @@ namespace mln quat slerp_5(const quat& p, const quat& q, float h); - # ifndef MLN_INCLUDE_ONLY // Constructors. @@ -482,14 +485,24 @@ namespace mln set_unit(theta(), uv); } - template <unsigned n> + template <unsigned n, typename T> inline algebra::vec<n,float> - quat::rotate(const algebra::vec<n,float>& v) + quat::rotate(const algebra::vec<n,T>& v) const { + mln_precondition(is_unit()); return ((*this) * quat(0. ,v) * (*this).inv()).v(); } + inline + quat quat::rotate(const quat& q) const + { + mln_precondition(this->is_unit()); + mln_precondition(q.is_pure()); + return (*this) * q * this->inv(); + } + + // Operators. inline @@ -655,7 +668,6 @@ namespace mln return tmp; } - # endif // ! MLN_INCLUDE_ONLY } // end of namespace mln::algebra diff --git a/milena/mln/canvas/labeling.hh b/milena/mln/canvas/labeling.hh index f6a5299..c8a9e5c 100644 --- a/milena/mln/canvas/labeling.hh +++ b/milena/mln/canvas/labeling.hh @@ -124,7 +124,6 @@ namespace mln // Output. mln_ch_value(I, L) output; - bool status; // Initialization. { @@ -181,7 +180,7 @@ namespace mln { if (nlabels == mln_max(L)) { - status = false; + trace::warning("labeling aborted!"); return output; } output(p) = ++nlabels; @@ -190,7 +189,6 @@ namespace mln else output(p) = output(parent(p)); } - status = true; } trace::exiting("canvas::impl::generic::labeling"); diff --git a/milena/mln/core/alias/point3d.hh b/milena/mln/core/alias/point3d.hh index ff88b5d..7ffac8f 100644 --- a/milena/mln/core/alias/point3d.hh +++ b/milena/mln/core/alias/point3d.hh @@ -55,6 +55,7 @@ namespace mln template <typename C, typename E> struct subject_impl< const point<grid::cube, C>, E > + : subject_point_impl< point<grid::cube, C>, E > { typedef C coord; enum { dim = 3 }; diff --git a/milena/mln/core/image/tr_image.hh b/milena/mln/core/image/tr_image.hh index 2ace346..a0fb983 100644 --- a/milena/mln/core/image/tr_image.hh +++ b/milena/mln/core/image/tr_image.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2007 EPITA Research and Development Laboratory +// Copyright (C) 2007, 2009 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of the Olena Library. This library is free // software; you can redistribute it and/or modify it under the terms @@ -28,12 +29,10 @@ #ifndef MLN_CORE_IMAGE_TR_IMAGE_HH # define MLN_CORE_IMAGE_TR_IMAGE_HH -/*! \file mln/core/image/tr_image.hh - * - * \brief Definition of the morpher mln::tr_image presenting an image - * through a (bijective) transformation. - * - */ +/// \file mln/core/image/tr_image.hh +/// +/// Definition of the morpher mln::tr_image presenting an image +/// through a (bijective) transformation. # include <cmath> @@ -41,11 +40,10 @@ # include <mln/algebra/vec.hh> # include <mln/value/set.hh> - namespace mln { - // Fwd decl. + // Forward declaration. template <typename S, typename I, typename T> struct tr_image; namespace internal @@ -78,10 +76,8 @@ namespace mln } // end of namespace mln::trait - /*! \brief Morpher that makes an image become transformed by a given - * transformation. - * - */ + /// Morpher that makes an image become transformed by a given + /// transformation. template <typename S, typename I, typename T> struct tr_image : public mln::internal::image_identity< I, mln_pset(I), tr_image<S,I,T> > diff --git a/milena/mln/core/internal/graph_psite_base.hh b/milena/mln/core/internal/graph_psite_base.hh index d0df650..3767fd2 100644 --- a/milena/mln/core/internal/graph_psite_base.hh +++ b/milena/mln/core/internal/graph_psite_base.hh @@ -39,10 +39,6 @@ namespace mln { - // Forward declaration. - template <typename G, typename F> class p_vertices; - - namespace internal { diff --git a/milena/mln/core/site_set/p_queue.hh b/milena/mln/core/site_set/p_queue.hh index babc994..d6fc400 100644 --- a/milena/mln/core/site_set/p_queue.hh +++ b/milena/mln/core/site_set/p_queue.hh @@ -114,7 +114,7 @@ namespace mln /// Push a site \p p in the queue. void push(const P& p); - /// Insertion element associated type. + /// Insertion element associated type. typedef P i_element; /// Insert a site \p p (equivalent as 'push'). diff --git a/milena/mln/io/raw/all.hh b/milena/mln/io/raw/all.hh index c10fa1a..32d34d7 100644 --- a/milena/mln/io/raw/all.hh +++ b/milena/mln/io/raw/all.hh @@ -1,4 +1,4 @@ -// Copyright (C) 2007 EPITA Research and Development Laboratory +// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE) // // This file is part of the Olena Library. This library is free // software; you can redistribute it and/or modify it under the terms @@ -25,13 +25,12 @@ // reasons why the executable file might be covered by the GNU General // Public License. -#ifndef MLN_IO_PGM_ALL_HH -# define MLN_IO_PGM_ALL_HH +#ifndef MLN_IO_RAW_ALL_HH +# define MLN_IO_RAW_ALL_HH -/*! \file mln/io/pgm/all.hh - * - * \brief File that includes all pgm io materials. - */ +/// \file mln/io/raw/all.hh +/// +/// File that includes all raw io materials. namespace mln @@ -39,13 +38,13 @@ namespace mln namespace io { - /// Namespace of pgm input/output handling. - namespace pgm {} + /// Namespace of raw input/output handling. + namespace raw {} } } -# include <mln/io/pgm/load.hh> -# include <mln/io/pgm/save.hh> +# include <mln/io/raw/load.hh> +# include <mln/io/raw/save.hh> -#endif // ! MLN_IO_PGM_ALL_HH +#endif // ! MLN_IO_RAW_ALL_HH diff --git a/milena/mln/io/raw/load.hh b/milena/mln/io/raw/load.hh index d6e9077..eb1d789 100644 --- a/milena/mln/io/raw/load.hh +++ b/milena/mln/io/raw/load.hh @@ -98,6 +98,7 @@ namespace mln { I& ima = exact(ima_); + // Handle padding. unsigned data_size = sizeof (mln_value(I)) + sizeof (mln_value(I)) % 2; mln_box_runstart_piter(I) p(ima.domain()); diff --git a/milena/mln/io/raw/save.hh b/milena/mln/io/raw/save.hh index 83b8fab..06c1f7d 100644 --- a/milena/mln/io/raw/save.hh +++ b/milena/mln/io/raw/save.hh @@ -31,6 +31,7 @@ /// \file mln/io/raw/save.hh /// /// Save a Milena image by dumping its data to a file. +/// \todo handle endianness. # include <iostream> # include <fstream> @@ -82,6 +83,7 @@ namespace mln inline void save_data(I& ima, std::ofstream& file) { + // Handle padding. unsigned data_size = sizeof (mln_value(I)) + sizeof (mln_value(I)) % 2; mln_box_runstart_piter(I) p(ima.domain()); diff --git a/milena/mln/labeling/level.hh b/milena/mln/labeling/level.hh index 8e373ea..17850bc 100644 --- a/milena/mln/labeling/level.hh +++ b/milena/mln/labeling/level.hh @@ -171,8 +171,6 @@ namespace mln level_functor<I> f(input, val); mln_ch_value(I, L) output = canvas::labeling(input, nbh, f, nlabels); - // FIXME: Handle canvas status. - trace::exiting("labeling::impl::generic::level"); return output; } diff --git a/milena/mln/math/jacobi.hh b/milena/mln/math/jacobi.hh index 0992098..a09e07b 100644 --- a/milena/mln/math/jacobi.hh +++ b/milena/mln/math/jacobi.hh @@ -45,17 +45,19 @@ namespace mln namespace math { - algebra::quat jacobi(algebra::mat < 4, 4, float >a); + algebra::quat + jacobi(algebra::mat<4u,4u,float> a); # ifndef MLN_INCLUDE_ONLY // FIXME: nD ? #define rotateJacobi(a,i,j,k,l) g=a(i,j);h=a(k,l);a(i,j)=g-s*(h+g*tau); \ - a(k,l)=h+s*(g-h*tau) + a(k,l)=h+s*(g-h*tau); - algebra::quat jacobi(algebra::mat < 4, 4, float >a) + algebra::quat + jacobi(algebra::mat<4u,4u,float> a) { float dd, d[4]; algebra::mat < 4, 4, float >v(literal::zero); @@ -106,13 +108,13 @@ namespace mln for (iq = ip + 1; iq < 4; iq++) { g = 100.0f * std::fabs(a(ip, iq)); - if (i > 4 && std::fabs(d[ip]) + g == std::fabs(d[ip]) - && std::fabs(d[iq]) + g == std::fabs(d[iq])) + if (i > 4 && (float)(std::fabs(d[ip]) + g) == (float)std::fabs(d[ip]) + && (float)(std::fabs(d[iq]) + g) == (float)std::fabs(d[iq])) a(ip, iq) = 0.0f; else if (std::fabs(a(ip, iq)) > tresh) { h = d[iq] - d[ip]; - if (std::fabs(h) + g == std::fabs(h)) // unsafe? + if ((float)(std::fabs(h) + g) == (float)std::fabs(h)) // unsafe? t = (a(ip, iq)) / h; else { @@ -131,14 +133,25 @@ namespace mln d[ip] -= h; d[iq] += h; a(ip, iq) = 0.0; + + // DO *NOT* remove these semicolons!! + // rotateJacobi is a macro with 4 function calls. for (j = 0; j <= ip - 1; j++) + { rotateJacobi(a, j, ip, j, iq); + } for (j = ip + 1; j <= iq - 1; j++) + { rotateJacobi(a, ip, j, j, iq); + } for (j = iq + 1; j < 4; j++) + { rotateJacobi(a, ip, j, iq, j); + } for (j = 0; j < 4; j++) + { rotateJacobi(v, j, ip, j, iq); + } } } } diff --git a/milena/mln/value/shell.hh b/milena/mln/value/shell.hh index 31799f4..e55b210 100644 --- a/milena/mln/value/shell.hh +++ b/milena/mln/value/shell.hh @@ -115,7 +115,7 @@ namespace mln // Ctor template <typename F, typename I> - shell<F,I>::shell(Image<I> &ima, const mln_site(I) &s) + shell<F,I>::shell(Image<I>& ima, const mln_site(I)& s) : ima_(exact(ima)), s_(s), v_(F()(exact(ima)(s))) { } diff --git a/milena/tests/unit_test/Makefile.am b/milena/tests/unit_test/Makefile.am index 09177d7..9ad9c7c 100644 --- a/milena/tests/unit_test/Makefile.am +++ b/milena/tests/unit_test/Makefile.am @@ -178,6 +178,8 @@ mln_fun_p2b_all \ mln_fun_p2b_has \ mln_fun_p2b_big_chess \ mln_fun_p2b_essential \ +mln_fun_p2p_all \ +mln_fun_p2p_translation \ mln_fun_p2p_mirror \ mln_fun_x2p_closest_point \ mln_fun_x2p_all \ @@ -271,6 +273,7 @@ mln_convert_from_to \ mln_convert_impl_from_value_to_value \ mln_convert_impl_all \ mln_convert_impl_from_double_to_value \ +mln_convert_impl_from_site_set_to_image \ mln_convert_impl_from_image_to_site_set \ mln_convert_impl_from_float_to_value \ mln_convert_impl_from_int_to_value \ @@ -393,6 +396,7 @@ mln_accu_line \ mln_accu_essential \ mln_accu_max_h \ mln_level_compare \ +mln_level_sort_offsets \ mln_level_transform_inplace \ mln_level_replace \ mln_level_apply \ @@ -902,6 +906,8 @@ mln_core_image_image_if \ mln_core_image_hexa \ mln_core_image_line_graph_elt_neighborhood \ mln_core_image_extended \ +mln_core_image_p2p_image \ +mln_core_image_slice_image \ mln_core_image_image2d_h \ mln_core_image_image2d \ mln_core_image_ch_piter \ @@ -999,6 +1005,7 @@ mln_debug_iota \ mln_debug_all \ mln_debug_println_with_border \ mln_debug_colorize \ +mln_debug_slices_2d \ mln_debug_draw_graph \ mln_debug_put_word \ mln_debug_quiet \ @@ -1212,6 +1219,8 @@ 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_all_SOURCES = mln_fun_p2p_all.cc +mln_fun_p2p_translation_SOURCES = mln_fun_p2p_translation.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_all_SOURCES = mln_fun_x2p_all.cc @@ -1305,6 +1314,7 @@ 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_double_to_value_SOURCES = mln_convert_impl_from_double_to_value.cc +mln_convert_impl_from_site_set_to_image_SOURCES = mln_convert_impl_from_site_set_to_image.cc mln_convert_impl_from_image_to_site_set_SOURCES = mln_convert_impl_from_image_to_site_set.cc mln_convert_impl_from_float_to_value_SOURCES = mln_convert_impl_from_float_to_value.cc mln_convert_impl_from_int_to_value_SOURCES = mln_convert_impl_from_int_to_value.cc @@ -1427,6 +1437,7 @@ 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_sort_offsets_SOURCES = mln_level_sort_offsets.cc mln_level_transform_inplace_SOURCES = mln_level_transform_inplace.cc mln_level_replace_SOURCES = mln_level_replace.cc mln_level_apply_SOURCES = mln_level_apply.cc @@ -1936,6 +1947,8 @@ 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_line_graph_elt_neighborhood_SOURCES = mln_core_image_line_graph_elt_neighborhood.cc mln_core_image_extended_SOURCES = mln_core_image_extended.cc +mln_core_image_p2p_image_SOURCES = mln_core_image_p2p_image.cc +mln_core_image_slice_image_SOURCES = mln_core_image_slice_image.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 @@ -2033,6 +2046,7 @@ 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_slices_2d_SOURCES = mln_debug_slices_2d.cc mln_debug_draw_graph_SOURCES = mln_debug_draw_graph.cc mln_debug_put_word_SOURCES = mln_debug_put_word.cc mln_debug_quiet_SOURCES = mln_debug_quiet.cc diff --git a/milena/tests/unit_test/mln_convert_impl_from_site_set_to_image.cc b/milena/tests/unit_test/mln_convert_impl_from_site_set_to_image.cc new file mode 100644 index 0000000..6af7096 --- /dev/null +++ b/milena/tests/unit_test/mln_convert_impl_from_site_set_to_image.cc @@ -0,0 +1,11 @@ +// Unit test for mln/convert/impl/from_site_set_to_image.hh. +// Generated by ./build_unit_test.sh, do not modify. + +// Include the file twice, so we detect missing inclusion guards. +#include <mln/convert/impl/from_site_set_to_image.hh> +#include <mln/convert/impl/from_site_set_to_image.hh> + +int main() +{ + // Nothing. +} diff --git a/milena/tests/unit_test/mln_core_image_p2p_image.cc b/milena/tests/unit_test/mln_core_image_p2p_image.cc new file mode 100644 index 0000000..83595eb --- /dev/null +++ b/milena/tests/unit_test/mln_core_image_p2p_image.cc @@ -0,0 +1,11 @@ +// Unit test for mln/core/image/p2p_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/p2p_image.hh> +#include <mln/core/image/p2p_image.hh> + +int main() +{ + // Nothing. +} diff --git a/milena/tests/unit_test/mln_core_image_slice_image.cc b/milena/tests/unit_test/mln_core_image_slice_image.cc new file mode 100644 index 0000000..2f52ab1 --- /dev/null +++ b/milena/tests/unit_test/mln_core_image_slice_image.cc @@ -0,0 +1,11 @@ +// Unit test for mln/core/image/slice_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/slice_image.hh> +#include <mln/core/image/slice_image.hh> + +int main() +{ + // Nothing. +} diff --git a/milena/tests/unit_test/mln_debug_slices_2d.cc b/milena/tests/unit_test/mln_debug_slices_2d.cc new file mode 100644 index 0000000..d74679f --- /dev/null +++ b/milena/tests/unit_test/mln_debug_slices_2d.cc @@ -0,0 +1,11 @@ +// Unit test for mln/debug/slices_2d.hh. +// Generated by ./build_unit_test.sh, do not modify. + +// Include the file twice, so we detect missing inclusion guards. +#include <mln/debug/slices_2d.hh> +#include <mln/debug/slices_2d.hh> + +int main() +{ + // Nothing. +} diff --git a/milena/tests/unit_test/mln_fun_p2p_all.cc b/milena/tests/unit_test/mln_fun_p2p_all.cc new file mode 100644 index 0000000..f64c24e --- /dev/null +++ b/milena/tests/unit_test/mln_fun_p2p_all.cc @@ -0,0 +1,11 @@ +// Unit test for mln/fun/p2p/all.hh. +// Generated by ./build_unit_test.sh, do not modify. + +// Include the file twice, so we detect missing inclusion guards. +#include <mln/fun/p2p/all.hh> +#include <mln/fun/p2p/all.hh> + +int main() +{ + // Nothing. +} diff --git a/milena/tests/unit_test/mln_fun_p2p_translation.cc b/milena/tests/unit_test/mln_fun_p2p_translation.cc new file mode 100644 index 0000000..5a1da3a --- /dev/null +++ b/milena/tests/unit_test/mln_fun_p2p_translation.cc @@ -0,0 +1,11 @@ +// Unit test for mln/fun/p2p/translation.hh. +// Generated by ./build_unit_test.sh, do not modify. + +// Include the file twice, so we detect missing inclusion guards. +#include <mln/fun/p2p/translation.hh> +#include <mln/fun/p2p/translation.hh> + +int main() +{ + // Nothing. +} diff --git a/milena/tests/unit_test/mln_level_sort_offsets.cc b/milena/tests/unit_test/mln_level_sort_offsets.cc new file mode 100644 index 0000000..a32249e --- /dev/null +++ b/milena/tests/unit_test/mln_level_sort_offsets.cc @@ -0,0 +1,11 @@ +// Unit test for mln/level/sort_offsets.hh. +// Generated by ./build_unit_test.sh, do not modify. + +// Include the file twice, so we detect missing inclusion guards. +#include <mln/level/sort_offsets.hh> +#include <mln/level/sort_offsets.hh> + +int main() +{ + // Nothing. +} -- 1.5.6.5