Change conversions of Vertices for new PCL versions (#316)

In ad00c7bee2, the vertices field of pcl::Vertices changed from std::vector<std::uint32_t> to std::vector<pcl::index_t>, where index_t is an index type with configurable size (currently by default int). This commit makes conversions from and to pcl_msgs::Vertices possible again, moving the vector contents if possible.
This commit is contained in:
Markus Vieth 2020-11-09 20:09:17 +01:00 committed by GitHub
parent 706c020528
commit 2d21467423
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -356,10 +356,25 @@ namespace pcl_conversions {
/** pcl::Vertices <=> pcl_msgs::Vertices **/ /** pcl::Vertices <=> pcl_msgs::Vertices **/
namespace internal
{
template <class T>
inline void move(std::vector<T> &a, std::vector<T> &b)
{
b.swap(a);
}
template <class T1, class T2>
inline void move(std::vector<T1> &a, std::vector<T2> &b)
{
b.assign(a.cbegin(), a.cend());
}
}
inline inline
void fromPCL(const pcl::Vertices &pcl_vert, pcl_msgs::msg::Vertices &vert) void fromPCL(const pcl::Vertices &pcl_vert, pcl_msgs::msg::Vertices &vert)
{ {
vert.vertices = pcl_vert.vertices; vert.vertices.assign(pcl_vert.vertices.cbegin(), pcl_vert.vertices.cend());
} }
inline inline
@ -376,7 +391,7 @@ namespace pcl_conversions {
inline inline
void moveFromPCL(pcl::Vertices &pcl_vert, pcl_msgs::msg::Vertices &vert) void moveFromPCL(pcl::Vertices &pcl_vert, pcl_msgs::msg::Vertices &vert)
{ {
vert.vertices.swap(pcl_vert.vertices); internal::move(pcl_vert.vertices, vert.vertices);
} }
inline inline
@ -393,7 +408,7 @@ namespace pcl_conversions {
inline inline
void toPCL(const pcl_msgs::msg::Vertices &vert, pcl::Vertices &pcl_vert) void toPCL(const pcl_msgs::msg::Vertices &vert, pcl::Vertices &pcl_vert)
{ {
pcl_vert.vertices = vert.vertices; pcl_vert.vertices.assign(vert.vertices.cbegin(), vert.vertices.cend());
} }
inline inline
@ -410,7 +425,7 @@ namespace pcl_conversions {
inline inline
void moveToPCL(pcl_msgs::msg::Vertices &vert, pcl::Vertices &pcl_vert) void moveToPCL(pcl_msgs::msg::Vertices &vert, pcl::Vertices &pcl_vert)
{ {
pcl_vert.vertices.swap(vert.vertices); internal::move(vert.vertices, pcl_vert.vertices);
} }
inline inline