Skip to content

Commit

Permalink
Group message initializations by their appropriate checks
Browse files Browse the repository at this point in the history
Signed-off-by: Hunter L. Allen <[email protected]>
  • Loading branch information
allenh1 committed Mar 31, 2019
1 parent 4d9f442 commit 026167b
Showing 1 changed file with 34 additions and 14 deletions.
48 changes: 34 additions & 14 deletions rosidl_generator_cpp/resource/msg__struct.hpp.em
Original file line number Diff line number Diff line change
Expand Up @@ -149,31 +149,46 @@ def generate_zero_string(membset, fill_args):
@[if not member_list]@
(void)_init;
@[end if]@
@[for membset in member_list]@
@[ if membset.members[0].default_value is not None]@
@{
members_if_all_defaults = [m for m in member_list if m.members[0].default_value]
members_else_if_zero = [m for m in member_list if m.members[0].zero_value]
members_if_all_zero = [
m for m in member_list if (m.members[0].zero_value or m.members[0].zero_need_array_override)
and not m.members[0].default_value
]
}@
@[if members_if_all_defaults]@
if (rosidl_generator_cpp::MessageInitialization::ALL == _init ||
rosidl_generator_cpp::MessageInitialization::DEFAULTS_ONLY == _init)
{
@[for membset in members_if_all_defaults]@
@[ for line in generate_default_string(membset)]@
@(line)
@[ end for]@
@[ if membset.members[0].zero_value is not None]@
@[end for]@
@[if members_else_if_zero]@
} else if (rosidl_generator_cpp::MessageInitialization::ZERO == _init) {
@[ for membset in members_else_if_zero]@
@[ for line in generate_zero_string(membset, '_init')]@
@(line)
@[ end for]@
@[ end if]@
@[ end for]@
@[end if]@
}
@[ elif membset.members[0].zero_value is not None]@
@[end if]@
@[if members_if_all_zero]@
if (rosidl_generator_cpp::MessageInitialization::ALL == _init ||
rosidl_generator_cpp::MessageInitialization::ZERO == _init)
{
@[for membset in members_if_all_zero]@
@[ for line in generate_zero_string(membset, '_init')]@
@[ if line]@
@(line)
@[ end if]@
@[ end for]@
}
@[ end if]@
@[end for]@
}
@[end if]@
}

explicit @(message.structure.type.name)_(const ContainerAllocator & _alloc, rosidl_generator_cpp::MessageInitialization _init = rosidl_generator_cpp::MessageInitialization::ALL)
Expand All @@ -187,31 +202,36 @@ def generate_zero_string(membset, fill_args):
@[if not alloc_list]@
(void)_alloc;
@[end if]@
@[for membset in member_list]@
@[ if membset.members[0].default_value is not None]@
@[if members_if_all_defaults]@
if (rosidl_generator_cpp::MessageInitialization::ALL == _init ||
rosidl_generator_cpp::MessageInitialization::DEFAULTS_ONLY == _init)
{
@[for membset in members_if_all_defaults]@
@[ for line in generate_default_string(membset)]@
@(line)
@[ end for]@
@[ if membset.members[0].zero_value is not None]@
@[end for]@
@[if members_else_if_zero]@
} else if (rosidl_generator_cpp::MessageInitialization::ZERO == _init) {
@[ for membset in members_else_if_zero]@
@[ for line in generate_zero_string(membset, '_alloc, _init')]@
@(line)
@[ end for]@
@[ end if]@
@[ end for]@
@[end if]@
}
@[ elif membset.members[0].zero_value is not None]@
@[end if]@
@[if members_if_all_zero]@
if (rosidl_generator_cpp::MessageInitialization::ALL == _init ||
rosidl_generator_cpp::MessageInitialization::ZERO == _init)
{
@[for membset in members_if_all_zero]@
@[ for line in generate_zero_string(membset, '_alloc, _init')]@
@(line)
@[ end for]@
}
@[ end if]@
@[end for]@
}
@[end if]@
}

// field types and members
Expand Down

0 comments on commit 026167b

Please sign in to comment.