617: Fix sanity checks and reorganize hierarchies of abstractions.

https://svn.lrde.epita.fr/svn/oln/trunk/olena Index: ChangeLog from Roland Levillain <roland@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>
participants (1)
-
Roland Levillain