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..0e954a01d 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 @@ -46,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]@ @@ -55,10 +56,10 @@ 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 = + const auto & member = *reinterpret_cast *>(untyped_member); @[ end if]@ return &member[index]; @@ -67,10 +68,10 @@ 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 = + auto & member = *reinterpret_cast *>(untyped_member); @[ end if]@ return &member[index]; @@ -79,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); }