Skip to content

Commit

Permalink
Add extra logic for array of C typesupport to get pointer
Browse files Browse the repository at this point in the history
Signed-off-by: Chen.Lihui <[email protected]>
Co-authored-by: Ivan Santiago Paunovic <[email protected]>
  • Loading branch information
Chen.Lihui and ivanpauno committed Sep 3, 2020
1 parent c370d9b commit 16e7b1d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,9 @@ struct StringHelper<rosidl_typesupport_introspection_cpp::MessageMembers>
return *(static_cast<std::string *>(data));
}

static void assign(cycdeser & deser, void * field, bool call_new)
static void assign(cycdeser & deser, void * field)
{
std::string & str = *(std::string *)field;
if (call_new) {
new(&str) std::string;
}
deser >> str;
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,32 @@ align_int_(size_t __align, T __int) noexcept
return (__int - 1u + __align) & ~(__align - 1);
}

inline
void * get_subros_message(
const rosidl_typesupport_introspection_cpp::MessageMember * member,
void * field,
size_t index,
size_t,
bool)
{
return member->get_function(field, index);
}

inline
void * get_subros_message(
const rosidl_typesupport_introspection_c__MessageMember * member,
void * field,
size_t index,
size_t array_size,
bool is_upper_bound)
{
if (array_size && !is_upper_bound) {
return member->get_function(&field, index);
}

return member->get_function(field, index);
}

template<typename T>
void deserialize_field(
const rosidl_typesupport_introspection_cpp::MessageMember * member,
Expand Down Expand Up @@ -359,7 +385,11 @@ bool TypeSupport<MembersType>::deserializeROSmessage(
return false;
}
for (size_t index = 0; index < array_size; ++index) {
deserializeROSmessage(deser, sub_members, member->get_function(field, index));
deserializeROSmessage(
deser, sub_members,
get_subros_message(
member, field, index, member->array_size_,
member->is_upper_bound_));
}
}
}
Expand Down

0 comments on commit 16e7b1d

Please sign in to comment.