https://svn.lrde.epita.fr/svn/oln/trunk/olena
Index: ChangeLog
from Roland Levillain <roland(a)lrde.epita.fr>
Fix sanity checks.
* oln/core/abstract/image/hybrid/classical.hh,
* oln/core/gen/neighb.hh, oln/core/gen/window.hh,
* oln/core/gen/fwd_qiter_win.hh, oln/core/gen/piter_isubset.hh,
* oln/core/gen/mapimage.hh,
* oln/core/internal/bbox_fwd_piter.hh,
* oln/core/internal/bbox_bkd_piter.hh,
* oln/core/fwd_piter.hh, oln/core/1d/point1d.hh,
* oln/core/1d/dpoint1d.hh, oln/core/2d/point2d.hh,
* oln/core/2d/dpoint2d.hh, oln/core/2d/neighb2d.hh,
* oln/core/3d/point3d.hh, oln/core/3d/dpoint3d.hh,
* oln/core/3d/neighb3d.hh,
* oln/morpher/add_isubset.hh, oln/morpher/add_neighborhood.hh,
* oln/debug/print.hh, oln/io/pnm.hh, oln/level/fill.hh:
Include needed (missing) headers.
* oln/core/1d/image1d.hh, oln/core/2d/image2d.hh,
* oln/core/3d/image3d.hh: Likewise.
Instantiate oln::bbox_ explicitly.
* oln/core/gen/bbox.hh
(oln/core/gen/bbox_fwd_piter.hh, oln/core/gen/bbox_bkd_piter.hh):
Don't include them.
* oln/core/gen/topo_bbox.hh (impl_has_large): Typo.
Reorganize the abstract::image hierarchy.
* oln/core/abstract/image/hierarchies.hh: Move inclusions of point
set abstractions...
* oln/core/abstract/image/all.hh: ...here (new file).
* oln/core/image_entry.hh: Adjust.
* oln/Makefile.am (nobase_oln_HEADERS): Adjust.
* oln/basics1d.hh, oln/basics2d.hh, oln/basics3d.hh: Remove
explicit template instantiations.
* oln/core/abstract/image.hh
(oln/core/abstract/image/hierarchies.hh): Don't include it.
* oln/core/abstract/image/dimension/hierarchy.hh
* oln/core/abstract/image/type/hierarchy.hh,
* oln/core/abstract/image/neighborhood/hierarchy.hh
* oln/core/abstract/image/bbox/hierarchy.hh
* oln/core/abstract/image/accessibility/hierarchy.hh
* oln/core/abstract/image/mutability/hierarchy.hh
* oln/core/abstract/image/hybrid/classical.hh
(oln/core/abstract/image/hierarchies.hh): Include it.
* oln/core/abstract/image/type/integre.hh
(oln::abstract::case_<image_hierarchy_wrt_type, E, 4>)
(oln::abstract::case_<image_hierarchy_wrt_type, E, 5>)
(oln::abstract::case_<image_hierarchy_wrt_type, E, 6>): Catch up
with image type hierarchy.
Reorganize the abstract::point_set hierarchy.
* oln/core/abstract/point_set_hierarchies.hh: Rename as...
* oln/core/abstract/point_set/hierarchies.hh: ...this.
Move inclusions of point set abstractions...
* oln/core/abstract/point_set/all.hh: ...here (new file).
* oln/core/point_set_entry.hh: Adjust.
* oln/core/abstract/point_set_being_connected.hh,
* oln/core/abstract/point_set_being_random_accessible.hh,
* oln/core/abstract/point_set_having_bbox.hh,
* oln/core/abstract/point_set_having_known_size.hh: Rename as...
* oln/core/abstract/point_set/point_set_being_connected.hh,
* oln/core/abstract/point_set/point_set_being_random_accessible.hh,
* oln/core/abstract/point_set/point_set_having_bbox.hh,
* oln/core/abstract/point_set/point_set_having_known_size.hh:
...these.
Adjust header guards and inclusions.
* oln/Makefile.am (nobase_oln_HEADERS): Adjust.
* oln/core/abstract/bbox.hh
(oln::case_<point_set_hierarchy_wrt_bbox, E, 1>)
(oln::case_<point_set_hierarchy_wrt_bbox, E, 2>): Move...
* oln/core/abstract/point_set/point_set_having_bbox.hh: ...here.
(oln::abstract::point_set_having_bbox):
s/oln_type_of/oln_check_type_of/g.
Reorganize the abstract::topology hierarchy.
* oln/core/abstract/topology_hierarchies.hh: Rename as...
* oln/core/abstract/topology/hierarchies.hh: ...this.
Move inclusions of topology abstractions...
* oln/core/abstract/topology/all.hh: ...here (new file).
* oln/core/topology_entry.hh: Adjust
* oln/core/abstract/topology_being_random_accessible.hh,
* oln/core/abstract/topology_having_bbox.hh,
* oln/core/abstract/topology_having_neighborhood.hh,
* oln/core/abstract/topology_having_subset.hh: Rename as...
* oln/core/abstract/topology/topology_being_random_accessible.hh,
* oln/core/abstract/topology/topology_having_bbox.hh,
* oln/core/abstract/topology/topology_having_neighborhood.hh,
* oln/core/abstract/topology/topology_having_subset.hh: ...these.
Adjust header guards and inclusions.
* oln/Makefile.am (nobase_oln_HEADERS): Adjust.
Makefile.am | 36 +++----
basics1d.hh | 7 -
basics2d.hh | 1
basics3d.hh | 7 -
core/1d/dpoint1d.hh | 3
core/1d/image1d.hh | 9 +
core/1d/neighb1d.hh | 2
core/1d/point1d.hh | 4
core/2d/dpoint2d.hh | 3
core/2d/image2d.hh | 9 +
core/2d/neighb2d.hh | 2
core/2d/point2d.hh | 4
core/3d/dpoint3d.hh | 2
core/3d/image3d.hh | 9 +
core/3d/neighb3d.hh | 2
core/3d/point3d.hh | 4
core/abstract/bbox.hh | 19 ----
core/abstract/image.hh | 3
core/abstract/image/accessibility/hierarchy.hh | 1
core/abstract/image/all.hh | 50 +++++++++++
core/abstract/image/bbox/hierarchy.hh | 13 +-
core/abstract/image/dimension/hierarchy.hh | 1
core/abstract/image/hierarchies.hh | 23 -----
core/abstract/image/hybrid/classical.hh | 5 +
core/abstract/image/mutability/hierarchy.hh | 9 +
core/abstract/image/neighborhood/hierarchy.hh | 15 +--
core/abstract/image/type/hierarchy.hh | 13 +-
core/abstract/image/type/integre.hh | 12 +-
core/abstract/point_set.hh | 5 -
core/abstract/point_set/all.hh | 45 +++++++++
core/abstract/point_set/hierarchies.hh | 9 -
core/abstract/point_set/point_set_being_connected.hh | 7 -
core/abstract/point_set/point_set_being_random_accessible.hh | 7 -
core/abstract/point_set/point_set_having_bbox.hh | 39 ++++++--
core/abstract/point_set/point_set_having_known_size.hh | 8 -
core/abstract/topology.hh | 5 -
core/abstract/topology/all.hh | 45 +++++++++
core/abstract/topology/hierarchies.hh | 15 ---
core/abstract/topology/topology_being_random_accessible.hh | 7 -
core/abstract/topology/topology_having_bbox.hh | 7 -
core/abstract/topology/topology_having_neighborhood.hh | 7 -
core/abstract/topology/topology_having_subset.hh | 7 -
core/fwd_piter.hh | 3
core/gen/bbox.hh | 4
core/gen/fwd_qiter_win.hh | 3
core/gen/mapimage.hh | 4
core/gen/neighb.hh | 1
core/gen/piter_isubset.hh | 3
core/gen/topo_bbox.hh | 4
core/gen/window.hh | 2
core/image_entry.hh | 2
core/internal/bbox_bkd_piter.hh | 1
core/internal/bbox_fwd_piter.hh | 1
core/point_set_entry.hh | 3
core/topology_entry.hh | 3
debug/print.hh | 3
io/pnm.hh | 6 +
level/fill.hh | 1
morpher/add_isubset.hh | 2
morpher/add_neighborhood.hh | 1
60 files changed, 332 insertions(+), 196 deletions(-)
Index: oln/debug/print.hh
--- oln/debug/print.hh (revision 616)
+++ oln/debug/print.hh (working copy)
@@ -30,6 +30,9 @@
# include <iostream>
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hybrid/classical.hh>
+# include <oln/core/abstract/iterator.hh>
+# include <oln/core/2d/point2d.hh>
namespace oln
Index: oln/level/fill.hh
--- oln/level/fill.hh (revision 616)
+++ oln/level/fill.hh (working copy)
@@ -33,6 +33,7 @@
# include <mlc/is_a.hh>
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/iterator.hh>
# include <oln/core/automatic/image_being_mutable.hh>
Index: oln/basics1d.hh
--- oln/basics1d.hh (revision 616)
+++ oln/basics1d.hh (working copy)
@@ -35,25 +35,18 @@
# include <oln/core/1d/grid1d.hh>
# include <oln/core/1d/point1d.hh>
-namespace oln { template class point1d_<int>; }
# include <oln/core/1d/dpoint1d.hh>
-namespace oln { template class dpoint1d_<int>; }
# include <oln/core/gen/bbox.hh>
-namespace oln { template class bbox_<point1d>; }
# include <oln/core/gen/topo_lbbox.hh>
-namespace oln { template class topo_lbbox_<point1d>; }
# include <oln/core/gen/fwd_piter_bbox.hh>
-namespace oln { template class fwd_piter_bbox_<topo1d>; }
# include <oln/core/gen/bkd_piter_bbox.hh>
-namespace oln { template class bkd_piter_bbox_<topo1d>; }
# include <oln/core/gen/neighb.hh>
-namespace oln { template class neighb_<dpoint1d>; }
# include <oln/core/1d/neighb1d.hh>
# include <oln/core/1d/image1d.hh>
Index: oln/io/pnm.hh
--- oln/io/pnm.hh (revision 616)
+++ oln/io/pnm.hh (working copy)
@@ -33,6 +33,12 @@
# include <fstream>
# include <string>
+# include <oln/core/abstract/iterator.hh>
+# include <oln/core/gen/fwd_piter_bbox.hh>
+# include <oln/core/gen/bkd_piter_bbox.hh>
+# include <oln/core/fwd_piter.hh>
+# include <oln/core/2d/aliases.hh>
+# include <oln/core/2d/dpoint2d.hh>
# include <oln/core/2d/image2d.hh>
Index: oln/core/fwd_piter.hh
--- oln/core/fwd_piter.hh (revision 616)
+++ oln/core/fwd_piter.hh (working copy)
@@ -30,6 +30,9 @@
# include <oln/core/abstract/entry.hh>
# include <oln/core/abstract/image.hh>
+# include <oln/core/1d/aliases.hh>
+# include <oln/core/2d/aliases.hh>
+# include <oln/core/3d/aliases.hh>
namespace oln
Index: oln/core/point_set_entry.hh
--- oln/core/point_set_entry.hh (revision 616)
+++ oln/core/point_set_entry.hh (working copy)
@@ -29,8 +29,7 @@
# define OLN_CORE_POINT_SET_ENTRY_HH
# include <oln/core/abstract/entry.hh>
-# include <oln/core/abstract/point_set.hh>
-
+# include <oln/core/abstract/point_set/all.hh>
namespace oln
Index: oln/core/topology_entry.hh
--- oln/core/topology_entry.hh (revision 616)
+++ oln/core/topology_entry.hh (working copy)
@@ -29,8 +29,7 @@
# define OLN_CORE_TOPOLOGY_ENTRY_HH
# include <oln/core/abstract/entry.hh>
-# include <oln/core/abstract/topology.hh>
-
+# include <oln/core/abstract/topology/all.hh>
namespace oln
Index: oln/core/image_entry.hh
--- oln/core/image_entry.hh (revision 616)
+++ oln/core/image_entry.hh (working copy)
@@ -29,7 +29,7 @@
# define OLN_CORE_IMAGE_ENTRY_HH
# include <oln/core/abstract/entry.hh>
-# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/all.hh>
Index: oln/core/abstract/image.hh
--- oln/core/abstract/image.hh (revision 616)
+++ oln/core/abstract/image.hh (working copy)
@@ -179,7 +179,4 @@
} // end of namespace oln
-# include <oln/core/abstract/image/hierarchies.hh>
-
-
#endif // ! OLN_CORE_ABSTRACT_IMAGE_HH
Index: oln/core/abstract/image/hybrid/classical.hh
--- oln/core/abstract/image/hybrid/classical.hh (revision 616)
+++ oln/core/abstract/image/hybrid/classical.hh (working copy)
@@ -29,6 +29,7 @@
# define OLN_CORE_ABSTRACT_IMAGE_HYBRID_CLASSICAL_HH
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
# include <oln/core/abstract/image/dimension/2d.hh>
# include <oln/core/abstract/image/bbox/hierarchy.hh>
@@ -77,6 +78,10 @@
} // end of namespace oln::abstract
+ // Fwd. decl.
+ class grid2d;
+
+
/// 2-D case.
template <typename E>
struct case_< image_hybrid_hierarchy_wrt_classical, E, 1 > :
Index: oln/core/abstract/image/type/integre.hh
--- oln/core/abstract/image/type/integre.hh (revision 616)
+++ oln/core/abstract/image/type/integre.hh (working copy)
@@ -108,34 +108,34 @@
/// Grey-level case.
template <typename E>
struct case_< image_hierarchy_wrt_type, E, 4 > :
- where_< mlc_is_a( mlc_comma_1(oln_type_of(E, value)), ntg::real_value ) >
+ where_< mlc_is_a( oln_type_of(E, value), ntg::real_value ) >
{
// Definition of the super class corresponding to this case
// (abstract::grey_level_image_ is the conjunction of
// abstract::grey_level_image and abstract::not_binary_image).
- typedef abstract::internal::grey_level_image_<E> ret;
+ typedef abstract::grey_level_image<E> ret;
};
/// Label case.
template <typename E>
struct case_< image_hierarchy_wrt_type, E, 5 > :
- where_< mlc_is_a( mlc_comma_1(oln_type_of(E, value)), ntg::enum_value ) >
+ where_< mlc_is_a( oln_type_of(E, value), ntg::enum_value ) >
{
// Definition of the super class corresponding to this case
// (abstract::label_image_ is the conjunction of
// abstract::label_image and abstract::not_binary_image).
- typedef abstract::internal::label_image_<E> ret;
+ typedef abstract::label_image<E> ret;
};
/// Color case.
template <typename E>
struct case_< image_hierarchy_wrt_type, E, 6 > :
- where_< mlc_is_a( mlc_comma_1(oln_type_of(E, value)), ntg::color_value ) >
+ where_< mlc_is_a( oln_type_of(E, value), ntg::color_value ) >
{
// Definition of the super class corresponding to this case
// (abstract::color_image_ is the conjunction of
// abstract::color_image and abstract::not_binary_image).
- typedef abstract::internal::color_image_<E> ret;
+ typedef abstract::color_image<E> ret;
};
/// \}
Index: oln/core/abstract/image/type/hierarchy.hh
--- oln/core/abstract/image/type/hierarchy.hh (revision 616)
+++ oln/core/abstract/image/type/hierarchy.hh (working copy)
@@ -28,8 +28,9 @@
#ifndef OLN_CORE_ABSTRACT_IMAGE_TYPE_HIERARCHY_HH
# define OLN_CORE_ABSTRACT_IMAGE_TYPE_HIERARCHY_HH
-# include <xtd/valtraits.hh>
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
+# include <xtd/valtraits.hh>
/* Image ``type'' hierarchy (summary).
@@ -38,7 +39,7 @@
/image<I>/
^
|
- ,--------------+-------------+-------------+--------+
+ ,--------------+-------------+-------------+--------.
| | | | |
/grey_level_image/ /color_image/ /label_image/ /data_image/ ...
^ ^ ^ ^ ^ ^
@@ -46,10 +47,10 @@
| | | /binary_image/ | |
| | | ^ | |
| | | | | |
- ,----------------------------------------------------------.
- | The selection of the super class(es) is made according |
- | to the value of type_of(I, value). |
- `----------------------------------------------------------'
+ ,-------------------------------------------------------------.
+ | The selection of the super class(es) is made according to |
+ | the value of type_of(I, value). |
+ `-------------------------------------------------------------'
| | | | | |
o o o o o o
Index: oln/core/abstract/image/mutability/hierarchy.hh
--- oln/core/abstract/image/mutability/hierarchy.hh (revision 616)
+++ oln/core/abstract/image/mutability/hierarchy.hh (working copy)
@@ -29,6 +29,7 @@
# define OLN_CORE_ABSTRACT_IMAGE_MUTABILITY_HIERARCHY_HH
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
# include <oln/core/automatic/image_being_mutable.hh>
@@ -37,7 +38,7 @@
{
/*-------------------------.
- | Dimension abstractions. |
+ | Mutability abstraction. |
`-------------------------*/
namespace abstract
@@ -105,9 +106,9 @@
} // end of namespace oln::abstract
- /*-------------------.
- | Dimension switch. |
- `-------------------*/
+ /*--------------------.
+ | Mutability switch. |
+ `--------------------*/
/// With mutability.
template <typename E>
Index: oln/core/abstract/image/hierarchies.hh
--- oln/core/abstract/image/hierarchies.hh (revision 616)
+++ oln/core/abstract/image/hierarchies.hh (working copy)
@@ -52,27 +52,4 @@
} // end of namespace oln
-
-// Hierarchy 1: image w.r.t. dimension.
-# include <oln/core/abstract/image/dimension/hierarchy.hh>
-
-// Hierarchy 2: image w.r.t. type of data.
-# include <oln/core/abstract/image/type/hierarchy.hh>
-
-// Hierarchy 3: image w.r.t. neighborhood.
-# include <oln/core/abstract/image/neighborhood/hierarchy.hh>
-
-// Hierarchy 4: image w.r.t. bounding box.
-# include <oln/core/abstract/image/bbox/hierarchy.hh>
-
-// Hierarchy 5: image w.r.t. accessibility.
-# include <oln/core/abstract/image/accessibility/hierarchy.hh>
-
-// Hierarchy 6: image w.r.t. data mutability.
-# include <oln/core/abstract/image/mutability/hierarchy.hh>
-
-// Hybrid hierarchy 7: image w.r.t. classical features.
-# include <oln/core/abstract/image/hybrid/classical.hh>
-
-
#endif // ! OLN_CORE_ABSTRACT_IMAGE_HIERARCHIES_HH
Index: oln/core/abstract/image/dimension/hierarchy.hh
--- oln/core/abstract/image/dimension/hierarchy.hh (revision 616)
+++ oln/core/abstract/image/dimension/hierarchy.hh (working copy)
@@ -29,6 +29,7 @@
# define OLN_CORE_ABSTRACT_IMAGE_DIMENSION_HIERARCHY_HH
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
/* Image dimension hierarchy (summary).
Index: oln/core/abstract/image/all.hh
--- oln/core/abstract/image/all.hh (revision 0)
+++ oln/core/abstract/image/all.hh (revision 0)
@@ -0,0 +1,50 @@
+// Copyright (C) 2006 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 OLN_CORE_ABSTRACT_IMAGE_ALL_HH
+# define OLN_CORE_ABSTRACT_IMAGE_ALL_HH
+
+# include <oln/core/abstract/image.hh>
+
+# include <oln/core/abstract/image/hierarchies.hh>
+
+// Hierarchy 1: image w.r.t. dimension.
+# include <oln/core/abstract/image/dimension/hierarchy.hh>
+// Hierarchy 2: image w.r.t. type of data.
+# include <oln/core/abstract/image/type/hierarchy.hh>
+// Hierarchy 3: image w.r.t. neighborhood.
+# include <oln/core/abstract/image/neighborhood/hierarchy.hh>
+// Hierarchy 4: image w.r.t. bounding box.
+# include <oln/core/abstract/image/bbox/hierarchy.hh>
+// Hierarchy 5: image w.r.t. accessibility.
+# include <oln/core/abstract/image/accessibility/hierarchy.hh>
+// Hierarchy 6: image w.r.t. data mutability.
+# include <oln/core/abstract/image/mutability/hierarchy.hh>
+// Hybrid hierarchy 7: image w.r.t. classical features.
+# include <oln/core/abstract/image/hybrid/classical.hh>
+
+#endif // ! OLN_CORE_ABSTRACT_IMAGE_ALL_HH
Index: oln/core/abstract/image/accessibility/hierarchy.hh
--- oln/core/abstract/image/accessibility/hierarchy.hh (revision 616)
+++ oln/core/abstract/image/accessibility/hierarchy.hh (working copy)
@@ -29,6 +29,7 @@
# define OLN_CORE_ABSTRACT_IMAGE_ACCESSIBILITY_HIERARCHY_HH
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
# include <oln/core/automatic/image_being_random_accessible.hh>
Index: oln/core/abstract/image/neighborhood/hierarchy.hh
--- oln/core/abstract/image/neighborhood/hierarchy.hh (revision 616)
+++ oln/core/abstract/image/neighborhood/hierarchy.hh (working copy)
@@ -29,13 +29,14 @@
# define OLN_CORE_ABSTRACT_IMAGE_NEIGHBORHOOD_HIERARCHY_HH
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
# include <oln/core/automatic/image_having_neighborhood.hh>
/* Image having neighborhood hierarchy (summary).
-FIXME: TODO!
+ FIXME: TODO (diagram)!
Default case: If the neighborhood type returned by
@@ -46,9 +47,9 @@
namespace oln
{
- /*-------------------------.
- | Dimension abstractions. |
- `-------------------------*/
+ /*---------------------------.
+ | Neighborhood abstraction. |
+ `---------------------------*/
namespace abstract
{
@@ -109,9 +110,9 @@
} // end of namespace oln::abstract
- /*-------------------.
- | Dimension switch. |
- `-------------------*/
+ /*----------------------.
+ | Neighborhood switch. |
+ `----------------------*/
/// With neighborhood.
template <typename E>
Index: oln/core/abstract/image/bbox/hierarchy.hh
--- oln/core/abstract/image/bbox/hierarchy.hh (revision 616)
+++ oln/core/abstract/image/bbox/hierarchy.hh (working copy)
@@ -29,15 +29,16 @@
# define OLN_CORE_ABSTRACT_IMAGE_BBOX_HIERARCHY_HH
# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/hierarchies.hh>
# include <oln/core/abstract/bbox.hh>
namespace oln
{
- /*-------------------------.
- | Dimension abstractions. |
- `-------------------------*/
+ /*---------------------------.
+ | Bounding box abstraction. |
+ `---------------------------*/
namespace abstract
{
@@ -126,9 +127,9 @@
} // end of namespace oln::abstract
- /*-------------------.
- | Dimension switch. |
- `-------------------*/
+ /*----------------------.
+ | Bounding box switch. |
+ `----------------------*/
/// With bbox.
template <typename E>
Index: oln/core/abstract/bbox.hh
--- oln/core/abstract/bbox.hh (revision 616)
+++ oln/core/abstract/bbox.hh (working copy)
@@ -29,7 +29,7 @@
#ifndef OLN_CORE_ABSTRACT_BBOX_HH
# define OLN_CORE_ABSTRACT_BBOX_HH
-# include <oln/core/abstract/point_set_having_bbox.hh>
+# include <oln/core/abstract/point_set/point_set_having_bbox.hh>
namespace oln
@@ -98,23 +98,6 @@
} // end of namespace oln::abstract
-
- template <typename E>
- struct case_ < point_set_hierarchy_wrt_bbox, E, 1 >
- : where_< mlc::eq_< oln_type_of(E, bbox), E > >
- {
- typedef abstract::bbox<E> ret;
- };
-
-
- template <typename E>
- struct case_ < point_set_hierarchy_wrt_bbox, E, 2 >
- : where_< mlc::neq_< oln_type_of(E, bbox), mlc::none > >
- {
- typedef abstract::point_set_having_bbox<E> ret;
- };
-
-
} // end of namespace oln
Index: oln/core/abstract/point_set.hh
--- oln/core/abstract/point_set.hh (revision 616)
+++ oln/core/abstract/point_set.hh (working copy)
@@ -116,9 +116,4 @@
} // end of namespace oln
-
-# include <oln/core/abstract/point_set_hierarchies.hh>
-
-
-
#endif // ! OLN_CORE_ABSTRACT_POINT_SET_HH
Index: oln/core/abstract/point_set/point_set_being_random_accessible.hh
--- oln/core/abstract/point_set/point_set_being_random_accessible.hh (revision 0)
+++ oln/core/abstract/point_set/point_set_being_random_accessible.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_POINT_SET_BEING_RANDOM_ACCESSIBLE_HH
-# define OLN_CORE_ABSTRACT_POINT_SET_BEING_RANDOM_ACCESSIBLE_HH
+#ifndef OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_BEING_RANDOM_ACCESSIBLE_HH
+# define OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_BEING_RANDOM_ACCESSIBLE_HH
# include <oln/core/abstract/point_set.hh>
+# include <oln/core/abstract/point_set/hierarchies.hh>
@@ -83,4 +84,4 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_POINT_SET_BEING_RANDOM_ACCESSIBLE_HH
+#endif // ! OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_BEING_RANDOM_ACCESSIBLE_HH
Index: oln/core/abstract/point_set/point_set_having_known_size.hh
--- oln/core/abstract/point_set/point_set_having_known_size.hh (revision 0)
+++ oln/core/abstract/point_set/point_set_having_known_size.hh (working copy)
@@ -25,11 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_POINT_SET_HAVING_KNOWN_SIZE_HH
-# define OLN_CORE_ABSTRACT_POINT_SET_HAVING_KNOWN_SIZE_HH
+#ifndef OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_HAVING_KNOWN_SIZE_HH
+# define OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_HAVING_KNOWN_SIZE_HH
# include <oln/core/abstract/point_set.hh>
-
+# include <oln/core/abstract/point_set/hierarchies.hh>
namespace oln
@@ -82,5 +82,5 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_POINT_SET_HAVING_KNOWN_SIZE_HH
+#endif // ! OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_HAVING_KNOWN_SIZE_HH
Index: oln/core/abstract/point_set/hierarchies.hh
--- oln/core/abstract/point_set/hierarchies.hh (revision 0)
+++ oln/core/abstract/point_set/hierarchies.hh (working copy)
@@ -28,6 +28,7 @@
#ifndef OLN_CORE_ABSTRACT_POINT_SET_HIERARCHIES_HH
# define OLN_CORE_ABSTRACT_POINT_SET_HIERARCHIES_HH
+# include <oln/core/abstract/entry.hh>
# include <oln/core/abstract/point_set.hh>
@@ -42,13 +43,5 @@
} // end of namespace oln
-# include <oln/core/abstract/point_set_having_known_size.hh>
-# include <oln/core/abstract/point_set_being_random_accessible.hh>
-# include <oln/core/abstract/point_set_having_bbox.hh>
-# include <oln/core/abstract/bbox.hh>
-# include <oln/core/abstract/point_set_being_connected.hh>
-
-
-
#endif // ! OLN_CORE_ABSTRACT_POINT_SET_HIERARCHIES_HH
Index: oln/core/abstract/point_set/all.hh
--- oln/core/abstract/point_set/all.hh (revision 0)
+++ oln/core/abstract/point_set/all.hh (revision 0)
@@ -0,0 +1,45 @@
+// Copyright (C) 2006 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 OLN_CORE_ABSTRACT_POINT_SET_ALL_HH
+# define OLN_CORE_ABSTRACT_POINT_SET_ALL_HH
+
+# include <oln/core/abstract/point_set.hh>
+
+# include <oln/core/abstract/point_set/hierarchies.hh>
+
+// Hierarchy 1: point set w.r.t. size.
+# include <oln/core/abstract/point_set/point_set_having_known_size.hh>
+// Hierarchy 2: point set w.r.t. accessibility.
+# include <oln/core/abstract/point_set/point_set_being_random_accessible.hh>
+// Hierarchy 3: point set w.r.t. bbox.
+# include <oln/core/abstract/point_set/point_set_having_bbox.hh>
+# include <oln/core/abstract/bbox.hh>
+// Hierarchy 4: point set w.r.t. connexity.
+# include <oln/core/abstract/point_set/point_set_being_connected.hh>
+
+#endif // ! OLN_CORE_ABSTRACT_POINT_SET_ALL_HH
Index: oln/core/abstract/point_set/point_set_being_connected.hh
--- oln/core/abstract/point_set/point_set_being_connected.hh (revision 0)
+++ oln/core/abstract/point_set/point_set_being_connected.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_POINT_SET_BEING_CONNECTED_HH
-# define OLN_CORE_ABSTRACT_POINT_SET_BEING_CONNECTED_HH
+#ifndef OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_BEING_CONNECTED_HH
+# define OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_BEING_CONNECTED_HH
# include <oln/core/abstract/point_set.hh>
+# include <oln/core/abstract/point_set/hierarchies.hh>
namespace oln
@@ -198,4 +199,4 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_POINT_SET_BEING_CONNECTED_HH
+#endif // ! OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_BEING_CONNECTED_HH
Index: oln/core/abstract/point_set/point_set_having_bbox.hh
--- oln/core/abstract/point_set/point_set_having_bbox.hh (revision 0)
+++ oln/core/abstract/point_set/point_set_having_bbox.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_POINT_SET_HAVING_BBOX_HH
-# define OLN_CORE_ABSTRACT_POINT_SET_HAVING_BBOX_HH
+#ifndef OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_HAVING_BBOX_HH
+# define OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_HAVING_BBOX_HH
# include <oln/core/abstract/point_set.hh>
+# include <oln/core/abstract/point_set/hierarchies.hh>
namespace oln
@@ -37,15 +38,14 @@
namespace abstract
{
-
template <typename E>
class point_set_having_bbox : public virtual point_set<E>
{
- typedef oln_type_of(E, point) point_t;
- typedef oln_type_of(E, bbox) bbox_t;
+ typedef oln_check_type_of(E, point) point_t;
+ typedef oln_check_type_of(E, bbox) bbox_t;
- typedef oln_type_of(point_t, coord) coord_t;
- typedef oln_type_of(point_t, dim) dim_t;
+ typedef oln_check_type_of(point_t, coord) coord_t;
+ typedef oln_check_type_of(point_t, dim) dim_t;
enum { n = mlc_value(dim_t) };
public:
@@ -129,11 +129,30 @@
} // end of namespace oln::abstract
- // an abstract sub-class of point_set_having_bbox<E> is abstract::bbox<E>;
- // the switch-case mechanism is in oln/core/abstract/bbox.hh
+ // Fwd. decl.
+ namespace abstract
+ {
+ template <typename E> class bbox;
+ }
+
+
+ template <typename E>
+ struct case_ < point_set_hierarchy_wrt_bbox, E, 1 >
+ : where_< mlc::eq_< oln_type_of(E, bbox), E > >
+ {
+ typedef abstract::bbox<E> ret;
+ };
+
+
+ template <typename E>
+ struct case_ < point_set_hierarchy_wrt_bbox, E, 2 >
+ : where_< mlc::neq_< oln_type_of(E, bbox), mlc::none > >
+ {
+ typedef abstract::point_set_having_bbox<E> ret;
+ };
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_POINT_SET_HAVING_BBOX_HH
+#endif // ! OLN_CORE_ABSTRACT_POINT_SET_POINT_SET_HAVING_BBOX_HH
Index: oln/core/abstract/topology.hh
--- oln/core/abstract/topology.hh (revision 616)
+++ oln/core/abstract/topology.hh (working copy)
@@ -101,9 +101,4 @@
} // end of namespace oln
-
-# include <oln/core/abstract/topology_hierarchies.hh>
-
-
-
#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_HH
Index: oln/core/abstract/topology/topology_having_bbox.hh
--- oln/core/abstract/topology/topology_having_bbox.hh (revision 0)
+++ oln/core/abstract/topology/topology_having_bbox.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_BBOX_HH
-# define OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_BBOX_HH
+#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_BBOX_HH
+# define OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_BBOX_HH
# include <oln/core/abstract/topology.hh>
+# include <oln/core/abstract/topology/hierarchies.hh>
# include <oln/core/automatic/topology_having_bbox.hh>
@@ -106,4 +107,4 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_BBOX_HH
+#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_BBOX_HH
Index: oln/core/abstract/topology/hierarchies.hh
--- oln/core/abstract/topology/hierarchies.hh (revision 0)
+++ oln/core/abstract/topology/hierarchies.hh (working copy)
@@ -28,6 +28,7 @@
#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_HIERARCHIES_HH
# define OLN_CORE_ABSTRACT_TOPOLOGY_HIERARCHIES_HH
+# include <oln/core/abstract/entry.hh>
# include <oln/core/abstract/topology.hh>
@@ -42,19 +43,5 @@
} // end of namespace oln
-// Hierarchy 1: topology w.r.t. accessibility.
-# include <oln/core/abstract/topology_being_random_accessible.hh>
-
-// Hierarchy 2: topology w.r.t. bounding box.
-# include <oln/core/abstract/topology_having_bbox.hh>
-
-// Hierarchy 3: topology w.r.t. neighborhood.
-# include <oln/core/abstract/topology_having_neighborhood.hh>
-
-// Hierarchy 4: topology w.r.t. neighborhood.
-# include <oln/core/abstract/topology_having_subset.hh>
-
-
-
#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_HIERARCHIES_HH
Index: oln/core/abstract/topology/all.hh
--- oln/core/abstract/topology/all.hh (revision 0)
+++ oln/core/abstract/topology/all.hh (revision 0)
@@ -0,0 +1,45 @@
+// Copyright (C) 2006 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 OLN_CORE_ABSTRACT_TOPOLOGY_ALL_HH
+# define OLN_CORE_ABSTRACT_TOPOLOGY_ALL_HH
+
+# include <oln/core/abstract/topology.hh>
+
+# include <oln/core/abstract/topology/hierarchies.hh>
+
+// Hierarchy 1: topology w.r.t. accessibility.
+# include <oln/core/abstract/topology/topology_being_random_accessible.hh>
+// Hierarchy 2: topology w.r.t. bounding box.
+# include <oln/core/abstract/topology/topology_having_bbox.hh>
+// Hierarchy 3: topology w.r.t. neighborhood.
+# include <oln/core/abstract/topology/topology_having_neighborhood.hh>
+// Hierarchy 4: topology w.r.t. subset.
+# include <oln/core/abstract/topology/topology_having_subset.hh>
+
+#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_ALL_HH
+
Index: oln/core/abstract/topology/topology_being_random_accessible.hh
--- oln/core/abstract/topology/topology_being_random_accessible.hh (revision 0)
+++ oln/core/abstract/topology/topology_being_random_accessible.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_BEING_RANDOM_ACCESSIBLE_HH
-# define OLN_CORE_ABSTRACT_TOPOLOGY_BEING_RANDOM_ACCESSIBLE_HH
+#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_BEING_RANDOM_ACCESSIBLE_HH
+# define OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_BEING_RANDOM_ACCESSIBLE_HH
# include <oln/core/abstract/topology.hh>
+# include <oln/core/abstract/topology/hierarchies.hh>
# include <oln/core/automatic/topology_being_random_accessible.hh>
@@ -94,4 +95,4 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_BEING_RANDOM_ACCESSIBLE_HH
+#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_BEING_RANDOM_ACCESSIBLE_HH
Index: oln/core/abstract/topology/topology_having_subset.hh
--- oln/core/abstract/topology/topology_having_subset.hh (revision 0)
+++ oln/core/abstract/topology/topology_having_subset.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_SUBSET_HH
-# define OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_SUBSET_HH
+#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_SUBSET_HH
+# define OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_SUBSET_HH
# include <oln/core/abstract/topology.hh>
+# include <oln/core/abstract/topology/hierarchies.hh>
# include <oln/core/automatic/topology_having_subset.hh>
@@ -86,4 +87,4 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_SUBSET_HH
+#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_SUBSET_HH
Index: oln/core/abstract/topology/topology_having_neighborhood.hh
--- oln/core/abstract/topology/topology_having_neighborhood.hh (revision 0)
+++ oln/core/abstract/topology/topology_having_neighborhood.hh (working copy)
@@ -25,10 +25,11 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_NEIGHBORHOOD_HH
-# define OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_NEIGHBORHOOD_HH
+#ifndef OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_NEIGHBORHOOD_HH
+# define OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_NEIGHBORHOOD_HH
# include <oln/core/abstract/topology.hh>
+# include <oln/core/abstract/topology/hierarchies.hh>
# include <oln/core/automatic/topology_having_neighborhood.hh>
@@ -97,4 +98,4 @@
} // end of namespace oln
-#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_HAVING_NEIGHBORHOOD_HH
+#endif // ! OLN_CORE_ABSTRACT_TOPOLOGY_TOPOLOGY_HAVING_NEIGHBORHOOD_HH
Index: oln/core/1d/neighb1d.hh
--- oln/core/1d/neighb1d.hh (revision 616)
+++ oln/core/1d/neighb1d.hh (working copy)
@@ -30,7 +30,7 @@
# define OLN_CORE_1D_NEIGHB1D_HH
# include <oln/core/gen/neighb.hh>
-# include <oln/core/1d/aliases.hh>
+# include <oln/core/1d/dpoint1d.hh>
namespace oln
Index: oln/core/1d/dpoint1d.hh
--- oln/core/1d/dpoint1d.hh (revision 616)
+++ oln/core/1d/dpoint1d.hh (working copy)
@@ -32,6 +32,8 @@
# include <mlc/int.hh>
# include <oln/core/1d/point1d.hh>
# include <oln/core/internal/dpoint_nd.hh>
+// For oln::dpoint1d and oln::dpoint1df.
+# include <oln/core/1d/aliases.hh>
namespace oln
@@ -95,4 +97,5 @@
} // end of namespace oln
+
#endif // ! OLN_CORE_1D_DPOINT1D_HH
Index: oln/core/1d/image1d.hh
--- oln/core/1d/image1d.hh (revision 616)
+++ oln/core/1d/image1d.hh (working copy)
@@ -31,12 +31,21 @@
# include <oln/core/image_entry.hh>
# include <oln/core/1d/array1d.hh>
+# include <oln/core/1d/point1d.hh>
+# include <oln/core/gen/topo_lbbox.hh>
# include <oln/core/internal/tracked_ptr.hh>
+// For topo1d.
+# include <oln/core/1d/aliases.hh>
namespace oln
{
+ // FIXME: Inexplicably, this explicit instantiation is required to
+ // have topo_lbbox_<point1d> work. See if we can get rid of it.
+ template class bbox_<point1d>;
+
+
// Forward declaration.
template <typename T> class image1d;
Index: oln/core/1d/point1d.hh
--- oln/core/1d/point1d.hh (revision 616)
+++ oln/core/1d/point1d.hh (working copy)
@@ -31,6 +31,8 @@
# include <mlc/int.hh>
# include <oln/core/internal/point_nd.hh>
+// For oln::point1d and oln::point1df.
+# include <oln/core/1d/aliases.hh>
namespace oln
@@ -102,7 +104,5 @@
} // end of namespace oln
-# include <oln/core/1d/dpoint1d.hh>
-
#endif // ! OLN_CORE_1D_POINT1D_HH
Index: oln/core/2d/neighb2d.hh
--- oln/core/2d/neighb2d.hh (revision 616)
+++ oln/core/2d/neighb2d.hh (working copy)
@@ -30,7 +30,7 @@
# define OLN_CORE_2D_NEIGHB2D_HH
# include <oln/core/gen/neighb.hh>
-# include <oln/core/2d/aliases.hh>
+# include <oln/core/2d/dpoint2d.hh>
namespace oln
Index: oln/core/2d/dpoint2d.hh
--- oln/core/2d/dpoint2d.hh (revision 616)
+++ oln/core/2d/dpoint2d.hh (working copy)
@@ -32,6 +32,8 @@
# include <mlc/int.hh>
# include <oln/core/2d/point2d.hh>
# include <oln/core/internal/dpoint_nd.hh>
+// For oln::dpoint2d and oln::dpoint2df.
+# include <oln/core/2d/aliases.hh>
namespace oln
@@ -121,6 +123,7 @@
# endif
+
} // end of namespace oln
Index: oln/core/2d/image2d.hh
--- oln/core/2d/image2d.hh (revision 616)
+++ oln/core/2d/image2d.hh (working copy)
@@ -31,12 +31,21 @@
# include <oln/core/image_entry.hh>
# include <oln/core/2d/array2d.hh>
+# include <oln/core/2d/point2d.hh>
+# include <oln/core/gen/topo_lbbox.hh>
# include <oln/core/internal/tracked_ptr.hh>
+// For topo2d.
+# include <oln/core/2d/aliases.hh>
namespace oln
{
+ // FIXME: Inexplicably, this explicit instantiation is required to
+ // have topo_lbbox_<point2d> work. See if we can get rid of it.
+ template class bbox_<point2d>;
+
+
// Forward declaration.
template <typename T> class image2d;
Index: oln/core/2d/point2d.hh
--- oln/core/2d/point2d.hh (revision 616)
+++ oln/core/2d/point2d.hh (working copy)
@@ -31,6 +31,8 @@
# include <mlc/int.hh>
# include <oln/core/internal/point_nd.hh>
+// For oln::point2d and oln::point2df.
+# include <oln/core/2d/aliases.hh>
namespace oln
@@ -140,7 +142,5 @@
} // end of namespace oln
-# include <oln/core/2d/dpoint2d.hh>
-
#endif // ! OLN_CORE_2D_POINT2D_HH
Index: oln/core/3d/neighb3d.hh
--- oln/core/3d/neighb3d.hh (revision 616)
+++ oln/core/3d/neighb3d.hh (working copy)
@@ -30,7 +30,7 @@
# define OLN_CORE_3D_NEIGHB3D_HH
# include <oln/core/gen/neighb.hh>
-# include <oln/core/3d/aliases.hh>
+# include <oln/core/3d/dpoint3d.hh>
namespace oln
Index: oln/core/3d/dpoint3d.hh
--- oln/core/3d/dpoint3d.hh (revision 616)
+++ oln/core/3d/dpoint3d.hh (working copy)
@@ -32,6 +32,8 @@
# include <mlc/int.hh>
# include <oln/core/3d/point3d.hh>
# include <oln/core/internal/dpoint_nd.hh>
+// For oln::dpoint3d and oln::dpoint3df.
+# include <oln/core/3d/aliases.hh>
namespace oln
Index: oln/core/3d/image3d.hh
--- oln/core/3d/image3d.hh (revision 616)
+++ oln/core/3d/image3d.hh (working copy)
@@ -31,12 +31,21 @@
# include <oln/core/image_entry.hh>
# include <oln/core/3d/array3d.hh>
+# include <oln/core/3d/point3d.hh>
+# include <oln/core/gen/topo_lbbox.hh>
# include <oln/core/internal/tracked_ptr.hh>
+// For topo3d.
+# include <oln/core/3d/aliases.hh>
namespace oln
{
+ // FIXME: Inexplicably, this explicit instantiation is required to
+ // have topo_lbbox_<point3d> work. See if we can get rid of it.
+ template class bbox_<point3d>;
+
+
// Forward declaration.
template <typename T> class image3d;
Index: oln/core/3d/point3d.hh
--- oln/core/3d/point3d.hh (revision 616)
+++ oln/core/3d/point3d.hh (working copy)
@@ -31,6 +31,8 @@
# include <mlc/int.hh>
# include <oln/core/internal/point_nd.hh>
+// For oln::point3d and oln::point3df.
+# include <oln/core/3d/aliases.hh>
namespace oln
@@ -108,7 +110,5 @@
} // end of namespace oln
-# include <oln/core/3d/dpoint3d.hh>
-
#endif // ! OLN_CORE_3D_POINT3D_HH
Index: oln/core/gen/piter_isubset.hh
--- oln/core/gen/piter_isubset.hh (revision 616)
+++ oln/core/gen/piter_isubset.hh (working copy)
@@ -28,8 +28,9 @@
#ifndef OLN_CORE_GEN_PITER_ISUBSET_HH
# define OLN_CORE_GEN_PITER_ISUBSET_HH
-# include <oln/core/abstract/topology.hh>
# include <oln/core/abstract/iterator_on_points.hh>
+# include <oln/core/abstract/topology.hh>
+# include <oln/core/gen/topo_add_isubset.hh>
namespace oln
Index: oln/core/gen/bbox.hh
--- oln/core/gen/bbox.hh (revision 616)
+++ oln/core/gen/bbox.hh (working copy)
@@ -262,8 +262,4 @@
} // end of namespace oln
-# include <oln/core/gen/bbox_fwd_piter.hh>
-# include <oln/core/gen/bbox_bkd_piter.hh>
-
-
#endif // ! OLN_CORE_GEN_BBOX_HH
Index: oln/core/gen/topo_bbox.hh
--- oln/core/gen/topo_bbox.hh (revision 616)
+++ oln/core/gen/topo_bbox.hh (working copy)
@@ -32,11 +32,9 @@
# include <oln/core/topology_entry.hh>
-
namespace oln
{
-
// Forward declarations.
template <typename point> class topo_bbox_;
@@ -137,7 +135,7 @@
bool
topo_bbox_<point>::impl_has_large(const point& p) const
{
- return lbb_.has(p);
+ return bb_.has(p);
}
# endif
Index: oln/core/gen/neighb.hh
--- oln/core/gen/neighb.hh (revision 616)
+++ oln/core/gen/neighb.hh (working copy)
@@ -32,6 +32,7 @@
# include <set>
# include <vector>
# include <oln/core/neighborhood_entry.hh>
+# include <oln/core/abstract/dpoint.hh>
namespace oln
Index: oln/core/gen/fwd_qiter_win.hh
--- oln/core/gen/fwd_qiter_win.hh (revision 616)
+++ oln/core/gen/fwd_qiter_win.hh (working copy)
@@ -28,9 +28,8 @@
#ifndef OLN_CORE_GEN_FWD_QITER_WIN_HH
# define OLN_CORE_GEN_FWD_QITER_WIN_HH
-# include <oln/core/abstract/topology.hh>
# include <oln/core/abstract/iterator_on_points.hh>
-# include <oln/core/gen/win.hh>
+# include <oln/core/gen/window.hh>
namespace oln
Index: oln/core/gen/window.hh
--- oln/core/gen/window.hh (revision 616)
+++ oln/core/gen/window.hh (working copy)
@@ -31,6 +31,8 @@
# include <set>
# include <vector>
+# include <mlc/assert.hh>
+# include <oln/core/abstract/dpoint.hh>
namespace oln
Index: oln/core/gen/mapimage.hh
--- oln/core/gen/mapimage.hh (revision 616)
+++ oln/core/gen/mapimage.hh (working copy)
@@ -29,9 +29,11 @@
#ifndef OLN_CORE_GEN_MAPIMAGE_HH
# define OLN_CORE_GEN_MAPIMAGE_HH
+# include <map>
# include <oln/core/image_entry.hh>
# include <oln/core/gen/topo_bbox.hh>
-# include <map>
+# include <oln/core/gen/fwd_piter_bbox.hh>
+# include <oln/core/gen/bkd_piter_bbox.hh>
namespace oln
Index: oln/core/internal/bbox_bkd_piter.hh
--- oln/core/internal/bbox_bkd_piter.hh (revision 616)
+++ oln/core/internal/bbox_bkd_piter.hh (working copy)
@@ -32,6 +32,7 @@
# include <oln/core/abstract/iterator_on_points.hh>
# include <oln/core/abstract/point.hh>
# include <oln/core/gen/bbox.hh>
+# include <oln/core/fwd_piter.hh>
namespace oln
Index: oln/core/internal/bbox_fwd_piter.hh
--- oln/core/internal/bbox_fwd_piter.hh (revision 616)
+++ oln/core/internal/bbox_fwd_piter.hh (working copy)
@@ -32,6 +32,7 @@
# include <oln/core/abstract/iterator_on_points.hh>
# include <oln/core/abstract/point.hh>
# include <oln/core/gen/bbox.hh>
+# include <oln/core/fwd_piter.hh>
namespace oln
Index: oln/basics2d.hh
--- oln/basics2d.hh (revision 616)
+++ oln/basics2d.hh (working copy)
@@ -38,7 +38,6 @@
# include <oln/core/2d/dpoint2d.hh>
# include <oln/core/gen/bbox.hh>
-namespace oln { template class bbox_<point2d>; }
# include <oln/core/gen/topo_lbbox.hh>
Index: oln/Makefile.am
--- oln/Makefile.am (revision 616)
+++ oln/Makefile.am (working copy)
@@ -29,15 +29,6 @@
\
core/abstract/image/accessibility/hierarchy.hh \
\
- core/abstract/any.hh \
- core/abstract/bbox.hh \
- core/abstract/dpoint.hh \
- core/abstract/entry.hh \
- core/abstract/fwd_decls.hh \
- core/abstract/grid.hh \
- core/abstract/image.hh \
- core/abstract/image/accessibility/hierarchy.hh \
- \
core/abstract/image/bbox/hierarchy.hh \
\
core/abstract/image/dimension/1d.hh \
@@ -46,6 +37,7 @@
core/abstract/image/dimension/hierarchy.hh \
\
core/abstract/image/hybrid/classical.hh \
+ \
core/abstract/image/mutability/hierarchy.hh \
\
core/abstract/image/neighborhood/hierarchy.hh \
@@ -58,14 +50,30 @@
core/abstract/image/type/integre.hh \
core/abstract/image/type/label.hh \
\
+ core/abstract/image/all.hh \
core/abstract/image/hierarchies.hh \
\
core/abstract/internal/image_impl.hh \
\
+ core/abstract/point_set/all.hh \
+ core/abstract/point_set/hierarchies.hh \
+ core/abstract/point_set/point_set_being_connected.hh \
+ core/abstract/point_set/point_set_being_random_accessible.hh \
+ core/abstract/point_set/point_set_having_bbox.hh \
+ core/abstract/point_set/point_set_having_known_size.hh \
+ \
+ core/abstract/topology/all.hh \
+ core/abstract/topology/hierarchies.hh \
+ core/abstract/topology/topology_being_random_accessible.hh \
+ core/abstract/topology/topology_having_bbox.hh \
+ core/abstract/topology/topology_having_neighborhood.hh \
+ core/abstract/topology/topology_having_subset.hh \
+ \
core/abstract/any.hh \
core/abstract/bbox.hh \
core/abstract/dpoint.hh \
core/abstract/entry.hh \
+ core/abstract/fwd_decls.hh \
core/abstract/grid.hh \
core/abstract/image.hh \
core/abstract/iterator.hh \
@@ -73,17 +81,7 @@
core/abstract/neighborhood.hh \
core/abstract/point.hh \
core/abstract/point_set.hh \
- core/abstract/point_set_being_connected.hh \
- core/abstract/point_set_being_random_accessible.hh \
- core/abstract/point_set_having_bbox.hh \
- core/abstract/point_set_having_known_size.hh \
- core/abstract/point_set_hierarchies.hh \
core/abstract/topology.hh \
- core/abstract/topology_being_random_accessible.hh \
- core/abstract/topology_having_bbox.hh \
- core/abstract/topology_having_neighborhood.hh \
- core/abstract/topology_having_subset.hh \
- core/abstract/topology_hierarchies.hh \
\
core/automatic/image.hh \
core/automatic/image_being_mutable.hh \
Index: oln/basics3d.hh
--- oln/basics3d.hh (revision 616)
+++ oln/basics3d.hh (working copy)
@@ -35,25 +35,18 @@
# include <oln/core/3d/grid3d.hh>
# include <oln/core/3d/point3d.hh>
-namespace oln { template class point3d_<int>; }
# include <oln/core/3d/dpoint3d.hh>
-namespace oln { template class dpoint3d_<int>; }
# include <oln/core/gen/bbox.hh>
-namespace oln { template class bbox_<point3d>; }
# include <oln/core/gen/topo_lbbox.hh>
-namespace oln { template class topo_lbbox_<point3d>; }
# include <oln/core/gen/fwd_piter_bbox.hh>
-namespace oln { template class fwd_piter_bbox_<topo3d>; }
# include <oln/core/gen/bkd_piter_bbox.hh>
-namespace oln { template class bkd_piter_bbox_<topo3d>; }
# include <oln/core/gen/neighb.hh>
-namespace oln { template class neighb_<dpoint3d>; }
# include <oln/core/3d/neighb3d.hh>
# include <oln/core/3d/image3d.hh>
Index: oln/morpher/add_isubset.hh
--- oln/morpher/add_isubset.hh (revision 616)
+++ oln/morpher/add_isubset.hh (working copy)
@@ -28,6 +28,8 @@
#ifndef OLN_MORPHER_ADD_ISUBSET
# define OLN_MORPHER_ADD_ISUBSET
+# include <oln/core/abstract/image.hh>
+# include <oln/core/abstract/image/type/binary.hh>
# include <oln/morpher/internal/image_extension.hh>
# include <oln/core/gen/topo_add_isubset.hh>
# include <oln/core/gen/piter_isubset.hh>
Index: oln/morpher/add_neighborhood.hh
--- oln/morpher/add_neighborhood.hh (revision 616)
+++ oln/morpher/add_neighborhood.hh (working copy)
@@ -30,6 +30,7 @@
# include <oln/morpher/internal/image_extension.hh>
# include <oln/core/gen/topo_add_nbh.hh>
+# include <oln/core/fwd_piter.hh>
# include <oln/core/gen/fwd_niter_neighb.hh>