]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Avoid usage of the ArborX access traits in polymorphic contexts
authorDaniel Arndt <arndtd@ornl.gov>
Wed, 31 Mar 2021 18:08:19 +0000 (14:08 -0400)
committerDaniel Arndt <arndtd@ornl.gov>
Wed, 31 Mar 2021 18:13:14 +0000 (14:13 -0400)
include/deal.II/arborx/access_traits.h

index 7c02fd85c259e0d8dbe3b7fcc860229732b661e9..be704fbb92f0d0ed4770f33ba457d7a86bb0f019 100644 (file)
@@ -62,8 +62,9 @@ namespace ArborXWrappers
    * This class defines a predicate used by ArborXWrappers::BVH to determine
    * for given points which of the bounding boxes used to build the
    * ArborXWrappers::BVH intersect with them.
+   * @note The class is not supposed to be used in polymorphic context.
    */
-  class PointIntersectPredicate : public PointPredicate
+  class PointIntersectPredicate : private PointPredicate
   {
   public:
     /**
@@ -73,6 +74,10 @@ namespace ArborXWrappers
     template <int dim, typename Number>
     PointIntersectPredicate(
       const std::vector<dealii::Point<dim, Number>> &points);
+
+    // We need these since we inherit privately to avoid polymorphic use.
+    using PointPredicate::get;
+    using PointPredicate::size;
   };
 
 
@@ -81,8 +86,9 @@ namespace ArborXWrappers
    * This class defines a predicate used by ArborXWrappers::BVH to determine
    * for given points which are the nearest bounding boxes/points among the ones
    * used to build the ArborXWrappers::BVH.
+   * @note The class is not supposed to be used in polymorphic context.
    */
-  class PointNearestPredicate : public PointPredicate
+  class PointNearestPredicate : private PointPredicate
   {
   public:
     /**
@@ -100,6 +106,10 @@ namespace ArborXWrappers
     unsigned int
     get_n_nearest_neighbors() const;
 
+    // We need these since we inherit privately to avoid polymorphic use.
+    using PointPredicate::get;
+    using PointPredicate::size;
+
   private:
     unsigned int n_nearest_neighbors;
   };
@@ -142,8 +152,9 @@ namespace ArborXWrappers
    * This class is used by ArborXWrappers::BVH to determine for given bounding
    * boxes which of the bounding boxes used to build the ArborXWrappers::BVH
    * intersect with them.
+   * @note The class is not supposed to be used in polymorphic context.
    */
-  class BoundingBoxIntersectPredicate : public BoundingBoxPredicate
+  class BoundingBoxIntersectPredicate : private BoundingBoxPredicate
   {
   public:
     /**
@@ -153,6 +164,10 @@ namespace ArborXWrappers
     template <int dim, typename Number>
     BoundingBoxIntersectPredicate(
       const std::vector<dealii::BoundingBox<dim, Number>> &bounding_boxes);
+
+    // We need these since we inherit privately to avoid polymorphic use.
+    using BoundingBoxPredicate::get;
+    using BoundingBoxPredicate::size;
   };
 
 
@@ -160,8 +175,9 @@ namespace ArborXWrappers
    * This class is used by ArborXWrappers::BVH to determine for given bounding
    * boxes which are the nearest bounding boxes/points among the ones used to
    * build the ArborXWrappers::BVH.
+   * @note The class is not supposed to be used in polymorphic context.
    */
-  class BoundingBoxNearestPredicate : public BoundingBoxPredicate
+  class BoundingBoxNearestPredicate : private BoundingBoxPredicate
   {
   public:
     /**
@@ -180,6 +196,10 @@ namespace ArborXWrappers
     unsigned int
     get_n_nearest_neighbors() const;
 
+    // We need these since we inherit privately to avoid polymorphic use.
+    using BoundingBoxPredicate::get;
+    using BoundingBoxPredicate::size;
+
   private:
     unsigned int n_nearest_neighbors;
   };

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.