|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r82545 - in sandbox-branches/geometry/index: boost/geometry/extensions/index/algorithms boost/geometry/extensions/index/algorithms/detail boost/geometry/extensions/index/detail boost/geometry/extensions/index/detail/algorithms boost/geometry/extensions/index/detail/rtree boost/geometry/extensions/index/detail/rtree/linear boost/geometry/extensions/index/detail/rtree/quadratic boost/geometry/extensions/index/detail/rtree/rstar boost/geometry/extensions/index/detail/rtree/visitors test/rtree
From: adam.wulkiewicz_at_[hidden]
Date: 2013-01-18 20:15:58
Author: awulkiew
Date: 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
New Revision: 82545
URL: http://svn.boost.org/trac/boost/changeset/82545
Log:
index/algorithms/* moved to index/detail/algorithms/*
Added:
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_centroid.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_far.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_near.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/content.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/diff_abs.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/intersection_content.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/margin.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/minmaxdist.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/smallest_for_indexable.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp (contents, props changed)
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/union_content.hpp (contents, props changed)
Removed:
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_centroid.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_far.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_near.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/content.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/diff_abs.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/smallest_for_indexable.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/intersection_content.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/margin.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/minmaxdist.hpp
sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/union_content.hpp
Text files modified:
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/distance_predicates.hpp | 12 +++++-----
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/linear/redistribute_elements.hpp | 25 +++++++++-------------
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/options.hpp | 24 ++++++++++----------
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/quadratic/redistribute_elements.hpp | 30 +++++++++++---------------
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/choose_next_node.hpp | 36 ++++++++++++++------------------
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/insert.hpp | 12 +++-------
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/redistribute_elements.hpp | 44 ++++++++++++++++++---------------------
sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp | 18 ++++++++--------
sandbox-branches/geometry/index/test/rtree/test_rtree.hpp | 10 ++++----
9 files changed, 95 insertions(+), 116 deletions(-)
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_centroid.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_centroid.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,81 +0,0 @@
-// Boost.Geometry Index
-//
-// squared distance between point and centroid of the box or point
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_CENTROID_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_CENTROID_HPP
-
-#include <boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp>
-#include <boost/geometry/extensions/index/algorithms/detail/diff_abs.hpp>
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-struct comparable_distance_centroid_tag {};
-
-template <
- typename Point,
- typename PointIndexable,
- size_t N>
-struct sum_for_indexable<Point, PointIndexable, point_tag, comparable_distance_centroid_tag, N>
-{
- typedef typename geometry::default_distance_result<Point, PointIndexable>::type result_type;
-
- inline static result_type apply(Point const& pt, PointIndexable const& i)
- {
- return geometry::comparable_distance(pt, i);
- }
-};
-
-template <
- typename Point,
- typename BoxIndexable,
- size_t DimensionIndex>
-struct sum_for_indexable_dimension<Point, BoxIndexable, box_tag, comparable_distance_centroid_tag, DimensionIndex>
-{
- typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
-
- inline static result_type apply(Point const& pt, BoxIndexable const& i)
- {
- typedef typename index::detail::traits::coordinate_type<Point>::type point_coord_t;
- typedef typename index::detail::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
-
- point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
- indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
- indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
-
- indexable_coord_t ind_c_avg = ind_c_min + (ind_c_max - ind_c_min) / 2;
- // TODO: awulkiew - is (ind_c_min + ind_c_max) / 2 safe?
-
- result_type diff = detail::diff_abs(ind_c_avg, pt_c);
-
- return diff * diff;
- }
-};
-
-} // namespace detail
-
-template <typename Point, typename Indexable>
-typename geometry::default_distance_result<Point, Indexable>::type
-comparable_distance_centroid(Point const& pt, Indexable const& i)
-{
- return detail::sum_for_indexable<
- Point,
- Indexable,
- typename index::detail::traits::tag<Indexable>::type,
- detail::comparable_distance_centroid_tag,
- index::detail::traits::dimension<Indexable>::value
- >::apply(pt, i);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // #define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_CENTROID_HPP
-
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_far.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_far.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,70 +0,0 @@
-// Boost.Geometry Index
-//
-// squared distance between point and furthest point of the box or point
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_FAR_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_FAR_HPP
-
-#include <boost/geometry/extensions/index/algorithms/detail/diff_abs.hpp>
-#include <boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp>
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-// minmaxdist component
-
-struct comparable_distance_far_tag {};
-
-template <
- typename Point,
- typename BoxIndexable,
- size_t DimensionIndex>
-struct sum_for_indexable_dimension<Point, BoxIndexable, box_tag, comparable_distance_far_tag, DimensionIndex>
-{
- typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
-
- inline static result_type apply(Point const& pt, BoxIndexable const& i)
- {
- typedef typename index::detail::traits::coordinate_type<Point>::type point_coord_t;
- typedef typename index::detail::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
-
- point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
- indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
- indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
-
- result_type further_diff = 0;
-
- if ( (ind_c_min + ind_c_max) / 2 <= pt_c )
- further_diff = pt_c - ind_c_min;
- else
- further_diff = detail::diff_abs(pt_c, ind_c_max); // unsigned values protection
-
- return further_diff * further_diff;
- }
-};
-
-} // namespace detail
-
-template <typename Point, typename Indexable>
-typename geometry::default_distance_result<Point, Indexable>::type
-comparable_distance_far(Point const& pt, Indexable const& i)
-{
- return detail::sum_for_indexable<
- Point,
- Indexable,
- typename index::detail::traits::tag<Indexable>::type,
- detail::comparable_distance_far_tag,
- index::detail::traits::dimension<Indexable>::value
- >::apply(pt, i);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_FAR_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_near.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/comparable_distance_near.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,81 +0,0 @@
-// Boost.Geometry Index
-//
-// squared distance between point and nearest point of the box or point
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_NEAR_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_NEAR_HPP
-
-#include <boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp>
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-struct comparable_distance_near_tag {};
-
-template <
- typename Point,
- typename PointIndexable,
- size_t N>
-struct sum_for_indexable<Point, PointIndexable, point_tag, comparable_distance_near_tag, N>
-{
- typedef typename geometry::default_distance_result<Point, PointIndexable>::type result_type;
-
- inline static result_type apply(Point const& pt, PointIndexable const& i)
- {
- return geometry::comparable_distance(pt, i);
- }
-};
-
-template <
- typename Point,
- typename BoxIndexable,
- size_t DimensionIndex>
-struct sum_for_indexable_dimension<Point, BoxIndexable, box_tag, comparable_distance_near_tag, DimensionIndex>
-{
- typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
-
- inline static result_type apply(Point const& pt, BoxIndexable const& i)
- {
- typedef typename index::detail::traits::coordinate_type<Point>::type point_coord_t;
- typedef typename index::detail::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
-
- point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
- indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
- indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
-
- result_type diff = 0;
-
- if ( pt_c < ind_c_min )
- diff = ind_c_min - pt_c;
- else if ( ind_c_max < pt_c )
- diff = pt_c - ind_c_max;
-
- return diff * diff;
- }
-};
-
-} // namespace detail
-
-template <typename Point, typename Indexable>
-typename geometry::default_distance_result<Point, Indexable>::type
-comparable_distance_near(Point const& pt, Indexable const& i)
-{
- return detail::sum_for_indexable<
- Point,
- Indexable,
- typename index::detail::traits::tag<Indexable>::type,
- detail::comparable_distance_near_tag,
- index::detail::traits::dimension<Indexable>::value
- >::apply(pt, i);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_COMPARABLE_DISTANCE_NEAR_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/content.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/content.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,87 +0,0 @@
-// Boost.Geometry Index
-//
-// n-dimensional box's content (hypervolume) - 2d area, 3d volume, ...
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_CONTENT_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_CONTENT_HPP
-
-namespace boost { namespace geometry { namespace index {
-
-template <typename Indexable>
-struct default_content_result
-{
- typedef typename select_most_precise<
- typename detail::traits::coordinate_type<Indexable>::type,
- long double
- >::type type;
-};
-
-namespace detail {
-
-template <typename Box, size_t CurrentDimension>
-struct content_for_each_dimension
-{
- BOOST_STATIC_ASSERT(0 < CurrentDimension);
- BOOST_STATIC_ASSERT(CurrentDimension <= traits::dimension<Box>::value);
-
- static inline typename default_content_result<Box>::type apply(Box const& b)
- {
- return content_for_each_dimension<Box, CurrentDimension - 1>::apply(b) *
- ( detail::get<max_corner, CurrentDimension - 1>(b) - detail::get<min_corner, CurrentDimension - 1>(b) );
- }
-};
-
-template <typename Box>
-struct content_for_each_dimension<Box, 1>
-{
- static inline typename default_area_result<Box>::type apply(Box const& b)
- {
- return detail::get<max_corner, 0>(b) - detail::get<min_corner, 0>(b);
- }
-};
-
-} // namespace detail
-
-namespace dispatch {
-
-template <typename Indexable, typename Tag>
-struct content
-{
- // TODO: awulkiew - static assert?
-};
-
-template <typename Indexable>
-struct content<Indexable, point_tag>
-{
- static typename default_content_result<Indexable>::type apply(Indexable const&)
- {
- return 0;
- }
-};
-
-template <typename Indexable>
-struct content<Indexable, box_tag>
-{
- static typename default_content_result<Indexable>::type apply(Indexable const& b)
- {
- return detail::content_for_each_dimension<Indexable, detail::traits::dimension<Indexable>::value>::apply(b);
- }
-};
-
-} // namespace dispatch
-
-template <typename Indexable>
-typename default_content_result<Indexable>::type content(Indexable const& b)
-{
- return dispatch::content<Indexable, typename detail::traits::tag<Indexable>::type>::apply(b);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_CONTENT_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/diff_abs.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/diff_abs.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,28 +0,0 @@
-// Boost.Geometry Index
-//
-// Abs of difference
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_DIFF_ABS_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_DIFF_ABS_HPP
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-template <typename T>
-inline T diff_abs(T const& v1, T const& v2)
-{
- return v1 < v2 ? v2 - v1 : v1 - v2;
-}
-
-} // namespace detail
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_DIFF_ABS_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/smallest_for_indexable.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/smallest_for_indexable.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,84 +0,0 @@
-// Boost.Geometry Index
-//
-// Get smallest value calculated for indexable's dimensions, used in R-tree k nearest neighbors query
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SMALLEST_FOR_INDEXABLE_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SMALLEST_FOR_INDEXABLE_HPP
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-template <
- typename Geometry,
- typename Indexable,
- typename IndexableTag,
- typename AlgoTag,
- size_t DimensionIndex>
-struct smallest_for_indexable_dimension
-{
- BOOST_MPL_ASSERT_MSG(
- (false),
- NOT_IMPLEMENTED_FOR_THIS_INDEXABLE_TAG_TYPE,
- (smallest_for_indexable_dimension));
-};
-
-template <
- typename Geometry,
- typename Indexable,
- typename IndexableTag,
- typename AlgoTag,
- size_t N>
-struct smallest_for_indexable
-{
- typedef typename smallest_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, N - 1
- >::result_type result_type;
-
- template <typename Data>
- inline static result_type apply(Geometry const& g, Indexable const& i, Data const& data)
- {
- result_type r1 = smallest_for_indexable<
- Geometry, Indexable, IndexableTag, AlgoTag, N - 1
- >::apply(g, i, data);
-
- result_type r2 = smallest_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, N - 1
- >::apply(g, i, data);
-
- return r1 < r2 ? r1 : r2;
- }
-};
-
-template <
- typename Geometry,
- typename Indexable,
- typename IndexableTag,
- typename AlgoTag>
-struct smallest_for_indexable<Geometry, Indexable, IndexableTag, AlgoTag, 1>
-{
- typedef typename smallest_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, 0
- >::result_type result_type;
-
- template <typename Data>
- inline static result_type apply(Geometry const& g, Indexable const& i, Data const& data)
- {
- return
- smallest_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, 0
- >::apply(g, i, data);
- }
-};
-
-} // namespace detail
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SMALLEST_FOR_INDEXABLE_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,80 +0,0 @@
-// Boost.Geometry Index
-//
-// Sum values calculated for indexable's dimensions, used e.g. in R-tree k nearest neighbors query
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SUM_FOR_INDEXABLE_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SUM_FOR_INDEXABLE_HPP
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-template <
- typename Geometry,
- typename Indexable,
- typename IndexableTag,
- typename AlgoTag,
- size_t DimensionIndex>
-struct sum_for_indexable_dimension
-{
- BOOST_MPL_ASSERT_MSG(
- (false),
- NOT_IMPLEMENTED_FOR_THIS_INDEXABLE_TAG_TYPE,
- (sum_for_indexable_dimension));
-};
-
-template <
- typename Geometry,
- typename Indexable,
- typename IndexableTag,
- typename AlgoTag,
- size_t N>
-struct sum_for_indexable
-{
- typedef typename sum_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, N - 1
- >::result_type result_type;
-
- inline static result_type apply(Geometry const& g, Indexable const& i)
- {
- return
- sum_for_indexable<
- Geometry, Indexable, IndexableTag, AlgoTag, N - 1
- >::apply(g, i) +
- sum_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, N - 1
- >::apply(g, i);
- }
-};
-
-template <
- typename Geometry,
- typename Indexable,
- typename IndexableTag,
- typename AlgoTag>
-struct sum_for_indexable<Geometry, Indexable, IndexableTag, AlgoTag, 1>
-{
- typedef typename sum_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, 0
- >::result_type result_type;
-
- inline static result_type apply(Geometry const& g, Indexable const& i)
- {
- return
- sum_for_indexable_dimension<
- Geometry, Indexable, IndexableTag, AlgoTag, 0
- >::apply(g, i);
- }
-};
-
-} // namespace detail
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SUM_FOR_INDEXABLE_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/intersection_content.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/intersection_content.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,36 +0,0 @@
-// Boost.Geometry Index
-//
-// boxes union/intersection area/volume
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_INTERSECTION_CONTENT_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_INTERSECTION_CONTENT_HPP
-
-#include <boost/geometry/algorithms/intersection.hpp>
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
-
-namespace boost { namespace geometry { namespace index {
-
-/**
- * \brief Compute the area of the intersection of b1 and b2
- */
-template <typename Box>
-inline typename default_content_result<Box>::type intersection_content(Box const& box1, Box const& box2)
-{
- if ( geometry::intersects(box1, box2) )
- {
- Box box_intersection;
- geometry::intersection(box1, box2, box_intersection);
- return index::content(box_intersection);
- }
- return 0;
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_INTERSECTION_CONTENT_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/margin.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/margin.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,103 +0,0 @@
-// Boost.Geometry Index
-//
-// n-dimensional box's margin value (hypersurface), 2d perimeter, 3d surface, etc...
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_MARGIN_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_MARGIN_HPP
-
-namespace boost { namespace geometry { namespace index {
-
-template <typename Box>
-struct default_margin_result
-{
- typedef typename select_most_precise<
- typename coordinate_type<Box>::type,
- long double
- >::type type;
-};
-
-namespace detail {
-
-template <typename Box, size_t CurrentDimension, size_t EdgeDimension>
-struct margin_for_each_edge
-{
- BOOST_STATIC_ASSERT(0 < CurrentDimension);
- BOOST_STATIC_ASSERT(0 < EdgeDimension);
-
- static inline typename default_margin_result<Box>::type apply(Box const& b)
- {
- return margin_for_each_edge<Box, CurrentDimension, EdgeDimension - 1>::apply(b) *
- ( geometry::get<max_corner, EdgeDimension - 1>(b) - geometry::get<min_corner, EdgeDimension - 1>(b) );
- }
-};
-
-template <typename Box, size_t CurrentDimension>
-struct margin_for_each_edge<Box, CurrentDimension, CurrentDimension>
-{
- BOOST_STATIC_ASSERT(0 < CurrentDimension);
-
- static inline typename default_margin_result<Box>::type apply(Box const& b)
- {
- return margin_for_each_edge<Box, CurrentDimension, CurrentDimension - 1>::apply(b);
- }
-};
-
-template <typename Box, size_t CurrentDimension>
-struct margin_for_each_edge<Box, CurrentDimension, 1>
-{
- BOOST_STATIC_ASSERT(0 < CurrentDimension);
-
- static inline typename default_margin_result<Box>::type apply(Box const& b)
- {
- return geometry::get<max_corner, 0>(b) - geometry::get<min_corner, 0>(b);
- }
-};
-
-template <typename Box>
-struct margin_for_each_edge<Box, 1, 1>
-{
- static inline typename default_margin_result<Box>::type apply(Box const& /*b*/)
- {
- return 1;
- }
-};
-
-template <typename Box, size_t CurrentDimension>
-struct margin_for_each_dimension
-{
- BOOST_STATIC_ASSERT(0 < CurrentDimension);
- BOOST_STATIC_ASSERT(CurrentDimension <= detail::traits::dimension<Box>::value);
-
- static inline typename default_margin_result<Box>::type apply(Box const& b)
- {
- return margin_for_each_dimension<Box, CurrentDimension - 1>::apply(b) +
- margin_for_each_edge<Box, CurrentDimension, detail::traits::dimension<Box>::value>::apply(b);
- }
-};
-
-template <typename Box>
-struct margin_for_each_dimension<Box, 1>
-{
- static inline typename default_margin_result<Box>::type apply(Box const& b)
- {
- return margin_for_each_edge<Box, 1, detail::traits::dimension<Box>::value>::apply(b);
- }
-};
-
-} // namespace detail
-
-template <typename Box>
-typename default_margin_result<Box>::type margin(Box const& b)
-{
- return 2 * detail::margin_for_each_dimension<Box, detail::traits::dimension<Box>::value>::apply(b);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_MARGIN_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/minmaxdist.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/minmaxdist.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,123 +0,0 @@
-// Boost.Geometry Index
-//
-// minmaxdist used in R-tree k nearest neighbors query
-//
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_MINMAXDIST_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_MINMAXDIST_HPP
-
-#include <boost/geometry/algorithms/distance.hpp>
-#include <boost/geometry/algorithms/comparable_distance.hpp>
-
-#include <boost/geometry/extensions/index/algorithms/detail/diff_abs.hpp>
-#include <boost/geometry/extensions/index/algorithms/detail/sum_for_indexable.hpp>
-#include <boost/geometry/extensions/index/algorithms/detail/smallest_for_indexable.hpp>
-
-namespace boost { namespace geometry { namespace index {
-
-namespace detail {
-
-struct minmaxdist_tag {};
-
-template <
- typename Point,
- typename BoxIndexable,
- size_t DimensionIndex>
-struct smallest_for_indexable_dimension<Point, BoxIndexable, box_tag, minmaxdist_tag, DimensionIndex>
-{
- typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
-
- inline static result_type apply(Point const& pt, BoxIndexable const& i, result_type const& maxd)
- {
- typedef typename index::traits::coordinate_type<Point>::type point_coord_t;
- typedef typename index::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
-
- point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
- indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
- indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
-
- indexable_coord_t ind_c_avg = ind_c_min + (ind_c_max - ind_c_min) / 2;
- // TODO: awulkiew - is (ind_c_min + ind_c_max) / 2 safe?
-
- // TODO: awulkiew - optimize! don't calculate 2x pt_c <= ind_c_avg
- // take particular case pt_c == ind_c_avg into account
-
- result_type closer_comp = 0;
- if ( pt_c <= ind_c_avg )
- closer_comp = detail::diff_abs(pt_c, ind_c_min); // unsigned values protection
- else
- closer_comp = ind_c_max - pt_c;
-
- result_type further_comp = 0;
- if ( ind_c_avg <= pt_c )
- further_comp = pt_c - ind_c_min;
- else
- further_comp = detail::diff_abs(pt_c, ind_c_max); // unsigned values protection
-
- return (maxd + closer_comp * closer_comp) - further_comp * further_comp;
- }
-};
-
-template <typename Point, typename Indexable, typename IndexableTag>
-struct minmaxdist_impl
-{
- BOOST_MPL_ASSERT_MSG(
- (false),
- NOT_IMPLEMENTED_FOR_THIS_INDEXABLE_TAG_TYPE,
- (minmaxdist_impl));
-};
-
-template <typename Point, typename Indexable>
-struct minmaxdist_impl<Point, Indexable, point_tag>
-{
- typedef typename geometry::default_distance_result<Point, Indexable>::type result_type;
-
- inline static result_type apply(Point const& pt, Indexable const& i)
- {
- return geometry::comparable_distance(pt, i);
- }
-};
-
-template <typename Point, typename Indexable>
-struct minmaxdist_impl<Point, Indexable, box_tag>
-{
- typedef typename geometry::default_distance_result<Point, Indexable>::type result_type;
-
- inline static result_type apply(Point const& pt, Indexable const& i)
- {
- result_type maxd = geometry::comparable_distance(pt, i);
-
- return smallest_for_indexable<
- Point,
- Indexable,
- box_tag,
- minmaxdist_tag,
- index::traits::dimension<Indexable>::value
- >::apply(pt, i, maxd);
- }
-};
-
-} // namespace detail
-
-/**
- * This is comparable distace.
- */
-template <typename Point, typename Indexable>
-typename geometry::default_distance_result<Point, Indexable>::type
-minmaxdist(Point const& pt, Indexable const& i)
-{
- return detail::minmaxdist_impl<
- Point,
- Indexable,
- typename index::traits::tag<Indexable>::type
- >::apply(pt, i);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_MINMAXDIST_HPP
Deleted: sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/union_content.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/algorithms/union_content.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
+++ (empty file)
@@ -1,33 +0,0 @@
-// Boost.Geometry Index
-//
-// boxes union/sum area/volume
-//
-// Copyright (c) 2008 Federico J. Fernandez.
-// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
-//
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_UNION_CONTENT_HPP
-#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_UNION_CONTENT_HPP
-
-#include <boost/geometry/algorithms/expand.hpp>
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
-
-namespace boost { namespace geometry { namespace index {
-
-/**
- * \brief Compute the area of the union of b1 and b2
- */
-template <typename Box, typename Geometry>
-inline typename default_content_result<Box>::type union_content(Box const& b, Geometry const& g)
-{
- Box expanded_box(b);
- geometry::expand(expanded_box, g);
- return index::content(expanded_box);
-}
-
-}}} // namespace boost::geometry::index
-
-#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_UNION_CONTENT_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_centroid.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_centroid.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,77 @@
+// Boost.Geometry Index
+//
+// squared distance between point and centroid of the box or point
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_CENTROID_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_CENTROID_HPP
+
+#include <boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/diff_abs.hpp>
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+struct comparable_distance_centroid_tag {};
+
+template <
+ typename Point,
+ typename PointIndexable,
+ size_t N>
+struct sum_for_indexable<Point, PointIndexable, point_tag, comparable_distance_centroid_tag, N>
+{
+ typedef typename geometry::default_distance_result<Point, PointIndexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, PointIndexable const& i)
+ {
+ return geometry::comparable_distance(pt, i);
+ }
+};
+
+template <
+ typename Point,
+ typename BoxIndexable,
+ size_t DimensionIndex>
+struct sum_for_indexable_dimension<Point, BoxIndexable, box_tag, comparable_distance_centroid_tag, DimensionIndex>
+{
+ typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, BoxIndexable const& i)
+ {
+ typedef typename index::detail::traits::coordinate_type<Point>::type point_coord_t;
+ typedef typename index::detail::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
+
+ point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
+ indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
+ indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
+
+ indexable_coord_t ind_c_avg = ind_c_min + (ind_c_max - ind_c_min) / 2;
+ // TODO: awulkiew - is (ind_c_min + ind_c_max) / 2 safe?
+
+ result_type diff = detail::diff_abs(ind_c_avg, pt_c);
+
+ return diff * diff;
+ }
+};
+
+template <typename Point, typename Indexable>
+typename geometry::default_distance_result<Point, Indexable>::type
+comparable_distance_centroid(Point const& pt, Indexable const& i)
+{
+ return detail::sum_for_indexable<
+ Point,
+ Indexable,
+ typename index::detail::traits::tag<Indexable>::type,
+ detail::comparable_distance_centroid_tag,
+ index::detail::traits::dimension<Indexable>::value
+ >::apply(pt, i);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // #define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_CENTROID_HPP
+
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_far.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_far.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,66 @@
+// Boost.Geometry Index
+//
+// squared distance between point and furthest point of the box or point
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_FAR_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_FAR_HPP
+
+#include <boost/geometry/extensions/index/detail/algorithms/diff_abs.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp>
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+// minmaxdist component
+
+struct comparable_distance_far_tag {};
+
+template <
+ typename Point,
+ typename BoxIndexable,
+ size_t DimensionIndex>
+struct sum_for_indexable_dimension<Point, BoxIndexable, box_tag, comparable_distance_far_tag, DimensionIndex>
+{
+ typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, BoxIndexable const& i)
+ {
+ typedef typename index::detail::traits::coordinate_type<Point>::type point_coord_t;
+ typedef typename index::detail::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
+
+ point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
+ indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
+ indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
+
+ result_type further_diff = 0;
+
+ if ( (ind_c_min + ind_c_max) / 2 <= pt_c )
+ further_diff = pt_c - ind_c_min;
+ else
+ further_diff = detail::diff_abs(pt_c, ind_c_max); // unsigned values protection
+
+ return further_diff * further_diff;
+ }
+};
+
+template <typename Point, typename Indexable>
+typename geometry::default_distance_result<Point, Indexable>::type
+comparable_distance_far(Point const& pt, Indexable const& i)
+{
+ return detail::sum_for_indexable<
+ Point,
+ Indexable,
+ typename index::detail::traits::tag<Indexable>::type,
+ detail::comparable_distance_far_tag,
+ index::detail::traits::dimension<Indexable>::value
+ >::apply(pt, i);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_FAR_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_near.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/comparable_distance_near.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,77 @@
+// Boost.Geometry Index
+//
+// squared distance between point and nearest point of the box or point
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_NEAR_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_NEAR_HPP
+
+#include <boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp>
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+struct comparable_distance_near_tag {};
+
+template <
+ typename Point,
+ typename PointIndexable,
+ size_t N>
+struct sum_for_indexable<Point, PointIndexable, point_tag, comparable_distance_near_tag, N>
+{
+ typedef typename geometry::default_distance_result<Point, PointIndexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, PointIndexable const& i)
+ {
+ return geometry::comparable_distance(pt, i);
+ }
+};
+
+template <
+ typename Point,
+ typename BoxIndexable,
+ size_t DimensionIndex>
+struct sum_for_indexable_dimension<Point, BoxIndexable, box_tag, comparable_distance_near_tag, DimensionIndex>
+{
+ typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, BoxIndexable const& i)
+ {
+ typedef typename index::detail::traits::coordinate_type<Point>::type point_coord_t;
+ typedef typename index::detail::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
+
+ point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
+ indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
+ indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
+
+ result_type diff = 0;
+
+ if ( pt_c < ind_c_min )
+ diff = ind_c_min - pt_c;
+ else if ( ind_c_max < pt_c )
+ diff = pt_c - ind_c_max;
+
+ return diff * diff;
+ }
+};
+
+template <typename Point, typename Indexable>
+typename geometry::default_distance_result<Point, Indexable>::type
+comparable_distance_near(Point const& pt, Indexable const& i)
+{
+ return detail::sum_for_indexable<
+ Point,
+ Indexable,
+ typename index::detail::traits::tag<Indexable>::type,
+ detail::comparable_distance_near_tag,
+ index::detail::traits::dimension<Indexable>::value
+ >::apply(pt, i);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_COMPARABLE_DISTANCE_NEAR_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/content.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/content.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,85 @@
+// Boost.Geometry Index
+//
+// n-dimensional box's content (hypervolume) - 2d area, 3d volume, ...
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_CONTENT_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_CONTENT_HPP
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+template <typename Indexable>
+struct default_content_result
+{
+ typedef typename select_most_precise<
+ typename detail::traits::coordinate_type<Indexable>::type,
+ long double
+ >::type type;
+};
+
+namespace dispatch {
+
+template <typename Box, size_t CurrentDimension>
+struct content_for_each_dimension
+{
+ BOOST_STATIC_ASSERT(0 < CurrentDimension);
+ BOOST_STATIC_ASSERT(CurrentDimension <= traits::dimension<Box>::value);
+
+ static inline typename detail::default_content_result<Box>::type apply(Box const& b)
+ {
+ return content_for_each_dimension<Box, CurrentDimension - 1>::apply(b) *
+ ( detail::get<max_corner, CurrentDimension - 1>(b) - detail::get<min_corner, CurrentDimension - 1>(b) );
+ }
+};
+
+template <typename Box>
+struct content_for_each_dimension<Box, 1>
+{
+ static inline typename detail::default_content_result<Box>::type apply(Box const& b)
+ {
+ return detail::get<max_corner, 0>(b) - detail::get<min_corner, 0>(b);
+ }
+};
+
+template <typename Indexable, typename Tag>
+struct content
+{
+ // TODO: awulkiew - static assert?
+};
+
+template <typename Indexable>
+struct content<Indexable, point_tag>
+{
+ static typename detail::default_content_result<Indexable>::type apply(Indexable const&)
+ {
+ return 0;
+ }
+};
+
+template <typename Indexable>
+struct content<Indexable, box_tag>
+{
+ static typename default_content_result<Indexable>::type apply(Indexable const& b)
+ {
+ return dispatch::content_for_each_dimension<Indexable, detail::traits::dimension<Indexable>::value>::apply(b);
+ }
+};
+
+} // namespace dispatch
+
+template <typename Indexable>
+typename default_content_result<Indexable>::type content(Indexable const& b)
+{
+ return dispatch::content<Indexable,
+ typename detail::traits::tag<Indexable>::type
+ >::apply(b);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_CONTENT_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/diff_abs.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/diff_abs.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,24 @@
+// Boost.Geometry Index
+//
+// Abs of difference
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_DIFF_ABS_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_DIFF_ABS_HPP
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+template <typename T>
+inline T diff_abs(T const& v1, T const& v2)
+{
+ return v1 < v2 ? v2 - v1 : v1 - v2;
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_DIFF_ABS_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/intersection_content.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/intersection_content.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,36 @@
+// Boost.Geometry Index
+//
+// boxes union/intersection area/volume
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_INTERSECTION_CONTENT_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_INTERSECTION_CONTENT_HPP
+
+#include <boost/geometry/algorithms/intersection.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+/**
+ * \brief Compute the area of the intersection of b1 and b2
+ */
+template <typename Box>
+inline typename default_content_result<Box>::type intersection_content(Box const& box1, Box const& box2)
+{
+ if ( geometry::intersects(box1, box2) )
+ {
+ Box box_intersection;
+ geometry::intersection(box1, box2, box_intersection);
+ return detail::content(box_intersection);
+ }
+ return 0;
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_INTERSECTION_CONTENT_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/margin.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/margin.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,99 @@
+// Boost.Geometry Index
+//
+// n-dimensional box's margin value (hypersurface), 2d perimeter, 3d surface, etc...
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_MARGIN_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_MARGIN_HPP
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+template <typename Box>
+struct default_margin_result
+{
+ typedef typename select_most_precise<
+ typename coordinate_type<Box>::type,
+ long double
+ >::type type;
+};
+
+template <typename Box, size_t CurrentDimension, size_t EdgeDimension>
+struct margin_for_each_edge
+{
+ BOOST_STATIC_ASSERT(0 < CurrentDimension);
+ BOOST_STATIC_ASSERT(0 < EdgeDimension);
+
+ static inline typename default_margin_result<Box>::type apply(Box const& b)
+ {
+ return margin_for_each_edge<Box, CurrentDimension, EdgeDimension - 1>::apply(b) *
+ ( geometry::get<max_corner, EdgeDimension - 1>(b) - geometry::get<min_corner, EdgeDimension - 1>(b) );
+ }
+};
+
+template <typename Box, size_t CurrentDimension>
+struct margin_for_each_edge<Box, CurrentDimension, CurrentDimension>
+{
+ BOOST_STATIC_ASSERT(0 < CurrentDimension);
+
+ static inline typename default_margin_result<Box>::type apply(Box const& b)
+ {
+ return margin_for_each_edge<Box, CurrentDimension, CurrentDimension - 1>::apply(b);
+ }
+};
+
+template <typename Box, size_t CurrentDimension>
+struct margin_for_each_edge<Box, CurrentDimension, 1>
+{
+ BOOST_STATIC_ASSERT(0 < CurrentDimension);
+
+ static inline typename default_margin_result<Box>::type apply(Box const& b)
+ {
+ return geometry::get<max_corner, 0>(b) - geometry::get<min_corner, 0>(b);
+ }
+};
+
+template <typename Box>
+struct margin_for_each_edge<Box, 1, 1>
+{
+ static inline typename default_margin_result<Box>::type apply(Box const& /*b*/)
+ {
+ return 1;
+ }
+};
+
+template <typename Box, size_t CurrentDimension>
+struct margin_for_each_dimension
+{
+ BOOST_STATIC_ASSERT(0 < CurrentDimension);
+ BOOST_STATIC_ASSERT(CurrentDimension <= detail::traits::dimension<Box>::value);
+
+ static inline typename default_margin_result<Box>::type apply(Box const& b)
+ {
+ return margin_for_each_dimension<Box, CurrentDimension - 1>::apply(b) +
+ margin_for_each_edge<Box, CurrentDimension, detail::traits::dimension<Box>::value>::apply(b);
+ }
+};
+
+template <typename Box>
+struct margin_for_each_dimension<Box, 1>
+{
+ static inline typename default_margin_result<Box>::type apply(Box const& b)
+ {
+ return margin_for_each_edge<Box, 1, detail::traits::dimension<Box>::value>::apply(b);
+ }
+};
+
+template <typename Box>
+typename default_margin_result<Box>::type margin(Box const& b)
+{
+ return 2 * detail::margin_for_each_dimension<Box, detail::traits::dimension<Box>::value>::apply(b);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_MARGIN_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/minmaxdist.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/minmaxdist.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,119 @@
+// Boost.Geometry Index
+//
+// minmaxdist used in R-tree k nearest neighbors query
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_MINMAXDIST_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_MINMAXDIST_HPP
+
+#include <boost/geometry/algorithms/distance.hpp>
+#include <boost/geometry/algorithms/comparable_distance.hpp>
+
+#include <boost/geometry/extensions/index/detail/algorithms/diff_abs.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/smallest_for_indexable.hpp>
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+struct minmaxdist_tag {};
+
+template <
+ typename Point,
+ typename BoxIndexable,
+ size_t DimensionIndex>
+struct smallest_for_indexable_dimension<Point, BoxIndexable, box_tag, minmaxdist_tag, DimensionIndex>
+{
+ typedef typename geometry::default_distance_result<Point, BoxIndexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, BoxIndexable const& i, result_type const& maxd)
+ {
+ typedef typename index::traits::coordinate_type<Point>::type point_coord_t;
+ typedef typename index::traits::coordinate_type<BoxIndexable>::type indexable_coord_t;
+
+ point_coord_t pt_c = geometry::get<DimensionIndex>(pt);
+ indexable_coord_t ind_c_min = geometry::get<geometry::min_corner, DimensionIndex>(i);
+ indexable_coord_t ind_c_max = geometry::get<geometry::max_corner, DimensionIndex>(i);
+
+ indexable_coord_t ind_c_avg = ind_c_min + (ind_c_max - ind_c_min) / 2;
+ // TODO: awulkiew - is (ind_c_min + ind_c_max) / 2 safe?
+
+ // TODO: awulkiew - optimize! don't calculate 2x pt_c <= ind_c_avg
+ // take particular case pt_c == ind_c_avg into account
+
+ result_type closer_comp = 0;
+ if ( pt_c <= ind_c_avg )
+ closer_comp = detail::diff_abs(pt_c, ind_c_min); // unsigned values protection
+ else
+ closer_comp = ind_c_max - pt_c;
+
+ result_type further_comp = 0;
+ if ( ind_c_avg <= pt_c )
+ further_comp = pt_c - ind_c_min;
+ else
+ further_comp = detail::diff_abs(pt_c, ind_c_max); // unsigned values protection
+
+ return (maxd + closer_comp * closer_comp) - further_comp * further_comp;
+ }
+};
+
+template <typename Point, typename Indexable, typename IndexableTag>
+struct minmaxdist_impl
+{
+ BOOST_MPL_ASSERT_MSG(
+ (false),
+ NOT_IMPLEMENTED_FOR_THIS_INDEXABLE_TAG_TYPE,
+ (minmaxdist_impl));
+};
+
+template <typename Point, typename Indexable>
+struct minmaxdist_impl<Point, Indexable, point_tag>
+{
+ typedef typename geometry::default_distance_result<Point, Indexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, Indexable const& i)
+ {
+ return geometry::comparable_distance(pt, i);
+ }
+};
+
+template <typename Point, typename Indexable>
+struct minmaxdist_impl<Point, Indexable, box_tag>
+{
+ typedef typename geometry::default_distance_result<Point, Indexable>::type result_type;
+
+ inline static result_type apply(Point const& pt, Indexable const& i)
+ {
+ result_type maxd = geometry::comparable_distance(pt, i);
+
+ return smallest_for_indexable<
+ Point,
+ Indexable,
+ box_tag,
+ minmaxdist_tag,
+ index::traits::dimension<Indexable>::value
+ >::apply(pt, i, maxd);
+ }
+};
+
+/**
+ * This is comparable distace.
+ */
+template <typename Point, typename Indexable>
+typename geometry::default_distance_result<Point, Indexable>::type
+minmaxdist(Point const& pt, Indexable const& i)
+{
+ return detail::minmaxdist_impl<
+ Point,
+ Indexable,
+ typename index::traits::tag<Indexable>::type
+ >::apply(pt, i);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_MINMAXDIST_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/smallest_for_indexable.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/smallest_for_indexable.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,80 @@
+// Boost.Geometry Index
+//
+// Get smallest value calculated for indexable's dimensions, used in R-tree k nearest neighbors query
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SMALLEST_FOR_INDEXABLE_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SMALLEST_FOR_INDEXABLE_HPP
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+template <
+ typename Geometry,
+ typename Indexable,
+ typename IndexableTag,
+ typename AlgoTag,
+ size_t DimensionIndex>
+struct smallest_for_indexable_dimension
+{
+ BOOST_MPL_ASSERT_MSG(
+ (false),
+ NOT_IMPLEMENTED_FOR_THIS_INDEXABLE_TAG_TYPE,
+ (smallest_for_indexable_dimension));
+};
+
+template <
+ typename Geometry,
+ typename Indexable,
+ typename IndexableTag,
+ typename AlgoTag,
+ size_t N>
+struct smallest_for_indexable
+{
+ typedef typename smallest_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, N - 1
+ >::result_type result_type;
+
+ template <typename Data>
+ inline static result_type apply(Geometry const& g, Indexable const& i, Data const& data)
+ {
+ result_type r1 = smallest_for_indexable<
+ Geometry, Indexable, IndexableTag, AlgoTag, N - 1
+ >::apply(g, i, data);
+
+ result_type r2 = smallest_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, N - 1
+ >::apply(g, i, data);
+
+ return r1 < r2 ? r1 : r2;
+ }
+};
+
+template <
+ typename Geometry,
+ typename Indexable,
+ typename IndexableTag,
+ typename AlgoTag>
+struct smallest_for_indexable<Geometry, Indexable, IndexableTag, AlgoTag, 1>
+{
+ typedef typename smallest_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, 0
+ >::result_type result_type;
+
+ template <typename Data>
+ inline static result_type apply(Geometry const& g, Indexable const& i, Data const& data)
+ {
+ return
+ smallest_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, 0
+ >::apply(g, i, data);
+ }
+};
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SMALLEST_FOR_INDEXABLE_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/sum_for_indexable.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,76 @@
+// Boost.Geometry Index
+//
+// Sum values calculated for indexable's dimensions, used e.g. in R-tree k nearest neighbors query
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SUM_FOR_INDEXABLE_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SUM_FOR_INDEXABLE_HPP
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+template <
+ typename Geometry,
+ typename Indexable,
+ typename IndexableTag,
+ typename AlgoTag,
+ size_t DimensionIndex>
+struct sum_for_indexable_dimension
+{
+ BOOST_MPL_ASSERT_MSG(
+ (false),
+ NOT_IMPLEMENTED_FOR_THIS_INDEXABLE_TAG_TYPE,
+ (sum_for_indexable_dimension));
+};
+
+template <
+ typename Geometry,
+ typename Indexable,
+ typename IndexableTag,
+ typename AlgoTag,
+ size_t N>
+struct sum_for_indexable
+{
+ typedef typename sum_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, N - 1
+ >::result_type result_type;
+
+ inline static result_type apply(Geometry const& g, Indexable const& i)
+ {
+ return
+ sum_for_indexable<
+ Geometry, Indexable, IndexableTag, AlgoTag, N - 1
+ >::apply(g, i) +
+ sum_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, N - 1
+ >::apply(g, i);
+ }
+};
+
+template <
+ typename Geometry,
+ typename Indexable,
+ typename IndexableTag,
+ typename AlgoTag>
+struct sum_for_indexable<Geometry, Indexable, IndexableTag, AlgoTag, 1>
+{
+ typedef typename sum_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, 0
+ >::result_type result_type;
+
+ inline static result_type apply(Geometry const& g, Indexable const& i)
+ {
+ return
+ sum_for_indexable_dimension<
+ Geometry, Indexable, IndexableTag, AlgoTag, 0
+ >::apply(g, i);
+ }
+};
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_ALGORITHMS_DETAIL_SUM_FOR_INDEXABLE_HPP
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/union_content.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/algorithms/union_content.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -0,0 +1,33 @@
+// Boost.Geometry Index
+//
+// boxes union/sum area/volume
+//
+// Copyright (c) 2008 Federico J. Fernandez.
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_UNION_CONTENT_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_UNION_CONTENT_HPP
+
+#include <boost/geometry/algorithms/expand.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
+
+namespace boost { namespace geometry { namespace index { namespace detail {
+
+/**
+ * \brief Compute the area of the union of b1 and b2
+ */
+template <typename Box, typename Geometry>
+inline typename default_content_result<Box>::type union_content(Box const& b, Geometry const& g)
+{
+ Box expanded_box(b);
+ geometry::expand(expanded_box, g);
+ return detail::content(expanded_box);
+}
+
+}}}} // namespace boost::geometry::index::detail
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_ALGORITHMS_UNION_CONTENT_HPP
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/distance_predicates.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/distance_predicates.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/distance_predicates.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -12,9 +12,9 @@
#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_DISTANCE_PREDICATES_HPP
#define BOOST_GEOMETRY_EXTENSIONS_INDEX_DETAIL_DISTANCE_PREDICATES_HPP
-#include <boost/geometry/extensions/index/algorithms/comparable_distance_near.hpp>
-#include <boost/geometry/extensions/index/algorithms/comparable_distance_far.hpp>
-#include <boost/geometry/extensions/index/algorithms/comparable_distance_centroid.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/comparable_distance_near.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/comparable_distance_far.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/comparable_distance_centroid.hpp>
#include <boost/geometry/extensions/index/detail/tuples.hpp>
@@ -332,7 +332,7 @@
typename geometry::default_distance_result<Point, Indexable>::type
static inline apply(Point const& p, Indexable const& i)
{
- return index::comparable_distance_near(p, i);
+ return index::detail::comparable_distance_near(p, i);
}
};
@@ -345,7 +345,7 @@
typename geometry::default_distance_result<Point, Indexable>::type
static inline apply(Point const& p, Indexable const& i)
{
- return index::comparable_distance_centroid(p, i);
+ return index::detail::comparable_distance_centroid(p, i);
}
};
@@ -358,7 +358,7 @@
typename geometry::default_distance_result<Point, Indexable>::type
static inline apply(Point const& p, Indexable const& i)
{
- return index::comparable_distance_far(p, i);
+ return index::detail::comparable_distance_far(p, i);
}
};
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/linear/redistribute_elements.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/linear/redistribute_elements.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/linear/redistribute_elements.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -14,8 +14,7 @@
#include <boost/type_traits/is_unsigned.hpp>
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
-#include <boost/geometry/extensions/index/algorithms/union_content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
#include <boost/geometry/extensions/index/detail/rtree/node/node.hpp>
#include <boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp>
@@ -23,9 +22,7 @@
namespace boost { namespace geometry { namespace index {
-namespace detail { namespace rtree { namespace visitors {
-
-namespace detail {
+namespace detail { namespace rtree {
namespace linear {
@@ -215,7 +212,7 @@
typedef typename elements_type::value_type element_type;
typedef typename rtree::element_indexable_type<element_type, Translator>::type indexable_type;
typedef typename index::detail::traits::coordinate_type<indexable_type>::type coordinate_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
elements_type & elements1 = rtree::elements(n);
elements_type & elements2 = rtree::elements(second_node);
@@ -250,8 +247,8 @@
geometry::convert(rtree::element_indexable(elements_copy[seed2], translator), box2);
// initialize areas
- content_type content1 = index::content(box1);
- content_type content2 = index::content(box2);
+ content_type content1 = index::detail::content(box1);
+ content_type content2 = index::detail::content(box2);
BOOST_GEOMETRY_INDEX_ASSERT(2 <= elements1_count, "unexpected elements number");
size_t remaining = elements1_count - 2;
@@ -270,13 +267,13 @@
{
elements1.push_back(elem); // MAY THROW, STRONG (copy)
geometry::expand(box1, indexable);
- content1 = index::content(box1);
+ content1 = index::detail::content(box1);
}
else if ( elements2.size() + remaining <= parameters.get_min_elements() )
{
elements2.push_back(elem); // MAY THROW, STRONG (alloc, copy)
geometry::expand(box2, indexable);
- content2 = index::content(box2);
+ content2 = index::detail::content(box2);
}
// choose better node and insert element
else
@@ -286,8 +283,8 @@
Box enlarged_box2(box2);
geometry::expand(enlarged_box1, indexable);
geometry::expand(enlarged_box2, indexable);
- content_type enlarged_content1 = index::content(enlarged_box1);
- content_type enlarged_content2 = index::content(enlarged_box2);
+ content_type enlarged_content1 = index::detail::content(enlarged_box1);
+ content_type enlarged_content2 = index::detail::content(enlarged_box2);
content_type content_increase1 = enlarged_content1 - content1;
content_type content_increase2 = enlarged_content2 - content2;
@@ -327,9 +324,7 @@
}
};
-} // namespace detail
-
-}}} // namespace detail::rtree::visitors
+}} // namespace detail::rtree::visitors
}}} // namespace boost::geometry::index
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/options.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/options.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/options.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -58,10 +58,10 @@
};
template <size_t MaxElements, size_t MinElements>
-struct options_type< linear<MaxElements, MinElements> >
+struct options_type< index::linear<MaxElements, MinElements> >
{
typedef options<
- linear<MaxElements, MinElements>,
+ index::linear<MaxElements, MinElements>,
insert_default_tag,
choose_by_content_diff_tag,
split_default_tag,
@@ -71,10 +71,10 @@
};
template <size_t MaxElements, size_t MinElements>
-struct options_type< quadratic<MaxElements, MinElements> >
+struct options_type< index::quadratic<MaxElements, MinElements> >
{
typedef options<
- quadratic<MaxElements, MinElements>,
+ index::quadratic<MaxElements, MinElements>,
insert_default_tag,
choose_by_content_diff_tag,
split_default_tag,
@@ -84,10 +84,10 @@
};
template <size_t MaxElements, size_t MinElements, size_t OverlapCostThreshold, size_t ReinsertedElements>
-struct options_type< rstar<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements> >
+struct options_type< index::rstar<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements> >
{
typedef options<
- rstar<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements>,
+ index::rstar<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements>,
insert_reinsert_tag,
choose_by_overlap_diff_tag,
split_default_tag,
@@ -110,10 +110,10 @@
//};
template <>
-struct options_type< runtime::linear >
+struct options_type< index::runtime::linear >
{
typedef options<
- runtime::linear,
+ index::runtime::linear,
insert_default_tag,
choose_by_content_diff_tag,
split_default_tag,
@@ -123,10 +123,10 @@
};
template <>
-struct options_type< runtime::quadratic >
+struct options_type< index::runtime::quadratic >
{
typedef options<
- runtime::quadratic,
+ index::runtime::quadratic,
insert_default_tag,
choose_by_content_diff_tag,
split_default_tag,
@@ -136,10 +136,10 @@
};
template <>
-struct options_type< runtime::rstar >
+struct options_type< index::runtime::rstar >
{
typedef options<
- runtime::rstar,
+ index::runtime::rstar,
insert_reinsert_tag,
choose_by_overlap_diff_tag,
split_default_tag,
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/quadratic/redistribute_elements.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/quadratic/redistribute_elements.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/quadratic/redistribute_elements.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -13,8 +13,8 @@
#include <algorithm>
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
-#include <boost/geometry/extensions/index/algorithms/union_content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/union_content.hpp>
#include <boost/geometry/extensions/index/detail/rtree/node/node.hpp>
#include <boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp>
@@ -22,9 +22,7 @@
namespace boost { namespace geometry { namespace index {
-namespace detail { namespace rtree { namespace visitors {
-
-namespace detail {
+namespace detail { namespace rtree {
namespace quadratic {
@@ -35,7 +33,7 @@
typedef typename rtree::element_indexable_type<element_type, Translator>::type indexable_type;
typedef typename index::detail::traits::coordinate_type<indexable_type>::type coordinate_type;
typedef Box box_type;
- typedef typename index::default_content_result<box_type>::type content_type;
+ typedef typename index::detail::default_content_result<box_type>::type content_type;
static inline void apply(Elements const& elements,
Parameters const& parameters,
@@ -62,7 +60,7 @@
geometry::convert(ind1, enlarged_box);
geometry::expand(enlarged_box, ind2);
- content_type free_content = (index::content(enlarged_box) - index::content(ind1)) - index::content(ind2);
+ content_type free_content = (index::detail::content(enlarged_box) - index::detail::content(ind1)) - index::detail::content(ind2);
if ( greatest_free_content < free_content )
{
@@ -86,7 +84,7 @@
typedef typename rtree::internal_node<Value, parameters_type, Box, Allocators, typename Options::node_tag>::type internal_node;
typedef typename rtree::leaf<Value, parameters_type, Box, Allocators, typename Options::node_tag>::type leaf;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Node>
static inline void apply(Node & n,
@@ -153,8 +151,8 @@
}
// initialize areas
- content_type content1 = index::content(box1);
- content_type content2 = index::content(box2);
+ content_type content1 = index::detail::content(box1);
+ content_type content2 = index::detail::content(box2);
size_t remaining = elements_copy.size();
@@ -207,13 +205,13 @@
{
elements1.push_back(elem); // MAY THROW, STRONG (copy)
geometry::expand(box1, indexable);
- content1 = index::content(box1);
+ content1 = index::detail::content(box1);
}
else
{
elements2.push_back(elem); // MAY THROW, STRONG (alloc, copy)
geometry::expand(box2, indexable);
- content2 = index::content(box2);
+ content2 = index::detail::content(box2);
}
BOOST_GEOMETRY_INDEX_ASSERT(!elements_copy.empty(), "expected more elements");
@@ -265,8 +263,8 @@
Box enlarged_box2(box2);
geometry::expand(enlarged_box1, indexable);
geometry::expand(enlarged_box2, indexable);
- content_type enlarged_content1 = index::content(enlarged_box1);
- content_type enlarged_content2 = index::content(enlarged_box2);
+ content_type enlarged_content1 = index::detail::content(enlarged_box1);
+ content_type enlarged_content2 = index::detail::content(enlarged_box2);
content_type content_incrase1 = (enlarged_content1 - content1);
content_type content_incrase2 = (enlarged_content2 - content2);
@@ -287,9 +285,7 @@
}
};
-} // namespace detail
-
-}}} // namespace detail::rtree::visitors
+}} // namespace detail::rtree
}}} // namespace boost::geometry::index
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/choose_next_node.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/choose_next_node.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/choose_next_node.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -15,18 +15,16 @@
#include <boost/geometry/algorithms/expand.hpp>
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
-#include <boost/geometry/extensions/index/algorithms/intersection_content.hpp>
-#include <boost/geometry/extensions/index/algorithms/union_content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/intersection_content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/union_content.hpp>
#include <boost/geometry/extensions/index/detail/rtree/node/node.hpp>
#include <boost/geometry/extensions/index/detail/rtree/visitors/is_leaf.hpp>
namespace boost { namespace geometry { namespace index {
-namespace detail { namespace rtree { namespace visitors {
-
-namespace detail {
+namespace detail { namespace rtree {
template <typename Value, typename Options, typename Box, typename Allocators>
class choose_next_node<Value, Options, Box, Allocators, choose_by_overlap_diff_tag>
@@ -40,7 +38,7 @@
typedef typename Options::parameters_type parameters_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
public:
template <typename Indexable>
@@ -88,8 +86,8 @@
geometry::expand(box_exp, indexable);
// calculate content and content diff
- content_type content = index::content(ch_i.first);
- content_type content_diff = index::content(box_exp) - content;
+ content_type content = index::detail::content(ch_i.first);
+ content_type content_diff = index::detail::content(box_exp) - content;
content_type overlap = 0;
content_type overlap_exp = 0;
@@ -101,8 +99,8 @@
{
child_type const& ch_j = children[j];
- overlap += index::intersection_content(ch_i.first, ch_j.first);
- overlap_exp += index::intersection_content(box_exp, ch_j.first);
+ overlap += index::detail::intersection_content(ch_i.first, ch_j.first);
+ overlap_exp += index::detail::intersection_content(box_exp, ch_j.first);
}
}
@@ -141,8 +139,8 @@
geometry::expand(box_exp, indexable);
// areas difference
- content_type content = index::content(box_exp);
- content_type content_diff = content - index::content(ch_i.first);
+ content_type content = index::detail::content(box_exp);
+ content_type content_diff = content - index::detail::content(ch_i.first);
sorted_children[i] = boost::make_tuple(i, content_diff, content);
}
@@ -178,8 +176,8 @@
{
child_type const& ch_j = children[j];
- overlap += index::intersection_content(ch_i.first, ch_j.first);
- overlap_exp += index::intersection_content(box_exp, ch_j.first);
+ overlap += index::detail::intersection_content(ch_i.first, ch_j.first);
+ overlap_exp += index::detail::intersection_content(box_exp, ch_j.first);
}
}
@@ -222,8 +220,8 @@
geometry::expand(box_exp, indexable);
// areas difference
- content_type content = index::content(box_exp);
- content_type content_diff = content - index::content(ch_i.first);
+ content_type content = index::detail::content(box_exp);
+ content_type content_diff = content - index::detail::content(ch_i.first);
// update the result
if ( content_diff < smallest_content_diff ||
@@ -239,9 +237,7 @@
}
};
-} // namespace detail
-
-}}} // namespace detail::rtree::visitors
+}} // namespace detail::rtree
}}} // namespace boost::geometry::index
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/insert.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/insert.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/insert.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -11,14 +11,12 @@
#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RSTAR_INSERT_HPP
#define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RSTAR_INSERT_HPP
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
namespace boost { namespace geometry { namespace index {
namespace detail { namespace rtree { namespace visitors {
-namespace detail {
-
namespace rstar {
template <typename Value, typename Options, typename Translator, typename Box, typename Allocators>
@@ -417,8 +415,6 @@
} // namespace rstar
-} // namespace detail
-
// R*-tree insert visitor
// After passing the Element to insert visitor the Element is managed by the tree
// I.e. one should not delete the node passed to the insert visitor after exception is thrown
@@ -451,7 +447,7 @@
{
BOOST_GEOMETRY_INDEX_ASSERT(&n == rtree::get<internal_node>(m_root), "current node should be the root");
- detail::rstar::level_insert<0, Element, Value, Options, Translator, Box, Allocators> lins_v(
+ rstar::level_insert<0, Element, Value, Options, Translator, Box, Allocators> lins_v(
m_root, m_leafs_level, m_element, m_parameters, m_translator, m_allocators, m_relative_level);
rtree::apply_visitor(lins_v, *m_root); // MAY THROW (V, E: alloc, copy, N: alloc)
@@ -466,7 +462,7 @@
{
BOOST_GEOMETRY_INDEX_ASSERT(&n == rtree::get<leaf>(m_root), "current node should be the root");
- detail::rstar::level_insert<0, Element, Value, Options, Translator, Box, Allocators> lins_v(
+ rstar::level_insert<0, Element, Value, Options, Translator, Box, Allocators> lins_v(
m_root, m_leafs_level, m_element, m_parameters, m_translator, m_allocators, m_relative_level);
rtree::apply_visitor(lins_v, *m_root); // MAY THROW (V, E: alloc, copy, N: alloc)
@@ -485,7 +481,7 @@
typename Elements::reverse_iterator it = elements.rbegin();
for ( ; it != elements.rend() ; ++it)
{
- detail::rstar::level_insert<1, element_type, Value, Options, Translator, Box, Allocators> lins_v(
+ rstar::level_insert<1, element_type, Value, Options, Translator, Box, Allocators> lins_v(
m_root, m_leafs_level, *it, m_parameters, m_translator, m_allocators, relative_level);
try
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/redistribute_elements.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/redistribute_elements.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/rstar/redistribute_elements.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -13,9 +13,9 @@
#include <boost/geometry/extensions/index/detail/nonassignable.hpp>
-#include <boost/geometry/extensions/index/algorithms/intersection_content.hpp>
-#include <boost/geometry/extensions/index/algorithms/union_content.hpp>
-#include <boost/geometry/extensions/index/algorithms/margin.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/intersection_content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/union_content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/margin.hpp>
#include <boost/geometry/extensions/index/detail/rtree/node/node.hpp>
#include <boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp>
@@ -23,9 +23,7 @@
namespace boost { namespace geometry { namespace index {
-namespace detail { namespace rtree { namespace visitors {
-
-namespace detail {
+namespace detail { namespace rtree {
namespace rstar {
@@ -51,8 +49,8 @@
template <typename Parameters, typename Box, size_t Corner, size_t AxisIndex>
struct choose_split_axis_and_index_for_corner
{
- typedef typename index::default_margin_result<Box>::type margin_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_margin_result<Box>::type margin_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Elements, typename Translator>
static inline void apply(Elements const& elements,
@@ -90,10 +88,10 @@
Box box1 = rtree::elements_box<Box>(elements_copy.begin(), elements_copy.begin() + i, translator);
Box box2 = rtree::elements_box<Box>(elements_copy.begin() + i, elements_copy.end(), translator);
- sum_of_margins += index::margin(box1) + index::margin(box2);
+ sum_of_margins += index::detail::margin(box1) + index::detail::margin(box2);
- content_type ovl = index::intersection_content(box1, box2);
- content_type con = index::content(box1) + index::content(box2);
+ content_type ovl = index::detail::intersection_content(box1, box2);
+ content_type con = index::detail::content(box1) + index::detail::content(box2);
if ( ovl < smallest_overlap || (ovl == smallest_overlap && con <= smallest_content) )
{
@@ -114,8 +112,8 @@
template <typename Parameters, typename Box, size_t AxisIndex>
struct choose_split_axis_and_index_for_axis<Parameters, Box, AxisIndex, box_tag>
{
- typedef typename index::default_margin_result<Box>::type margin_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_margin_result<Box>::type margin_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Elements, typename Translator>
static inline void apply(Elements const& elements,
@@ -169,8 +167,8 @@
template <typename Parameters, typename Box, size_t AxisIndex>
struct choose_split_axis_and_index_for_axis<Parameters, Box, AxisIndex, point_tag>
{
- typedef typename index::default_margin_result<Box>::type margin_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_margin_result<Box>::type margin_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Elements, typename Translator>
static inline void apply(Elements const& elements,
@@ -196,8 +194,8 @@
{
BOOST_STATIC_ASSERT(0 < Dimension);
- typedef typename index::default_margin_result<Box>::type margin_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_margin_result<Box>::type margin_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Elements, typename Translator>
static inline void apply(Elements const& elements,
@@ -247,8 +245,8 @@
template <typename Parameters, typename Box>
struct choose_split_axis_and_index<Parameters, Box, 1>
{
- typedef typename index::default_margin_result<Box>::type margin_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_margin_result<Box>::type margin_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Elements, typename Translator>
static inline void apply(Elements const& elements,
@@ -327,8 +325,8 @@
static const size_t dimension = index::detail::traits::dimension<Box>::value;
- typedef typename index::default_margin_result<Box>::type margin_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_margin_result<Box>::type margin_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Node>
static inline void apply(
@@ -403,9 +401,7 @@
}
};
-} // namespace detail
-
-}}} // namespace detail::rtree::visitors
+}} // namespace detail::rtree
}}} // namespace boost::geometry::index
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/detail/rtree/visitors/insert.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -11,15 +11,13 @@
#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_VISITORS_INSERT_HPP
#define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_VISITORS_INSERT_HPP
-#include <boost/geometry/extensions/index/algorithms/content.hpp>
+#include <boost/geometry/extensions/index/detail/algorithms/content.hpp>
#include <boost/geometry/extensions/index/detail/rtree/node/node.hpp>
namespace boost { namespace geometry { namespace index {
-namespace detail { namespace rtree { namespace visitors {
-
-namespace detail {
+namespace detail { namespace rtree {
// Default choose_next_node
template <typename Value, typename Options, typename Box, typename Allocators, typename ChooseNextNodeTag>
@@ -37,7 +35,7 @@
typedef typename rtree::elements_type<internal_node>::type children_type;
- typedef typename index::default_content_result<Box>::type content_type;
+ typedef typename index::detail::default_content_result<Box>::type content_type;
template <typename Indexable>
static inline size_t apply(internal_node & n,
@@ -67,8 +65,8 @@
geometry::expand(box_exp, indexable);
// areas difference
- content_type content = index::content(box_exp);
- content_type content_diff = content - index::content(ch_i.first);
+ content_type content = index::detail::content(box_exp);
+ content_type content_diff = content - index::detail::content(ch_i.first);
// update the result
if ( content_diff < smallest_content_diff ||
@@ -177,6 +175,8 @@
// ----------------------------------------------------------------------- //
+namespace visitors { namespace detail {
+
template <typename InternalNode>
struct insert_traverse_data
{
@@ -260,7 +260,7 @@
inline void traverse(Visitor & visitor, internal_node & n)
{
// choose next node
- size_t choosen_node_index = detail::choose_next_node<Value, Options, Box, Allocators, typename Options::choose_next_node_tag>::
+ size_t choosen_node_index = rtree::choose_next_node<Value, Options, Box, Allocators, typename Options::choose_next_node_tag>::
apply(n, rtree::element_indexable(m_element, m_translator), m_parameters, m_leafs_level - m_traverse_data.current_level);
// expand the node to contain value
@@ -309,7 +309,7 @@
template <typename Node>
inline void split(Node & n) const
{
- typedef detail::split<Value, Options, Translator, Box, Allocators, typename Options::split_tag> split_algo;
+ typedef rtree::split<Value, Options, Translator, Box, Allocators, typename Options::split_tag> split_algo;
typename split_algo::nodes_container_type additional_nodes;
Box n_box;
Modified: sandbox-branches/geometry/index/test/rtree/test_rtree.hpp
==============================================================================
--- sandbox-branches/geometry/index/test/rtree/test_rtree.hpp (original)
+++ sandbox-branches/geometry/index/test/rtree/test_rtree.hpp 2013-01-18 20:15:55 EST (Fri, 18 Jan 2013)
@@ -746,7 +746,7 @@
Value expected_output(generate_value_default<Value>::apply());
BOOST_FOREACH(Value const& v, input)
{
- D d = bgi::comparable_distance_near(pt, rtree.translator()(v));
+ D d = bgi::detail::comparable_distance_near(pt, rtree.translator()(v));
if ( d < smallest_d )
{
smallest_d = d;
@@ -766,8 +766,8 @@
if ( !rtree.translator().equals(output, expected_output) )
{
- D d1 = bgi::comparable_distance_near(pt, rtree.translator()(output));
- D d2 = bgi::comparable_distance_near(pt, rtree.translator()(expected_output));
+ D d1 = bgi::detail::comparable_distance_near(pt, rtree.translator()(output));
+ D d2 = bgi::detail::comparable_distance_near(pt, rtree.translator()(expected_output));
BOOST_CHECK(d1 == d2);
}
}
@@ -810,7 +810,7 @@
// calculate test output - k closest values pairs
BOOST_FOREACH(Value const& v, input)
{
- D d = bgi::comparable_distance_near(pt, rtree.translator()(v));
+ D d = bgi::detail::comparable_distance_near(pt, rtree.translator()(v));
if ( test_output.size() < k )
test_output.push_back(std::make_pair(d, v));
@@ -848,7 +848,7 @@
if ( test_find(rtree, expected_output.begin(), expected_output.end(), v) == expected_output.end() )
{
- D d = bgi::comparable_distance_near(pt, rtree.translator()(v));
+ D d = bgi::detail::comparable_distance_near(pt, rtree.translator()(v));
BOOST_CHECK(d == biggest_d);
}
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk