index.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Boost.Geometry
  2. // Copyright (c) 2019, Oracle and/or its affiliates.
  3. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
  4. // Licensed under the Boost Software License version 1.0.
  5. // http://www.boost.org/users/license.html
  6. #include "common.hpp"
  7. // These includes are required for the following code to compile.
  8. // This is probably wrong.
  9. #include <boost/geometry/algorithms/covered_by.hpp>
  10. #include <boost/geometry/algorithms/disjoint.hpp>
  11. #include <boost/geometry/algorithms/equals.hpp>
  12. #include <boost/geometry/algorithms/intersects.hpp>
  13. #include <boost/geometry/index/rtree.hpp>
  14. #include <vector>
  15. namespace bgi = boost::geometry::index;
  16. template
  17. <
  18. typename VG, typename QG,
  19. typename VTag = typename bg::tag<VG>::type,
  20. typename QTag = typename bg::tag<QG>::type
  21. >
  22. struct call_query
  23. {
  24. template <typename Rtree, typename Res>
  25. static inline void apply(Rtree const& , Res const& )
  26. {}
  27. };
  28. template <typename VG, typename QG>
  29. struct call_query<VG, QG, bg::box_tag, bg::point_tag>
  30. {
  31. template <typename Rtree>
  32. static inline void apply(Rtree const& rtree, QG const& qg)
  33. {
  34. std::vector<VG> res;
  35. rtree.query(bgi::intersects(qg), std::back_inserter(res));
  36. }
  37. };
  38. template <typename G, typename P>
  39. inline void rtree_test(G const& g, P const& p)
  40. {
  41. {
  42. bgi::rtree<G, P> rtree;
  43. }
  44. std::vector<G> de2(100, g);
  45. bgi::rtree<G, P> rtree(de2, p);
  46. rtree.insert(g);
  47. rtree.remove(g);
  48. rtree.count(g);
  49. call_query<G, geom::point>::apply(rtree, geom::point(0, 0));
  50. }
  51. int test_main(int, char*[])
  52. {
  53. geom g;
  54. rtree_test(g.pt, bgi::parameters<bgi::linear<4>, bg::strategy::index::cartesian<> >());
  55. rtree_test(g.pt, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::cartesian<> >());
  56. rtree_test(g.pt, bgi::parameters<bgi::rstar<4>, bg::strategy::index::cartesian<> >());
  57. rtree_test(g.b, bgi::parameters<bgi::linear<4>, bg::strategy::index::cartesian<> >());
  58. rtree_test(g.b, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::cartesian<> >());
  59. rtree_test(g.b, bgi::parameters<bgi::rstar<4>, bg::strategy::index::cartesian<> >());
  60. rtree_test(g.s, bgi::parameters<bgi::linear<4>, bg::strategy::index::cartesian<> >());
  61. rtree_test(g.s, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::cartesian<> >());
  62. rtree_test(g.s, bgi::parameters<bgi::rstar<4>, bg::strategy::index::cartesian<> >());
  63. rtree_test(g.pt, bgi::parameters<bgi::linear<4>, bg::strategy::index::spherical<> >());
  64. rtree_test(g.pt, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::spherical<> >());
  65. rtree_test(g.pt, bgi::parameters<bgi::rstar<4>, bg::strategy::index::spherical<> >());
  66. rtree_test(g.b, bgi::parameters<bgi::linear<4>, bg::strategy::index::spherical<> >());
  67. rtree_test(g.b, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::spherical<> >());
  68. rtree_test(g.b, bgi::parameters<bgi::rstar<4>, bg::strategy::index::spherical<> >());
  69. rtree_test(g.s, bgi::parameters<bgi::linear<4>, bg::strategy::index::spherical<> >());
  70. rtree_test(g.s, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::spherical<> >());
  71. rtree_test(g.s, bgi::parameters<bgi::rstar<4>, bg::strategy::index::spherical<> >());
  72. rtree_test(g.pt, bgi::parameters<bgi::linear<4>, bg::strategy::index::geographic<> >());
  73. rtree_test(g.pt, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::geographic<> >());
  74. rtree_test(g.pt, bgi::parameters<bgi::rstar<4>, bg::strategy::index::geographic<> >());
  75. rtree_test(g.b, bgi::parameters<bgi::linear<4>, bg::strategy::index::geographic<> >());
  76. rtree_test(g.b, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::geographic<> >());
  77. rtree_test(g.b, bgi::parameters<bgi::rstar<4>, bg::strategy::index::geographic<> >());
  78. rtree_test(g.s, bgi::parameters<bgi::linear<4>, bg::strategy::index::geographic<> >());
  79. rtree_test(g.s, bgi::parameters<bgi::quadratic<4>, bg::strategy::index::geographic<> >());
  80. rtree_test(g.s, bgi::parameters<bgi::rstar<4>, bg::strategy::index::geographic<> >());
  81. return 0;
  82. }