From 0594e6db458e23168e419c8057f1d5f792eafd63 Mon Sep 17 00:00:00 2001
From: Joseph Mirabel <jmirabel@laas.fr>
Date: Tue, 8 Oct 2019 18:33:03 +0200
Subject: [PATCH] Remove inclusion of internal headers in public headers.

---
 CMakeLists.txt                                |  1 -
 include/hpp/fcl/BVH/BVH_model.h               | 15 +++------
 src/BVH/BVH_model.cpp                         | 31 ++++++++++++++-----
 src/BVH/BVH_utility.cpp                       |  2 +-
 src/narrowphase/narrowphase.cpp               |  8 +++--
 src/shape/geometric_shapes.cpp                |  2 +-
 src/shape/geometric_shapes_utility.cpp        |  2 +-
 .../shape/geometric_shapes_utility.h          |  2 ++
 src/traversal/traversal_node_bvh_shape.h      |  2 +-
 src/traversal/traversal_node_octree.h         |  2 +-
 src/traversal/traversal_node_shapes.h         |  3 +-
 test/benchmark.cpp                            |  7 +++--
 test/collision.cpp                            | 11 ++++---
 test/distance.cpp                             |  8 +++--
 test/frontlist.cpp                            |  1 +
 test/octree.cpp                               |  4 ++-
 16 files changed, 61 insertions(+), 40 deletions(-)
 rename {include/hpp/fcl => src}/shape/geometric_shapes_utility.h (99%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4100a818..53de7c32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -122,7 +122,6 @@ SET(${PROJECT_NAME}_HEADERS
   include/hpp/fcl/BV/kDOP.h
   include/hpp/fcl/narrowphase/narrowphase.h
   include/hpp/fcl/narrowphase/gjk.h
-  include/hpp/fcl/shape/geometric_shapes_utility.h
   include/hpp/fcl/shape/geometric_shape_to_BVH_model.h
   include/hpp/fcl/shape/geometric_shapes.h
   include/hpp/fcl/distance_func_matrix.h
diff --git a/include/hpp/fcl/BVH/BVH_model.h b/include/hpp/fcl/BVH/BVH_model.h
index 66005904..d6d20033 100644
--- a/include/hpp/fcl/BVH/BVH_model.h
+++ b/include/hpp/fcl/BVH/BVH_model.h
@@ -41,8 +41,6 @@
 #include <hpp/fcl/collision_object.h>
 #include <hpp/fcl/BVH/BVH_internal.h>
 #include <hpp/fcl/BV/BV_node.h>
-#include "../../src/BVH/BV_splitter.h"
-#include "../../src/BVH/BV_fitter.h"
 #include <vector>
 #include <boost/shared_ptr.hpp>
 #include <boost/noncopyable.hpp>
@@ -54,6 +52,9 @@ namespace fcl
 
 class ConvexBase;
 
+template <typename BV> class BVFitter;
+template <typename BV> class BVSplitter;
+
 /// @brief A base class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewed as a degraded version of mesh)
 class BVHModelBase : public CollisionGeometry
 {
@@ -258,15 +259,7 @@ public:
   boost::shared_ptr<BVFitter<BV> > bv_fitter;
 
   /// @brief Constructing an empty BVH
-  BVHModel() : BVHModelBase (),
-               bv_splitter(new BVSplitter<BV>(SPLIT_METHOD_MEAN)),
-               bv_fitter(new BVFitter<BV>()),
-               num_bvs_allocated(0),
-               primitive_indices(NULL),
-               bvs(NULL),
-               num_bvs(0)
-  {
-  }
+  BVHModel();
 
   /// @brief copy from another BVH
   BVHModel(const BVHModel& other);
diff --git a/src/BVH/BVH_model.cpp b/src/BVH/BVH_model.cpp
index 11379c84..281656f1 100644
--- a/src/BVH/BVH_model.cpp
+++ b/src/BVH/BVH_model.cpp
@@ -36,11 +36,16 @@
 /** \author Jia Pan */
 
 #include <hpp/fcl/BVH/BVH_model.h>
-#include <hpp/fcl/BV/BV.h>
-#include <hpp/fcl/shape/convex.h>
+
 #include <iostream>
 #include <string.h>
 
+#include <hpp/fcl/BV/BV.h>
+#include <hpp/fcl/shape/convex.h>
+
+#include "../../src/BVH/BV_splitter.h"
+#include "../../src/BVH/BV_fitter.h"
+
 namespace hpp
 {
 namespace fcl
@@ -630,6 +635,20 @@ void BVHModelBase::computeLocalAABB()
   aabb_local = aabb_;
 }
 
+
+  /// @brief Constructing an empty BVH
+template<typename BV>
+BVHModel<BV>::BVHModel() :
+  BVHModelBase (),
+  bv_splitter(new BVSplitter<BV>(SPLIT_METHOD_MEAN)),
+  bv_fitter(new BVFitter<BV>()),
+  num_bvs_allocated(0),
+  primitive_indices(NULL),
+  bvs(NULL),
+  num_bvs(0)
+{
+}
+
 template<typename BV>
 void BVHModel<BV>::deleteBVs()
 {
@@ -1015,11 +1034,6 @@ NODE_TYPE BVHModel<KDOP<24> >::getNodeType() const
   return BV_KDOP24;
 }
 
-
-
-
-
-
 template class BVHModel<KDOP<16> >;
 template class BVHModel<KDOP<18> >;
 template class BVHModel<KDOP<24> >;
@@ -1028,6 +1042,7 @@ template class BVHModel<AABB>;
 template class BVHModel<RSS>;
 template class BVHModel<kIOS>;
 template class BVHModel<OBBRSS>;
-}
+
+} // namespace fcl
 
 } // namespace hpp
diff --git a/src/BVH/BVH_utility.cpp b/src/BVH/BVH_utility.cpp
index b1f2f7be..c3ac12c7 100644
--- a/src/BVH/BVH_utility.cpp
+++ b/src/BVH/BVH_utility.cpp
@@ -38,7 +38,7 @@
 
 #include <hpp/fcl/BVH/BVH_utility.h>
 #include <hpp/fcl/narrowphase/narrowphase.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
+#include "../src/shape/geometric_shapes_utility.h"
 
 namespace hpp
 {
diff --git a/src/narrowphase/narrowphase.cpp b/src/narrowphase/narrowphase.cpp
index f0b29a72..e8e05b76 100644
--- a/src/narrowphase/narrowphase.cpp
+++ b/src/narrowphase/narrowphase.cpp
@@ -36,10 +36,12 @@
 /** \author Jia Pan */
 
 #include <hpp/fcl/narrowphase/narrowphase.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
-#include "../intersect.h"
-#include <boost/math/constants/constants.hpp>
+
 #include <vector>
+#include <boost/math/constants/constants.hpp>
+
+#include "../src/shape/geometric_shapes_utility.h"
+#include "../src/intersect.h"
 #include "../src/narrowphase/details.h"
 
 namespace hpp
diff --git a/src/shape/geometric_shapes.cpp b/src/shape/geometric_shapes.cpp
index ddf0cb4f..eb9cc274 100644
--- a/src/shape/geometric_shapes.cpp
+++ b/src/shape/geometric_shapes.cpp
@@ -37,7 +37,7 @@
 
 
 #include <hpp/fcl/shape/geometric_shapes.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
+#include "../src/shape/geometric_shapes_utility.h"
 
 namespace hpp
 {
diff --git a/src/shape/geometric_shapes_utility.cpp b/src/shape/geometric_shapes_utility.cpp
index b02f9523..1bd29f4b 100644
--- a/src/shape/geometric_shapes_utility.cpp
+++ b/src/shape/geometric_shapes_utility.cpp
@@ -36,7 +36,7 @@
 /** \author Jia Pan */
 
 
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
+#include "../src/shape/geometric_shapes_utility.h"
 #include "../BVH/BV_fitter.h"
 #include "../math/tools.h"
 
diff --git a/include/hpp/fcl/shape/geometric_shapes_utility.h b/src/shape/geometric_shapes_utility.h
similarity index 99%
rename from include/hpp/fcl/shape/geometric_shapes_utility.h
rename to src/shape/geometric_shapes_utility.h
index c29a903c..2a6a2ba6 100644
--- a/include/hpp/fcl/shape/geometric_shapes_utility.h
+++ b/src/shape/geometric_shapes_utility.h
@@ -43,6 +43,8 @@
 #include <hpp/fcl/shape/geometric_shapes.h>
 #include <hpp/fcl/BV/BV.h>
 
+#include "../src/BVH/BV_fitter.h"
+
 namespace hpp
 {
 namespace fcl
diff --git a/src/traversal/traversal_node_bvh_shape.h b/src/traversal/traversal_node_bvh_shape.h
index e931a392..b01351ac 100644
--- a/src/traversal/traversal_node_bvh_shape.h
+++ b/src/traversal/traversal_node_bvh_shape.h
@@ -41,7 +41,7 @@
 
 #include <hpp/fcl/collision_data.h>
 #include <hpp/fcl/shape/geometric_shapes.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
+#include "../src/shape/geometric_shapes_utility.h"
 #include "traversal_node_base.h"
 #include "details/traversal.h"
 #include <hpp/fcl/BVH/BVH_model.h>
diff --git a/src/traversal/traversal_node_octree.h b/src/traversal/traversal_node_octree.h
index c8f0f522..142531ef 100644
--- a/src/traversal/traversal_node_octree.h
+++ b/src/traversal/traversal_node_octree.h
@@ -41,9 +41,9 @@
 #include <hpp/fcl/collision_data.h>
 #include "traversal_node_base.h"
 #include <hpp/fcl/narrowphase/narrowphase.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
 #include <hpp/fcl/octree.h>
 #include <hpp/fcl/BVH/BVH_model.h>
+#include "../src/shape/geometric_shapes_utility.h"
 
 namespace hpp
 {
diff --git a/src/traversal/traversal_node_shapes.h b/src/traversal/traversal_node_shapes.h
index 90252734..4344c4e5 100644
--- a/src/traversal/traversal_node_shapes.h
+++ b/src/traversal/traversal_node_shapes.h
@@ -42,9 +42,8 @@
 #include <hpp/fcl/collision_data.h>
 #include "traversal_node_base.h"
 #include <hpp/fcl/narrowphase/narrowphase.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
 #include <hpp/fcl/BV/BV.h>
-#include <hpp/fcl/shape/geometric_shapes_utility.h>
+#include "../src/shape/geometric_shapes_utility.h"
 
 namespace hpp
 {
diff --git a/test/benchmark.cpp b/test/benchmark.cpp
index f3a16334..21e4cae7 100644
--- a/test/benchmark.cpp
+++ b/test/benchmark.cpp
@@ -14,12 +14,15 @@
 // received a copy of the GNU Lesser General Public License along with
 // hpp-fcl. If not, see <http://www.gnu.org/licenses/>.
 
+#include <boost/filesystem.hpp>
+
 #include "../src/traversal/traversal_node_setup.h"
 #include "../src/traversal/traversal_node_bvhs.h"
-#include <../src/collision_node.h>
+#include "../src/collision_node.h"
+#include "../src/BVH/BV_splitter.h"
+
 #include "utility.h"
 #include "fcl_resources/config.h"
-#include <boost/filesystem.hpp>
 
 #define RUN_CASE(BV,tf,models,split) \
   run<BV>(tf, models, split, #BV " - " #split ":\t")
diff --git a/test/collision.cpp b/test/collision.cpp
index d28452d9..2cc49180 100644
--- a/test/collision.cpp
+++ b/test/collision.cpp
@@ -44,19 +44,22 @@
 #include <boost/test/unit_test.hpp>
 #include <boost/utility/binary.hpp>
 
+#include <boost/filesystem.hpp>
 #include <boost/assign/list_of.hpp>
 
-#include "../src/traversal/traversal_node_bvhs.h"
-#include "../src/traversal/traversal_node_setup.h"
-#include <../src/collision_node.h>
 #include <hpp/fcl/collision.h>
 #include <hpp/fcl/BV/BV.h>
 #include <hpp/fcl/shape/geometric_shapes.h>
 #include <hpp/fcl/narrowphase/narrowphase.h>
 #include <hpp/fcl/mesh_loader/assimp.h>
+
+#include "../src/traversal/traversal_node_bvhs.h"
+#include "../src/traversal/traversal_node_setup.h"
+#include "../src/collision_node.h"
+#include "../src/BVH/BV_splitter.h"
+
 #include "utility.h"
 #include "fcl_resources/config.h"
-#include <boost/filesystem.hpp>
 
 using namespace hpp::fcl;
 
diff --git a/test/distance.cpp b/test/distance.cpp
index a7457eb6..eea1eb8b 100644
--- a/test/distance.cpp
+++ b/test/distance.cpp
@@ -39,14 +39,16 @@
 #define BOOST_TEST_DYN_LINK
 #include <boost/test/unit_test.hpp>
 #include <boost/utility/binary.hpp>
+#include <boost/timer.hpp>
+#include <boost/filesystem.hpp>
 
 #include "../src/traversal/traversal_node_bvhs.h"
 #include "../src/traversal/traversal_node_setup.h"
-#include <../src/collision_node.h>
+#include "../src/collision_node.h"
+#include "../src/BVH/BV_splitter.h"
+
 #include "utility.h"
-#include <boost/timer.hpp>
 #include "fcl_resources/config.h"
-#include <boost/filesystem.hpp>
 
 using namespace hpp::fcl;
 
diff --git a/test/frontlist.cpp b/test/frontlist.cpp
index b2e9f300..05045b06 100644
--- a/test/frontlist.cpp
+++ b/test/frontlist.cpp
@@ -44,6 +44,7 @@
 #include "../src/traversal/traversal_node_bvhs.h"
 #include "../src/traversal/traversal_node_setup.h"
 #include <../src/collision_node.h>
+#include <../src/BVH/BV_splitter.h>
 #include "utility.h"
 
 #include "fcl_resources/config.h"
diff --git a/test/octree.cpp b/test/octree.cpp
index 65507fa0..406339dc 100644
--- a/test/octree.cpp
+++ b/test/octree.cpp
@@ -38,14 +38,16 @@
 #define BOOST_TEST_DYN_LINK
 #include <fstream>
 #include <boost/test/unit_test.hpp>
+#include <boost/filesystem.hpp>
 
 #include <hpp/fcl/BVH/BVH_model.h>
 #include <hpp/fcl/collision.h>
 #include <hpp/fcl/distance.h>
 #include <hpp/fcl/shape/geometric_shapes.h>
+#include "../src/BVH/BV_splitter.h"
+
 #include "utility.h"
 #include "fcl_resources/config.h"
-#include <boost/filesystem.hpp>
 
 using hpp::fcl::Vec3f;
 using hpp::fcl::Triangle;
-- 
GitLab