]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / geometry / index / detail / rtree / utilities / are_boxes_ok.hpp
index 8e0560379b4c2f660aa159e5262ac93e62e7f6ba..b5fe5a0e2862fb134de827826da90e7c0158bb91 100644 (file)
@@ -4,6 +4,10 @@
 //
 // Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
 //
+// This file was modified by Oracle on 2019.
+// Modifications copyright (c) 2019 Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+//
 // 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)
@@ -22,12 +26,14 @@ template <typename Value, typename Options, typename Translator, typename Box, t
 class are_boxes_ok
     : public rtree::visitor<Value, typename Options::parameters_type, Box, Allocators, typename Options::node_tag, true>::type
 {
-    typedef typename rtree::internal_node<Value, typename Options::parameters_type, Box, Allocators, typename Options::node_tag>::type internal_node;
-    typedef typename rtree::leaf<Value, typename Options::parameters_type, Box, Allocators, typename Options::node_tag>::type leaf;
+    typedef typename Options::parameters_type parameters_type;
+
+    typedef typename rtree::internal_node<Value, parameters_type, Box, Allocators, typename Options::node_tag>::type internal_node;
+    typedef typename rtree::leaf<Value, parameters_type, Box, Allocators, typename Options::node_tag>::type leaf;
 
 public:
-    are_boxes_ok(Translator const& tr, bool exact_match)
-        : result(false), m_tr(tr), m_is_root(true), m_exact_match(exact_match)
+    are_boxes_ok(parameters_type const& parameters, Translator const& tr, bool exact_match)
+        : result(false), m_parameters(parameters), m_tr(tr), m_is_root(true), m_exact_match(exact_match)
     {}
 
     void operator()(internal_node const& n)
@@ -60,7 +66,8 @@ public:
         m_box = box_bckup;
         m_is_root = is_root_bckup;
 
-        Box box_exp = rtree::elements_box<Box>(elements.begin(), elements.end(), m_tr);
+        Box box_exp = rtree::elements_box<Box>(elements.begin(), elements.end(), m_tr,
+                                               index::detail::get_strategy(m_parameters));
         
         if ( m_exact_match )
             result = m_is_root || geometry::equals(box_exp, m_box);
@@ -82,7 +89,8 @@ public:
                 return;
             }
         
-            Box box_exp = rtree::values_box<Box>(elements.begin(), elements.end(), m_tr);
+            Box box_exp = rtree::values_box<Box>(elements.begin(), elements.end(), m_tr,
+                                                 index::detail::get_strategy(m_parameters));
 
             if ( m_exact_match )
                 result = geometry::equals(box_exp, m_box);
@@ -96,6 +104,7 @@ public:
     bool result;
 
 private:
+    parameters_type const& m_parameters;
     Translator const& m_tr;
     Box m_box;
     bool m_is_root;
@@ -116,7 +125,7 @@ bool are_boxes_ok(Rtree const& tree, bool exact_match = true)
         typename RTV::translator_type,
         typename RTV::box_type,
         typename RTV::allocators_type
-    > v(rtv.translator(), exact_match);
+    > v(tree.parameters(), rtv.translator(), exact_match);
     
     rtv.apply_visitor(v);