https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Add extra documentation to milena.
* mln/debug/all.hh,
* mln/level/all.hh,
* mln/value/all.hh: New facade files.
* mln/debug/println.hh,
* mln/level/fill.hh,
* mln/level/compare.hh,
* mln/level/paste.hh,
* mln/value/props.hh: Add documentation.
debug/all.hh | 50 ++++++++++++++++++++++++++++++++++++++++
debug/println.hh | 10 ++++----
level/all.hh | 53 ++++++++++++++++++++++++++++++++++++++++++
level/compare.hh | 32 +++++++++++++++++++++++++
level/fill.hh | 68 +++++++++++++++++++++++++++++++++++++++++++++++--------
level/paste.hh | 22 +++++++++++++++++
value/all.hh | 51 +++++++++++++++++++++++++++++++++++++++++
value/props.hh | 16 ++++++++++++
8 files changed, 289 insertions(+), 13 deletions(-)
Index: mln/debug/println.hh
--- mln/debug/println.hh (revision 998)
+++ mln/debug/println.hh (working copy)
@@ -28,6 +28,11 @@
#ifndef MLN_DEBUG_PRINTLN_HH
# define MLN_DEBUG_PRINTLN_HH
+/*! \file mln/debug/println.hh
+ *
+ * \brief Print an image on the standard output.
+ */
+
# include <mln/core/concept/image.hh>
# include <mln/core/concept/window.hh>
# include <mln/core/box2d.hh>
@@ -39,13 +44,10 @@
namespace debug
{
+ /// Print the image \p input on the standard output.
template <typename I>
void println(const Image<I>& input);
- template <typename I, typename W>
- void println(const Image<I>& input_,
- const Window<W>& win_);
-
# ifndef MLN_INCLUDE_ONLY
Index: mln/debug/all.hh
--- mln/debug/all.hh (revision 0)
+++ mln/debug/all.hh (revision 0)
@@ -0,0 +1,50 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_DEBUG_ALL_HH
+# define MLN_DEBUG_ALL_HH
+
+/*! \file mln/debug/all.hh
+ *
+ * \brief File that includes all debug-related routines.
+ */
+
+
+namespace mln
+{
+
+ /*! Namespace of routines that help to debug.
+ */
+ namespace debug {}
+
+}
+
+
+# include <mln/debug/println.hh>
+
+
+#endif // ! MLN_DEBUG_ALL_HH
Index: mln/level/fill.hh
--- mln/level/fill.hh (revision 998)
+++ mln/level/fill.hh (working copy)
@@ -28,6 +28,11 @@
#ifndef MLN_LEVEL_FILL_HH
# define MLN_LEVEL_FILL_HH
+/*! \file mln/level/fill.hh
+ *
+ * \brief Fill an image, that is, set pixel values.
+ */
+
# include <mln/core/concept/image.hh>
@@ -37,23 +42,68 @@
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] v The value to assign to all pixels.
+ *
+ * \pre \p ima has to be initialized.
+ */
+ template <typename I>
+ void fill(Image<I>& ima,
+ const mln_value(I)& v);
+
+
+ /*! Fill the image \p ima by applying the function \p f.
+ *
+ * \param[in,out] ima The image to be filled.
+ * \param[in] f The function that defines the value of every pixel.
+ *
+ * The signature of \p f has to be:
+ * " value f(const point& p) "
+ *
+ * \pre \p ima has to be initialized.
+ */
template <typename I>
- void fill(Image<I>& ima_,
- const mln_value(I)& value);
-
- template <typename I>
- void fill(Image<I>& ima_,
+ void fill(Image<I>& ima,
mln_value(I) (*f)(const mln_point(I)& p));
- template <typename I>
- void fill(Image<I>& ima_,
- const mln_value(I) array[]);
+ /*! Fill the image \p ima with the values given by the array \p arr.
+ *
+ * \param[in,out] ima The image to be filled.
+ * \param[in] arr The array of values.
+ *
+ * \warning The size of the array has to be larger than the number
+ * of image points, otherwise the program crashes.
+ *
+ * \pre \p ima has to be initialized.
+ *
+ * \todo Add as parameter the array size, then add a test.
+ */
+ template <typename I>
+ void fill(Image<I>& ima,
+ const mln_value(I) arr[]);
+
+
+ /*! 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 has to be initialized.
+ *
+ * \todo Test domain inclusion.
+ */
template <typename I, typename J>
- void fill(Image<I>& ima_,
+ void fill(Image<I>& ima,
const Image<J>& data);
+
# ifndef MLN_INCLUDE_ONLY
template <typename I>
Index: mln/level/compare.hh
--- mln/level/compare.hh (revision 998)
+++ mln/level/compare.hh (working copy)
@@ -28,22 +28,54 @@
#ifndef MLN_LEVEL_COMPARE_HH
# define MLN_LEVEL_COMPARE_HH
+/*! \file mln/level/compare.hh
+ *
+ * \brief Comparison operators between the pixel values of images.
+ */
+
# include <mln/core/concept/image.hh>
namespace mln
{
+ /*! Point-wise test if the pixel values of \p lhs are equal to the
+ * pixel values of \p rhs.
+ *
+ * \param[in] lhs A first image.
+ * \param[in] rhs A second image.
+ *
+ * \todo Test domain equality.
+ */
template <typename L, typename R>
bool operator = (const Image<L>& lhs, const Image<R>& rhs);
+
+ /*! Point-wise test if the pixel values of \p lhs are point-wise
+ * less than the pixel values of \p rhs.
+ *
+ * \param[in] lhs A first image.
+ * \param[in] rhs A second image.
+ *
+ * \todo Test domain equality.
+ */
template <typename L, typename R>
bool operator < (const Image<L>& lhs, const Image<R>& rhs);
+
+ /*! Point-wise test if the pixel values of \p lhs are point-wise
+ * less than or equal to the pixel values of \p rhs.
+ *
+ * \param[in] lhs A first image.
+ * \param[in] rhs A second image.
+ *
+ * \todo Test domain equality.
+ */
template <typename L, typename R> // required!
bool operator <= (const Image<L>& lhs, const Image<R>& rhs);
+
# ifndef MLN_INCLUDE_ONLY
template <typename L, typename R>
Index: mln/level/all.hh
--- mln/level/all.hh (revision 0)
+++ mln/level/all.hh (revision 0)
@@ -0,0 +1,53 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_LEVEL_ALL_HH
+# define MLN_LEVEL_ALL_HH
+
+/*! \file mln/level/all.hh
+ *
+ * \brief File that includes all level-related routines.
+ */
+
+
+namespace mln
+{
+
+ /*! Namespace of image processing routines related to pixel levels.
+ */
+ namespace level {}
+
+}
+
+
+# include <mln/level/fill.hh>
+# include <mln/level/compare.hh>
+# include <mln/level/paste.hh>
+
+
+
+#endif // ! MLN_LEVEL_ALL_HH
Index: mln/level/paste.hh
--- mln/level/paste.hh (revision 998)
+++ mln/level/paste.hh (working copy)
@@ -28,6 +28,11 @@
#ifndef MLN_LEVEL_PASTE_HH
# define MLN_LEVEL_PASTE_HH
+/*! \file mln/level/paste.hh
+ *
+ * \brief Paste the contents of an image into another one.
+ */
+
# include <mln/core/concept/image.hh>
@@ -37,6 +42,23 @@
namespace level
{
+ /*! 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.
+ *
+ * \pre Both images have to be initialized.
+ *
+ * \todo Test domain inclusion.
+ */
template <typename I, typename J>
void paste(const Image<I>& data, Image<J>& destination);
Index: mln/value/props.hh
--- mln/value/props.hh (revision 998)
+++ mln/value/props.hh (working copy)
@@ -28,23 +28,39 @@
#ifndef MLN_VALUE_PROPS_HH
# define MLN_VALUE_PROPS_HH
+/*! \file mln/value/props.hh
+ *
+ * \brief Define properties of value types.
+ */
+
# include <climits>
# include <cfloat>
+
+/// Get the minimum value of type \c T.
# define mln_min(T) mln::value::props<T>::min()
+
+
+/// Get the maximum value of type \c T.
# define mln_max(T) mln::value::props<T>::max()
+
namespace mln
{
namespace value
{
+ /*! Class that defines the properties of the value type \c T.
+ */
template <typename T>
struct props
{
+ /// Minimum value for type \c T.
static T min();
+
+ /// Maximum value for type \c T.
static T max();
};
Index: mln/value/all.hh
--- mln/value/all.hh (revision 0)
+++ mln/value/all.hh (revision 0)
@@ -0,0 +1,51 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_VALUE_ALL_HH
+# define MLN_VALUE_ALL_HH
+
+/*! \file mln/value/all.hh
+ *
+ * \brief File that includes all "value types"-related materials.
+ */
+
+
+namespace mln
+{
+
+ /*! Namespace of materials related to ixel value types.
+ */
+ namespace value {}
+
+}
+
+
+# include <mln/value/props.hh>
+
+
+
+#endif // ! MLN_VALUE_ALL_HH
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Add copyright to milena files.
* tests/main.cc,
* mln/morpho/Rd.hh,
* mln/morpho/erosion.hh,
* mln/debug/println.hh,
* mln/level/fill.hh,
* mln/level/compare.hh,
* mln/level/paste.hh,
* mln/core/neighb2d.hh,
* mln/core/dpoint2d.hh,
* mln/core/dpoints_piter.hh,
* mln/core/macros.hh,
* mln/core/box.hh,
* mln/core/point.hh,
* mln/core/rectangle2d.hh,
* mln/core/box_piter.hh,
* mln/core/neighb.hh,
* mln/core/concept/image.hh,
* mln/core/concept/piter.hh,
* mln/core/concept/genpoint.hh,
* mln/core/concept/point_set.hh,
* mln/core/concept/psite.hh,
* mln/core/concept/object.hh,
* mln/core/concept/doc/image.hh,
* mln/core/concept/doc/genpoint.hh,
* mln/core/concept/doc/piter.hh,
* mln/core/concept/doc/point_set.hh,
* mln/core/concept/doc/object.hh,
* mln/core/concept/doc/neighborhood.hh,
* mln/core/concept/doc/window.hh,
* mln/core/concept/doc/box.hh,
* mln/core/concept/doc/iterator.hh,
* mln/core/concept/doc/dpoint.hh,
* mln/core/concept/neighborhood.hh,
* mln/core/concept/window.hh,
* mln/core/concept/box.hh,
* mln/core/concept/point.hh,
* mln/core/concept/iterator.hh,
* mln/core/concept/dpoint.hh,
* mln/core/window2d.hh,
* mln/core/dpoint.hh,
* mln/core/ops.hh,
* mln/core/exact.hh,
* mln/core/window.hh,
* mln/core/image2d.hh,
* mln/core/vec.hh,
* mln/core/contract.hh,
* mln/core/internal/coord_impl.hh,
* mln/core/internal/image_adaptor.hh,
* mln/core/internal/image_base.hh,
* mln/core/internal/set_of.hh,
* mln/core/box2d.hh,
* mln/core/point2d.hh,
* mln/core/safe_image.hh,
* mln/value/props.hh,
* mlc/equal.hh,
* mlc/same_coord.hh,
* mlc/same_point.hh,
* sandbox/cxxcompilation/test.cc: Add copyright.
mlc/equal.hh | 27 +++++++++++++++++++++++++++
mlc/same_coord.hh | 27 +++++++++++++++++++++++++++
mlc/same_point.hh | 27 +++++++++++++++++++++++++++
mln/core/box.hh | 27 +++++++++++++++++++++++++++
mln/core/box2d.hh | 27 +++++++++++++++++++++++++++
mln/core/box_piter.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/box.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/box.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/dpoint.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/genpoint.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/image.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/iterator.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/neighborhood.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/object.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/piter.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/point_set.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/doc/window.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/dpoint.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/genpoint.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/image.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/iterator.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/neighborhood.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/object.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/piter.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/point.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/point_set.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/psite.hh | 27 +++++++++++++++++++++++++++
mln/core/concept/window.hh | 27 +++++++++++++++++++++++++++
mln/core/contract.hh | 27 +++++++++++++++++++++++++++
mln/core/dpoint.hh | 27 +++++++++++++++++++++++++++
mln/core/dpoint2d.hh | 27 +++++++++++++++++++++++++++
mln/core/dpoints_piter.hh | 27 +++++++++++++++++++++++++++
mln/core/exact.hh | 27 +++++++++++++++++++++++++++
mln/core/image2d.hh | 27 +++++++++++++++++++++++++++
mln/core/internal/coord_impl.hh | 27 +++++++++++++++++++++++++++
mln/core/internal/image_adaptor.hh | 27 +++++++++++++++++++++++++++
mln/core/internal/image_base.hh | 27 +++++++++++++++++++++++++++
mln/core/internal/set_of.hh | 27 +++++++++++++++++++++++++++
mln/core/macros.hh | 27 +++++++++++++++++++++++++++
mln/core/neighb.hh | 27 +++++++++++++++++++++++++++
mln/core/neighb2d.hh | 27 +++++++++++++++++++++++++++
mln/core/ops.hh | 27 +++++++++++++++++++++++++++
mln/core/point.hh | 27 +++++++++++++++++++++++++++
mln/core/point2d.hh | 27 +++++++++++++++++++++++++++
mln/core/rectangle2d.hh | 27 +++++++++++++++++++++++++++
mln/core/safe_image.hh | 27 +++++++++++++++++++++++++++
mln/core/vec.hh | 27 +++++++++++++++++++++++++++
mln/core/window.hh | 27 +++++++++++++++++++++++++++
mln/core/window2d.hh | 27 +++++++++++++++++++++++++++
mln/debug/println.hh | 27 +++++++++++++++++++++++++++
mln/level/compare.hh | 27 +++++++++++++++++++++++++++
mln/level/fill.hh | 27 +++++++++++++++++++++++++++
mln/level/paste.hh | 27 +++++++++++++++++++++++++++
mln/morpho/Rd.hh | 27 +++++++++++++++++++++++++++
mln/morpho/erosion.hh | 27 +++++++++++++++++++++++++++
mln/value/props.hh | 27 +++++++++++++++++++++++++++
sandbox/cxxcompilation/test.cc | 27 +++++++++++++++++++++++++++
tests/main.cc | 27 +++++++++++++++++++++++++++
58 files changed, 1566 insertions(+)
Index: tests/main.cc
--- tests/main.cc (revision 997)
+++ tests/main.cc (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#include <cmath>
#include <mln/core/image2d.hh>
Index: mln/morpho/Rd.hh
--- mln/morpho/Rd.hh (revision 997)
+++ mln/morpho/Rd.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_MORPHO_RD_HH
# define MLN_MORPHO_RD_HH
Index: mln/morpho/erosion.hh
--- mln/morpho/erosion.hh (revision 997)
+++ mln/morpho/erosion.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_MORPHO_EROSION_HH
# define MLN_MORPHO_EROSION_HH
Index: mln/debug/println.hh
--- mln/debug/println.hh (revision 997)
+++ mln/debug/println.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_DEBUG_PRINTLN_HH
# define MLN_DEBUG_PRINTLN_HH
Index: mln/level/fill.hh
--- mln/level/fill.hh (revision 997)
+++ mln/level/fill.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_LEVEL_FILL_HH
# define MLN_LEVEL_FILL_HH
Index: mln/level/compare.hh
--- mln/level/compare.hh (revision 997)
+++ mln/level/compare.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_LEVEL_COMPARE_HH
# define MLN_LEVEL_COMPARE_HH
Index: mln/level/paste.hh
--- mln/level/paste.hh (revision 997)
+++ mln/level/paste.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_LEVEL_PASTE_HH
# define MLN_LEVEL_PASTE_HH
Index: mln/core/neighb2d.hh
--- mln/core/neighb2d.hh (revision 997)
+++ mln/core/neighb2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_NEIGHB2D_HH
# define MLN_CORE_NEIGHB2D_HH
Index: mln/core/dpoint2d.hh
--- mln/core/dpoint2d.hh (revision 997)
+++ mln/core/dpoint2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_DPOINT2D_HH
# define MLN_CORE_DPOINT2D_HH
Index: mln/core/dpoints_piter.hh
--- mln/core/dpoints_piter.hh (revision 997)
+++ mln/core/dpoints_piter.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_DPOINTS_PITER_HH
# define MLN_CORE_DPOINTS_PITER_HH
Index: mln/core/macros.hh
--- mln/core/macros.hh (revision 997)
+++ mln/core/macros.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_MACROS_HH
# define MLN_CORE_MACROS_HH
Index: mln/core/box.hh
--- mln/core/box.hh (revision 997)
+++ mln/core/box.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_BOX_HH
# define MLN_CORE_BOX_HH
Index: mln/core/point.hh
--- mln/core/point.hh (revision 997)
+++ mln/core/point.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_POINT_HH
# define MLN_CORE_POINT_HH
Index: mln/core/rectangle2d.hh
--- mln/core/rectangle2d.hh (revision 997)
+++ mln/core/rectangle2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_RECTANGLE2D_HH
# define MLN_CORE_RECTANGLE2D_HH
Index: mln/core/box_piter.hh
--- mln/core/box_piter.hh (revision 997)
+++ mln/core/box_piter.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_BOX_PITER_HH
# define MLN_CORE_BOX_PITER_HH
Index: mln/core/neighb.hh
--- mln/core/neighb.hh (revision 997)
+++ mln/core/neighb.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_NEIGHB_HH
# define MLN_CORE_NEIGHB_HH
Index: mln/core/concept/image.hh
--- mln/core/concept/image.hh (revision 997)
+++ mln/core/concept/image.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_IMAGE_HH
# define MLN_CORE_CONCEPT_IMAGE_HH
Index: mln/core/concept/piter.hh
--- mln/core/concept/piter.hh (revision 997)
+++ mln/core/concept/piter.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_PITER_HH
# define MLN_CORE_CONCEPT_PITER_HH
Index: mln/core/concept/genpoint.hh
--- mln/core/concept/genpoint.hh (revision 997)
+++ mln/core/concept/genpoint.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_GENPOINT_HH
# define MLN_CORE_CONCEPT_GENPOINT_HH
Index: mln/core/concept/point_set.hh
--- mln/core/concept/point_set.hh (revision 997)
+++ mln/core/concept/point_set.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_POINT_SET_HH
# define MLN_CORE_CONCEPT_POINT_SET_HH
Index: mln/core/concept/psite.hh
--- mln/core/concept/psite.hh (revision 997)
+++ mln/core/concept/psite.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_PSITE_HH
# define MLN_CORE_CONCEPT_PSITE_HH
Index: mln/core/concept/object.hh
--- mln/core/concept/object.hh (revision 997)
+++ mln/core/concept/object.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_OBJECT_HH
# define MLN_CORE_CONCEPT_OBJECT_HH
Index: mln/core/concept/doc/image.hh
--- mln/core/concept/doc/image.hh (revision 997)
+++ mln/core/concept/doc/image.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/image.hh
* \brief This file documents the concept of mln::Image.
*/
Index: mln/core/concept/doc/genpoint.hh
--- mln/core/concept/doc/genpoint.hh (revision 997)
+++ mln/core/concept/doc/genpoint.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/genpoint.hh
* \brief This file documents the concept of mln::GenPoint.
*/
Index: mln/core/concept/doc/piter.hh
--- mln/core/concept/doc/piter.hh (revision 997)
+++ mln/core/concept/doc/piter.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/piter.hh
* \brief This file documents the concept of mln::Piter.
*/
Index: mln/core/concept/doc/point_set.hh
--- mln/core/concept/doc/point_set.hh (revision 997)
+++ mln/core/concept/doc/point_set.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/point_set.hh
* \brief This file documents the concept of mln::Point_Set.
*/
Index: mln/core/concept/doc/object.hh
--- mln/core/concept/doc/object.hh (revision 997)
+++ mln/core/concept/doc/object.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/object.hh
* \brief This file documents the concept of mln::Object.
*/
Index: mln/core/concept/doc/neighborhood.hh
--- mln/core/concept/doc/neighborhood.hh (revision 997)
+++ mln/core/concept/doc/neighborhood.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/neighborhood.hh
* \brief This file documents the concept of mln::Neighborhood.
*/
Index: mln/core/concept/doc/window.hh
--- mln/core/concept/doc/window.hh (revision 997)
+++ mln/core/concept/doc/window.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/window.hh
* \brief This file documents the concept of mln::Window.
*/
Index: mln/core/concept/doc/box.hh
--- mln/core/concept/doc/box.hh (revision 997)
+++ mln/core/concept/doc/box.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/box.hh
* \brief This file documents the concept of mln::Box.
*/
Index: mln/core/concept/doc/iterator.hh
--- mln/core/concept/doc/iterator.hh (revision 997)
+++ mln/core/concept/doc/iterator.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/iterator.hh
* \brief This file documents the concept of mln::Iterator.
*/
Index: mln/core/concept/doc/dpoint.hh
--- mln/core/concept/doc/dpoint.hh (revision 997)
+++ mln/core/concept/doc/dpoint.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
/*! \file mln/core/concept/doc/dpoint.hh
* \brief This file documents the concept of mln::Dpoint.
*/
Index: mln/core/concept/neighborhood.hh
--- mln/core/concept/neighborhood.hh (revision 997)
+++ mln/core/concept/neighborhood.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_NEIGHBORHOOD_HH
# define MLN_CORE_CONCEPT_NEIGHBORHOOD_HH
Index: mln/core/concept/window.hh
--- mln/core/concept/window.hh (revision 997)
+++ mln/core/concept/window.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_WINDOW_HH
# define MLN_CORE_CONCEPT_WINDOW_HH
Index: mln/core/concept/box.hh
--- mln/core/concept/box.hh (revision 997)
+++ mln/core/concept/box.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_BOX_HH
# define MLN_CORE_CONCEPT_BOX_HH
Index: mln/core/concept/point.hh
--- mln/core/concept/point.hh (revision 997)
+++ mln/core/concept/point.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_POINT_HH
# define MLN_CORE_CONCEPT_POINT_HH
Index: mln/core/concept/iterator.hh
--- mln/core/concept/iterator.hh (revision 997)
+++ mln/core/concept/iterator.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_ITERATOR_HH
# define MLN_CORE_CONCEPT_ITERATOR_HH
Index: mln/core/concept/dpoint.hh
--- mln/core/concept/dpoint.hh (revision 997)
+++ mln/core/concept/dpoint.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONCEPT_DPOINT_HH
# define MLN_CORE_CONCEPT_DPOINT_HH
Index: mln/core/window2d.hh
--- mln/core/window2d.hh (revision 997)
+++ mln/core/window2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_WINDOW2D_HH
# define MLN_CORE_WINDOW2D_HH
Index: mln/core/dpoint.hh
--- mln/core/dpoint.hh (revision 997)
+++ mln/core/dpoint.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_DPOINT_HH
# define MLN_CORE_DPOINT_HH
Index: mln/core/ops.hh
--- mln/core/ops.hh (revision 997)
+++ mln/core/ops.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_OPS_HH
# define MLN_CORE_OPS_HH
Index: mln/core/exact.hh
--- mln/core/exact.hh (revision 997)
+++ mln/core/exact.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_EXACT_HH
# define MLN_CORE_EXACT_HH
Index: mln/core/window.hh
--- mln/core/window.hh (revision 997)
+++ mln/core/window.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_WINDOW_HH
# define MLN_CORE_WINDOW_HH
Index: mln/core/image2d.hh
--- mln/core/image2d.hh (revision 997)
+++ mln/core/image2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_IMAGE2D_HH
# define MLN_CORE_IMAGE2D_HH
Index: mln/core/vec.hh
--- mln/core/vec.hh (revision 997)
+++ mln/core/vec.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_VEC_HH
# define MLN_CORE_VEC_HH
Index: mln/core/contract.hh
--- mln/core/contract.hh (revision 997)
+++ mln/core/contract.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_CONTRACT_HH
# define MLN_CORE_CONTRACT_HH
Index: mln/core/internal/coord_impl.hh
--- mln/core/internal/coord_impl.hh (revision 997)
+++ mln/core/internal/coord_impl.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_INTERNAL_COORD_IMPL_HH
# define MLN_CORE_INTERNAL_COORD_IMPL_HH
Index: mln/core/internal/image_adaptor.hh
--- mln/core/internal/image_adaptor.hh (revision 997)
+++ mln/core/internal/image_adaptor.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_INTERNAL_IMAGE_ADAPTOR_HH
# define MLN_CORE_INTERNAL_IMAGE_ADAPTOR_HH
Index: mln/core/internal/image_base.hh
--- mln/core/internal/image_base.hh (revision 997)
+++ mln/core/internal/image_base.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_INTERNAL_IMAGE_BASE_HH
# define MLN_CORE_INTERNAL_IMAGE_BASE_HH
Index: mln/core/internal/set_of.hh
--- mln/core/internal/set_of.hh (revision 997)
+++ mln/core/internal/set_of.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_INTERNAL_SET_OF_HH
# define MLN_CORE_INTERNAL_SET_OF_HH
Index: mln/core/box2d.hh
--- mln/core/box2d.hh (revision 997)
+++ mln/core/box2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_BOX2D_HH
# define MLN_CORE_BOX2D_HH
Index: mln/core/point2d.hh
--- mln/core/point2d.hh (revision 997)
+++ mln/core/point2d.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_POINT2D_HH
# define MLN_CORE_POINT2D_HH
Index: mln/core/safe_image.hh
--- mln/core/safe_image.hh (revision 997)
+++ mln/core/safe_image.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_CORE_SAFE_IMAGE_HH
# define MLN_CORE_SAFE_IMAGE_HH
Index: mln/value/props.hh
--- mln/value/props.hh (revision 997)
+++ mln/value/props.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLN_VALUE_PROPS_HH
# define MLN_VALUE_PROPS_HH
Index: mlc/equal.hh
--- mlc/equal.hh (revision 997)
+++ mlc/equal.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLC_EQUAL_HH
# define MLC_EQUAL_HH
Index: mlc/same_coord.hh
--- mlc/same_coord.hh (revision 997)
+++ mlc/same_coord.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLC_SAME_COORD_HH
# define MLC_SAME_COORD_HH
Index: mlc/same_point.hh
--- mlc/same_point.hh (revision 997)
+++ mlc/same_point.hh (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#ifndef MLC_SAME_POINT_HH
# define MLC_SAME_POINT_HH
Index: sandbox/cxxcompilation/test.cc
--- sandbox/cxxcompilation/test.cc (revision 997)
+++ sandbox/cxxcompilation/test.cc (working copy)
@@ -1,3 +1,30 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
#include <oln/core/2d/image2d.hh>
#include <oln/core/3d/image3d.hh>
#include <oln/core/1d/image1d.hh>
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Extend mln documentation.
* doc/Doxyfile.in (PREDEFINED): Handle some macros.
* mln/core/neighb2d.hh,
* mln/core/dpoint2d.hh,
* mln/core/macros.hh,
* mln/core/box.hh,
* mln/core/point.hh,
* mln/core/rectangle2d.hh,
* mln/core/concept/image.hh,
* mln/core/concept/genpoint.hh,
* mln/core/concept/object.hh,
* mln/core/concept/doc/image.hh,
* mln/core/concept/doc/genpoint.hh,
* mln/core/concept/doc/point_set.hh,
* mln/core/concept/doc/object.hh,
* mln/core/concept/doc/neighborhood.hh,
* mln/core/concept/doc/window.hh,
* mln/core/concept/doc/box.hh,
* mln/core/concept/doc/iterator.hh,
* mln/core/concept/doc/dpoint.hh,
* mln/core/concept/neighborhood.hh,
* mln/core/concept/box.hh,
* mln/core/concept/point.hh,
* mln/core/concept/dpoint.hh,
* mln/core/window2d.hh,
* mln/core/dpoint.hh,
* mln/core/ops.hh,
* mln/core/exact.hh,
* mln/core/box2d.hh,
* mln/core/point2d.hh: Add extra documentation.
doc/Doxyfile.in | 10 +-
mln/core/box.hh | 118 +++++++++++++++++++++++++++++++----
mln/core/box2d.hh | 39 +++++++++++
mln/core/concept/box.hh | 19 +++++
mln/core/concept/doc/box.hh | 24 +++----
mln/core/concept/doc/dpoint.hh | 33 ++++++++-
mln/core/concept/doc/genpoint.hh | 3
mln/core/concept/doc/image.hh | 94 ++++++++++++++++++++++++++-
mln/core/concept/doc/iterator.hh | 20 +++--
mln/core/concept/doc/neighborhood.hh | 16 ++++
mln/core/concept/doc/object.hh | 1
mln/core/concept/doc/point_set.hh | 5 -
mln/core/concept/doc/window.hh | 4 +
mln/core/concept/dpoint.hh | 70 +++++++++++++++++++-
mln/core/concept/genpoint.hh | 37 ++++------
mln/core/concept/image.hh | 9 ++
mln/core/concept/neighborhood.hh | 9 ++
mln/core/concept/object.hh | 11 +++
mln/core/concept/point.hh | 13 ++-
mln/core/dpoint.hh | 39 +++++++++++
mln/core/dpoint2d.hh | 17 +++++
mln/core/exact.hh | 24 +++++--
mln/core/macros.hh | 6 -
mln/core/neighb2d.hh | 49 ++++++++++++++
mln/core/ops.hh | 23 +++++-
mln/core/point.hh | 39 +++++++++++
mln/core/point2d.hh | 17 +++++
mln/core/rectangle2d.hh | 1
mln/core/window2d.hh | 18 +++++
29 files changed, 667 insertions(+), 101 deletions(-)
Index: doc/Doxyfile.in
--- doc/Doxyfile.in (revision 994)
+++ doc/Doxyfile.in (working copy)
@@ -1041,7 +1041,10 @@
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
-PREDEFINED =
+PREDEFINED = \
+ "mln_coord(T)=typename T::coord" \
+ "mln_point(T)=typename T::point" \
+ "mln_dpoint(T)=typename T::dpoint"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES
# then this tag can be used to specify a list of macro names that
@@ -1049,10 +1052,7 @@
# sources will be used. Use the PREDEFINED tag if you want to use a
# different macro definition.
-EXPAND_AS_DEFINED = \
- mln_point \
- mln_dpoint \
- mln_coord
+EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
Index: mln/core/neighb2d.hh
--- mln/core/neighb2d.hh (revision 994)
+++ mln/core/neighb2d.hh (working copy)
@@ -1,6 +1,12 @@
#ifndef MLN_CORE_NEIGHB2D_HH
# define MLN_CORE_NEIGHB2D_HH
+/*! \file mln/core/neighb2d.hh
+ *
+ * \brief This file defines the mln::neighb2d alias and some classical
+ * 2D neighborhoods.
+ */
+
# include <cmath>
# include <mln/core/neighb.hh>
# include <mln/core/dpoint2d.hh>
@@ -9,14 +15,57 @@
namespace mln
{
+ /*! \brief Type alias for a neighborhood defined on the 2D square
+ * grid with integer coordinates.
+ */
typedef neighb_<dpoint2d> neighb2d;
+
+ /*! \brief 4-connectivity neighborhood on the 2D grid.
+ *
+ * - o -
+ * o x o
+ * - o -
+ *
+ * \return A neighb2d.
+ */
const neighb2d& c4();
+
+
+ /*! \brief 8-connectivity neighborhood on the 2D grid.
+ *
+ * o o o
+ * o x o
+ * o o o
+ *
+ * \return A neighb2d.
+ */
const neighb2d& c8();
+
+
+ /*! \brief Horizontal 2-connectivity neighborhood on the 2D grid.
+ *
+ * - - -
+ * o x o
+ * - - -
+ *
+ * \return A neighb2d.
+ */
const neighb2d& c2_row();
+
+
+ /*! \brief Vertical 2-connectivity neighborhood on the 2D grid.
+ *
+ * - o -
+ * - x -
+ * - o -
+ *
+ * \return A neighb2d.
+ */
const neighb2d& c2_col();
+
# ifndef MLN_INCLUDE_ONLY
const neighb2d& c4()
Index: mln/core/dpoint2d.hh
--- mln/core/dpoint2d.hh (revision 994)
+++ mln/core/dpoint2d.hh (working copy)
@@ -1,14 +1,31 @@
#ifndef MLN_CORE_DPOINT2D_HH
# define MLN_CORE_DPOINT2D_HH
+/*! \file mln/core/dpoint2d.hh
+ *
+ * \brief This file defines the mln::dpoint2d alias and its creation
+ * routine.
+ */
+
# include <mln/core/dpoint.hh>
namespace mln
{
+ /*! \brief Type alias for a delta-point defined on the 2D square
+ * grid with integer coordinates.
+ */
typedef dpoint_<2,int> dpoint2d;
+
+ /*! \brief Create a 2D delta-point.
+ *
+ * \param[in] row Index of row.
+ * \param[in] col Index of column.
+ *
+ * \return A dpoint2d.
+ */
dpoint2d mk_dpoint2d(int row, int col)
{
dpoint2d tmp;
Index: mln/core/macros.hh
--- mln/core/macros.hh (revision 994)
+++ mln/core/macros.hh (working copy)
@@ -5,11 +5,11 @@
* This file defines the set of milena macros.
*/
-/*! \def mln_point(T)
+/*! \def mln_point
*/
-# define mln_point(T) typename T::point
+# define mln_point typename T::point
-/*! \def mln_dpoint(T)
+/*! \def mln_dpoint
*/
# define mln_dpoint(T) typename T::dpoint
Index: mln/core/box.hh
--- mln/core/box.hh (revision 994)
+++ mln/core/box.hh (working copy)
@@ -1,6 +1,11 @@
#ifndef MLN_CORE_BOX_HH
# define MLN_CORE_BOX_HH
+/*! \file mln/core/box.hh
+ *
+ * \brief This file defines a generic box class.
+ */
+
# include <mln/core/concept/box.hh>
# include <mln/core/point.hh>
@@ -13,33 +18,126 @@
template <typename P> struct box_bkd_piter_;
+ /*! \brief Generic box class.
+ *
+ * Parameter \c P is the corresponding type of point.
+ */
template <typename P>
struct box_ : public Box< box_<P> >
{
+ /*! \brief Psite associated type.
+ */
typedef P psite;
+
+ /*! \brief Point associated type.
+ */
typedef P point;
+ /*! \brief Forward Piter associated type.
+ */
typedef box_fwd_piter_<P> fwd_piter;
+
+ /*! \brief Backward Piter associated type.
+ */
typedef box_bkd_piter_<P> bkd_piter;
+
+ /*! \brief Piter associated type.
+ */
typedef fwd_piter piter;
- P pmin() const { return pmin_; }
- P& pmin() { return pmin_; }
+ /*! \brief Minimum point.
+ */
+ P pmin() const;
+
+ /*! \brief Reference to the minimum point.
+ */
+ P& pmin();
+
+ /*! \brief Maximum point.
+ */
+ P pmax() const;
+
+ /*! \brief Reference to the maximum point.
+ */
+ P& pmax();
+
+ /*! \brief Constructor without argument.
+ */
+ box_();
+
+ /*! \brief Constructor of a box going from \p pmin to \p pmax.
+ */
+ box_(const point& pmin, const point& pmax);
+
+ /*! \brief Test if \p p belongs to the box.
+ *
+ * \param[in] p A point site.
+ */
+ bool has(const P& p) const;
+
+ protected:
+ P pmin_, pmax_;
+ };
+
+
+ /*! \brief Print a generic box \p b into the output stream \p ostr.
+ *
+ * \param[in,out] ostr An output stream.
+ * \param[in] b A generic box.
+ *
+ * \return The modified output stream \p ostr.
+ *
+ * \relates mln::box_
+ */
+ template <typename P>
+ std::ostream& operator<<(std::ostream& ostr, const box_<P>& b);
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ template <typename P>
+ P
+ box_<P>::pmin() const
+ {
+ return pmin_;
+ }
+
+ template <typename P>
+ P&
+ box_<P>::pmin()
+ {
+ return pmin_;
+ }
- P pmax() const { return pmax_; }
- P& pmax() { return pmax_; }
+ template <typename P>
+ P
+ box_<P>::pmax() const
+ {
+ return pmax_;
+ }
+
+ template <typename P>
+ P&
+ box_<P>::pmax()
+ {
+ return pmax_;
+ }
- box_()
+ template <typename P>
+ box_<P>::box_()
{
}
- box_(const point& pmin, const point& pmax)
+ template <typename P>
+ box_<P>::box_(const point& pmin, const point& pmax)
: pmin_(pmin),
pmax_(pmax)
{
}
- bool has(const P& p) const
+ template <typename P>
+ bool
+ box_<P>::has(const P& p) const
{
for (unsigned i = 0; i < P::dim; ++i)
if (p[i] < pmin_[i] or p[i] > pmax_[i])
@@ -47,17 +145,13 @@
return true;
}
- protected:
- P pmin_, pmax_;
- };
-
-
template <typename P>
std::ostream& operator<<(std::ostream& ostr, const box_<P>& b)
{
return ostr << "[" << b.pmin() << ".." << b.pmax() << ']';
}
+# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln
Index: mln/core/point.hh
--- mln/core/point.hh (revision 994)
+++ mln/core/point.hh (working copy)
@@ -1,6 +1,11 @@
#ifndef MLN_CORE_POINT_HH
# define MLN_CORE_POINT_HH
+/*! \file mln/core/point.hh
+ *
+ * \brief This file defines a generic point class.
+ */
+
# include <mln/core/concept/point.hh>
# include <mln/core/internal/coord_impl.hh>
@@ -12,19 +17,51 @@
template <unsigned n, typename C> struct dpoint_;
+ /*! \brief Generic point class.
+ *
+ * Parameters are \c n the dimension of the space and \c C the
+ * coordinate type in this space.
+ */
template <unsigned n, typename C>
struct point_ : public Point< point_<n,C> >,
public internal::mutable_coord_impl_< n, C, point_<n,C> >
{
+ /*! \var dim
+ * \brief Dimension of the space.
+ * \invariant dim > 0
+ */
enum { dim = n };
- typedef C coord;
+
+ /*! \brief Dpoint associated type.
+ */
typedef dpoint_<n,C> dpoint;
+ /*! Coordinate associated type.
+ */
+ typedef C coord;
+
+ /*! \brief Read-only access to the \p i-th coordinate value.
+ * \param[in] i The coordinate index.
+ * \pre \p i < \c dim
+ */
C operator[](unsigned i) const;
+
+ /*! \brief Read-write access to the \p i-th coordinate value.
+ * \param[in] i The coordinate index.
+ * \pre \p i < \c dim
+ */
C& operator[](unsigned i);
+ /*! \brief Constructor without argument.
+ */
point_();
+
+ /*! \brief Constructor; all coordinates are set to the value \p c.
+ */
point_(C c);
+
+ /*! \brief Set all coordinates to the value \p c.
+ */
void set_all(C c);
protected:
Index: mln/core/rectangle2d.hh
--- mln/core/rectangle2d.hh (revision 994)
+++ mln/core/rectangle2d.hh (working copy)
@@ -10,6 +10,7 @@
namespace mln
{
+ // FIXME: doc.
struct rectangle2d : public Window< rectangle2d >,
public internal::set_of_<dpoint2d>
{
Index: mln/core/concept/image.hh
--- mln/core/concept/image.hh (revision 994)
+++ mln/core/concept/image.hh (working copy)
@@ -1,12 +1,21 @@
#ifndef MLN_CORE_CONCEPT_IMAGE_HH
# define MLN_CORE_CONCEPT_IMAGE_HH
+/*! \file mln/core/concept/image.hh
+ * \brief This file defines the concept of mln::Image.
+ */
+
# include <mln/core/concept/point_set.hh>
namespace mln
{
+ /*! \brief Base class for implementation of image classes.
+ *
+ * \see mln::doc::Image for a complete documentation of this class
+ * contents.
+ */
template <typename E>
struct Image : public Object<E>
{
Index: mln/core/concept/genpoint.hh
--- mln/core/concept/genpoint.hh (revision 994)
+++ mln/core/concept/genpoint.hh (working copy)
@@ -57,8 +57,8 @@
/*! \brief Equality comparison between a couple of generalized point \p lhs
* and \p rhs.
*
- * @param[in] lhs A first generalized point.
- * @param[in] rhs A second generalized point.
+ * \param[in] lhs A first generalized point.
+ * \param[in] rhs A second generalized point.
*
* \pre Both \p lhs and \p rhs have to be defined on the same
* topology; otherwise this test does not compile.
@@ -73,10 +73,10 @@
/*! \brief Ordering "less than" comparison between a couple of generalized
- * point \p lhs and \p rhs.
+ * points \p lhs and \p rhs.
*
- * @param[in] lhs A first generalized point.
- * @param[in] rhs A second generalized point.
+ * \param[in] lhs A first generalized point.
+ * \param[in] rhs A second generalized point.
*
* This test is based on a lexicographical ordering over coordinates.
*
@@ -99,8 +99,8 @@
/*! \brief Difference between a couple of generalized point \p lhs and \p
* rhs.
*
- * @param[in] lhs A first generalized point.
- * @param[in] rhs A second generalized point.
+ * \param[in] lhs A first generalized point.
+ * \param[in] rhs A second generalized point.
*
* \warning There is no type promotion in milena so the client
* has to make sure that both points are defined with the same
@@ -112,7 +112,7 @@
*
* \post The result, \p dp, is such as \p lhs = \p rhs + \p dp.
*
- * \return A delta-point.
+ * \return A delta-point (temporary object).
*
* \see mln::Dpoint
* \relates mln::GenPoint
@@ -124,13 +124,13 @@
/*! \brief Add a delta-point \p rhs to a generalized point \p lhs.
*
- * @param[in] lhs A generalized point.
- * @param[in] rhs A delta-point.
+ * \param[in] lhs A generalized point.
+ * \param[in] rhs A delta-point.
*
* The type of \p rhs has to be exactly the delta-point type
* associated with the type of \p lhs.
*
- * \return A new point (temporary object).
+ * \return A point (temporary object).
*
* \see mln::Dpoint
* \relates mln::GenPoint
@@ -146,19 +146,12 @@
/*! \brief Print a generalized point \p p into the output stream \p
* ostr.
*
- * @param[in,out] ostr An output stream.
- * @param[in] p A generalized point.
+ * \param[in,out] ostr An output stream.
+ * \param[in] p A generalized point.
*
- * The type of \p rhs has to be exactly the delta-point type
- * associated with the type of \p lhs.
- *
- * \return The modified output stream.
+ * \return The modified output stream \p ostr.
*
- * \see mln::Dpoint
* \relates mln::GenPoint
- *
- * \todo Introduce the notion of "generalized dpoint" and
- * add the more general extra operator+(GenPoint, GenDpoint).
*/
template <typename P>
std::ostream& operator<<(std::ostream& ostr, const GenPoint<P>& p);
@@ -208,7 +201,6 @@
return false;
}
-
template <typename Pl, typename Pr>
mln_dpoint(Pl)
operator-(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs)
@@ -225,7 +217,6 @@
return tmp;
}
-
template <typename P>
mln_point(P)
operator+(const GenPoint<P>& lhs, const mln_dpoint(P)& rhs)
Index: mln/core/concept/object.hh
--- mln/core/concept/object.hh (revision 994)
+++ mln/core/concept/object.hh (working copy)
@@ -11,6 +11,17 @@
# include <mln/core/macros.hh>
+/*! \namespace mln
+ * \brief The namespace mln corresponds to the Milena (mini-Olena) project.
+ *
+ * The contents of mln mimics the contents of the olena project but
+ * in a simplified way. Some classes have the same name in both
+ * projects and roughly have the same behavior.
+ *
+ * \warning The Milena project is independent from the Olena
+ * project; the user has to choose between both the project she
+ * wants to work with.
+ */
namespace mln
{
Index: mln/core/concept/doc/image.hh
--- mln/core/concept/doc/image.hh (revision 994)
+++ mln/core/concept/doc/image.hh (working copy)
@@ -1,5 +1,5 @@
/*! \file mln/core/concept/doc/image.hh
- * This file documents the concept of mln::Image.
+ * \brief This file documents the concept of mln::Image.
*/
namespace mln
@@ -8,26 +8,69 @@
namespace doc
{
- /*! Documentation class for mln::Image.
+ /*! \brief Documentation class for mln::Image.
* \see mln::Image
*/
template <typename E>
struct Image : public Object<E>
{
- // to be provided in concrete image classes:
-
+ /*! \brief Value associated type.
+ *
+ * \invariant This type is neither qualified by const, nor by
+ * reference.
+ */
typedef void value;
+
+ /*! \brief Type returned by the read pixel value operator.
+ */
typedef void rvalue;
+
+ /*! \brief Type returned by the read-write pixel value operator.
+ */
typedef void lvalue;
+ /*! \brief Test if the image have been initialized.
+ */
bool has_data() const;
- bool owns_(const psite& p) const; // default is like "has(p)"
+ /*! \brief Test if the image owns the poinst site \p p.
+ *
+ * \return True if accessing the image value at \p p is
+ * possible, that is, does not abort the execution.
+ */
+ bool owns_(const psite& p) const;
+
+ /*! \brief Give the definition domain of the image.
+ *
+ * \return A reference to the domain point set.
+ */
const pset& domain() const;
+ /*! \brief Read access to the image value located at \p p.
+ *
+ * \param[in] p A point site.
+ *
+ * \pre The image has to own the site \p p.
+ *
+ * \return The value at \p p.
+ */
rvalue operator()(const psite& p) const;
+
+ /*! \brief Read-write access to the image value located at \p p.
+ *
+ * \param[in] p A point site.
+ *
+ * \pre The image has to own the site \p p.
+ *
+ * \return The value at \p p.
+ */
lvalue operator()(const psite& p);
+
+
+ /*! \brief Trait that gives the corresponding image type with
+ the value type changes to T.
+ */
template <typename T>
struct change_value
{
@@ -35,17 +78,56 @@
};
- // provided by internal::image_base_:
+ /*! \brief Point set associated type.
+ * \invariant This type has to derive from mln::Point_Set.
+ */
typedef void pset;
+
+ /*! \brief Point associated type.
+ * \invariant This type has to derive from mln::Point.
+ */
typedef void point;
+
+ /*! \brief Psite associated type.
+ * \invariant This type has to derive from mln::Psite.
+ */
typedef void psite;
+ /*! \brief Piter associated type.
+ * \invariant This type has to derive from mln::Piter.
+ */
typedef void piter;
+
+ /*! \brief Forward point iterator associated type.
+ * \invariant This type has to derive from mln::Piter.
+ */
typedef void fwd_piter;
+
+ /*! \brief Backward point iterator associated type.
+ * \invariant This type has to derive from mln::Piter.
+ */
typedef void bkd_piter;
+ /*! \brief Test if \p p belongs to the image domain.
+ *
+ * \param[in] p A point site.
+ *
+ * \return True if \p p belongs to the image domain.
+ *
+ * \invariant has(p) is true => owns_(p) is also true.
+ */
bool has(const psite& p) const;
+
+ /*! \brief Give a bounding box of the image domain.
+ *
+ * This bounding box may be larger than the smallest bounding
+ * box (the optimal one). Practically an image type is not
+ * obliged to update its bounding box so that it is always
+ * optimal.
+ *
+ * \return A bounding box of the image domain.
+ */
const box_<point>& bbox() const;
};
Index: mln/core/concept/doc/genpoint.hh
--- mln/core/concept/doc/genpoint.hh (revision 994)
+++ mln/core/concept/doc/genpoint.hh (working copy)
@@ -9,6 +9,7 @@
{
/*! \brief Documentation class for mln::GenPoint.
+ *
* \see mln::GenPoint
*/
template <typename E>
@@ -50,7 +51,7 @@
/*! \brief Read-only access to the \p i-th coordinate value.
*
- * @param[in] i The coordinate index.
+ * \param[in] i The coordinate index.
*
* \pre \p i < \c dim
*
Index: mln/core/concept/doc/point_set.hh
--- mln/core/concept/doc/point_set.hh (revision 994)
+++ mln/core/concept/doc/point_set.hh (working copy)
@@ -9,6 +9,7 @@
{
/*! \brief Documentation class for mln::Point_Set.
+ *
* \see mln::Point_Set
*/
template <typename E>
@@ -34,9 +35,9 @@
*/
typedef void bkd_piter;
- /*! \brief Test if the \p p belongs to this point set.
+ /*! \brief Test if \p p belongs to this point set.
*
- * @param[in] p A point site.
+ * \param[in] p A point site.
* \return True if \p p is an element of the point set.
*/
bool has(const psite& p) const;
Index: mln/core/concept/doc/object.hh
--- mln/core/concept/doc/object.hh (revision 994)
+++ mln/core/concept/doc/object.hh (working copy)
@@ -4,6 +4,7 @@
namespace mln
{
+
/*! \namespace mln::doc
* \brief The namespace mln::doc is only for documentation purpose.
*
Index: mln/core/concept/doc/neighborhood.hh
--- mln/core/concept/doc/neighborhood.hh (revision 994)
+++ mln/core/concept/doc/neighborhood.hh (working copy)
@@ -1,5 +1,5 @@
/*! \file mln/core/concept/doc/neighborhood.hh
- * This file documents the concept of mln::Neighborhood.
+ * \brief This file documents the concept of mln::Neighborhood.
*/
namespace mln
@@ -8,14 +8,26 @@
namespace doc
{
- /*! Documentation class for mln::Neighborhood.
+ /*! \brief Documentation class for mln::Neighborhood.
+ *
* \see mln::Neighborhood
*/
template <typename E>
struct Neighborhood : public Object<E>
{
+ /*! \brief Piter type associated to this neighborhood to browse
+ * neighbors.
+ */
typedef void niter;
+
+ /*! \brief Piter type associated to this neighborhood to browse
+ * neighbors in a forward way.
+ */
typedef void fwd_niter;
+
+ /*! \brief Piter type associated to this neighborhood to browse
+ * neighbors in a backward way.
+ */
typedef void bkd_niter;
};
Index: mln/core/concept/doc/window.hh
--- mln/core/concept/doc/window.hh (revision 994)
+++ mln/core/concept/doc/window.hh (working copy)
@@ -9,6 +9,10 @@
{
/*! \brief Documentation class for mln::Window.
+ *
+ * A window is the definition of a set of points located around a
+ * central point.
+ *
* \see mln::Window
*/
template <typename E>
Index: mln/core/concept/doc/box.hh
--- mln/core/concept/doc/box.hh (revision 994)
+++ mln/core/concept/doc/box.hh (working copy)
@@ -1,5 +1,5 @@
/*! \file mln/core/concept/doc/box.hh
- * This file documents the concept of mln::Box.
+ * \brief This file documents the concept of mln::Box.
*/
namespace mln
@@ -8,29 +8,29 @@
namespace doc
{
- /*! Documentation class for mln::Box.
+ /*! \brief Documentation class for mln::Box.
* \see mln::Box
*/
template <typename E>
struct Box : public Point_Set<E>
{
- /*! \fn const point& pmin() const
+ /*! \brief Return the box "minimum" point.
*
- * Return the minimum point w.r.t. the ordering between points.
- *
- * In 2D this minimum is the top left point of the box.
+ * Return the "minimum" point w.r.t. the ordering between points.
+ * For instance, with mln::box2d, this minimum is the top left
+ * point of the box.
*/
const point& pmin() const;
- /*! \fn const point& pmax() const
- *
- * Return the maximum point w.r.t. the ordering between points.
+ /*! \brief Return the box "maximum" point.
*
- * In 2D this maximum is the bottom right point of the box.
+ * Return the "maximum" point w.r.t. the ordering between points.
+ * For instance, with mln::box2d, this maximum is the bottom
+ * right point of the box.
*/
const point& pmax() const;
- /*! \fn const E& bbox() const
+ /*! \brief Return the bounding box of this point set.
*
* Return the bounding box of this point set, so that is itself.
* This method is declared by the mln::Point_Set concept.
@@ -39,7 +39,7 @@
*/
const E& bbox() const;
- /*! \fn std::size_t npoints() const
+ /*! \brief Return the number of points of this box.
*
* Return the number of points of this box. This method is
* declared by the mln::Point_Set concept.
Index: mln/core/concept/doc/iterator.hh
--- mln/core/concept/doc/iterator.hh (revision 994)
+++ mln/core/concept/doc/iterator.hh (working copy)
@@ -1,5 +1,5 @@
/*! \file mln/core/concept/doc/iterator.hh
- * This file documents the concept of mln::Iterator.
+ * \brief This file documents the concept of mln::Iterator.
*/
@@ -9,27 +9,33 @@
namespace doc
{
- /*! Documentation class for mln::Iterator.
+ /*! \brief Documentation class for mln::Iterator.
* \see mln::Iterator
*/
template <typename E>
struct Iterator : public Object<E>
{
- /*! Returns true if the iterator is valid, that is, designates
+ /*! \brief Returns true if the iterator is valid, that is, designates
* an element.
*/
bool is_valid() const;
- /*! Invalidate the iterator.
+ /*! \brief Invalidate the iterator.
*/
void invalidate();
- /*! Start an iteration, that is, make the iterator designate the
- * first element if it exists.
+ /*! \brief Start an iteration.
+ *
+ * Make the iterator designate the first element if it exists.
+ * If this first element does not exist, the iterator is not
+ * valid.
*/
void start();
- /*! Make the iterator designate the next element.
+ /*! \brief Go to the next element.
+ *
+ * Make the iterator jump from the current element to the next
+ * one. The current element is thus updated.
*/
void next_();
Index: mln/core/concept/doc/dpoint.hh
--- mln/core/concept/doc/dpoint.hh (revision 994)
+++ mln/core/concept/doc/dpoint.hh (working copy)
@@ -1,5 +1,5 @@
/*! \file mln/core/concept/doc/dpoint.hh
- * This file documents the concept of mln::Dpoint.
+ * \brief This file documents the concept of mln::Dpoint.
*/
namespace mln
@@ -8,15 +8,40 @@
namespace doc
{
- /*! Documentation class for mln::Dpoint.
+ /*! \brief Documentation class for mln::Dpoint.
* \see mln::Dpoint
*/
template <typename E>
struct Dpoint : public Object<E>
{
- typedef point;
- typedef coord;
+ /*! \var dim
+ * \brief Dimension of the space.
+ * \invariant dim > 0
+ */
enum { dim };
+
+ /*! \brief Point associated type.
+ * \invariant This type has to derive from mln::Point.
+ */
+ typedef void point;
+
+ /*! \brief Dpoint associated type.
+ * \invariant This type has to derive from mln::Dpoint.
+ */
+ typedef void dpoint;
+
+ /*! Coordinate associated type.
+ */
+ typedef void coord;
+
+ /*! \brief Read-only access to the \p i-th coordinate value.
+ *
+ * \param[in] i The coordinate index.
+ *
+ * \pre \p i < \c dim
+ *
+ * \return The value of the \p i-th coordinate.
+ */
coord operator[](unsigned i) const;
};
Index: mln/core/concept/neighborhood.hh
--- mln/core/concept/neighborhood.hh (revision 994)
+++ mln/core/concept/neighborhood.hh (working copy)
@@ -1,12 +1,21 @@
#ifndef MLN_CORE_CONCEPT_NEIGHBORHOOD_HH
# define MLN_CORE_CONCEPT_NEIGHBORHOOD_HH
+/*! \file mln/core/concept/neighborhood.hh
+ * \brief This file defines the concept of mln::Neighborhood.
+ */
+
# include <mln/core/concept/object.hh>
namespace mln
{
+ /*! \brief Base class for implementation classes that are neighborhoods.
+ *
+ * \see mln::doc::Neighborhood for a complete documentation of this
+ * class contents.
+ */
template <typename E>
struct Neighborhood : public Object<E>
{
Index: mln/core/concept/box.hh
--- mln/core/concept/box.hh (revision 994)
+++ mln/core/concept/box.hh (working copy)
@@ -27,8 +27,23 @@
const point& pmax() const;
*/
- const E& bbox() const; //! final; \see mln::doc::Box::bbox
- std::size_t npoints() const; //! final; \see mln::doc::Box::npoints
+ /*! \brief Return the bounding box of this point set.
+ *
+ * Return the bounding box of this point set, so that is itself.
+ * This method is declared by the mln::Point_Set concept.
+ *
+ * \warning This method is final for all box classes.
+ */
+ const E& bbox() const;
+
+ /*! \brief Return the number of points of this box.
+ *
+ * Return the number of points of this box. This method is
+ * declared by the mln::Point_Set concept.
+ *
+ * \warning This method is final for all box classes.
+ */
+ std::size_t npoints() const;
protected:
Box();
Index: mln/core/concept/point.hh
--- mln/core/concept/point.hh (revision 994)
+++ mln/core/concept/point.hh (working copy)
@@ -13,7 +13,10 @@
/*! \brief Base class for implementation of point classes.
*
- * A point is a vector in a space.
+ * A point is an element of a space.
+ *
+ * For instance, mln::point2d is the type of elements defined on the
+ * discrete square grid of the 2D plane.
*/
template <typename P>
struct Point : public Psite<P>
@@ -33,8 +36,8 @@
/*! \brief Add a delta-point \p rhs to a point \p lhs.
*
- * @param[in,out] lhs The targeted point.
- * @param[in] rhs A delta-point.
+ * \param[in,out] lhs The targeted point.
+ * \param[in] rhs A delta-point.
*
* \pre The type of \p rhs has to be the Dpoint type associated with
* the type of \p lhs; otherwise this test does not compile.
@@ -50,8 +53,8 @@
/*! \brief Remove a delta-point \p rhs to a point \p lhs.
*
- * @param[in,out] lhs The targeted point.
- * @param[in] rhs A delta-point.
+ * \param[in,out] lhs The targeted point.
+ * \param[in] rhs A delta-point.
*
* \pre The type of \p rhs has to be the Dpoint type associated with
* the type of \p lhs; otherwise this test does not compile.
Index: mln/core/concept/dpoint.hh
--- mln/core/concept/dpoint.hh (revision 994)
+++ mln/core/concept/dpoint.hh (working copy)
@@ -1,6 +1,10 @@
#ifndef MLN_CORE_CONCEPT_DPOINT_HH
# define MLN_CORE_CONCEPT_DPOINT_HH
+/*! \file mln/core/concept/dpoint.hh
+ * \brief This file defines the concept of mln::Dpoint.
+ */
+
# include <mln/core/concept/object.hh>
@@ -8,6 +12,16 @@
{
+ /*! \brief Base class for implementation of delta-point classes.
+ *
+ * A delta-point is a vector defined by a couple of points.
+ *
+ * Given two points, A and B, the vector AB is mapped into the
+ * delta-point D = AB. Practically one can write: D = B - A.
+ *
+ * \see mln::doc::Dpoint for a complete documentation of this class
+ * contents.
+ */
template <typename E>
struct Dpoint : public Object<E>
{
@@ -23,15 +37,65 @@
};
+ /*! \brief Give the negate of the delta-point \p rhs.
+ *
+ * \param[in] rhs The targeted delta-point.
+ *
+ * \invariant For all delta-point dp, we have: -(-dp) = dp.
+ *
+ * \return A delta-point (temporary object).
+ *
+ * \relates mln::Dpoint
+ */
template <typename D>
- D operator-(const Dpoint<D>& dp);
+ D operator-(const Dpoint<D>& rhs);
+
+ /*! \brief Equality comparison between a couple of delta-point \p lhs
+ * and \p rhs.
+ *
+ * \param[in] lhs A first delta-point.
+ * \param[in] rhs A second delta-point.
+ *
+ * \pre Both \p lhs and \p rhs have to be defined on the same
+ * topology; otherwise this test does not compile.
+ *
+ * \return True if both delta-points have the same coordinates,
+ * otherwise false.
+ *
+ * \relates mln::Dpoint
+ */
template <typename Dl, typename Dr>
bool operator=(const Dpoint<Dl>& lhs, const Dpoint<Dr>& rhs);
+
+ /*! \brief Ordering "less than" comparison between a couple of
+ * delta-points \p lhs and \p rhs.
+ *
+ * \param[in] lhs A first delta-point.
+ * \param[in] rhs A second delta-point.
+ *
+ * \pre Both \p lhs and \p rhs have to be defined on the same
+ * topology; otherwise this test does not compile.
+ *
+ * \return True if both delta-points have the same coordinates,
+ * otherwise false.
+ *
+ * \relates mln::Dpoint
+ */
template <typename Dl, typename Dr>
bool operator<(const Dpoint<Dl>& lhs, const Dpoint<Dr>& rhs);
+
+ /*! \brief Print a delta-point \p p into the output stream \p ostr.
+ *
+ * \param[in,out] ostr An output stream.
+ * \param[in] dp A delta-point.
+ *
+ * \return The modified output stream \p ostr.
+ *
+ * \relates mln::Dpoint
+ */
template <typename D>
std::ostream& operator<<(std::ostream& ostr, const Dpoint<D>& dp);
@@ -50,11 +114,11 @@
}
template <typename D>
- D operator-(const Dpoint<D>& dp)
+ D operator-(const Dpoint<D>& rhs)
{
D tmp;
for (unsigned i = 0; i < D::dim; ++i)
- tmp[i] = - exact(dp)[i];
+ tmp[i] = - exact(rhs)[i];
return tmp;
}
Index: mln/core/window2d.hh
--- mln/core/window2d.hh (revision 994)
+++ mln/core/window2d.hh (working copy)
@@ -1,6 +1,12 @@
#ifndef MLN_CORE_WINDOW2D_HH
# define MLN_CORE_WINDOW2D_HH
+/*! \file mln/core/window2d.hh
+ *
+ * \brief This file defines the mln::window2d alias and its creation
+ * routine.
+ */
+
# include <cmath>
# include <mln/core/window.hh>
# include <mln/core/dpoint2d.hh>
@@ -9,8 +15,20 @@
namespace mln
{
+ /*! \brief Type alias for a window with arbitrary shape, defined on
+ * the 2D square grid with integer coordinates.
+ */
typedef window_<dpoint2d> window2d;
+
+ /*! \brief Create a 2D window with arbitrary shape.
+ *
+ * \param[in] values Array of Booleans.
+ *
+ * \pre The array size, \c M, has to be a square of an odd integer.
+ *
+ * \return A window2d.
+ */
template <unsigned M>
window2d mk_window2d(const bool (&values)[M]);
Index: mln/core/dpoint.hh
--- mln/core/dpoint.hh (revision 994)
+++ mln/core/dpoint.hh (working copy)
@@ -1,6 +1,11 @@
#ifndef MLN_CORE_DPOINT_HH
# define MLN_CORE_DPOINT_HH
+/*! \file mln/core/dpoint.hh
+ *
+ * \brief This file defines a generic delta-point class.
+ */
+
# include <mln/core/concept/dpoint.hh>
# include <mln/core/internal/coord_impl.hh>
@@ -12,19 +17,51 @@
template <unsigned n, typename C> struct point_;
+ /*! \brief Generic delta-point class.
+ *
+ * Parameters are \c n the dimension of the space and \c C the
+ * coordinate type in this space.
+ */
template <unsigned n, typename C>
struct dpoint_ : public Dpoint< dpoint_<n,C> >,
public internal::mutable_coord_impl_< n, C, dpoint_<n,C> >
{
+ /*! \var dim
+ * \brief Dimension of the space.
+ * \invariant dim > 0
+ */
enum { dim = n };
- typedef C coord;
+
+ /*! \brief Point associated type.
+ */
typedef point_<n,C> point;
+ /*! Coordinate associated type.
+ */
+ typedef C coord;
+
+ /*! \brief Read-only access to the \p i-th coordinate value.
+ * \param[in] i The coordinate index.
+ * \pre \p i < \c dim
+ */
C operator[](unsigned i) const;
+
+ /*! \brief Read-write access to the \p i-th coordinate value.
+ * \param[in] i The coordinate index.
+ * \pre \p i < \c dim
+ */
C& operator[](unsigned i);
+ /*! \brief Constructor without argument.
+ */
dpoint_();
+
+ /*! \brief Constructor; all coordinates are set to the value \p c.
+ */
dpoint_(C c);
+
+ /*! \brief Set all coordinates to the value \p c.
+ */
void set_all(C c);
protected:
Index: mln/core/ops.hh
--- mln/core/ops.hh (revision 994)
+++ mln/core/ops.hh (working copy)
@@ -2,7 +2,7 @@
# define MLN_CORE_OPS_HH
/*! \file mln/core/ops.hh
- * Default definitions of some operators.
+ * \brief Definitions of some operators.
*/
# include <mln/core/concept/object.hh>
@@ -12,7 +12,9 @@
namespace mln
{
- /*! The "not equal to" operator is here defined for every milena
+ /*! \brief General definition of the "not equal to" operator.
+ *
+ * The "not equal to" operator is here defined for every milena
* objects. It relies on the definition of the "equal to" operator.
* It returns "not (lhs = rhs)".
*
@@ -22,7 +24,10 @@
template <typename O1, typename O2>
bool operator!=(const Object<O1>& lhs, const Object<O2>& rhs);
- /*! The "greater than" operator is here defined for every milena
+
+ /*! \brief General definition of the "greater than" operator.
+ *
+ * The "greater than" operator is here defined for every milena
* objects. It relies on the definition of the "less than"
* operator. It returns "rhs < lhs".
*
@@ -32,7 +37,11 @@
template <typename O1, typename O2>
bool operator>(const Object<O1>& lhs, const Object<O2>& rhs);
- /*! The "greater than or equal to" operator is here defined for
+
+ /*! \brief General definition of the "greater than or equal to"
+ * operator.
+ *
+ * The "greater than or equal to" operator is here defined for
* every milena objects. It relies on the definition of the "less
* than or equal to" operator. It returns "rhs <= lhs".
*
@@ -42,7 +51,11 @@
template <typename O1, typename O2>
bool operator>=(const Object<O1>& lhs, const Object<O2>& rhs);
- /*! A default version of the "less than or equal to" operator is
+
+ /*! \brief Default definition of the "less than or equal to"
+ * operator.
+ *
+ * A default version of the "less than or equal to" operator is
* defined for every milena objects. It relies on the definition of
* the "less than" operator. It returns "not (rhs < lhs)".
*
Index: mln/core/exact.hh
--- mln/core/exact.hh (revision 994)
+++ mln/core/exact.hh (working copy)
@@ -2,7 +2,7 @@
# define MLN_CORE_EXACT_HH
/*! \file mln/core/exact.hh
- * This file defines the mln::exact downcast routines.
+ * \brief This file defines the mln::exact downcast routines.
*/
# include <mln/core/concept/object.hh>
@@ -11,12 +11,16 @@
namespace mln
{
- /*! The mln::exact routine downcasts an object towards its exact
- * type.
+ /*! \brief Exact cast routine for mln objects.
*
- * The only argument is an mln::Object. The return follows the
- * nature of the argument (either a pointer or a reference, const or
- * not).
+ * This set of routines can be used to downcast an object towards
+ * its exact type. The only argument, respectively \p ptr or \p
+ * ref, should be an mln::Object.
+ *
+ * \c The parameter E is the exact type of the object.
+ *
+ * \return The return follows the nature of the argument (either a
+ * pointer or a reference, const or not).
*/
/// \{
@@ -36,11 +40,17 @@
- /*! The mln::force_exact is a violent cast routine.
+ /*! \brief Violent exact cast routine.
+ *
+ * This cast is an alternative to the mln::exact cast. It is used
+ * for objects than do not derive from mln::Object.
*
* It preserves the nature (pointer or reference, const or mutable)
* of its argument. The parameter \a E should not have qualifiers.
*
+ * \warning Prefer not to use this cast!
+ *
+ * \see mln::exact
* \todo Move into mln::internal.
*/
/// \{
Index: mln/core/box2d.hh
--- mln/core/box2d.hh (revision 994)
+++ mln/core/box2d.hh (working copy)
@@ -1,6 +1,12 @@
#ifndef MLN_CORE_BOX2D_HH
# define MLN_CORE_BOX2D_HH
+/*! \file mln/core/box2d.hh
+ *
+ * \brief This file defines the mln::box2d alias and construction
+ * routines.
+ */
+
# include <mln/core/box.hh>
# include <mln/core/point2d.hh>
@@ -8,18 +14,51 @@
namespace mln
{
+ /*! \brief Type alias for a box defined on the 2D square grid with
+ * integer coordinates.
+ */
typedef box_<point2d> box2d;
+
+ /*! \brief Create a 2D box.
+ *
+ * \param[in] nrows Number of rows.
+ * \param[in] ncols Number of columns.
+ *
+ * \pre \p nrows != 0 and \p ncols != 0.
+ *
+ * \return A 2D box.
+ *
+ * \relates mln::box2d
+ */
box2d mk_box2d(unsigned nrows, unsigned ncols)
{
+ precondition(nrows != 0 and ncols != 0);
box2d tmp(mk_point2d(0, 0),
mk_point2d(nrows - 1, ncols - 1));
return tmp;
}
+
+ /*! \brief Create a 2D box.
+ *
+ * \overload
+ *
+ * \param[in] min_row Index of the top most row.
+ * \param[in] max_row Index of the botton most row.
+ * \param[in] min_col Index of the left most column.
+ * \param[in] max_col Index of the right most column.
+ *
+ * \pre \p max_row >= \p min_row and \p max_col >= \p min_col.
+ *
+ * \return A 2D box.
+ *
+ * \relates mln::box2d
+ */
box2d mk_box2d(int min_row, int max_row,
int min_col, int max_col)
{
+ precondition(max_row >= min_row and max_col >= min_col);
box2d tmp(mk_point2d(min_row, min_col),
mk_point2d(max_row, max_col));
return tmp;
Index: mln/core/point2d.hh
--- mln/core/point2d.hh (revision 994)
+++ mln/core/point2d.hh (working copy)
@@ -1,14 +1,31 @@
#ifndef MLN_CORE_POINT2D_HH
# define MLN_CORE_POINT2D_HH
+/*! \file mln/core/point2d.hh
+ *
+ * \brief This file defines the mln::point2d alias and its creation
+ * routine.
+ */
+
# include <mln/core/point.hh>
namespace mln
{
+ /*! \brief Type alias for a point defined on the 2D square grid with
+ * integer coordinates.
+ */
typedef point_<2,int> point2d;
+
+ /*! \brief Create a 2D point.
+ *
+ * \param[in] row Index of row.
+ * \param[in] col Index of column.
+ *
+ * \return A point2d.
+ */
point2d mk_point2d(int row, int col)
{
point2d tmp;
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Add some documentation.
* doc/Doxyfile.in: Try to properly handle some macros.
* mln/core/macros.hh,
* mln/core/concept/genpoint.hh,
* mln/core/concept/point_set.hh,
* mln/core/concept/psite.hh,
* mln/core/concept/object.hh,
* mln/core/concept/window.hh,
* mln/core/concept/box.hh,
* mln/core/concept/point.hh,
* mlc/equal.hh,
* mlc/same_point.hh,
* mln/core/concept/iterator.hh: Add some documentation.
* mln/core/concept/doc/image.hh: New.
* mln/core/concept/doc/genpoint.hh: Update.
* mln/core/concept/doc/piter.hh: New.
* mln/core/concept/doc/point_set.hh: New.
* mln/core/concept/doc/object.hh: New.
* mln/core/concept/doc/neighborhood.hh: New.
* mln/core/concept/doc/window.hh: New.
* mln/core/concept/doc/box.hh: New.
* mln/core/concept/doc/iterator.hh: New.
* mln/core/concept/doc/dpoint.hh: New.
* mln/core/contract.hh: New.
* mlc/same_coord.hh: New.
doc/Doxyfile.in | 10 +-
mlc/equal.hh | 6 -
mlc/same_coord.hh | 24 ++++++
mlc/same_point.hh | 10 +-
mln/core/concept/box.hh | 17 +++-
mln/core/concept/doc/box.hh | 54 ++++++++++++++
mln/core/concept/doc/dpoint.hh | 25 ++++++
mln/core/concept/doc/genpoint.hh | 44 ++++++++++-
mln/core/concept/doc/image.hh | 54 ++++++++++++++
mln/core/concept/doc/iterator.hh | 42 +++++++++++
mln/core/concept/doc/neighborhood.hh | 24 ++++++
mln/core/concept/doc/object.hh | 30 ++++++++
mln/core/concept/doc/piter.hh | 29 +++++++
mln/core/concept/doc/point_set.hh | 55 ++++++++++++++
mln/core/concept/doc/window.hh | 51 +++++++++++++
mln/core/concept/genpoint.hh | 130 +++++++++++++++++++++++++++++++----
mln/core/concept/iterator.hh | 22 +++++
mln/core/concept/object.hh | 2
mln/core/concept/point.hh | 41 +++++++++--
mln/core/concept/point_set.hh | 9 ++
mln/core/concept/psite.hh | 6 -
mln/core/concept/window.hh | 9 ++
mln/core/contract.hh | 20 +++++
mln/core/macros.hh | 9 ++
24 files changed, 681 insertions(+), 42 deletions(-)
Index: doc/Doxyfile.in
--- doc/Doxyfile.in (revision 992)
+++ doc/Doxyfile.in (working copy)
@@ -1007,13 +1007,13 @@
# compilation will be performed. Macro expansion can be done in a controlled
# way by setting EXPAND_ONLY_PREDEF to YES.
-MACRO_EXPANSION = NO
+MACRO_EXPANSION = YES
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
-EXPAND_ONLY_PREDEF = NO
+EXPAND_ONLY_PREDEF = YES
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# in the INCLUDE_PATH (see below) will be search if a #include is found.
@@ -1049,7 +1049,11 @@
# sources will be used. Use the PREDEFINED tag if you want to use a
# different macro definition.
-EXPAND_AS_DEFINED =
+EXPAND_AS_DEFINED = \
+ mln_point \
+ mln_dpoint \
+ mln_coord
+
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all function-like macros that are alone
Index: mln/core/macros.hh
--- mln/core/macros.hh (revision 992)
+++ mln/core/macros.hh (working copy)
@@ -5,11 +5,20 @@
* This file defines the set of milena macros.
*/
+/*! \def mln_point(T)
+ */
# define mln_point(T) typename T::point
+
+/*! \def mln_dpoint(T)
+ */
# define mln_dpoint(T) typename T::dpoint
+
# define mln_psite(T) typename T::psite
# define mln_pset(T) typename T::pset
# define mln_box(T) typename T::box
+
+/*! \def mln_coord(T)
+ */
# define mln_coord(T) typename T::coord
# define mln_piter(T) typename T::piter
Index: mln/core/concept/genpoint.hh
--- mln/core/concept/genpoint.hh (revision 992)
+++ mln/core/concept/genpoint.hh (working copy)
@@ -2,33 +2,40 @@
# define MLN_CORE_CONCEPT_GENPOINT_HH
/*! \file mln/core/concept/genpoint.hh
- * This file defines the concept of mln::GenPoint.
+ * \brief This file defines the concept of mln::GenPoint.
*/
+# include <mlc/equal.hh>
+# include <mlc/same_point.hh>
+# include <mlc/same_coord.hh>
# include <mln/core/concept/object.hh>
# include <mln/core/macros.hh>
-# include <mlc/equal.hh>
-# include <mlc/same_point.hh>
+# include <mln/core/contract.hh>
namespace mln
{
- /*! Base class for implementation classes that are points or that
+ // FIXME: \class GenPoint genpoint.hh "mln/core/concept/doc/genpoint.hh"
+
+ /*! \brief Base class for implementation classes that are points or that
* have the behavior of points.
*
- * "GenPoint" is "General Point" for short.
+ * "GenPoint" is "Generalized Point" for short.
*
- * This class does not derive from mln::Object; it is for use as a
- * parallel hierarchy.
+ * \warning This class does \em not derive from mln::Object; it is
+ * for use as a parallel hierarchy.
*
- * \relates mln::doc::GenPoint
+ * \see mln::doc::GenPoint for a complete documentation of this
+ * class contents.
*/
template <typename E>
struct GenPoint // stand-alone class!
{
/*
+ enum { dim };
+
typedef point;
typedef dpoint;
typedef coord;
@@ -47,22 +54,112 @@
- /*! \relates mln::GenPoint
+ /*! \brief Equality comparison between a couple of generalized point \p lhs
+ * and \p rhs.
+ *
+ * @param[in] lhs A first generalized point.
+ * @param[in] rhs A second generalized point.
+ *
+ * \pre Both \p lhs and \p rhs have to be defined on the same
+ * topology; otherwise this test does not compile.
+ *
+ * \return True if both generalized points have the same
+ * coordinates, otherwise false.
+ *
+ * \relates mln::GenPoint
*/
template <typename Pl, typename Pr>
bool operator=(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs);
+
+ /*! \brief Ordering "less than" comparison between a couple of generalized
+ * point \p lhs and \p rhs.
+ *
+ * @param[in] lhs A first generalized point.
+ * @param[in] rhs A second generalized point.
+ *
+ * This test is based on a lexicographical ordering over coordinates.
+ *
+ * \warning In the general case this ordering relationship is \em
+ * not bound to the way of browsing a domain with a forward point
+ * iterator.
+ *
+ * \pre Both \p lhs and \p rhs have to be defined on the same
+ * topology; otherwise this test does not compile.
+ *
+ * \return True if \p lhs is before \p rhs in the sense of the
+ * coordinates lexicographic comparison, otherwise false.
+ *
+ * \relates mln::GenPoint
+ */
template <typename Pl, typename Pr>
bool operator<(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs);
+
+ /*! \brief Difference between a couple of generalized point \p lhs and \p
+ * rhs.
+ *
+ * @param[in] lhs A first generalized point.
+ * @param[in] rhs A second generalized point.
+ *
+ * \warning There is no type promotion in milena so the client
+ * has to make sure that both points are defined with the same
+ * type of coordinates.
+ *
+ * \pre Both \p lhs and \p rhs have to be defined on the same
+ * topology and with the same type of coordinates; otherwise this
+ * test does not compile.
+ *
+ * \post The result, \p dp, is such as \p lhs = \p rhs + \p dp.
+ *
+ * \return A delta-point.
+ *
+ * \see mln::Dpoint
+ * \relates mln::GenPoint
+ */
template <typename Pl, typename Pr>
- typename Pl::dpoint
+ mln_dpoint(Pl)
operator-(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs);
+
+ /*! \brief Add a delta-point \p rhs to a generalized point \p lhs.
+ *
+ * @param[in] lhs A generalized point.
+ * @param[in] rhs A delta-point.
+ *
+ * The type of \p rhs has to be exactly the delta-point type
+ * associated with the type of \p lhs.
+ *
+ * \return A new point (temporary object).
+ *
+ * \see mln::Dpoint
+ * \relates mln::GenPoint
+ *
+ * \todo Introduce the notion of "generalized dpoint" and
+ * add the more general extra operator+(GenPoint, GenDpoint).
+ */
template <typename P>
- typename P::point
- operator+(const GenPoint<P>& lhs, const typename P::dpoint& rhs);
+ mln_point(P)
+ operator+(const GenPoint<P>& lhs, const mln_dpoint(P)& rhs);
+
+ /*! \brief Print a generalized point \p p into the output stream \p
+ * ostr.
+ *
+ * @param[in,out] ostr An output stream.
+ * @param[in] p A generalized point.
+ *
+ * The type of \p rhs has to be exactly the delta-point type
+ * associated with the type of \p lhs.
+ *
+ * \return The modified output stream.
+ *
+ * \see mln::Dpoint
+ * \relates mln::GenPoint
+ *
+ * \todo Introduce the notion of "generalized dpoint" and
+ * add the more general extra operator+(GenPoint, GenDpoint).
+ */
template <typename P>
std::ostream& operator<<(std::ostream& ostr, const GenPoint<P>& p);
@@ -72,6 +169,8 @@
template <typename E>
GenPoint<E>::GenPoint()
{
+ const int dim = E::dim;
+ invariant(dim > 0);
typedef mln_point(E) point;
typedef mln_dpoint(E) dpoint;
typedef mln_coord(E) coord;
@@ -84,6 +183,7 @@
template <typename Pl, typename Pr>
bool operator=(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs)
{
+ // FIXME: mlc::same_grid<Pl, Pr>::check();
const Pl& lhs_ = force_exact<Pl>(lhs);
const Pr& rhs_ = force_exact<Pr>(rhs);
mlc::same_point<Pl, Pr>::check();
@@ -96,7 +196,7 @@
template <typename Pl, typename Pr>
bool operator<(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs)
{
- mlc::same_point<Pl, Pr>::check();
+ // FIXME: mlc::same_grid<Pl, Pr>::check();
const Pl& lhs_ = force_exact<Pl>(lhs);
const Pr& rhs_ = force_exact<Pr>(rhs);
for (unsigned i = 0; i < Pl::dim; ++i)
@@ -113,11 +213,15 @@
mln_dpoint(Pl)
operator-(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs)
{
+ mlc::equal<mln_dpoint(Pl), mln_dpoint(Pr)>::check();
+ // FIXME: mlc::same_grid<Pl, Pr>::check();
+ mlc::same_coord<Pl, Pr>::check();
const Pl& lhs_ = force_exact<Pl>(lhs);
const Pr& rhs_ = force_exact<Pr>(rhs);
mln_dpoint(Pl) tmp;
for (unsigned i = 0; i < Pl::dim; ++i)
tmp[i] = lhs_[i] - rhs_[i];
+ assert(rhs + tmp = lhs);
return tmp;
}
Index: mln/core/concept/point_set.hh
--- mln/core/concept/point_set.hh (revision 992)
+++ mln/core/concept/point_set.hh (working copy)
@@ -1,6 +1,10 @@
#ifndef MLN_CORE_CONCEPT_POINT_SET_HH
# define MLN_CORE_CONCEPT_POINT_SET_HH
+/*! \file mln/core/concept/point_set.hh
+ * \brief This file defines the concept of mln::Point_Set.
+ */
+
# include <mln/core/concept/point.hh>
# include <mln/core/concept/piter.hh>
@@ -8,6 +12,11 @@
namespace mln
{
+ /*! \brief Base class for implementation classes of point sets.
+ *
+ * \see mln::doc::Point_Set for a complete documentation of this
+ * class contents.
+ */
template <typename E>
struct Point_Set : public Object<E>
{
Index: mln/core/concept/psite.hh
--- mln/core/concept/psite.hh (revision 992)
+++ mln/core/concept/psite.hh (working copy)
@@ -2,7 +2,7 @@
# define MLN_CORE_CONCEPT_PSITE_HH
/*! \file mln/core/concept/psite.hh
- * This file defines the concept of mln::Psite.
+ * \brief This file defines the concept of mln::Psite.
*/
# include <mln/core/concept/genpoint.hh>
@@ -11,8 +11,8 @@
namespace mln
{
- /*! Base class for implementation classes of the notion of "point
- * site".
+ /*! \brief Base class for implementation classes of the notion of
+ * "point site".
*
* A point site ("psite" for short) is an object that allows an
* efficient access to data associated with a point. A point site
Index: mln/core/concept/object.hh
--- mln/core/concept/object.hh (revision 992)
+++ mln/core/concept/object.hh (working copy)
@@ -2,7 +2,7 @@
# define MLN_CORE_CONCEPT_OBJECT_HH
/*! \file mln/core/concept/object.hh
- * This file contains the top milena class.
+ * \brief This file contains the top milena class.
*/
# include <cassert>
Index: mln/core/concept/doc/image.hh
--- mln/core/concept/doc/image.hh (revision 0)
+++ mln/core/concept/doc/image.hh (revision 0)
@@ -0,0 +1,54 @@
+/*! \file mln/core/concept/doc/image.hh
+ * This file documents the concept of mln::Image.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! Documentation class for mln::Image.
+ * \see mln::Image
+ */
+ template <typename E>
+ struct Image : public Object<E>
+ {
+ // to be provided in concrete image classes:
+
+ typedef void value;
+ typedef void rvalue;
+ typedef void lvalue;
+
+ bool has_data() const;
+
+ bool owns_(const psite& p) const; // default is like "has(p)"
+ const pset& domain() const;
+
+ rvalue operator()(const psite& p) const;
+ lvalue operator()(const psite& p);
+
+ template <typename T>
+ struct change_value
+ {
+ typedef ret;
+ };
+
+
+ // provided by internal::image_base_:
+
+ typedef void pset;
+ typedef void point;
+ typedef void psite;
+
+ typedef void piter;
+ typedef void fwd_piter;
+ typedef void bkd_piter;
+
+ bool has(const psite& p) const;
+ const box_<point>& bbox() const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/genpoint.hh
--- mln/core/concept/doc/genpoint.hh (revision 992)
+++ mln/core/concept/doc/genpoint.hh (working copy)
@@ -1,5 +1,5 @@
-/*! \file mln/core/concept/genpoint.doc.hh
- * This file documents the concept of mln::GenPoint.
+/*! \file mln/core/concept/doc/genpoint.hh
+ * \brief This file documents the concept of mln::GenPoint.
*/
namespace mln
@@ -8,18 +8,54 @@
namespace doc
{
+ /*! \brief Documentation class for mln::GenPoint.
+ * \see mln::GenPoint
+ */
template <typename E>
struct GenPoint
{
- typedef void point; ///< Associated type of point.
+ /*! \var dim
+ * \brief Dimension of the space.
+ * \invariant dim > 0
+ */
+ enum { dim };
+
+ /*! \brief Point associated type.
+ * \invariant This type has to derive from mln::Point.
+ */
+ typedef void point;
+ /*! \brief Dpoint associated type.
+ * \invariant This type has to derive from mln::Dpoint.
+ */
typedef void dpoint;
+
+ /*! Coordinate associated type.
+ */
typedef void coord;
+
+
+ // FIXME:
// typedef void topo;
+ // operator point() const;
- operator point() const;
+ /*! \brief Give a hook to the point address.
+ *
+ * This method allows for iterators to refer to a point.
+ *
+ * \return A point address.
+ */
const point* pointer() const;
+
+ /*! \brief Read-only access to the \p i-th coordinate value.
+ *
+ * @param[in] i The coordinate index.
+ *
+ * \pre \p i < \c dim
+ *
+ * \return The value of the \p i-th coordinate.
+ */
coord operator[](unsigned i) const;
};
Index: mln/core/concept/doc/piter.hh
--- mln/core/concept/doc/piter.hh (revision 0)
+++ mln/core/concept/doc/piter.hh (revision 0)
@@ -0,0 +1,29 @@
+/*! \file mln/core/concept/doc/piter.hh
+ * \brief This file documents the concept of mln::Piter.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! \brief Documentation class for mln::Piter.
+ * \see mln::Piter
+ */
+ template <typename E>
+ struct Piter : public Iterator<E>,
+ public GenPoint<E>
+ {
+ // FIXME: HERE
+ typedef void psite;
+ typedef void point;
+
+ operator psite() const;
+ operator point() const;
+ const point* pointer() const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/point_set.hh
--- mln/core/concept/doc/point_set.hh (revision 0)
+++ mln/core/concept/doc/point_set.hh (revision 0)
@@ -0,0 +1,55 @@
+/*! \file mln/core/concept/doc/point_set.hh
+ * \brief This file documents the concept of mln::Point_Set.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! \brief Documentation class for mln::Point_Set.
+ * \see mln::Point_Set
+ */
+ template <typename E>
+ struct Point_Set : public Object<E>
+ {
+ /*! \brief Point associated type.
+ */
+ typedef void point;
+
+ /*! \brief Psite associated type.
+ */
+ typedef void psite;
+
+ /*! \brief Piter associated type.
+ */
+ typedef void piter;
+
+ /*! \brief Forward Piter associated type.
+ */
+ typedef void fwd_piter;
+
+ /*! \brief Backward Piter associated type.
+ */
+ typedef void bkd_piter;
+
+ /*! \brief Test if the \p p belongs to this point set.
+ *
+ * @param[in] p A point site.
+ * \return True if \p p is an element of the point set.
+ */
+ bool has(const psite& p) const;
+
+ /*! \brief Give the bounding box of this point set.
+ */
+ const box_<point>& bbox() const;
+
+ /*! \brief Give the number of points of this point set.
+ */
+ std::size_t npoints() const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/object.hh
--- mln/core/concept/doc/object.hh (revision 0)
+++ mln/core/concept/doc/object.hh (revision 0)
@@ -0,0 +1,30 @@
+/*! \file mln/core/concept/doc/object.hh
+ * \brief This file documents the concept of mln::Object.
+ */
+
+namespace mln
+{
+ /*! \namespace mln::doc
+ * \brief The namespace mln::doc is only for documentation purpose.
+ *
+ * Since concepts are not yet part of the C++ Standard, they are not
+ * explicitly expressed in code. Their documentation is handled by
+ * their respective ghost class, located in this namespace.
+ *
+ * \warning The ghost classes located in mln::doc should not be used
+ * by the client.
+ */
+ namespace doc
+ {
+
+ /*! \brief Documentation class for mln::Object.
+ * \see mln::Object
+ */
+ template <typename E>
+ struct Object
+ {
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/neighborhood.hh
--- mln/core/concept/doc/neighborhood.hh (revision 0)
+++ mln/core/concept/doc/neighborhood.hh (revision 0)
@@ -0,0 +1,24 @@
+/*! \file mln/core/concept/doc/neighborhood.hh
+ * This file documents the concept of mln::Neighborhood.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! Documentation class for mln::Neighborhood.
+ * \see mln::Neighborhood
+ */
+ template <typename E>
+ struct Neighborhood : public Object<E>
+ {
+ typedef void niter;
+ typedef void fwd_niter;
+ typedef void bkd_niter;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/window.hh
--- mln/core/concept/doc/window.hh (revision 0)
+++ mln/core/concept/doc/window.hh (revision 0)
@@ -0,0 +1,51 @@
+/*! \file mln/core/concept/doc/window.hh
+ * \brief This file documents the concept of mln::Window.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! \brief Documentation class for mln::Window.
+ * \see mln::Window
+ */
+ template <typename E>
+ struct Window : public Object<E>
+ {
+ /*! \brief Piter type associated to this window to browse its
+ * points.
+ */
+ typedef void qiter;
+
+ /*! \brief Piter type associated to this window to browse its
+ * points in a forward way.
+ */
+ typedef void fwd_qiter;
+
+ /*! \brief Piter type associated to this window to browse its
+ * points in a backward way.
+ */
+ typedef void bkd_qiter;
+
+ /*! \brief Test if the window is empty.
+ *
+ * A window of null size is empty.
+ */
+ bool is_empty() const;
+
+ /*! \brief Test if the window is centered.
+ *
+ * A window is centered is the origin belongs to the window.
+ */
+ bool is_centered() const;
+
+ /*! \brief Test if the window is symmetric.
+ */
+ bool is_symmetric() const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/box.hh
--- mln/core/concept/doc/box.hh (revision 0)
+++ mln/core/concept/doc/box.hh (revision 0)
@@ -0,0 +1,54 @@
+/*! \file mln/core/concept/doc/box.hh
+ * This file documents the concept of mln::Box.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! Documentation class for mln::Box.
+ * \see mln::Box
+ */
+ template <typename E>
+ struct Box : public Point_Set<E>
+ {
+ /*! \fn const point& pmin() const
+ *
+ * Return the minimum point w.r.t. the ordering between points.
+ *
+ * In 2D this minimum is the top left point of the box.
+ */
+ const point& pmin() const;
+
+ /*! \fn const point& pmax() const
+ *
+ * Return the maximum point w.r.t. the ordering between points.
+ *
+ * In 2D this maximum is the bottom right point of the box.
+ */
+ const point& pmax() const;
+
+ /*! \fn const E& bbox() const
+ *
+ * Return the bounding box of this point set, so that is itself.
+ * This method is declared by the mln::Point_Set concept.
+ *
+ * \warning This method is final for all box classes.
+ */
+ const E& bbox() const;
+
+ /*! \fn std::size_t npoints() const
+ *
+ * Return the number of points of this box. This method is
+ * declared by the mln::Point_Set concept.
+ *
+ * \warning This method is final for all box classes.
+ */
+ std::size_t npoints() const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/iterator.hh
--- mln/core/concept/doc/iterator.hh (revision 0)
+++ mln/core/concept/doc/iterator.hh (revision 0)
@@ -0,0 +1,42 @@
+/*! \file mln/core/concept/doc/iterator.hh
+ * This file documents the concept of mln::Iterator.
+ */
+
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! Documentation class for mln::Iterator.
+ * \see mln::Iterator
+ */
+ template <typename E>
+ struct Iterator : public Object<E>
+ {
+ /*! Returns true if the iterator is valid, that is, designates
+ * an element.
+ */
+ bool is_valid() const;
+
+ /*! Invalidate the iterator.
+ */
+ void invalidate();
+
+ /*! Start an iteration, that is, make the iterator designate the
+ * first element if it exists.
+ */
+ void start();
+
+ /*! Make the iterator designate the next element.
+ */
+ void next_();
+
+ protected:
+ Iterator();
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/doc/dpoint.hh
--- mln/core/concept/doc/dpoint.hh (revision 0)
+++ mln/core/concept/doc/dpoint.hh (revision 0)
@@ -0,0 +1,25 @@
+/*! \file mln/core/concept/doc/dpoint.hh
+ * This file documents the concept of mln::Dpoint.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ /*! Documentation class for mln::Dpoint.
+ * \see mln::Dpoint
+ */
+ template <typename E>
+ struct Dpoint : public Object<E>
+ {
+ typedef point;
+ typedef coord;
+ enum { dim };
+ coord operator[](unsigned i) const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: mln/core/concept/window.hh
--- mln/core/concept/window.hh (revision 992)
+++ mln/core/concept/window.hh (working copy)
@@ -1,12 +1,21 @@
#ifndef MLN_CORE_CONCEPT_WINDOW_HH
# define MLN_CORE_CONCEPT_WINDOW_HH
+/*! \file mln/core/concept/window.hh
+ * \brief This file defines the concept of mln::Window.
+ */
+
# include <mln/core/concept/object.hh>
namespace mln
{
+ /*! \brief Base class for implementation classes that are windows.
+ *
+ * \see mln::doc::Window for a complete documentation of this class
+ * contents.
+ */
template <typename E>
struct Window : public Object<E>
{
Index: mln/core/concept/box.hh
--- mln/core/concept/box.hh (revision 992)
+++ mln/core/concept/box.hh (working copy)
@@ -1,12 +1,24 @@
#ifndef MLN_CORE_CONCEPT_BOX_HH
# define MLN_CORE_CONCEPT_BOX_HH
+/*! \file mln/core/concept/box.hh
+ * \brief This file defines the concept of mln::Box.
+ */
+
# include <mln/core/concept/point_set.hh>
namespace mln
{
+ /*! \brief Base class for implementation classes of boxes.
+ *
+ * Boxes are particular point sets useful to bound any set of
+ * points.
+ *
+ * \see mln::doc::Box for a complete documentation of this class
+ * contents.
+ */
template <typename E>
struct Box : public Point_Set<E>
{
@@ -15,9 +27,8 @@
const point& pmax() const;
*/
- // final
- const E& bbox() const;
- std::size_t npoints() const;
+ const E& bbox() const; //! final; \see mln::doc::Box::bbox
+ std::size_t npoints() const; //! final; \see mln::doc::Box::npoints
protected:
Box();
Index: mln/core/concept/point.hh
--- mln/core/concept/point.hh (revision 992)
+++ mln/core/concept/point.hh (working copy)
@@ -1,8 +1,8 @@
#ifndef MLN_CORE_CONCEPT_POINT_HH
# define MLN_CORE_CONCEPT_POINT_HH
-/*! \file mln/core/exact.hh
- * This file defines the concept of mln::Point.
+/*! \file mln/core/concept/point.hh
+ * \brief This file defines the concept of mln::Point.
*/
# include <mln/core/concept/psite.hh>
@@ -11,15 +11,19 @@
namespace mln
{
- /*! Base class for implementation of point.
+ /*! \brief Base class for implementation of point classes.
*
- * A point is
+ * A point is a vector in a space.
*/
template <typename P>
struct Point : public Psite<P>
{
- // final
+ /*! \brief The associated point type is itself.
+ */
typedef P point;
+
+ /*! \brief The pointer is this point address.
+ */
const P* pointer() const;
protected:
@@ -27,9 +31,36 @@
};
+ /*! \brief Add a delta-point \p rhs to a point \p lhs.
+ *
+ * @param[in,out] lhs The targeted point.
+ * @param[in] rhs A delta-point.
+ *
+ * \pre The type of \p rhs has to be the Dpoint type associated with
+ * the type of \p lhs; otherwise this test does not compile.
+ *
+ * \return A reference to the point \p lhs once translated by \p
+ * rhs.
+ *
+ * \relates mln::Point
+ */
template <typename P>
P& operator+=(Point<P>& lhs, const mln_dpoint(P)& rhs);
+
+ /*! \brief Remove a delta-point \p rhs to a point \p lhs.
+ *
+ * @param[in,out] lhs The targeted point.
+ * @param[in] rhs A delta-point.
+ *
+ * \pre The type of \p rhs has to be the Dpoint type associated with
+ * the type of \p lhs; otherwise this test does not compile.
+ *
+ * \return A reference to the point \p lhs once translated by - \p
+ * rhs.
+ *
+ * \relates mln::Point
+ */
template <typename P>
P& operator-=(Point<P>& lhs, const mln_dpoint(P)& rhs);
Index: mln/core/concept/iterator.hh
--- mln/core/concept/iterator.hh (revision 992)
+++ mln/core/concept/iterator.hh (working copy)
@@ -1,15 +1,25 @@
#ifndef MLN_CORE_CONCEPT_ITERATOR_HH
# define MLN_CORE_CONCEPT_ITERATOR_HH
-# include <mln/core/concept/object.hh>
+/*! \file mln/core/concept/iterator.hh
+ * \brief This file defines the concept of mln::Iterator.
+ */
+# include <mln/core/concept/object.hh>
+/*! \brief Loop to browse all the elements targetted by the iterator
+ * \p x.
+ */
# define for_all(x) for(x.start(); x.is_valid(); x.next())
namespace mln
{
-
+ /*! \brief Base class for implementation classes that are iterators.
+ *
+ * \see mln::doc::Iterator for a complete documentation of this
+ * class contents.
+ */
template <typename E>
struct Iterator : public Object<E>
{
@@ -20,6 +30,14 @@
void next_();
*/
+ /*! \brief Go to the next element.
+ *
+ * \warning This is a final method; iterator classes should not
+ * re-defined this method. The actual "next" operation has to be
+ * defined through the \em next_ method.
+ *
+ * \pre The iterator is valid.
+ */
void next(); // final
protected:
Index: mln/core/contract.hh
--- mln/core/contract.hh (revision 0)
+++ mln/core/contract.hh (revision 0)
@@ -0,0 +1,20 @@
+#ifndef MLN_CORE_CONTRACT_HH
+# define MLN_CORE_CONTRACT_HH
+
+/*! \file mln/core/contract.hh
+ * This file defines the set of contracts.
+ */
+
+# include <cassert>
+
+
+# define mln_assertion(expr) assert(expr)
+
+# define mln_invariant(expr) assert(expr)
+# define mln_precondition(expr) assert(expr)
+# define mln_postcondition(expr) assert(expr)
+
+# define mln_implies(lexpr, repxr) assert(not (rexpr) or (lexpr))
+
+
+#endif // ! MLN_CORE_CONTRACT_HH
Index: mlc/equal.hh
--- mlc/equal.hh (revision 992)
+++ mlc/equal.hh (working copy)
@@ -1,5 +1,5 @@
-#ifndef MLN_MLC_EQUAL_HH
-# define MLN_MLC_EQUAL_HH
+#ifndef MLC_EQUAL_HH
+# define MLC_EQUAL_HH
namespace mln
@@ -25,4 +25,4 @@
} // end of namespace mln
-#endif // ! MLN_MLC_EQUAL_HH
+#endif // ! MLC_EQUAL_HH
Index: mlc/same_coord.hh
--- mlc/same_coord.hh (revision 0)
+++ mlc/same_coord.hh (revision 0)
@@ -0,0 +1,24 @@
+#ifndef MLC_SAME_COORD_HH
+# define MLC_SAME_COORD_HH
+
+# include <mlc/equal.hh>
+# include <mln/core/macros.hh>
+
+
+namespace mln
+{
+
+ namespace mlc
+ {
+
+ template <typename T1, typename T2>
+ struct same_coord : mlc::equal<mln_coord(T1), mln_coord(T2)>
+ {
+ };
+
+ } // end of namespace mln::mlc
+
+} // end of namespace mln
+
+
+#endif // ! MLC_SAME_COORD_HH
Index: mlc/same_point.hh
--- mlc/same_point.hh (revision 992)
+++ mlc/same_point.hh (working copy)
@@ -1,8 +1,8 @@
-#ifndef MLN_MLC_SAME_POINT_HH
-# define MLN_MLC_SAME_POINT_HH
+#ifndef MLC_SAME_POINT_HH
+# define MLC_SAME_POINT_HH
# include <mlc/equal.hh>
-# include <core/macros.hh>
+# include <mln/core/macros.hh>
namespace mln
@@ -12,7 +12,7 @@
{
template <typename T1, typename T2>
- struct same_point : mlc::equal<mln_point(T2), mln_point(T2)>
+ struct same_point : mlc::equal<mln_point(T1), mln_point(T2)>
{
};
@@ -21,4 +21,4 @@
} // end of namespace mln
-#endif // ! MLN_MLC_SAME_POINT_HH
+#endif // ! MLC_SAME_POINT_HH
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Start milena documentation.
* core/macros.hh,
* core/concept/genpoint.hh,
* core/concept/psite.hh,
* core/concept/object.hh,
* core/concept/point.hh,
* core/ops.hh,
* core/exact.hh: Add some documentation.
* core/concept/doc: New.
* core/concept/doc/genpoint.hh: New.
* mlc/equal.hh: Remove include.
core/concept/doc/genpoint.hh | 28 ++++++++++++++++++++++++++++
core/concept/genpoint.hh | 24 +++++++++++++++++++++---
core/concept/object.hh | 8 ++++++++
core/concept/point.hh | 8 ++++++++
core/concept/psite.hh | 26 ++++++++++++++++++++++++++
core/exact.hh | 27 +++++++++++++++++++++++++--
core/macros.hh | 3 +++
core/ops.hh | 34 +++++++++++++++++++++++++++++++++-
mlc/equal.hh | 2 --
9 files changed, 152 insertions(+), 8 deletions(-)
Index: core/macros.hh
--- core/macros.hh (revision 990)
+++ core/macros.hh (working copy)
@@ -1,6 +1,9 @@
#ifndef MLN_CORE_MACROS_HH
# define MLN_CORE_MACROS_HH
+/*! \file mln/core/macros.hh
+ * This file defines the set of milena macros.
+ */
# define mln_point(T) typename T::point
# define mln_dpoint(T) typename T::dpoint
Index: core/concept/genpoint.hh
--- core/concept/genpoint.hh (revision 990)
+++ core/concept/genpoint.hh (working copy)
@@ -1,6 +1,10 @@
#ifndef MLN_CORE_CONCEPT_GENPOINT_HH
# define MLN_CORE_CONCEPT_GENPOINT_HH
+/*! \file mln/core/concept/genpoint.hh
+ * This file defines the concept of mln::GenPoint.
+ */
+
# include <core/concept/object.hh>
# include <core/macros.hh>
# include <mlc/equal.hh>
@@ -10,9 +14,20 @@
namespace mln
{
+ /*! Base class for implementation classes that are points or that
+ * have the behavior of points.
+ *
+ * "GenPoint" is "General Point" for short.
+ *
+ * This class does not derive from mln::Object; it is for use as a
+ * parallel hierarchy.
+ *
+ * \relates mln::doc::GenPoint
+ */
template <typename E>
struct GenPoint // stand-alone class!
{
+
/*
typedef point;
typedef dpoint;
@@ -31,6 +46,9 @@
};
+
+ /*! \relates mln::GenPoint
+ */
template <typename Pl, typename Pr>
bool operator=(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs);
@@ -38,12 +56,12 @@
bool operator<(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs);
template <typename Pl, typename Pr>
- mln_dpoint(Pl)
+ typename Pl::dpoint
operator-(const GenPoint<Pl>& lhs, const GenPoint<Pr>& rhs);
template <typename P>
- mln_point(P)
- operator+(const GenPoint<P>& lhs, const mln_dpoint(P)& rhs);
+ typename P::point
+ operator+(const GenPoint<P>& lhs, const typename P::dpoint& rhs);
template <typename P>
std::ostream& operator<<(std::ostream& ostr, const GenPoint<P>& p);
Index: core/concept/psite.hh
--- core/concept/psite.hh (revision 990)
+++ core/concept/psite.hh (working copy)
@@ -1,12 +1,38 @@
#ifndef MLN_CORE_CONCEPT_PSITE_HH
# define MLN_CORE_CONCEPT_PSITE_HH
+/*! \file mln/core/concept/psite.hh
+ * This file defines the concept of mln::Psite.
+ */
+
# include <core/concept/genpoint.hh>
namespace mln
{
+ /*! Base class for implementation classes of the notion of "point
+ * site".
+ *
+ * A point site ("psite" for short) is an object that allows an
+ * efficient access to data associated with a point. A point site
+ * is either a point or designates a point: regular points, deriving
+ * from mln::Point, are point sites, yet some point sites are not
+ * points.) A point site has the behavior expected from every
+ * point; see mln::GenPoint.
+ *
+ * When a point site is not a point, it is automatically convertible
+ * to the point it designates.
+ *
+ *
+ * Let us take the example of a 2D image encoded as an array of runs
+ * of values. With a point, a pair (row index, column index),
+ * retrieving the corresponding pixel value would mean to browse the
+ * array of runs to find the value location. That would not be
+ * efficient. Conversely, a point site dedicated to this image
+ * structure allows for value access in contant time; precisely the
+ * proper point site is a pair (index of run, index within the run).
+ */
template <typename E>
struct Psite : public Object<E>,
public GenPoint<E>
Index: core/concept/object.hh
--- core/concept/object.hh (revision 990)
+++ core/concept/object.hh (working copy)
@@ -1,6 +1,10 @@
#ifndef MLN_CORE_CONCEPT_OBJECT_HH
# define MLN_CORE_CONCEPT_OBJECT_HH
+/*! \file mln/core/concept/object.hh
+ * This file contains the top milena class.
+ */
+
# include <cassert>
# include <iostream>
@@ -10,6 +14,10 @@
namespace mln
{
+ /*! \brief Base class for almost every class defined in milena.
+ *
+ * The parameter \a E is the exact type.
+ */
template <typename E>
struct Object
{
Index: core/concept/doc/genpoint.hh
--- core/concept/doc/genpoint.hh (revision 0)
+++ core/concept/doc/genpoint.hh (revision 0)
@@ -0,0 +1,28 @@
+/*! \file mln/core/concept/genpoint.doc.hh
+ * This file documents the concept of mln::GenPoint.
+ */
+
+namespace mln
+{
+
+ namespace doc
+ {
+
+ template <typename E>
+ struct GenPoint
+ {
+ typedef void point; ///< Associated type of point.
+
+ typedef void dpoint;
+ typedef void coord;
+ // typedef void topo;
+
+ operator point() const;
+
+ const point* pointer() const;
+ coord operator[](unsigned i) const;
+ };
+
+ } // end of namespace mln::doc
+
+} // end of namespace mln
Index: core/concept/point.hh
--- core/concept/point.hh (revision 990)
+++ core/concept/point.hh (working copy)
@@ -1,12 +1,20 @@
#ifndef MLN_CORE_CONCEPT_POINT_HH
# define MLN_CORE_CONCEPT_POINT_HH
+/*! \file mln/core/exact.hh
+ * This file defines the concept of mln::Point.
+ */
+
# include <core/concept/psite.hh>
namespace mln
{
+ /*! Base class for implementation of point.
+ *
+ * A point is
+ */
template <typename P>
struct Point : public Psite<P>
{
Index: core/ops.hh
--- core/ops.hh (revision 990)
+++ core/ops.hh (working copy)
@@ -1,6 +1,10 @@
#ifndef MLN_CORE_OPS_HH
# define MLN_CORE_OPS_HH
+/*! \file mln/core/ops.hh
+ * Default definitions of some operators.
+ */
+
# include <core/concept/object.hh>
# include <core/exact.hh>
@@ -8,15 +12,43 @@
namespace mln
{
+ /*! The "not equal to" operator is here defined for every milena
+ * objects. It relies on the definition of the "equal to" operator.
+ * It returns "not (lhs = rhs)".
+ *
+ * \warning There shall not be any other definition of this operator
+ * in milena when applying on a couple of mln::Object.
+ */
template <typename O1, typename O2>
bool operator!=(const Object<O1>& lhs, const Object<O2>& rhs);
+ /*! The "greater than" operator is here defined for every milena
+ * objects. It relies on the definition of the "less than"
+ * operator. It returns "rhs < lhs".
+ *
+ * \warning There shall not be any other definition of this operator
+ * in milena when applying on a couple of mln::Object.
+ */
template <typename O1, typename O2>
bool operator>(const Object<O1>& lhs, const Object<O2>& rhs);
+ /*! The "greater than or equal to" operator is here defined for
+ * every milena objects. It relies on the definition of the "less
+ * than or equal to" operator. It returns "rhs <= lhs".
+ *
+ * \warning There shall not be any other definition of this operator
+ * in milena when applying on a couple of mln::Object.
+ */
template <typename O1, typename O2>
bool operator>=(const Object<O1>& lhs, const Object<O2>& rhs);
+ /*! A default version of the "less than or equal to" operator is
+ * defined for every milena objects. It relies on the definition of
+ * the "less than" operator. It returns "not (rhs < lhs)".
+ *
+ * \warning In the case of partial ordering between objects, this
+ * operator has to be re-defined.
+ */
template <typename O1, typename O2>
bool operator<=(const Object<O1>& lhs, const Object<O2>& rhs);
@@ -45,7 +77,7 @@
bool operator<=(const Object<O1>& lhs, const Object<O2>& rhs)
{
// if partial ordering, this operator should be re-defined!
- return not exact(rhs) < exact(lhs);
+ return not (exact(rhs) < exact(lhs));
}
# endif // ! MLN_INCLUDE_ONLY
Index: core/exact.hh
--- core/exact.hh (revision 990)
+++ core/exact.hh (working copy)
@@ -1,13 +1,24 @@
#ifndef MLN_CORE_EXACT_HH
# define MLN_CORE_EXACT_HH
+/*! \file mln/core/exact.hh
+ * This file defines the mln::exact downcast routines.
+ */
+
# include <core/concept/object.hh>
namespace mln
{
- // exact
+ /*! The mln::exact routine downcasts an object towards its exact
+ * type.
+ *
+ * The only argument is an mln::Object. The return follows the
+ * nature of the argument (either a pointer or a reference, const or
+ * not).
+ */
+ /// \{
template <typename E>
E* exact(Object<E>* ptr);
@@ -21,8 +32,18 @@
template <typename E>
const E& exact(const Object<E>& ref);
+ /// \}
- // force_exact
+
+
+ /*! The mln::force_exact is a violent cast routine.
+ *
+ * It preserves the nature (pointer or reference, const or mutable)
+ * of its argument. The parameter \a E should not have qualifiers.
+ *
+ * \todo Move into mln::internal.
+ */
+ /// \{
template <typename E, typename O>
E* force_exact(O* ptr);
@@ -36,6 +57,8 @@
template <typename E, typename O>
const E& force_exact(const O& ref);
+ /// \}
+
# ifndef MLN_INCLUDE_ONLY
Index: mlc/equal.hh
--- mlc/equal.hh (revision 990)
+++ mlc/equal.hh (working copy)
@@ -1,8 +1,6 @@
#ifndef MLN_MLC_EQUAL_HH
# define MLN_MLC_EQUAL_HH
-# include <core/concept/genpoint.hh>
-
namespace mln
{