From 069936218ac523ff3ddd08041680224437c157ea Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 18 Nov 2015 08:01:32 -0800 Subject: [PATCH] [InverseDynamics] Add custom namespaces per configuration BulletInverseDynamics can be configured to compile using Eigen instead of Bullet's LinearMath. Adds a preprocessor defined specific namespace for each configuration to produce linker errors if incompatible libraries are linked (eg, builtin core library and utilities for bullet types). --- src/BulletInverseDynamics/IDConfig.hpp | 4 ++++ src/BulletInverseDynamics/IDConfigBuiltin.hpp | 1 + src/BulletInverseDynamics/IDConfigEigen.hpp | 1 + src/BulletInverseDynamics/MultiBodyTree.hpp | 2 +- src/BulletInverseDynamics/details/IDMatVec.hpp | 2 ++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/BulletInverseDynamics/IDConfig.hpp b/src/BulletInverseDynamics/IDConfig.hpp index 4beb75a75..e7d6c122f 100644 --- a/src/BulletInverseDynamics/IDConfig.hpp +++ b/src/BulletInverseDynamics/IDConfig.hpp @@ -24,7 +24,11 @@ #define INVDYN_INCLUDE_HELPER_2(x) #x #define INVDYN_INCLUDE_HELPER(x) INVDYN_INCLUDE_HELPER_2(x) #include INVDYN_INCLUDE_HELPER(BT_CUSTOM_INVERSE_DYNAMICS_CONFIG_H) +#ifndef btInverseDynamics +#error "custom inverse dynamics config, but no custom namespace defined" +#endif #else +#define btInverseDynamics btInverseDynamicsBullet3 // Use default configuration with bullet's types // Use the same scalar type as rest of bullet library #include "LinearMath/btScalar.h" diff --git a/src/BulletInverseDynamics/IDConfigBuiltin.hpp b/src/BulletInverseDynamics/IDConfigBuiltin.hpp index 2427c16f0..3965bc5eb 100644 --- a/src/BulletInverseDynamics/IDConfigBuiltin.hpp +++ b/src/BulletInverseDynamics/IDConfigBuiltin.hpp @@ -1,6 +1,7 @@ ///@file Configuration for Inverse Dynamics Library without external dependencies #ifndef INVDYNCONFIG_BUILTIN_HPP_ #define INVDYNCONFIG_BUILTIN_HPP_ +#define btInverseDynamics btInverseDynamicsBuiltin #ifdef BT_USE_DOUBLE_PRECISION // choose double/single precision version typedef double idScalar; diff --git a/src/BulletInverseDynamics/IDConfigEigen.hpp b/src/BulletInverseDynamics/IDConfigEigen.hpp index e04b149a6..f0b72b425 100644 --- a/src/BulletInverseDynamics/IDConfigEigen.hpp +++ b/src/BulletInverseDynamics/IDConfigEigen.hpp @@ -1,6 +1,7 @@ ///@file Configuration for Inverse Dynamics Library with Eigen #ifndef INVDYNCONFIG_EIGEN_HPP_ #define INVDYNCONFIG_EIGEN_HPP_ +#define btInverseDynamics btInverseDynamicsEigen #ifdef BT_USE_DOUBLE_PRECISION // choose double/single precision version typedef double idScalar; diff --git a/src/BulletInverseDynamics/MultiBodyTree.hpp b/src/BulletInverseDynamics/MultiBodyTree.hpp index 887005c3a..9f3400b40 100644 --- a/src/BulletInverseDynamics/MultiBodyTree.hpp +++ b/src/BulletInverseDynamics/MultiBodyTree.hpp @@ -1,6 +1,7 @@ #ifndef MULTIBODYTREE_HPP_ #define MULTIBODYTREE_HPP_ +#include "IDConfig.hpp" #include "IDMath.hpp" namespace btInverseDynamics { @@ -304,5 +305,4 @@ private: InitCache* m_init_cache; }; } // namespace btInverseDynamics - #endif // MULTIBODYTREE_HPP_ diff --git a/src/BulletInverseDynamics/details/IDMatVec.hpp b/src/BulletInverseDynamics/details/IDMatVec.hpp index 961abade8..a4e2ca5a4 100644 --- a/src/BulletInverseDynamics/details/IDMatVec.hpp +++ b/src/BulletInverseDynamics/details/IDMatVec.hpp @@ -4,6 +4,8 @@ #include +#include "../IDConfig.hpp" + namespace btInverseDynamics { class vec3; class vecx;