Skip to content

Commit

Permalink
Add static_cast to tf2_bullet
Browse files Browse the repository at this point in the history
bullet uses floats, which causes narrowing warnings
  • Loading branch information
gleichdick committed Apr 6, 2021
1 parent a336830 commit 3278ca2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
16 changes: 12 additions & 4 deletions tf2/include/tf2/impl/convert.h
Original file line number Diff line number Diff line change
Expand Up @@ -508,8 +508,9 @@ struct StampedAttributesHelper<tf2::WithCovarianceStamped<T>>
*
* \tparam VectorType Datatype of the Vector.
* \tparam Message Message type, like geometry_msgs::msg::Vector3.
* \tparam VectorMemberType Type of the <tt>x, y</tt> and \c z variables of the vector
*/
template<class VectorType, class Message>
template<class VectorType, class Message, typename VectorMemberType = double>
struct DefaultVectorConversionImplementation
{
/** \brief Convert a vector type to a vector-like message.
Expand All @@ -529,16 +530,20 @@ struct DefaultVectorConversionImplementation
*/
static void fromMsg(const Message & msg, VectorType & out)
{
out = VectorType(msg.x, msg.y, msg.z);
// cast to suppress narrowing warning
out = VectorType(
static_cast<VectorMemberType>(msg.x), static_cast<VectorMemberType>(msg.y),
static_cast<VectorMemberType>(msg.z));
}
};

/** \brief Generic conversion of a quaternion and
* a geometry_msgs::msg::Quaternion message.
*
* \tparam QuaternionType Datatype of the Vector.
* \tparam QuaternionMemberType Type of the <tt>x, y, z</tt> and \c w variables of the quaternion
*/
template<class QuaternionType>
template<class QuaternionType, typename QuaternionMemberType = double>
struct DefaultQuaternionConversionImplementation
{
/** \brief Convert a quaternion type to a Quaternion message.
Expand All @@ -559,7 +564,10 @@ struct DefaultQuaternionConversionImplementation
*/
static void fromMsg(const geometry_msgs::msg::Quaternion & msg, QuaternionType & out)
{
out = QuaternionType(msg.x, msg.y, msg.z, msg.w);
// cast to suppress narrowing warning
out = QuaternionType(
static_cast<QuaternionMemberType>(msg.x), static_cast<QuaternionMemberType>(msg.y),
static_cast<QuaternionMemberType>(msg.z), static_cast<QuaternionMemberType>(msg.w));
}
};

Expand Down
6 changes: 3 additions & 3 deletions tf2_bullet/include/tf2_bullet/tf2_bullet.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,21 +79,21 @@ struct DefaultMessageForDatatype<btTransform>
/// \brief Conversion implementation for geometry_msgs::msg::Point and btVector3.
template<>
struct ConversionImplementation<btVector3, geometry_msgs::msg::Point>
: DefaultVectorConversionImplementation<btVector3, geometry_msgs::msg::Point>
: DefaultVectorConversionImplementation<btVector3, geometry_msgs::msg::Point, btScalar>
{
};

/// \brief Conversion implementation for geometry_msgs::msg::Vector3 and btVector3.
template<>
struct ConversionImplementation<btVector3, geometry_msgs::msg::Vector3>
: DefaultVectorConversionImplementation<btVector3, geometry_msgs::msg::Vector3>
: DefaultVectorConversionImplementation<btVector3, geometry_msgs::msg::Vector3, btScalar>
{
};

/// \brief Conversion implementation for geometry_msgs::msg::Quaternion and Eigen::Quaterniond.
template<>
struct ConversionImplementation<btQuaternion, geometry_msgs::msg::Quaternion>
: DefaultQuaternionConversionImplementation<btQuaternion> {};
: DefaultQuaternionConversionImplementation<btQuaternion, btScalar> {};

/// \brief Conversion implementation for geometry_msgs::msg::Transform and btTransform.
template<>
Expand Down

0 comments on commit 3278ca2

Please sign in to comment.