From aa64ac8bdacfc94ee4107dc2255cb5bbd9683d0e Mon Sep 17 00:00:00 2001 From: Karsten Knese Date: Wed, 14 Nov 2018 11:37:51 -0800 Subject: [PATCH 1/3] cast to std::array --- .../resource/msg__type_support.cpp.em | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em b/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em index 71681630e..35fab35fa 100644 --- a/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em +++ b/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em @@ -13,6 +13,7 @@ @# - get_header_filename_from_msg_name (function) @####################################################################### @ +#include // providing offsetof() #include #include @@ -55,8 +56,8 @@ size_t size_function__@(spec.base_type.type)__@(field.name)(const void * untyped const void * get_const_function__@(spec.base_type.type)__@(field.name)(const void * untyped_member, size_t index) { @[ if field.type.array_size and not field.type.is_upper_bound]@ - const @(field.type.pkg_name)::msg::@(field.type.type) * member = - reinterpret_cast(untyped_member); + const auto member = + *reinterpret_cast *>(untyped_member); @[ else]@ const std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> & member = *reinterpret_cast *>(untyped_member); @@ -67,8 +68,8 @@ const void * get_const_function__@(spec.base_type.type)__@(field.name)(const voi void * get_function__@(spec.base_type.type)__@(field.name)(void * untyped_member, size_t index) { @[ if field.type.array_size and not field.type.is_upper_bound]@ - @(field.type.pkg_name)::msg::@(field.type.type) * member = - reinterpret_cast<@(field.type.pkg_name)::msg::@(field.type.type) *>(untyped_member); + auto member = + *reinterpret_cast *>(untyped_member); @[ else]@ std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> & member = *reinterpret_cast *>(untyped_member); From 8cff25de60524c72405525d64bb34f1202285b03 Mon Sep 17 00:00:00 2001 From: Karsten Knese Date: Wed, 14 Nov 2018 11:56:49 -0800 Subject: [PATCH 2/3] take member as a ref --- .../resource/msg__type_support.cpp.em | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em b/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em index 35fab35fa..0191f30fe 100644 --- a/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em +++ b/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em @@ -56,7 +56,7 @@ size_t size_function__@(spec.base_type.type)__@(field.name)(const void * untyped const void * get_const_function__@(spec.base_type.type)__@(field.name)(const void * untyped_member, size_t index) { @[ if field.type.array_size and not field.type.is_upper_bound]@ - const auto member = + const auto & member = *reinterpret_cast *>(untyped_member); @[ else]@ const std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> & member = @@ -68,7 +68,7 @@ const void * get_const_function__@(spec.base_type.type)__@(field.name)(const voi void * get_function__@(spec.base_type.type)__@(field.name)(void * untyped_member, size_t index) { @[ if field.type.array_size and not field.type.is_upper_bound]@ - auto member = + auto & member = *reinterpret_cast *>(untyped_member); @[ else]@ std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> & member = From f93a540f6b73a2d45fe01afb80d8fc8c282af001 Mon Sep 17 00:00:00 2001 From: Karsten Knese Date: Wed, 14 Nov 2018 12:17:32 -0800 Subject: [PATCH 3/3] use auto --- .../resource/msg__type_support.cpp.em | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em b/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em index 0191f30fe..0e954a01d 100644 --- a/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em +++ b/rosidl_typesupport_introspection_cpp/resource/msg__type_support.cpp.em @@ -47,7 +47,7 @@ size_t size_function__@(spec.base_type.type)__@(field.name)(const void * untyped (void)untyped_member; return @(field.type.array_size); @[ else]@ - const std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> * member = + const auto * member = reinterpret_cast *>(untyped_member); return member->size(); @[ end if]@ @@ -59,7 +59,7 @@ const void * get_const_function__@(spec.base_type.type)__@(field.name)(const voi const auto & member = *reinterpret_cast *>(untyped_member); @[ else]@ - const std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> & member = + const auto & member = *reinterpret_cast *>(untyped_member); @[ end if]@ return &member[index]; @@ -71,7 +71,7 @@ void * get_function__@(spec.base_type.type)__@(field.name)(void * untyped_member auto & member = *reinterpret_cast *>(untyped_member); @[ else]@ - std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> & member = + auto & member = *reinterpret_cast *>(untyped_member); @[ end if]@ return &member[index]; @@ -80,7 +80,7 @@ void * get_function__@(spec.base_type.type)__@(field.name)(void * untyped_member @[ if not field.type.array_size or field.type.is_upper_bound]@ void resize_function__@(spec.base_type.type)__@(field.name)(void * untyped_member, size_t size) { - std::vector<@(field.type.pkg_name)::msg::@(field.type.type)> * member = + auto * member = reinterpret_cast *>(untyped_member); member->resize(size); }