From 02df2d788fd701edf5d915514ed7ee6a0952ed4a Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Wed, 14 May 2014 23:30:35 +0200 Subject: [PATCH 1/9] [index][equals] Add the support for Segments as Indexables in the rtree. This commit also adds the support for equals(Segment, Segment). During the creation of the rtree all metrics are calculated for Segments viewed as bounding Boxes. During the querying Segments are passed into the BG algorithms. This commit also fixes a compilation error related to the calculation of the Box/Box intersection in the index::detail::intersection_content(). Add indexed_point_view<> which allows to see Boxes and Segments as one of the Points. Move normalized_view<> to views/detail. Add index::detail::bounded_view<> which allows to see simple Geometry e.g. a Segment as its bounding Geometry e.g. a Box. TODO/RECONSIDER: 1. This commit adds return_ref_or_bounds() which returns const& for Points and Boxes and bounding Box view for Segment. The resulting object is then passed into various algorithms like covered_by() or within(). Whenever possible the algorithms should be implemented for the input parameters and the call to return_ref_or_bounds() removed. 2. It's possible that for Segments metrics (like the amount of overlap in the leaf node) could be calculated differently than for Boxes and naiive conversion to bounding Boxes is not fully correct. 3. The way how bounded_view<> works may be not correct for non-cartesian CS. Now, for Segments it just picks MIN and MAX coordinates on the fly which may not be ok e.g. for Segments defined in the spherical CS because of the "winding" of the coordinates. --- .../algorithms/detail/relate/linear_areal.hpp | 2 +- include/boost/geometry/algorithms/equals.hpp | 33 ++- .../index/detail/algorithms/bounds.hpp | 51 +++- .../algorithms/intersection_content.hpp | 11 +- .../index/detail/algorithms/is_valid.hpp | 11 +- .../geometry/index/detail/bounded_view.hpp | 185 ++++++++++++++ .../rtree/linear/redistribute_elements.hpp | 30 ++- .../rtree/quadratic/redistribute_elements.hpp | 11 +- .../rtree/rstar/redistribute_elements.hpp | 42 +++- .../detail/rtree/utilities/are_boxes_ok.hpp | 6 +- .../index/detail/rtree/visitors/count.hpp | 14 +- .../index/detail/rtree/visitors/remove.hpp | 6 +- include/boost/geometry/index/equal_to.hpp | 38 +-- include/boost/geometry/index/indexable.hpp | 9 + include/boost/geometry/index/rtree.hpp | 9 +- .../views/detail/indexed_point_view.hpp | 112 +++++++++ .../views/{ => detail}/normalized_view.hpp | 6 +- .../rtree/generated/rtree_dlin_add_b2d.cpp | 5 +- .../rtree/generated/rtree_dlin_add_b3d.cpp | 5 +- .../rtree/generated/rtree_dlin_add_p2d.cpp | 5 +- .../rtree/generated/rtree_dlin_add_p3d.cpp | 5 +- .../rtree/generated/rtree_dlin_add_s2d.cpp | 17 ++ .../rtree/generated/rtree_dlin_mod_b2d.cpp | 5 +- .../rtree/generated/rtree_dlin_mod_b3d.cpp | 5 +- .../rtree/generated/rtree_dlin_mod_p2d.cpp | 5 +- .../rtree/generated/rtree_dlin_mod_p3d.cpp | 5 +- .../rtree/generated/rtree_dlin_mod_s2d.cpp | 17 ++ .../rtree/generated/rtree_dlin_que_b2d.cpp | 5 +- .../rtree/generated/rtree_dlin_que_b3d.cpp | 5 +- .../rtree/generated/rtree_dlin_que_p2d.cpp | 5 +- .../rtree/generated/rtree_dlin_que_p3d.cpp | 5 +- .../rtree/generated/rtree_dlin_que_s2d.cpp | 17 ++ .../rtree/generated/rtree_dqua_add_b2d.cpp | 5 +- .../rtree/generated/rtree_dqua_add_b3d.cpp | 5 +- .../rtree/generated/rtree_dqua_add_p2d.cpp | 5 +- .../rtree/generated/rtree_dqua_add_p3d.cpp | 5 +- .../rtree/generated/rtree_dqua_add_s2d.cpp | 17 ++ .../rtree/generated/rtree_dqua_mod_b2d.cpp | 5 +- .../rtree/generated/rtree_dqua_mod_b3d.cpp | 5 +- .../rtree/generated/rtree_dqua_mod_p2d.cpp | 5 +- .../rtree/generated/rtree_dqua_mod_p3d.cpp | 5 +- .../rtree/generated/rtree_dqua_mod_s2d.cpp | 17 ++ .../rtree/generated/rtree_dqua_que_b2d.cpp | 5 +- .../rtree/generated/rtree_dqua_que_b3d.cpp | 5 +- .../rtree/generated/rtree_dqua_que_p2d.cpp | 5 +- .../rtree/generated/rtree_dqua_que_p3d.cpp | 5 +- .../rtree/generated/rtree_dqua_que_s2d.cpp | 17 ++ .../rtree/generated/rtree_drst_add_b2d.cpp | 5 +- .../rtree/generated/rtree_drst_add_b3d.cpp | 5 +- .../rtree/generated/rtree_drst_add_p2d.cpp | 5 +- .../rtree/generated/rtree_drst_add_p3d.cpp | 5 +- .../rtree/generated/rtree_drst_add_s2d.cpp | 17 ++ .../rtree/generated/rtree_drst_mod_b2d.cpp | 5 +- .../rtree/generated/rtree_drst_mod_b3d.cpp | 5 +- .../rtree/generated/rtree_drst_mod_p2d.cpp | 5 +- .../rtree/generated/rtree_drst_mod_p3d.cpp | 5 +- .../rtree/generated/rtree_drst_mod_s2d.cpp | 17 ++ .../rtree/generated/rtree_drst_que_b2d.cpp | 5 +- .../rtree/generated/rtree_drst_que_b3d.cpp | 5 +- .../rtree/generated/rtree_drst_que_p2d.cpp | 5 +- .../rtree/generated/rtree_drst_que_p3d.cpp | 5 +- .../rtree/generated/rtree_drst_que_s2d.cpp | 17 ++ .../rtree/generated/rtree_lin_add_b2d.cpp | 5 +- .../rtree/generated/rtree_lin_add_b3d.cpp | 5 +- .../rtree/generated/rtree_lin_add_p2d.cpp | 5 +- .../rtree/generated/rtree_lin_add_p3d.cpp | 5 +- .../rtree/generated/rtree_lin_add_s2d.cpp | 17 ++ .../rtree/generated/rtree_lin_mod_b2d.cpp | 5 +- .../rtree/generated/rtree_lin_mod_b3d.cpp | 5 +- .../rtree/generated/rtree_lin_mod_p2d.cpp | 5 +- .../rtree/generated/rtree_lin_mod_p3d.cpp | 5 +- .../rtree/generated/rtree_lin_mod_s2d.cpp | 17 ++ .../rtree/generated/rtree_lin_que_b2d.cpp | 5 +- .../rtree/generated/rtree_lin_que_b3d.cpp | 5 +- .../rtree/generated/rtree_lin_que_p2d.cpp | 5 +- .../rtree/generated/rtree_lin_que_p3d.cpp | 5 +- .../rtree/generated/rtree_lin_que_s2d.cpp | 17 ++ .../rtree/generated/rtree_qua_add_b2d.cpp | 5 +- .../rtree/generated/rtree_qua_add_b3d.cpp | 5 +- .../rtree/generated/rtree_qua_add_p2d.cpp | 5 +- .../rtree/generated/rtree_qua_add_p3d.cpp | 5 +- .../rtree/generated/rtree_qua_add_s2d.cpp | 17 ++ .../rtree/generated/rtree_qua_mod_b2d.cpp | 5 +- .../rtree/generated/rtree_qua_mod_b3d.cpp | 5 +- .../rtree/generated/rtree_qua_mod_p2d.cpp | 5 +- .../rtree/generated/rtree_qua_mod_p3d.cpp | 5 +- .../rtree/generated/rtree_qua_mod_s2d.cpp | 17 ++ .../rtree/generated/rtree_qua_que_b2d.cpp | 5 +- .../rtree/generated/rtree_qua_que_b3d.cpp | 5 +- .../rtree/generated/rtree_qua_que_p2d.cpp | 5 +- .../rtree/generated/rtree_qua_que_p3d.cpp | 5 +- .../rtree/generated/rtree_qua_que_s2d.cpp | 17 ++ .../rtree/generated/rtree_rst_add_b2d.cpp | 5 +- .../rtree/generated/rtree_rst_add_b3d.cpp | 5 +- .../rtree/generated/rtree_rst_add_p2d.cpp | 5 +- .../rtree/generated/rtree_rst_add_p3d.cpp | 5 +- .../rtree/generated/rtree_rst_add_s2d.cpp | 17 ++ .../rtree/generated/rtree_rst_mod_b2d.cpp | 5 +- .../rtree/generated/rtree_rst_mod_b3d.cpp | 5 +- .../rtree/generated/rtree_rst_mod_p2d.cpp | 5 +- .../rtree/generated/rtree_rst_mod_p3d.cpp | 5 +- .../rtree/generated/rtree_rst_mod_s2d.cpp | 17 ++ .../rtree/generated/rtree_rst_que_b2d.cpp | 5 +- .../rtree/generated/rtree_rst_que_b3d.cpp | 5 +- .../rtree/generated/rtree_rst_que_p2d.cpp | 5 +- .../rtree/generated/rtree_rst_que_p3d.cpp | 5 +- .../rtree/generated/rtree_rst_que_s2d.cpp | 17 ++ index/test/rtree/rtree_test_generator.cpp | 26 +- index/test/rtree/test_rtree.hpp | 226 +++++++++++++++--- 109 files changed, 1097 insertions(+), 397 deletions(-) create mode 100644 include/boost/geometry/index/detail/bounded_view.hpp create mode 100644 include/boost/geometry/views/detail/indexed_point_view.hpp rename include/boost/geometry/views/{ => detail}/normalized_view.hpp (94%) create mode 100644 index/test/rtree/generated/rtree_dlin_add_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_dlin_mod_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_dlin_que_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_dqua_add_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_dqua_mod_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_dqua_que_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_drst_add_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_drst_mod_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_drst_que_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_lin_add_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_lin_mod_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_lin_que_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_qua_add_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_qua_mod_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_qua_que_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_rst_add_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_rst_mod_s2d.cpp create mode 100644 index/test/rtree/generated/rtree_rst_que_s2d.cpp diff --git a/include/boost/geometry/algorithms/detail/relate/linear_areal.hpp b/include/boost/geometry/algorithms/detail/relate/linear_areal.hpp index 39c28f62e..0bf667eb2 100644 --- a/include/boost/geometry/algorithms/detail/relate/linear_areal.hpp +++ b/include/boost/geometry/algorithms/detail/relate/linear_areal.hpp @@ -27,7 +27,7 @@ #include #include -#include +#include namespace boost { namespace geometry { diff --git a/include/boost/geometry/algorithms/equals.hpp b/include/boost/geometry/algorithms/equals.hpp index 44e9eb3df..c0c171292 100644 --- a/include/boost/geometry/algorithms/equals.hpp +++ b/include/boost/geometry/algorithms/equals.hpp @@ -3,6 +3,7 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // This file was modified by Oracle on 2014. // Modifications copyright (c) 2014 Oracle and/or its affiliates. @@ -43,12 +44,13 @@ #include #include +#include + +#include #include #include -#include - namespace boost { namespace geometry { @@ -87,6 +89,28 @@ struct box_box }; +struct segment_segment +{ + template + static inline bool apply(Segment1 const& segment1, Segment2 const& segment2) + { + return ( equals::equals_point_point( + indexed_point_view(segment1), + indexed_point_view(segment2) ) + && equals::equals_point_point( + indexed_point_view(segment1), + indexed_point_view(segment2) ) + ) || ( equals::equals_point_point( + indexed_point_view(segment1), + indexed_point_view(segment2) ) + && equals::equals_point_point( + indexed_point_view(segment1), + indexed_point_view(segment2) ) + ); + } +}; + + struct area_check { template @@ -250,6 +274,11 @@ struct equals : detail::equals::equals_by_collection {}; +template +struct equals + : detail::equals::segment_segment +{}; + template struct equals //: detail::equals::equals_by_collection diff --git a/include/boost/geometry/index/detail/algorithms/bounds.hpp b/include/boost/geometry/index/detail/algorithms/bounds.hpp index 58c575d26..4d2416e98 100644 --- a/include/boost/geometry/index/detail/algorithms/bounds.hpp +++ b/include/boost/geometry/index/detail/algorithms/bounds.hpp @@ -2,7 +2,7 @@ // // n-dimensional bounds // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -11,6 +11,8 @@ #ifndef BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_BOUNDS_HPP #define BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_BOUNDS_HPP +#include + namespace boost { namespace geometry { namespace index { namespace detail { namespace dispatch { @@ -27,6 +29,16 @@ struct bounds } }; +template +struct bounds +{ + static inline void apply(Geometry const& g, Bounds & b) + { + index::detail::bounded_view v(g); + geometry::convert(v, b); + } +}; + } // namespace dispatch template @@ -36,6 +48,43 @@ inline void bounds(Geometry const& g, Bounds & b) dispatch::bounds::apply(g, b); } +namespace dispatch { + +template ::type> +struct return_ref_or_bounds +{ + typedef Geometry const& result_type; + + static inline result_type apply(Geometry const& g) + { + return g; + } +}; + +template +struct return_ref_or_bounds +{ + typedef typename point_type::type point_type; + typedef geometry::model::box bounds_type; + typedef index::detail::bounded_view result_type; + + static inline result_type apply(Geometry const& g) + { + return result_type(g); + } +}; + +} // namespace dispatch + +template +inline +typename dispatch::return_ref_or_bounds::result_type +return_ref_or_bounds(Geometry const& g) +{ + return dispatch::return_ref_or_bounds::apply(g); +} + }}}} // namespace boost::geometry::index::detail #endif // BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_BOUNDS_HPP diff --git a/include/boost/geometry/index/detail/algorithms/intersection_content.hpp b/include/boost/geometry/index/detail/algorithms/intersection_content.hpp index ed615c402..8e3db4530 100644 --- a/include/boost/geometry/index/detail/algorithms/intersection_content.hpp +++ b/include/boost/geometry/index/detail/algorithms/intersection_content.hpp @@ -2,7 +2,7 @@ // // boxes union/intersection area/volume // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -11,7 +11,7 @@ #ifndef BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_INTERSECTION_CONTENT_HPP #define BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_INTERSECTION_CONTENT_HPP -#include +#include #include #include @@ -26,12 +26,7 @@ inline typename default_content_result::type intersection_content(Box const if ( geometry::intersects(box1, box2) ) { Box box_intersection; - - strategy_intersection_empty dummy; - geometry::detail::intersection::intersection_box_box - < - 0, geometry::dimension::value - >::apply(box1, box2, box_intersection, dummy); + geometry::intersection(box1, box2, box_intersection); return detail::content(box_intersection); } return 0; diff --git a/include/boost/geometry/index/detail/algorithms/is_valid.hpp b/include/boost/geometry/index/detail/algorithms/is_valid.hpp index 56c164dae..ee42e3936 100644 --- a/include/boost/geometry/index/detail/algorithms/is_valid.hpp +++ b/include/boost/geometry/index/detail/algorithms/is_valid.hpp @@ -2,7 +2,7 @@ // // n-dimensional box's / point validity check // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -66,6 +66,15 @@ struct is_valid } }; +template +struct is_valid +{ + static inline bool apply(Indexable const&) + { + return true; + } +}; + } // namespace dispatch template diff --git a/include/boost/geometry/index/detail/bounded_view.hpp b/include/boost/geometry/index/detail/bounded_view.hpp new file mode 100644 index 000000000..572368e27 --- /dev/null +++ b/include/boost/geometry/index/detail/bounded_view.hpp @@ -0,0 +1,185 @@ +// Boost.Geometry Index +// +// This view makes possible to treat some simple primitives as its bounding geometry +// e.g. box, nsphere, etc. +// +// Copyright (c) 2014 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_INDEX_DETAIL_BOUNDED_VIEW_HPP +#define BOOST_GEOMETRY_INDEX_DETAIL_BOUNDED_VIEW_HPP + +namespace boost { namespace geometry { + +namespace index { namespace detail { + +template ::type, + typename BoundingTag = typename geometry::tag::type> +struct bounded_view +{ + BOOST_MPL_ASSERT_MSG( + (false), + NOT_IMPLEMENTED_FOR_THOSE_GEOMETRIES, + (BoundingTag, Tag)); +}; + + +// Segment -> Box + +template +struct bounded_view +{ +public: + typedef typename geometry::coordinate_type::type coordinate_type; + + explicit bounded_view(Segment const& segment) + : m_segment(segment) + {} + + template + inline coordinate_type get_min() const + { + return boost::numeric_cast( + (std::min)( geometry::get<0, Dimension>(m_segment), + geometry::get<1, Dimension>(m_segment) ) ); + } + + template + inline coordinate_type get_max() const + { + return boost::numeric_cast( + (std::max)( geometry::get<0, Dimension>(m_segment), + geometry::get<1, Dimension>(m_segment) ) ); + } + +private: + Segment const& m_segment; +}; + +// Box -> Box + +template +struct bounded_view +{ +public: + typedef typename geometry::coordinate_type::type coordinate_type; + + explicit bounded_view(BoxIn const& box) + : m_box(box) + {} + + template + inline coordinate_type get_min() const + { + return boost::numeric_cast( + geometry::get(m_box) ); + } + + template + inline coordinate_type get_max() const + { + return boost::numeric_cast( + geometry::get(m_box) ); + } + +private: + BoxIn const& m_box; +}; + +// Point -> Box + +template +struct bounded_view +{ +public: + typedef typename geometry::coordinate_type::type coordinate_type; + + explicit bounded_view(Point const& point) + : m_point(point) + {} + + template + inline coordinate_type get_min() const + { + return boost::numeric_cast( + geometry::get(m_point) ); + } + + template + inline coordinate_type get_max() const + { + return boost::numeric_cast( + geometry::get(m_point) ); + } + +private: + Point const& m_point; +}; + +}} // namespace index::detail + +// XXX -> Box + +#ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS +namespace traits +{ + +template +struct tag< index::detail::bounded_view > +{ + typedef box_tag type; +}; + +template +struct point_type< index::detail::bounded_view > +{ + typedef typename point_type::type type; +}; + +template +struct indexed_access, + min_corner, Dimension> +{ + typedef index::detail::bounded_view box_type; + typedef typename geometry::coordinate_type::type coordinate_type; + + static inline coordinate_type get(box_type const& b) + { + return b.template get_min(); + } + + //static inline void set(box_type & b, coordinate_type const& value) + //{ + // BOOST_ASSERT(false); + //} +}; + +template +struct indexed_access, + max_corner, Dimension> +{ + typedef index::detail::bounded_view box_type; + typedef typename geometry::coordinate_type::type coordinate_type; + + static inline coordinate_type get(box_type const& b) + { + return b.template get_max(); + } + + //static inline void set(box_type & b, coordinate_type const& value) + //{ + // BOOST_ASSERT(false); + //} +}; + +} // namespace traits +#endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_INDEX_DETAIL_BOUNDED_VIEW_HPP diff --git a/include/boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp b/include/boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp index 45bd18a79..9842864e3 100644 --- a/include/boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp +++ b/include/boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp @@ -3,7 +3,7 @@ // R-tree linear split algorithm implementation // // Copyright (c) 2008 Federico J. Fernandez. -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -75,12 +76,6 @@ inline R difference(T const& from, T const& to) template struct find_greatest_normalized_separation -{ - BOOST_MPL_ASSERT_MSG(false, NOT_IMPLEMENTED_FOR_THIS_TAG, (Tag)); -}; - -template -struct find_greatest_normalized_separation { typedef typename Elements::value_type element_type; typedef typename rtree::element_indexable_type::type indexable_type; @@ -92,6 +87,10 @@ struct find_greatest_normalized_separation::type separation_type; + typedef typename geometry::point_type::type point_type; + typedef geometry::model::box bounds_type; + typedef index::detail::bounded_view bounded_view_type; + static inline void apply(Elements const& elements, Parameters const& parameters, Translator const& translator, @@ -104,15 +103,18 @@ struct find_greatest_normalized_separation(rtree::element_indexable(elements[0], translator)); - coordinate_type highest_high = geometry::get(rtree::element_indexable(elements[0], translator)); + bounded_view_type bounded_indexable_0(rtree::element_indexable(elements[0], translator)); + coordinate_type lowest_low = geometry::get(bounded_indexable_0); + coordinate_type highest_high = geometry::get(bounded_indexable_0); + // and the lowest high coordinate_type lowest_high = highest_high; size_t lowest_high_index = 0; for ( size_t i = 1 ; i < elements_count ; ++i ) { - coordinate_type min_coord = geometry::get(rtree::element_indexable(elements[i], translator)); - coordinate_type max_coord = geometry::get(rtree::element_indexable(elements[i], translator)); + bounded_view_type bounded_indexable(rtree::element_indexable(elements[i], translator)); + coordinate_type min_coord = geometry::get(bounded_indexable); + coordinate_type max_coord = geometry::get(bounded_indexable); if ( max_coord < lowest_high ) { @@ -129,10 +131,12 @@ struct find_greatest_normalized_separation(rtree::element_indexable(elements[highest_low_index], translator)); + bounded_view_type bounded_indexable_hl(rtree::element_indexable(elements[highest_low_index], translator)); + coordinate_type highest_low = geometry::get(bounded_indexable_hl); for ( size_t i = highest_low_index ; i < elements_count ; ++i ) { - coordinate_type min_coord = geometry::get(rtree::element_indexable(elements[i], translator)); + bounded_view_type bounded_indexable(rtree::element_indexable(elements[i], translator)); + coordinate_type min_coord = geometry::get(bounded_indexable); if ( highest_low < min_coord && i != lowest_high_index ) { diff --git a/include/boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp b/include/boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp index d18998970..2cf4cf051 100644 --- a/include/boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp +++ b/include/boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp @@ -2,7 +2,7 @@ // // R-tree quadratic split algorithm implementation // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -16,6 +16,8 @@ #include #include +#include + #include #include #include @@ -34,6 +36,7 @@ struct pick_seeds typedef typename coordinate_type::type coordinate_type; typedef Box box_type; typedef typename index::detail::default_content_result::type content_type; + typedef index::detail::bounded_view bounded_indexable_view; static inline void apply(Elements const& elements, Parameters const& parameters, @@ -61,7 +64,11 @@ struct pick_seeds detail::bounds(ind1, enlarged_box); geometry::expand(enlarged_box, ind2); - content_type free_content = (index::detail::content(enlarged_box) - index::detail::content(ind1)) - index::detail::content(ind2); + bounded_indexable_view bounded_ind1(ind1); + bounded_indexable_view bounded_ind2(ind2); + content_type free_content = ( index::detail::content(enlarged_box) + - index::detail::content(bounded_ind1) ) + - index::detail::content(bounded_ind2); if ( greatest_free_content < free_content ) { diff --git a/include/boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp b/include/boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp index aedc2d1a4..69baf4726 100644 --- a/include/boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp +++ b/include/boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp @@ -2,7 +2,7 @@ // // R-tree R*-tree split algorithm implementation // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -15,6 +15,8 @@ #include #include +#include + #include #include #include @@ -28,7 +30,27 @@ namespace rstar { template class element_axis_corner_less { - BOOST_MPL_ASSERT_MSG(false, NOT_IMPLEMENTED_FOR_THIS_TAG, (Tag)); + typedef typename rtree::element_indexable_type::type indexable_type; + typedef typename geometry::point_type::type point_type; + typedef geometry::model::box bounds_type; + typedef index::detail::bounded_view bounded_view_type; + +public: + element_axis_corner_less(Translator const& tr) + : m_tr(tr) + {} + + bool operator()(Element const& e1, Element const& e2) const + { + bounded_view_type bounded_ind1(rtree::element_indexable(e1, m_tr)); + bounded_view_type bounded_ind2(rtree::element_indexable(e2, m_tr)); + + return geometry::get(bounded_ind1) + < geometry::get(bounded_ind2); + } + +private: + Translator const& m_tr; }; template @@ -129,14 +151,14 @@ struct choose_split_axis_and_index_for_corner } }; +//template +//struct choose_split_axis_and_index_for_axis +//{ +// BOOST_MPL_ASSERT_MSG(false, NOT_IMPLEMENTED_FOR_THIS_TAG, (ElementIndexableTag)); +//}; + template struct choose_split_axis_and_index_for_axis -{ - BOOST_MPL_ASSERT_MSG(false, NOT_IMPLEMENTED_FOR_THIS_TAG, (ElementIndexableTag)); -}; - -template -struct choose_split_axis_and_index_for_axis { typedef typename index::detail::default_margin_result::type margin_type; typedef typename index::detail::default_content_result::type content_type; @@ -403,11 +425,15 @@ struct redistribute_elements(min_corner) ) + { rstar::partial_sort ::apply(elements_copy, split_axis, split_index, translator); // MAY THROW, BASIC (copy) + } else + { rstar::partial_sort ::apply(elements_copy, split_axis, split_index, translator); // MAY THROW, BASIC (copy) + } BOOST_TRY { diff --git a/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp b/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp index f283c3e5b..d2caa3670 100644 --- a/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp +++ b/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp @@ -2,7 +2,7 @@ // // R-tree boxes validating visitor implementation // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -89,7 +89,9 @@ public: } Box box_exp; - geometry::convert(m_tr(elements.front()), box_exp); + geometry::convert( + index::detail::return_ref_or_bounds(m_tr(elements.front())), + box_exp); for(typename elements_type::const_iterator it = elements.begin() + 1; it != elements.end() ; ++it) { diff --git a/include/boost/geometry/index/detail/rtree/visitors/count.hpp b/include/boost/geometry/index/detail/rtree/visitors/count.hpp index 203422f33..f521944a4 100644 --- a/include/boost/geometry/index/detail/rtree/visitors/count.hpp +++ b/include/boost/geometry/index/detail/rtree/visitors/count.hpp @@ -2,7 +2,7 @@ // // R-tree count visitor implementation // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -36,8 +36,12 @@ struct count for (typename elements_type::const_iterator it = elements.begin(); it != elements.end(); ++it) { - if ( geometry::covered_by(indexable, it->first) ) + if ( geometry::covered_by( + return_ref_or_bounds(indexable), + it->first) ) + { rtree::apply_visitor(*this, *it->second); + } } } @@ -84,8 +88,12 @@ struct count for (typename elements_type::const_iterator it = elements.begin(); it != elements.end(); ++it) { - if ( geometry::covered_by(tr(value), it->first) ) + if ( geometry::covered_by( + return_ref_or_bounds(tr(value)), + it->first) ) + { rtree::apply_visitor(*this, *it->second); + } } } diff --git a/include/boost/geometry/index/detail/rtree/visitors/remove.hpp b/include/boost/geometry/index/detail/rtree/visitors/remove.hpp index 19da61d49..d1c81219b 100644 --- a/include/boost/geometry/index/detail/rtree/visitors/remove.hpp +++ b/include/boost/geometry/index/detail/rtree/visitors/remove.hpp @@ -2,7 +2,7 @@ // // R-tree removing visitor implementation // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -68,7 +68,9 @@ public: size_t child_node_index = 0; for ( ; child_node_index < children.size() ; ++child_node_index ) { - if ( geometry::covered_by(m_translator(m_value), children[child_node_index].first) ) + if ( geometry::covered_by( + return_ref_or_bounds(m_translator(m_value)), + children[child_node_index].first) ) { // next traversing step traverse_apply_visitor(n, child_node_index); // MAY THROW diff --git a/include/boost/geometry/index/equal_to.hpp b/include/boost/geometry/index/equal_to.hpp index 37e10cb6f..5fbaa8209 100644 --- a/include/boost/geometry/index/equal_to.hpp +++ b/include/boost/geometry/index/equal_to.hpp @@ -14,7 +14,8 @@ namespace boost { namespace geometry { namespace index { namespace detail { -template +template ::type> struct equals { inline static bool apply(Geometry const& g1, Geometry const& g2) @@ -38,12 +39,9 @@ struct tuple_equals inline static bool apply(Tuple const& t1, Tuple const& t2) { typedef typename boost::tuples::element::type T; - return - equals< - T, typename geometry::traits::tag::type - >::apply(boost::get(t1), boost::get(t2)) - && - tuple_equals::apply(t1, t2); + + return equals::apply(boost::get(t1), boost::get(t2)) + && tuple_equals::apply(t1, t2); } }; @@ -56,6 +54,12 @@ struct tuple_equals } }; +// TODO: Consider this: Since equal_to<> is using geometry::equals() it's possible that +// two compared Indexables are not exactly the same! They will be spatially equal +// but not strictly equal. Consider 2 Segments with reversed order of points. +// Therefore it's possible that during the Value removal different value will be +// removed than the one that was passed. + /*! \brief The function object comparing Values. @@ -66,7 +70,8 @@ This template is also specialized for std::pair and boost::tuple<...>. \tparam Value The type of objects which are compared by this function object. \tparam IsIndexable If true, Values are compared using boost::geometry::equals() functions. */ -template ::value> +template ::value> struct equal_to { /*! \brief The type of result returned by function object. */ @@ -81,7 +86,7 @@ struct equal_to */ inline bool operator()(Value const& l, Value const& r) const { - return detail::equals::type>::apply(l ,r); + return detail::equals::apply(l ,r); } }; @@ -109,10 +114,8 @@ struct equal_to, false> */ inline bool operator()(std::pair const& l, std::pair const& r) const { - typedef detail::equals::type> equals1; - typedef detail::equals::type> equals2; - - return equals1::apply(l.first, r.first) && equals2::apply(l.second, r.second); + return detail::equals::apply(l.first, r.first) + && detail::equals::apply(l.second, r.second); } }; @@ -160,12 +163,9 @@ struct std_tuple_equals inline static bool apply(Tuple const& t1, Tuple const& t2) { typedef typename std::tuple_element::type T; - return - equals< - T, typename geometry::traits::tag::type - >::apply(std::get(t1), std::get(t2)) - && - std_tuple_equals::apply(t1, t2); + + return equals::apply(std::get(t1), std::get(t2)) + && std_tuple_equals::apply(t1, t2); } }; diff --git a/include/boost/geometry/index/indexable.hpp b/include/boost/geometry/index/indexable.hpp index 7476602f8..5270ca22e 100644 --- a/include/boost/geometry/index/indexable.hpp +++ b/include/boost/geometry/index/indexable.hpp @@ -22,6 +22,9 @@ struct is_indexable_impl { static const bool value = template struct is_indexable_impl { static const bool value = true; }; +template +struct is_indexable_impl { static const bool value = true; }; + template struct is_indexable { @@ -42,6 +45,12 @@ and std::tuple. template ::value> struct indexable { + BOOST_MPL_ASSERT_MSG( + (detail::is_indexable::value), + NOT_VALID_INDEXABLE_TYPE, + (Value) + ); + /*! \brief The type of result returned by function object. */ typedef Value const& result_type; diff --git a/include/boost/geometry/index/rtree.hpp b/include/boost/geometry/index/rtree.hpp index 9e61a3979..3c588bc79 100644 --- a/include/boost/geometry/index/rtree.hpp +++ b/include/boost/geometry/index/rtree.hpp @@ -3,7 +3,7 @@ // R-tree implementation // // Copyright (c) 2008 Federico J. Fernandez. -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -55,6 +55,9 @@ //#include //#include //#include + +#include +#include // END #include @@ -139,8 +142,8 @@ Predefined algorithms with run-time parameters are: \par IndexableGetter The object of IndexableGetter type translates from Value to Indexable each time r-tree requires it. Which means that this operation is done for each Value access. Therefore the IndexableGetter should return the Indexable by -const reference instead of a value. Default one can translate all types adapted to Point -or Box concepts (called Indexables). It also handles std::pair and +const reference instead of a value. Default one can translate all types adapted to Point, Box or Segment +concepts (called Indexables). It also handles std::pair and boost::tuple. For example, if std::pair is stored in the container, the default IndexableGetter translates from std::pair const& to Box const&. diff --git a/include/boost/geometry/views/detail/indexed_point_view.hpp b/include/boost/geometry/views/detail/indexed_point_view.hpp new file mode 100644 index 000000000..88b13ec5c --- /dev/null +++ b/include/boost/geometry/views/detail/indexed_point_view.hpp @@ -0,0 +1,112 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 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_VIEWS_DETAIL_INDEXED_POINT_VIEW_HPP +#define BOOST_GEOMETRY_VIEWS_DETAIL_INDEXED_POINT_VIEW_HPP + +#include + +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace detail +{ + +template +class indexed_point_view +{ + indexed_point_view & operator=(indexed_point_view const&); + +public: + typedef typename geometry::point_type::type point_type; + typedef typename geometry::coordinate_type::type coordinate_type; + + indexed_point_view(Geometry & geometry) + : m_geometry(geometry) + {} + + template + inline coordinate_type get() const + { + return geometry::get(m_geometry); + } + + template + inline void set(coordinate_type const& value) + { + geometry::set(m_geometry, value); + } + +private: + Geometry & m_geometry; +}; + +} + +#ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS +namespace traits +{ + +template +struct tag< detail::indexed_point_view > +{ + typedef point_tag type; +}; + +template +struct coordinate_type< detail::indexed_point_view > +{ + typedef typename geometry::coordinate_type::type type; +}; + +template +struct coordinate_system< detail::indexed_point_view > +{ + typedef typename geometry::coordinate_system::type type; +}; + +template +struct dimension< detail::indexed_point_view > + : geometry::dimension +{}; + +template +struct access< detail::indexed_point_view, Dimension > +{ + typedef typename geometry::coordinate_type::type coordinate_type; + + static inline coordinate_type get( + detail::indexed_point_view const& p) + { + return p.template get(); + } + + static inline void set( + detail::indexed_point_view & p, + coordinate_type const& value) + { + p.template set(value); + } +}; + +} // namespace traits +#endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_VIEWS_DETAIL_INDEXED_POINT_VIEW_HPP diff --git a/include/boost/geometry/views/normalized_view.hpp b/include/boost/geometry/views/detail/normalized_view.hpp similarity index 94% rename from include/boost/geometry/views/normalized_view.hpp rename to include/boost/geometry/views/detail/normalized_view.hpp index dfa48f779..d50ffe48c 100644 --- a/include/boost/geometry/views/normalized_view.hpp +++ b/include/boost/geometry/views/detail/normalized_view.hpp @@ -16,8 +16,8 @@ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle -#ifndef BOOST_GEOMETRY_VIEWS_NORMALIZED_VIEW_HPP -#define BOOST_GEOMETRY_VIEWS_NORMALIZED_VIEW_HPP +#ifndef BOOST_GEOMETRY_VIEWS_DETAIL_NORMALIZED_VIEW_HPP +#define BOOST_GEOMETRY_VIEWS_DETAIL_NORMALIZED_VIEW_HPP #include @@ -113,4 +113,4 @@ private: }} // namespace boost::geometry -#endif // BOOST_GEOMETRY_VIEWS_NORMALIZED_VIEW_HPP +#endif // BOOST_GEOMETRY_VIEWS_DETAIL_NORMALIZED_VIEW_HPP diff --git a/index/test/rtree/generated/rtree_dlin_add_b2d.cpp b/index/test/rtree/generated/rtree_dlin_add_b2d.cpp index 312a7ba55..adab4cb9c 100644 --- a/index/test/rtree/generated/rtree_dlin_add_b2d.cpp +++ b/index/test/rtree/generated/rtree_dlin_add_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_add_b3d.cpp b/index/test/rtree/generated/rtree_dlin_add_b3d.cpp index fbcb002ee..b387eb1ff 100644 --- a/index/test/rtree/generated/rtree_dlin_add_b3d.cpp +++ b/index/test/rtree/generated/rtree_dlin_add_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_add_p2d.cpp b/index/test/rtree/generated/rtree_dlin_add_p2d.cpp index 222010ff4..09e1c20e3 100644 --- a/index/test/rtree/generated/rtree_dlin_add_p2d.cpp +++ b/index/test/rtree/generated/rtree_dlin_add_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_add_p3d.cpp b/index/test/rtree/generated/rtree_dlin_add_p3d.cpp index 4af7feded..9959dc3f0 100644 --- a/index/test/rtree/generated/rtree_dlin_add_p3d.cpp +++ b/index/test/rtree/generated/rtree_dlin_add_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_add_s2d.cpp b/index/test/rtree/generated/rtree_dlin_add_s2d.cpp new file mode 100644 index 000000000..c89e3ddbe --- /dev/null +++ b/index/test/rtree/generated/rtree_dlin_add_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::additional(bgi::dynamic_linear(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp b/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp index aad24a95e..0b355cb82 100644 --- a/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp +++ b/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp b/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp index 3520fcfa5..86a1df0de 100644 --- a/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp +++ b/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp b/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp index 56895487b..072b8e243 100644 --- a/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp +++ b/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp b/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp index 90e51c399..b8e1d6235 100644 --- a/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp +++ b/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp b/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp new file mode 100644 index 000000000..595312c4d --- /dev/null +++ b/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::modifiers(bgi::dynamic_linear(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_dlin_que_b2d.cpp b/index/test/rtree/generated/rtree_dlin_que_b2d.cpp index df167f6c6..8a2ee0e70 100644 --- a/index/test/rtree/generated/rtree_dlin_que_b2d.cpp +++ b/index/test/rtree/generated/rtree_dlin_que_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_que_b3d.cpp b/index/test/rtree/generated/rtree_dlin_que_b3d.cpp index ddac379f9..c054f630f 100644 --- a/index/test/rtree/generated/rtree_dlin_que_b3d.cpp +++ b/index/test/rtree/generated/rtree_dlin_que_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_que_p2d.cpp b/index/test/rtree/generated/rtree_dlin_que_p2d.cpp index e66c79d9e..22bdb83f4 100644 --- a/index/test/rtree/generated/rtree_dlin_que_p2d.cpp +++ b/index/test/rtree/generated/rtree_dlin_que_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_que_p3d.cpp b/index/test/rtree/generated/rtree_dlin_que_p3d.cpp index 5ef00c062..68f901776 100644 --- a/index/test/rtree/generated/rtree_dlin_que_p3d.cpp +++ b/index/test/rtree/generated/rtree_dlin_que_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dlin_que_s2d.cpp b/index/test/rtree/generated/rtree_dlin_que_s2d.cpp new file mode 100644 index 000000000..41f93c575 --- /dev/null +++ b/index/test/rtree/generated/rtree_dlin_que_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::queries(bgi::dynamic_linear(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_dqua_add_b2d.cpp b/index/test/rtree/generated/rtree_dqua_add_b2d.cpp index cd917bcf6..80c16cd1f 100644 --- a/index/test/rtree/generated/rtree_dqua_add_b2d.cpp +++ b/index/test/rtree/generated/rtree_dqua_add_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_add_b3d.cpp b/index/test/rtree/generated/rtree_dqua_add_b3d.cpp index af1afdea7..47760e224 100644 --- a/index/test/rtree/generated/rtree_dqua_add_b3d.cpp +++ b/index/test/rtree/generated/rtree_dqua_add_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_add_p2d.cpp b/index/test/rtree/generated/rtree_dqua_add_p2d.cpp index ea21920cb..46cc6db24 100644 --- a/index/test/rtree/generated/rtree_dqua_add_p2d.cpp +++ b/index/test/rtree/generated/rtree_dqua_add_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_add_p3d.cpp b/index/test/rtree/generated/rtree_dqua_add_p3d.cpp index bfbd66bd0..28ec6586c 100644 --- a/index/test/rtree/generated/rtree_dqua_add_p3d.cpp +++ b/index/test/rtree/generated/rtree_dqua_add_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_add_s2d.cpp b/index/test/rtree/generated/rtree_dqua_add_s2d.cpp new file mode 100644 index 000000000..e6009b833 --- /dev/null +++ b/index/test/rtree/generated/rtree_dqua_add_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::additional(bgi::dynamic_quadratic(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp b/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp index 4462102a0..7de20a5f1 100644 --- a/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp +++ b/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp b/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp index e5a21b780..4c2e7c718 100644 --- a/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp +++ b/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp b/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp index 1e8112dbb..3cce646e1 100644 --- a/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp +++ b/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp b/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp index 75cce976e..c0d782d3d 100644 --- a/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp +++ b/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp b/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp new file mode 100644 index 000000000..be0cb0ad9 --- /dev/null +++ b/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::modifiers(bgi::dynamic_quadratic(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_dqua_que_b2d.cpp b/index/test/rtree/generated/rtree_dqua_que_b2d.cpp index 47995d1bb..790e29c4d 100644 --- a/index/test/rtree/generated/rtree_dqua_que_b2d.cpp +++ b/index/test/rtree/generated/rtree_dqua_que_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_que_b3d.cpp b/index/test/rtree/generated/rtree_dqua_que_b3d.cpp index 73c89d9ad..3c27c09ea 100644 --- a/index/test/rtree/generated/rtree_dqua_que_b3d.cpp +++ b/index/test/rtree/generated/rtree_dqua_que_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_que_p2d.cpp b/index/test/rtree/generated/rtree_dqua_que_p2d.cpp index 4683774f3..8ba91c01e 100644 --- a/index/test/rtree/generated/rtree_dqua_que_p2d.cpp +++ b/index/test/rtree/generated/rtree_dqua_que_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_que_p3d.cpp b/index/test/rtree/generated/rtree_dqua_que_p3d.cpp index a5cae4ebb..2fad909f8 100644 --- a/index/test/rtree/generated/rtree_dqua_que_p3d.cpp +++ b/index/test/rtree/generated/rtree_dqua_que_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_dqua_que_s2d.cpp b/index/test/rtree/generated/rtree_dqua_que_s2d.cpp new file mode 100644 index 000000000..8d353e622 --- /dev/null +++ b/index/test/rtree/generated/rtree_dqua_que_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::queries(bgi::dynamic_quadratic(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_drst_add_b2d.cpp b/index/test/rtree/generated/rtree_drst_add_b2d.cpp index 9093a91ee..358de99d7 100644 --- a/index/test/rtree/generated/rtree_drst_add_b2d.cpp +++ b/index/test/rtree/generated/rtree_drst_add_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_drst_add_b3d.cpp b/index/test/rtree/generated/rtree_drst_add_b3d.cpp index 75cf1db8c..1816462bd 100644 --- a/index/test/rtree/generated/rtree_drst_add_b3d.cpp +++ b/index/test/rtree/generated/rtree_drst_add_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_drst_add_p2d.cpp b/index/test/rtree/generated/rtree_drst_add_p2d.cpp index 7595a41c4..2b2146e07 100644 --- a/index/test/rtree/generated/rtree_drst_add_p2d.cpp +++ b/index/test/rtree/generated/rtree_drst_add_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_drst_add_p3d.cpp b/index/test/rtree/generated/rtree_drst_add_p3d.cpp index 934625270..ecbc1c336 100644 --- a/index/test/rtree/generated/rtree_drst_add_p3d.cpp +++ b/index/test/rtree/generated/rtree_drst_add_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_drst_add_s2d.cpp b/index/test/rtree/generated/rtree_drst_add_s2d.cpp new file mode 100644 index 000000000..fabc1e2e8 --- /dev/null +++ b/index/test/rtree/generated/rtree_drst_add_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::additional(bgi::dynamic_rstar(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_drst_mod_b2d.cpp b/index/test/rtree/generated/rtree_drst_mod_b2d.cpp index f3495061b..df3cfdac2 100644 --- a/index/test/rtree/generated/rtree_drst_mod_b2d.cpp +++ b/index/test/rtree/generated/rtree_drst_mod_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_drst_mod_b3d.cpp b/index/test/rtree/generated/rtree_drst_mod_b3d.cpp index cf2490353..9f8ea3bef 100644 --- a/index/test/rtree/generated/rtree_drst_mod_b3d.cpp +++ b/index/test/rtree/generated/rtree_drst_mod_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_drst_mod_p2d.cpp b/index/test/rtree/generated/rtree_drst_mod_p2d.cpp index 886be52cf..0cdd1706d 100644 --- a/index/test/rtree/generated/rtree_drst_mod_p2d.cpp +++ b/index/test/rtree/generated/rtree_drst_mod_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_drst_mod_p3d.cpp b/index/test/rtree/generated/rtree_drst_mod_p3d.cpp index a597f6691..e15305115 100644 --- a/index/test/rtree/generated/rtree_drst_mod_p3d.cpp +++ b/index/test/rtree/generated/rtree_drst_mod_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_drst_mod_s2d.cpp b/index/test/rtree/generated/rtree_drst_mod_s2d.cpp new file mode 100644 index 000000000..ca3934411 --- /dev/null +++ b/index/test/rtree/generated/rtree_drst_mod_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::modifiers(bgi::dynamic_rstar(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_drst_que_b2d.cpp b/index/test/rtree/generated/rtree_drst_que_b2d.cpp index 2e46885db..5f1ea2e29 100644 --- a/index/test/rtree/generated/rtree_drst_que_b2d.cpp +++ b/index/test/rtree/generated/rtree_drst_que_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_drst_que_b3d.cpp b/index/test/rtree/generated/rtree_drst_que_b3d.cpp index 3ea5e8f66..61e51a2f1 100644 --- a/index/test/rtree/generated/rtree_drst_que_b3d.cpp +++ b/index/test/rtree/generated/rtree_drst_que_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_drst_que_p2d.cpp b/index/test/rtree/generated/rtree_drst_que_p2d.cpp index bab080776..f9bd1951a 100644 --- a/index/test/rtree/generated/rtree_drst_que_p2d.cpp +++ b/index/test/rtree/generated/rtree_drst_que_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_drst_que_p3d.cpp b/index/test/rtree/generated/rtree_drst_que_p3d.cpp index efd0e34ee..b7cfc7f71 100644 --- a/index/test/rtree/generated/rtree_drst_que_p3d.cpp +++ b/index/test/rtree/generated/rtree_drst_que_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_drst_que_s2d.cpp b/index/test/rtree/generated/rtree_drst_que_s2d.cpp new file mode 100644 index 000000000..8b402560e --- /dev/null +++ b/index/test/rtree/generated/rtree_drst_que_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::queries(bgi::dynamic_rstar(5, 2), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_lin_add_b2d.cpp b/index/test/rtree/generated/rtree_lin_add_b2d.cpp index 668a3a7c6..3474fc438 100644 --- a/index/test/rtree/generated/rtree_lin_add_b2d.cpp +++ b/index/test/rtree/generated/rtree_lin_add_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_lin_add_b3d.cpp b/index/test/rtree/generated/rtree_lin_add_b3d.cpp index b1c8d1080..d390a866c 100644 --- a/index/test/rtree/generated/rtree_lin_add_b3d.cpp +++ b/index/test/rtree/generated/rtree_lin_add_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_lin_add_p2d.cpp b/index/test/rtree/generated/rtree_lin_add_p2d.cpp index 5a3a4c328..af06e30ec 100644 --- a/index/test/rtree/generated/rtree_lin_add_p2d.cpp +++ b/index/test/rtree/generated/rtree_lin_add_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_lin_add_p3d.cpp b/index/test/rtree/generated/rtree_lin_add_p3d.cpp index dee2c17f3..24fc32feb 100644 --- a/index/test/rtree/generated/rtree_lin_add_p3d.cpp +++ b/index/test/rtree/generated/rtree_lin_add_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_lin_add_s2d.cpp b/index/test/rtree/generated/rtree_lin_add_s2d.cpp new file mode 100644 index 000000000..10419db62 --- /dev/null +++ b/index/test/rtree/generated/rtree_lin_add_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::additional(bgi::linear<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_lin_mod_b2d.cpp b/index/test/rtree/generated/rtree_lin_mod_b2d.cpp index a55700ab3..dc8f48c39 100644 --- a/index/test/rtree/generated/rtree_lin_mod_b2d.cpp +++ b/index/test/rtree/generated/rtree_lin_mod_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_lin_mod_b3d.cpp b/index/test/rtree/generated/rtree_lin_mod_b3d.cpp index 47cc47866..c00b20ab5 100644 --- a/index/test/rtree/generated/rtree_lin_mod_b3d.cpp +++ b/index/test/rtree/generated/rtree_lin_mod_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_lin_mod_p2d.cpp b/index/test/rtree/generated/rtree_lin_mod_p2d.cpp index a5ae7e41f..7879a5bf0 100644 --- a/index/test/rtree/generated/rtree_lin_mod_p2d.cpp +++ b/index/test/rtree/generated/rtree_lin_mod_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_lin_mod_p3d.cpp b/index/test/rtree/generated/rtree_lin_mod_p3d.cpp index 6272a2f87..440dbbd0d 100644 --- a/index/test/rtree/generated/rtree_lin_mod_p3d.cpp +++ b/index/test/rtree/generated/rtree_lin_mod_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_lin_mod_s2d.cpp b/index/test/rtree/generated/rtree_lin_mod_s2d.cpp new file mode 100644 index 000000000..92c81faf0 --- /dev/null +++ b/index/test/rtree/generated/rtree_lin_mod_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::modifiers(bgi::linear<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_lin_que_b2d.cpp b/index/test/rtree/generated/rtree_lin_que_b2d.cpp index a43437557..19f08a6a8 100644 --- a/index/test/rtree/generated/rtree_lin_que_b2d.cpp +++ b/index/test/rtree/generated/rtree_lin_que_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_lin_que_b3d.cpp b/index/test/rtree/generated/rtree_lin_que_b3d.cpp index dff1647e0..19f2ee5c7 100644 --- a/index/test/rtree/generated/rtree_lin_que_b3d.cpp +++ b/index/test/rtree/generated/rtree_lin_que_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_lin_que_p2d.cpp b/index/test/rtree/generated/rtree_lin_que_p2d.cpp index 305d29ab8..b05ee3f64 100644 --- a/index/test/rtree/generated/rtree_lin_que_p2d.cpp +++ b/index/test/rtree/generated/rtree_lin_que_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_lin_que_p3d.cpp b/index/test/rtree/generated/rtree_lin_que_p3d.cpp index 9e948ab1d..726287fdd 100644 --- a/index/test/rtree/generated/rtree_lin_que_p3d.cpp +++ b/index/test/rtree/generated/rtree_lin_que_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_lin_que_s2d.cpp b/index/test/rtree/generated/rtree_lin_que_s2d.cpp new file mode 100644 index 000000000..8cfba6bf1 --- /dev/null +++ b/index/test/rtree/generated/rtree_lin_que_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::queries(bgi::linear<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_qua_add_b2d.cpp b/index/test/rtree/generated/rtree_qua_add_b2d.cpp index 2623bacae..4601697cd 100644 --- a/index/test/rtree/generated/rtree_qua_add_b2d.cpp +++ b/index/test/rtree/generated/rtree_qua_add_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_qua_add_b3d.cpp b/index/test/rtree/generated/rtree_qua_add_b3d.cpp index 314832fb4..fbcd98103 100644 --- a/index/test/rtree/generated/rtree_qua_add_b3d.cpp +++ b/index/test/rtree/generated/rtree_qua_add_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_qua_add_p2d.cpp b/index/test/rtree/generated/rtree_qua_add_p2d.cpp index 6f19d402a..c7644da8e 100644 --- a/index/test/rtree/generated/rtree_qua_add_p2d.cpp +++ b/index/test/rtree/generated/rtree_qua_add_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_qua_add_p3d.cpp b/index/test/rtree/generated/rtree_qua_add_p3d.cpp index c2f6bc8a5..17d378094 100644 --- a/index/test/rtree/generated/rtree_qua_add_p3d.cpp +++ b/index/test/rtree/generated/rtree_qua_add_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_qua_add_s2d.cpp b/index/test/rtree/generated/rtree_qua_add_s2d.cpp new file mode 100644 index 000000000..456e1039c --- /dev/null +++ b/index/test/rtree/generated/rtree_qua_add_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::additional(bgi::quadratic<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_qua_mod_b2d.cpp b/index/test/rtree/generated/rtree_qua_mod_b2d.cpp index c66720405..201c0979b 100644 --- a/index/test/rtree/generated/rtree_qua_mod_b2d.cpp +++ b/index/test/rtree/generated/rtree_qua_mod_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_qua_mod_b3d.cpp b/index/test/rtree/generated/rtree_qua_mod_b3d.cpp index 0230c9b97..0f96c8160 100644 --- a/index/test/rtree/generated/rtree_qua_mod_b3d.cpp +++ b/index/test/rtree/generated/rtree_qua_mod_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_qua_mod_p2d.cpp b/index/test/rtree/generated/rtree_qua_mod_p2d.cpp index 4c07b4bb3..5c0710bab 100644 --- a/index/test/rtree/generated/rtree_qua_mod_p2d.cpp +++ b/index/test/rtree/generated/rtree_qua_mod_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_qua_mod_p3d.cpp b/index/test/rtree/generated/rtree_qua_mod_p3d.cpp index 44779b25e..d3db906e8 100644 --- a/index/test/rtree/generated/rtree_qua_mod_p3d.cpp +++ b/index/test/rtree/generated/rtree_qua_mod_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_qua_mod_s2d.cpp b/index/test/rtree/generated/rtree_qua_mod_s2d.cpp new file mode 100644 index 000000000..efd0e0d04 --- /dev/null +++ b/index/test/rtree/generated/rtree_qua_mod_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::modifiers(bgi::quadratic<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_qua_que_b2d.cpp b/index/test/rtree/generated/rtree_qua_que_b2d.cpp index 86753b749..875cbf4f5 100644 --- a/index/test/rtree/generated/rtree_qua_que_b2d.cpp +++ b/index/test/rtree/generated/rtree_qua_que_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_qua_que_b3d.cpp b/index/test/rtree/generated/rtree_qua_que_b3d.cpp index 74dc69945..f29b08831 100644 --- a/index/test/rtree/generated/rtree_qua_que_b3d.cpp +++ b/index/test/rtree/generated/rtree_qua_que_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_qua_que_p2d.cpp b/index/test/rtree/generated/rtree_qua_que_p2d.cpp index fb4660e0e..91fd0cfee 100644 --- a/index/test/rtree/generated/rtree_qua_que_p2d.cpp +++ b/index/test/rtree/generated/rtree_qua_que_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_qua_que_p3d.cpp b/index/test/rtree/generated/rtree_qua_que_p3d.cpp index f5806c7f4..15646b04d 100644 --- a/index/test/rtree/generated/rtree_qua_que_p3d.cpp +++ b/index/test/rtree/generated/rtree_qua_que_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_qua_que_s2d.cpp b/index/test/rtree/generated/rtree_qua_que_s2d.cpp new file mode 100644 index 000000000..84ba5c6b9 --- /dev/null +++ b/index/test/rtree/generated/rtree_qua_que_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::queries(bgi::quadratic<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_rst_add_b2d.cpp b/index/test/rtree/generated/rtree_rst_add_b2d.cpp index 97fb92f47..cdce85839 100644 --- a/index/test/rtree/generated/rtree_rst_add_b2d.cpp +++ b/index/test/rtree/generated/rtree_rst_add_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_rst_add_b3d.cpp b/index/test/rtree/generated/rtree_rst_add_b3d.cpp index 7e0171b59..b8d85a034 100644 --- a/index/test/rtree/generated/rtree_rst_add_b3d.cpp +++ b/index/test/rtree/generated/rtree_rst_add_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_rst_add_p2d.cpp b/index/test/rtree/generated/rtree_rst_add_p2d.cpp index 6fb31af48..154c5ecd7 100644 --- a/index/test/rtree/generated/rtree_rst_add_p2d.cpp +++ b/index/test/rtree/generated/rtree_rst_add_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_rst_add_p3d.cpp b/index/test/rtree/generated/rtree_rst_add_p3d.cpp index b02e09fbc..f072f354d 100644 --- a/index/test/rtree/generated/rtree_rst_add_p3d.cpp +++ b/index/test/rtree/generated/rtree_rst_add_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_rst_add_s2d.cpp b/index/test/rtree/generated/rtree_rst_add_s2d.cpp new file mode 100644 index 000000000..ec2df11ca --- /dev/null +++ b/index/test/rtree/generated/rtree_rst_add_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::additional(bgi::rstar<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_rst_mod_b2d.cpp b/index/test/rtree/generated/rtree_rst_mod_b2d.cpp index 3315296e8..5d0760d36 100644 --- a/index/test/rtree/generated/rtree_rst_mod_b2d.cpp +++ b/index/test/rtree/generated/rtree_rst_mod_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_rst_mod_b3d.cpp b/index/test/rtree/generated/rtree_rst_mod_b3d.cpp index 96884543d..8ed1ca8c0 100644 --- a/index/test/rtree/generated/rtree_rst_mod_b3d.cpp +++ b/index/test/rtree/generated/rtree_rst_mod_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_rst_mod_p2d.cpp b/index/test/rtree/generated/rtree_rst_mod_p2d.cpp index c0cab5ea4..7040f93f9 100644 --- a/index/test/rtree/generated/rtree_rst_mod_p2d.cpp +++ b/index/test/rtree/generated/rtree_rst_mod_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_rst_mod_p3d.cpp b/index/test/rtree/generated/rtree_rst_mod_p3d.cpp index 5ad0fdd79..95014311d 100644 --- a/index/test/rtree/generated/rtree_rst_mod_p3d.cpp +++ b/index/test/rtree/generated/rtree_rst_mod_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_rst_mod_s2d.cpp b/index/test/rtree/generated/rtree_rst_mod_s2d.cpp new file mode 100644 index 000000000..10daa8662 --- /dev/null +++ b/index/test/rtree/generated/rtree_rst_mod_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::modifiers(bgi::rstar<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/generated/rtree_rst_que_b2d.cpp b/index/test/rtree/generated/rtree_rst_que_b2d.cpp index 2f16ef275..b7d694b08 100644 --- a/index/test/rtree/generated/rtree_rst_que_b2d.cpp +++ b/index/test/rtree/generated/rtree_rst_que_b2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_rst_que_b3d.cpp b/index/test/rtree/generated/rtree_rst_que_b3d.cpp index 1943ccc16..75f89886f 100644 --- a/index/test/rtree/generated/rtree_rst_que_b3d.cpp +++ b/index/test/rtree/generated/rtree_rst_que_b3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::box< bg::model::point > Indexable; diff --git a/index/test/rtree/generated/rtree_rst_que_p2d.cpp b/index/test/rtree/generated/rtree_rst_que_p2d.cpp index 492a20832..9345409ba 100644 --- a/index/test/rtree/generated/rtree_rst_que_p2d.cpp +++ b/index/test/rtree/generated/rtree_rst_que_p2d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_rst_que_p3d.cpp b/index/test/rtree/generated/rtree_rst_que_p3d.cpp index 5f152ecc3..51a3f4494 100644 --- a/index/test/rtree/generated/rtree_rst_que_p3d.cpp +++ b/index/test/rtree/generated/rtree_rst_que_p3d.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -9,9 +9,6 @@ #include -#include -#include - int test_main(int, char* []) { typedef bg::model::point Indexable; diff --git a/index/test/rtree/generated/rtree_rst_que_s2d.cpp b/index/test/rtree/generated/rtree_rst_que_s2d.cpp new file mode 100644 index 000000000..33fb4f52f --- /dev/null +++ b/index/test/rtree/generated/rtree_rst_que_s2d.cpp @@ -0,0 +1,17 @@ +// Boost.Geometry Index +// Unit Test + +// Copyright (c) 2011-2014 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) + +#include + +int test_main(int, char* []) +{ + typedef bg::model::segment< bg::model::point > Indexable; + testset::queries(bgi::rstar<5, 2>(), std::allocator()); + return 0; +} diff --git a/index/test/rtree/rtree_test_generator.cpp b/index/test/rtree/rtree_test_generator.cpp index 4d44fd22e..e1d76ee2f 100644 --- a/index/test/rtree/rtree_test_generator.cpp +++ b/index/test/rtree/rtree_test_generator.cpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Rtree tests generator -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -11,6 +11,7 @@ #include #include #include +#include #include int main() @@ -37,6 +38,7 @@ int main() std::vector indexables; indexables.push_back("p"); indexables.push_back("b"); + indexables.push_back("s"); typedef std::pair TS; std::vector testsets; @@ -52,6 +54,12 @@ int main() { BOOST_FOREACH(std::string const& d, dimensions) { + // If the I is Segment, generate only for 2d + if ( i == "s" && d != "2" ) + { + continue; + } + BOOST_FOREACH(CT const& c, coordinate_types) { std::string filename = std::string() + @@ -63,7 +71,7 @@ int main() "// Boost.Geometry Index\n" << "// Unit Test\n" << "\n" << - "// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.\n" << + "// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.\n" << "\n" << "// Use, modification and distribution is subject to the Boost Software License,\n" << "// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at\n" << @@ -72,14 +80,18 @@ int main() f << "#include \n" << - "\n" << - "#include \n" << - "#include \n" << "\n"; + std::string indexable_type; std::string point_type = std::string("bg::model::point<") + boost::get<0>(c) + ", " + d + ", bg::cs::cartesian>"; - std::string box_type = std::string("bg::model::box< ") + point_type + " >"; - std::string indexable_type = (i == "p" ? point_type : box_type); + if ( i == "p" ) + indexable_type = point_type; + else if ( i == "b" ) + indexable_type = std::string("bg::model::box< ") + point_type + " >"; + else if ( i == "s" ) + indexable_type = std::string("bg::model::segment< ") + point_type + " >"; + else + BOOST_ASSERT(false); f << "int test_main(int, char* [])\n" << diff --git a/index/test/rtree/test_rtree.hpp b/index/test/rtree/test_rtree.hpp index a7ce11c6a..554c68b34 100644 --- a/index/test/rtree/test_rtree.hpp +++ b/index/test/rtree/test_rtree.hpp @@ -1,7 +1,7 @@ // Boost.Geometry Index // Unit Test -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -18,6 +18,10 @@ #include +#include +#include +#include + #include #include @@ -87,6 +91,17 @@ struct value< bg::model::box< bg::model::point > > } }; +template +struct value< bg::model::segment< bg::model::point > > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + static S apply(int x, int y) + { + return S(P(x, y), P(x + 2, y + 3)); + } +}; + template struct value< std::pair, int> > { @@ -110,6 +125,18 @@ struct value< std::pair >, int> > } }; +template +struct value< std::pair >, int> > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + typedef std::pair R; + static R apply(int x, int y) + { + return std::make_pair(S(P(x, y), P(x + 2, y + 3)), x + y * 100); + } +}; + template struct value< boost::tuple, int, int> > { @@ -133,6 +160,18 @@ struct value< boost::tuple >, int, int } }; +template +struct value< boost::tuple >, int, int> > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + typedef boost::tuple R; + static R apply(int x, int y) + { + return boost::make_tuple(S(P(x, y), P(x + 2, y + 3)), x + y * 100, 0); + } +}; + template struct value< bg::model::point > { @@ -225,6 +264,18 @@ struct value< std::tuple >, int, int> } }; +template +struct value< std::tuple >, int, int> > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + typedef std::tuple R; + static R apply(int x, int y) + { + return std::make_tuple(S(P(x, y), P(x + 2, y + 3)), x + y * 100, 0); + } +}; + template struct value< std::tuple, int, int> > { @@ -333,6 +384,20 @@ struct value< boost::shared_ptr +struct value< boost::shared_ptr > > > > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + typedef test_object O; + typedef boost::shared_ptr R; + + static R apply(int x, int y) + { + return R(new O(S(P(x, y), P(x + 2, y + 3)))); + } +}; + } //namespace generate // counting value @@ -411,6 +476,15 @@ struct value< counting_value > > > static R apply(int x, int y, int z) { return R(B(P(x, y, z), P(x+2, y+3, z+4))); } }; +template +struct value< counting_value > > > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + typedef counting_value R; + static R apply(int x, int y) { return R(S(P(x, y), P(x+2, y+3))); } +}; + } // namespace generate // value without default constructor @@ -490,6 +564,15 @@ struct value< value_no_dctor > > > static R apply(int x, int y, int z) { return R(B(P(x, y, z), P(x+2, y+3, z+4))); } }; +template +struct value< value_no_dctor > > > +{ + typedef bg::model::point P; + typedef bg::model::segment

S; + typedef value_no_dctor R; + static R apply(int x, int y) { return R(S(P(x, y), P(x+2, y+3))); } +}; + // generate input template @@ -774,6 +857,14 @@ struct contains_impl {} }; +template <> +struct contains_impl +{ + template + static void apply(Rtree const& /*tree*/, std::vector const& /*input*/, Box const& /*qbox*/) + {} +}; + template void contains(Rtree const& tree, std::vector const& input, Box const& qbox) { @@ -784,24 +875,53 @@ void contains(Rtree const& tree, std::vector const& input, Box const& qbo >::apply(tree, input, qbox); } +template +struct covered_by_impl +{ + template + static void apply(Rtree const& tree, std::vector const& input, Box const& qbox) + { + std::vector expected_output; + + BOOST_FOREACH(Value const& v, input) + { + if ( bg::covered_by( + bgi::detail::return_ref_or_bounds( + tree.indexable_get()(v)), + qbox) ) + { + expected_output.push_back(v); + } + } + + spatial_query(tree, bgi::covered_by(qbox), expected_output); + + /*typedef bg::traits::point_type::type P; + bg::model::ring

qring; + bg::convert(qbox, qring); + spatial_query(tree, bgi::covered_by(qring), expected_output); + bg::model::polygon

qpoly; + bg::convert(qbox, qpoly); + spatial_query(tree, bgi::covered_by(qpoly), expected_output);*/ + } +}; + +template <> +struct covered_by_impl +{ + template + static void apply(Rtree const& /*tree*/, std::vector const& /*input*/, Box const& /*qbox*/) + {} +}; + template void covered_by(Rtree const& tree, std::vector const& input, Box const& qbox) { - std::vector expected_output; - - BOOST_FOREACH(Value const& v, input) - if ( bg::covered_by(tree.indexable_get()(v), qbox) ) - expected_output.push_back(v); - - spatial_query(tree, bgi::covered_by(qbox), expected_output); - - /*typedef bg::traits::point_type::type P; - bg::model::ring

qring; - bg::convert(qbox, qring); - spatial_query(tree, bgi::covered_by(qring), expected_output); - bg::model::polygon

qpoly; - bg::convert(qbox, qpoly); - spatial_query(tree, bgi::covered_by(qpoly), expected_output);*/ + covered_by_impl< + typename bg::tag< + typename Rtree::indexable_type + >::type + >::apply(tree, input, qbox); } template @@ -836,6 +956,14 @@ struct covers_impl {} }; +template <> +struct covers_impl +{ + template + static void apply(Rtree const& /*tree*/, std::vector const& /*input*/, Box const& /*qbox*/) + {} +}; + template void covers(Rtree const& tree, std::vector const& input, Box const& qbox) { @@ -878,6 +1006,14 @@ struct overlaps_impl {} }; +template <> +struct overlaps_impl +{ + template + static void apply(Rtree const& /*tree*/, std::vector const& /*input*/, Box const& /*qbox*/) + {} +}; + template void overlaps(Rtree const& tree, std::vector const& input, Box const& qbox) { @@ -921,24 +1057,46 @@ void overlaps(Rtree const& tree, std::vector const& input, Box const& qbo // >::apply(tree, input, qbox); //} +template +struct within_impl +{ + template + static void apply(Rtree const& tree, std::vector const& input, Box const& qbox) + { + std::vector expected_output; + + BOOST_FOREACH(Value const& v, input) + if ( bg::within(tree.indexable_get()(v), qbox) ) + expected_output.push_back(v); + + spatial_query(tree, bgi::within(qbox), expected_output); + + /*typedef bg::traits::point_type::type P; + bg::model::ring

qring; + bg::convert(qbox, qring); + spatial_query(tree, bgi::within(qring), expected_output); + bg::model::polygon

qpoly; + bg::convert(qbox, qpoly); + spatial_query(tree, bgi::within(qpoly), expected_output);*/ + } +}; + +template <> +struct within_impl +{ + template + static void apply(Rtree const& /*tree*/, std::vector const& /*input*/, Box const& /*qbox*/) + {} +}; + template void within(Rtree const& tree, std::vector const& input, Box const& qbox) { - std::vector expected_output; - - BOOST_FOREACH(Value const& v, input) - if ( bg::within(tree.indexable_get()(v), qbox) ) - expected_output.push_back(v); - - spatial_query(tree, bgi::within(qbox), expected_output); - - /*typedef bg::traits::point_type::type P; - bg::model::ring

qring; - bg::convert(qbox, qring); - spatial_query(tree, bgi::within(qring), expected_output); - bg::model::polygon

qpoly; - bg::convert(qbox, qpoly); - spatial_query(tree, bgi::within(qpoly), expected_output);*/ + within_impl< + typename bg::tag< + typename Rtree::indexable_type + >::type + >::apply(tree, input, qbox); } // rtree nearest queries @@ -982,7 +1140,7 @@ inline void compare_nearest_outputs(Rtree const& rtree, std::vector const if ( find(rtree, expected_output.begin(), expected_output.end(), v) == expected_output.end() ) { - Distance d = bgi::detail::comparable_distance_near(pt, rtree.indexable_get()(v)); + Distance d = bg::comparable_distance(pt, rtree.indexable_get()(v)); BOOST_CHECK(d == greatest_distance); } } @@ -997,7 +1155,7 @@ inline void check_sorted_by_distance(Rtree const& rtree, std::vector cons D prev_dist = 0; BOOST_FOREACH(Value const& v, output) { - D d = bgi::detail::comparable_distance_near(pt, rtree.indexable_get()(v)); + D d = bg::comparable_distance(pt, rtree.indexable_get()(v)); BOOST_CHECK(prev_dist <= d); prev_dist = d; } @@ -1016,7 +1174,7 @@ inline void nearest_query_k(Rtree const& rtree, std::vector const& input, // calculate test output - k closest values pairs BOOST_FOREACH(Value const& v, input) { - D d = bgi::detail::comparable_distance_near(pt, rtree.indexable_get()(v)); + D d = bg::comparable_distance(pt, rtree.indexable_get()(v)); if ( test_output.size() < k ) test_output.push_back(std::make_pair(d, v)); From 46763d34ca51d284421a11f1882a070c1f901ea7 Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Thu, 15 May 2014 02:24:42 +0300 Subject: [PATCH 2/9] [strategies] fix conversion issue in projected_point strategy: Problem: when p1 (2nd argument of apply) has float as coordinate type, then the result of the differences u-p1 and w-p1 is a double (because the calculation type is double), which then is implicitly converted to float (because the result of the difference is implicitly converted to the type of the second operand), which means that we may loose precision. Solution: convert p1 to the correct point type (fp_point_type), and then perform the subtractions (p1 is anyways converted later on, so just do then conversion a bit earlier). Note: This problem was generated as a warning on VS2010, and also appears as a warning in clang++ and g++ if the -Wconversion option is used. --- .../cartesian/distance_projected_point.hpp | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp b/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp index cd86b523f..329b7d4e4 100644 --- a/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp +++ b/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp @@ -1,8 +1,13 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2008-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -124,12 +129,13 @@ public : // v is multiplied below with a (possibly) FP-value, so should be in FP // For consistency we define w also in FP - fp_vector_type v, w; + fp_vector_type v, w, projected; geometry::convert(p2, v); geometry::convert(p, w); - subtract_point(v, p1); - subtract_point(w, p1); + geometry::convert(p1, projected); + subtract_point(v, projected); + subtract_point(w, projected); Strategy strategy; boost::ignore_unused_variable_warning(strategy); @@ -149,8 +155,6 @@ public : // See above, c1 > 0 AND c2 > c1 so: c2 != 0 calculation_type const b = c1 / c2; - fp_point_type projected; - geometry::convert(p1, projected); multiply_value(v, b); add_point(projected, v); From 8aa3ef425e4d6ad4834cdf4a3b9f4b45d909ac84 Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Thu, 15 May 2014 02:56:15 +0200 Subject: [PATCH 3/9] [equals][index/examples] Optimize equals(Seg,Seg) and fix index/examples Use less comparisions in equals(Seg,Seg) - suggested by Menelaos Karavelas Add missing include to examples - caused by the recent change of the distance/rtree --- include/boost/geometry/algorithms/equals.hpp | 18 +++++++++--------- index/example/benchmark.cpp | 1 + index/example/benchmark2.cpp | 1 + index/example/benchmark3.cpp | 1 + index/example/benchmark_experimental.cpp | 15 ++++++++++++++- index/example/glut_vis.cpp | 1 + index/example/random_test.cpp | 2 ++ index/example/serialize.cpp | 2 ++ test/algorithms/equals.cpp | 16 ++++++++++++++++ 9 files changed, 47 insertions(+), 10 deletions(-) diff --git a/include/boost/geometry/algorithms/equals.hpp b/include/boost/geometry/algorithms/equals.hpp index c0c171292..4cd577d69 100644 --- a/include/boost/geometry/algorithms/equals.hpp +++ b/include/boost/geometry/algorithms/equals.hpp @@ -94,19 +94,19 @@ struct segment_segment template static inline bool apply(Segment1 const& segment1, Segment2 const& segment2) { - return ( equals::equals_point_point( + return equals::equals_point_point( indexed_point_view(segment1), indexed_point_view(segment2) ) - && equals::equals_point_point( + ? equals::equals_point_point( indexed_point_view(segment1), indexed_point_view(segment2) ) - ) || ( equals::equals_point_point( - indexed_point_view(segment1), - indexed_point_view(segment2) ) - && equals::equals_point_point( - indexed_point_view(segment1), - indexed_point_view(segment2) ) - ); + : ( equals::equals_point_point( + indexed_point_view(segment1), + indexed_point_view(segment2) ) + && equals::equals_point_point( + indexed_point_view(segment1), + indexed_point_view(segment2) ) + ); } }; diff --git a/index/example/benchmark.cpp b/index/example/benchmark.cpp index 269ea4533..ba2a1dec9 100644 --- a/index/example/benchmark.cpp +++ b/index/example/benchmark.cpp @@ -9,6 +9,7 @@ #include +#include #include #include diff --git a/index/example/benchmark2.cpp b/index/example/benchmark2.cpp index eedeac1b8..48194cbd8 100644 --- a/index/example/benchmark2.cpp +++ b/index/example/benchmark2.cpp @@ -10,6 +10,7 @@ #include +#include #include #include diff --git a/index/example/benchmark3.cpp b/index/example/benchmark3.cpp index 6898e4eb8..ad1910e45 100644 --- a/index/example/benchmark3.cpp +++ b/index/example/benchmark3.cpp @@ -9,6 +9,7 @@ #include +#include #include #include diff --git a/index/example/benchmark_experimental.cpp b/index/example/benchmark_experimental.cpp index 34b08744f..45248008d 100644 --- a/index/example/benchmark_experimental.cpp +++ b/index/example/benchmark_experimental.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -26,8 +27,10 @@ typedef bg::model::point P; typedef bg::model::box

B; typedef bg::model::linestring

LS; typedef bg::model::segment

S; -typedef B V; //typedef P V; +typedef B V; +//typedef S V; +//#define SEGMENT_INDEXABLE template struct generate_value {}; @@ -38,6 +41,12 @@ struct generate_value static inline B apply(float x, float y) { return B(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f)); } }; +template <> +struct generate_value +{ + static inline S apply(float x, float y) { return S(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f)); } +}; + template <> struct generate_value

{ @@ -278,6 +287,7 @@ int main() std::cout << time << " - range type-erased qbegin(B) qend() " << queries_count << " found " << temp << '\n'; } +#ifndef SEGMENT_INDEXABLE { clock_t::time_point start = clock_t::now(); size_t temp = 0; @@ -304,6 +314,7 @@ int main() dur_t time = clock_t::now() - start; std::cout << time << " - query(i && !w && !c) " << queries_count << " found " << temp << '\n'; } +#endif result.clear(); @@ -376,6 +387,7 @@ int main() } #ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL +#ifndef SEGMENT_INDEXABLE { LS ls; @@ -436,6 +448,7 @@ int main() dur_t time = clock_t::now() - start; std::cout << time << " - query(path(S, " << path_values_count << ")) " << path_queries_count2 << " found " << temp << '\n'; } +#endif #endif { clock_t::time_point start = clock_t::now(); diff --git a/index/example/glut_vis.cpp b/index/example/glut_vis.cpp index e0e6a00c0..ee74a69fa 100644 --- a/index/example/glut_vis.cpp +++ b/index/example/glut_vis.cpp @@ -11,6 +11,7 @@ #include +#include #include #include diff --git a/index/example/random_test.cpp b/index/example/random_test.cpp index 48a45191c..1c40d1553 100644 --- a/index/example/random_test.cpp +++ b/index/example/random_test.cpp @@ -10,6 +10,8 @@ #include #define BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL + +#include #include #include diff --git a/index/example/serialize.cpp b/index/example/serialize.cpp index 1ce9437b9..11ce08bc0 100644 --- a/index/example/serialize.cpp +++ b/index/example/serialize.cpp @@ -11,6 +11,8 @@ #include #define BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL + +#include #include #include diff --git a/test/algorithms/equals.cpp b/test/algorithms/equals.cpp index da31191fe..4c972752d 100644 --- a/test/algorithms/equals.cpp +++ b/test/algorithms/equals.cpp @@ -28,6 +28,21 @@ namespace bgm = bg::model; +template +void test_segment_segment() +{ + typedef bgm::segment

seg; + + test_geometry("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(0 0, 3 3)", true); + test_geometry("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(3 3, 0 0)", true); + + test_geometry("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(0 0, 1 1)", false); + test_geometry("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(3 3, 2 2)", false); + + test_geometry("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(1 1, 4 4)", false); + test_geometry("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(1 0, 2 0)", false); +} + template void test_linestring_linestring() { @@ -168,6 +183,7 @@ void test_all() "POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 1,2 2,1 2,1 1))", "POLYGON((0 0,0 3,3 3,3 0,0 0),(2 2,1 2,1 1,2 1,2 2))", true); + test_segment_segment

(); test_linestring_linestring

(); test_linestring_multilinestring

(); test_multilinestring_multilinestring

(); From f41ef36258efc1c29f0f2ec2dd5bde12626d56b3 Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Thu, 15 May 2014 03:21:38 +0200 Subject: [PATCH 4/9] [index] Update description and parameters names of nearest() predicate --- include/boost/geometry/index/predicates.hpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/include/boost/geometry/index/predicates.hpp b/include/boost/geometry/index/predicates.hpp index e03c9ce5a..10033abff 100644 --- a/include/boost/geometry/index/predicates.hpp +++ b/include/boost/geometry/index/predicates.hpp @@ -2,7 +2,7 @@ // // Spatial query predicates // -// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2011-2014 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 @@ -269,13 +269,15 @@ satisfies(UnaryPredicate const& pred) \brief Generate nearest() predicate. When nearest predicate is passed to the query, k-nearest neighbour search will be performed. -\c nearest() predicate takes a \c Point from which distance to \c Values is calculated -and the maximum number of \c Values that should be returned. +\c nearest() predicate takes a \c Geometry from which distances to \c Values are calculated +and the maximum number of \c Values that should be returned. Internally +boost::geometry::comparable_distance() is used to perform the calculation. \par Example \verbatim bgi::query(spatial_index, bgi::nearest(pt, 5), std::back_inserter(result)); bgi::query(spatial_index, bgi::nearest(pt, 5) && bgi::intersects(box), std::back_inserter(result)); +bgi::query(spatial_index, bgi::nearest(box, 5), std::back_inserter(result)); \endverbatim \warning @@ -283,14 +285,14 @@ Only one \c nearest() predicate may be used in a query. \ingroup predicates -\param point The point from which distance is calculated. +\param geometry The geometry from which distance is calculated. \param k The maximum number of values to return. */ -template inline -detail::nearest -nearest(Point const& point, unsigned k) +template inline +detail::nearest +nearest(Geometry const& geometry, unsigned k) { - return detail::nearest(point, k); + return detail::nearest(geometry, k); } #ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL From 672384be0062a81d45a6437ece72fbbff6c5556e Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Thu, 15 May 2014 17:18:24 +0200 Subject: [PATCH 5/9] [index] Remove unneeded #includes from the rtree.hpp --- include/boost/geometry/index/rtree.hpp | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/include/boost/geometry/index/rtree.hpp b/include/boost/geometry/index/rtree.hpp index 3c588bc79..e4f913ab8 100644 --- a/include/boost/geometry/index/rtree.hpp +++ b/include/boost/geometry/index/rtree.hpp @@ -32,30 +32,6 @@ #include #include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -//#include -//#include -//#include -//#include -//#include - #include #include // END From fe8027d303c66363b2c5eda7956ed4223cdc164e Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Thu, 15 May 2014 18:38:45 +0300 Subject: [PATCH 6/9] [test] add missing include (#include ) --- test/string_from_type.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/string_from_type.hpp b/test/string_from_type.hpp index b564c2359..178ff2ea0 100644 --- a/test/string_from_type.hpp +++ b/test/string_from_type.hpp @@ -14,6 +14,7 @@ #ifndef GEOMETRY_TEST_STRING_FROM_TYPE_HPP #define GEOMETRY_TEST_STRING_FROM_TYPE_HPP +#include #if defined(HAVE_TTMATH) # include From cbbb51f18da0f58a8f918948dabf26e502919692 Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Thu, 15 May 2014 19:13:04 +0300 Subject: [PATCH 7/9] [test] add missing include in test/string_from_type.hpp (#include ) --- test/string_from_type.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/string_from_type.hpp b/test/string_from_type.hpp index b564c2359..178ff2ea0 100644 --- a/test/string_from_type.hpp +++ b/test/string_from_type.hpp @@ -14,6 +14,7 @@ #ifndef GEOMETRY_TEST_STRING_FROM_TYPE_HPP #define GEOMETRY_TEST_STRING_FROM_TYPE_HPP +#include #if defined(HAVE_TTMATH) # include From 96a2f382a2549a3ff52d5f9918c8ee2b6bd36400 Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Fri, 16 May 2014 13:58:43 +0300 Subject: [PATCH 8/9] [distance] implement the new file/directory structure fully: move the free function and reverse dispatch in algorithms/distance/interface.hpp move the details of the implementation in algorithms/distance/implementation.hpp keep only these two headers in algorithms/distance.hpp --- .../detail/distance/implementation.hpp | 38 ++++ .../algorithms/detail/distance/interface.hpp | 183 ++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 include/boost/geometry/algorithms/detail/distance/implementation.hpp create mode 100644 include/boost/geometry/algorithms/detail/distance/interface.hpp diff --git a/include/boost/geometry/algorithms/detail/distance/implementation.hpp b/include/boost/geometry/algorithms/detail/distance/implementation.hpp new file mode 100644 index 000000000..45f40bbb3 --- /dev/null +++ b/include/boost/geometry/algorithms/detail/distance/implementation.hpp @@ -0,0 +1,38 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// 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_ALGORITHMS_DETAIL_DISTANCE_IMPLEMENTATION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_IMPLEMENTATION_HPP + +// the implementation details +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_IMPLEMENTATION_HPP diff --git a/include/boost/geometry/algorithms/detail/distance/interface.hpp b/include/boost/geometry/algorithms/detail/distance/interface.hpp new file mode 100644 index 000000000..6b7b68fcb --- /dev/null +++ b/include/boost/geometry/algorithms/detail/distance/interface.hpp @@ -0,0 +1,183 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// 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_ALGORITHMS_DETAIL_DISTANCE_INTERFACE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_INTERFACE_HPP + +#include + +#include +#include + +#include +#include + +#include + +#include +#include + +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// If reversal is needed, perform it +template +< + typename Geometry1, typename Geometry2, typename Strategy, + typename Tag1, typename Tag2, typename StrategyTag +> +struct distance +< + Geometry1, Geometry2, Strategy, + Tag1, Tag2, StrategyTag, + true +> + : distance +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply( + Geometry1 const& g1, + Geometry2 const& g2, + Strategy const& strategy) + { + return distance + < + Geometry2, Geometry1, Strategy, + Tag2, Tag1, StrategyTag, + false + >::apply(g2, g1, strategy); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + +/*! +\brief \brief_calc2{distance} \brief_strategy +\ingroup distance +\details +\details \details_calc{area}. \brief_strategy. \details_strategy_reasons + +\tparam Geometry1 \tparam_geometry +\tparam Geometry2 \tparam_geometry +\tparam Strategy \tparam_strategy{Distance} +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\param strategy \param_strategy{distance} +\return \return_calc{distance} +\note The strategy can be a point-point strategy. In case of distance point-line/point-polygon + it may also be a point-segment strategy. + +\qbk{distinguish,with strategy} + +\qbk{ +[heading Available Strategies] +\* [link geometry.reference.strategies.strategy_distance_pythagoras Pythagoras (cartesian)] +\* [link geometry.reference.strategies.strategy_distance_haversine Haversine (spherical)] +\* [link geometry.reference.strategies.strategy_distance_cross_track Cross track (spherical\, point-to-segment)] +\* [link geometry.reference.strategies.strategy_distance_projected_point Projected point (cartesian\, point-to-segment)] +\* more (currently extensions): Vincenty\, Andoyer (geographic) +} + */ + +/* +Note, in case of a Compilation Error: +if you get: + - "Failed to specialize function template ..." + - "error: no matching function for call to ..." +for distance, it is probably so that there is no specialization +for return_type<...> for your strategy. +*/ +template +inline typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type +distance(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) +{ + concept::check(); + concept::check(); + + detail::throw_on_empty_input(geometry1); + detail::throw_on_empty_input(geometry2); + + return dispatch::distance + < + Geometry1, + Geometry2, + Strategy + >::apply(geometry1, geometry2, strategy); +} + + +/*! +\brief \brief_calc2{distance} +\ingroup distance +\details The default strategy is used, corresponding to the coordinate system of the geometries +\tparam Geometry1 \tparam_geometry +\tparam Geometry2 \tparam_geometry +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\return \return_calc{distance} + +\qbk{[include reference/algorithms/distance.qbk]} + */ +template +inline typename default_distance_result::type distance( + Geometry1 const& geometry1, Geometry2 const& geometry2) +{ + concept::check(); + concept::check(); + + typedef typename detail::distance::default_strategy + < + Geometry1, Geometry2 + >::type default_strategy_type; + + return distance(geometry1, geometry2, default_strategy_type()); +} + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_INTERFACE_HPP From 3fbfd2474d9cabcd0ee5568b1ae07199124a5a82 Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Fri, 16 May 2014 14:14:26 +0300 Subject: [PATCH 9/9] [distance] implement the new file/directory structure fully: move the free function and reverse dispatch in algorithms/distance/interface.hpp move the details of the implementation in algorithms/distance/implementation.hpp keep only these two headers in algorithms/distance.hpp --- .../boost/geometry/algorithms/distance.hpp | 186 +----------------- 1 file changed, 2 insertions(+), 184 deletions(-) diff --git a/include/boost/geometry/algorithms/distance.hpp b/include/boost/geometry/algorithms/distance.hpp index 36ff3a695..dcfe597cd 100644 --- a/include/boost/geometry/algorithms/distance.hpp +++ b/include/boost/geometry/algorithms/distance.hpp @@ -20,189 +20,7 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DISTANCE_HPP #define BOOST_GEOMETRY_ALGORITHMS_DISTANCE_HPP -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include - - -namespace boost { namespace geometry -{ - - -#ifndef DOXYGEN_NO_DISPATCH -namespace dispatch -{ - - -// If reversal is needed, perform it -template -< - typename Geometry1, typename Geometry2, typename Strategy, - typename Tag1, typename Tag2, typename StrategyTag -> -struct distance -< - Geometry1, Geometry2, Strategy, - Tag1, Tag2, StrategyTag, - true -> - : distance -{ - typedef typename strategy::distance::services::return_type - < - Strategy, - typename point_type::type, - typename point_type::type - >::type return_type; - - static inline return_type apply( - Geometry1 const& g1, - Geometry2 const& g2, - Strategy const& strategy) - { - return distance - < - Geometry2, Geometry1, Strategy, - Tag2, Tag1, StrategyTag, - false - >::apply(g2, g1, strategy); - } -}; - - -} // namespace dispatch -#endif // DOXYGEN_NO_DISPATCH - -/*! -\brief \brief_calc2{distance} \brief_strategy -\ingroup distance -\details -\details \details_calc{area}. \brief_strategy. \details_strategy_reasons - -\tparam Geometry1 \tparam_geometry -\tparam Geometry2 \tparam_geometry -\tparam Strategy \tparam_strategy{Distance} -\param geometry1 \param_geometry -\param geometry2 \param_geometry -\param strategy \param_strategy{distance} -\return \return_calc{distance} -\note The strategy can be a point-point strategy. In case of distance point-line/point-polygon - it may also be a point-segment strategy. - -\qbk{distinguish,with strategy} - -\qbk{ -[heading Available Strategies] -\* [link geometry.reference.strategies.strategy_distance_pythagoras Pythagoras (cartesian)] -\* [link geometry.reference.strategies.strategy_distance_haversine Haversine (spherical)] -\* [link geometry.reference.strategies.strategy_distance_cross_track Cross track (spherical\, point-to-segment)] -\* [link geometry.reference.strategies.strategy_distance_projected_point Projected point (cartesian\, point-to-segment)] -\* more (currently extensions): Vincenty\, Andoyer (geographic) -} - */ - -/* -Note, in case of a Compilation Error: -if you get: - - "Failed to specialize function template ..." - - "error: no matching function for call to ..." -for distance, it is probably so that there is no specialization -for return_type<...> for your strategy. -*/ -template -inline typename strategy::distance::services::return_type - < - Strategy, - typename point_type::type, - typename point_type::type - >::type -distance(Geometry1 const& geometry1, - Geometry2 const& geometry2, - Strategy const& strategy) -{ - concept::check(); - concept::check(); - - detail::throw_on_empty_input(geometry1); - detail::throw_on_empty_input(geometry2); - - return dispatch::distance - < - Geometry1, - Geometry2, - Strategy - >::apply(geometry1, geometry2, strategy); -} - - -/*! -\brief \brief_calc2{distance} -\ingroup distance -\details The default strategy is used, corresponding to the coordinate system of the geometries -\tparam Geometry1 \tparam_geometry -\tparam Geometry2 \tparam_geometry -\param geometry1 \param_geometry -\param geometry2 \param_geometry -\return \return_calc{distance} - -\qbk{[include reference/algorithms/distance.qbk]} - */ -template -inline typename default_distance_result::type distance( - Geometry1 const& geometry1, Geometry2 const& geometry2) -{ - concept::check(); - concept::check(); - - typedef typename detail::distance::default_strategy - < - Geometry1, Geometry2 - >::type default_strategy_type; - - return distance(geometry1, geometry2, default_strategy_type()); -} - -}} // namespace boost::geometry - - -// the implementation details -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include +#include +#include #endif // BOOST_GEOMETRY_ALGORITHMS_DISTANCE_HPP