Skip to content

Commit f29f80d

Browse files
committed
simplify srv template to allow vector<bool>
Signed-off-by: Olivier Kermorgant <[email protected]>
1 parent e310440 commit f29f80d

File tree

1 file changed

+10
-18
lines changed

1 file changed

+10
-18
lines changed

resource/interface_factories.cpp.em

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -306,26 +306,18 @@ void ServiceFactory<
306306
@[ for field in service["fields"][type.lower()]]@
307307
@[ if field["array"]]@
308308
req@(to).@(field["ros" + to]["name"]).resize(req@(frm).@(field["ros" + frm]["name"]).size());
309-
auto @(field["ros1"]["name"])1_it = req1.@(field["ros1"]["name"]).begin();
310-
auto @(field["ros2"]["name"])2_it = req2.@(field["ros2"]["name"]).begin();
311-
while (
312-
@(field["ros1"]["name"])1_it != req1.@(field["ros1"]["name"]).end() &&
313-
@(field["ros2"]["name"])2_it != req2.@(field["ros2"]["name"]).end()
314-
) {
315-
auto & @(field["ros1"]["name"])1 = *(@(field["ros1"]["name"])1_it++);
316-
auto & @(field["ros2"]["name"])2 = *(@(field["ros2"]["name"])2_it++);
317-
@[ else]@
318-
auto & @(field["ros1"]["name"])1 = req1.@(field["ros1"]["name"]);
319-
auto & @(field["ros2"]["name"])2 = req2.@(field["ros2"]["name"]);
320-
@[ end if]@
321-
@[ if field["basic"]]@
322-
@(field["ros2"]["name"])@(to) = @(field["ros1"]["name"])@(frm);
309+
for ( size_t i = 0; i < req1.@(field["ros1"]["name"]).size(); ++i)
310+
@[ if field["basic"]]@
311+
req@(to).@(field["ros" + to]["name"])[i] = req@(frm).@(field["ros" + frm]["name"])[i];
312+
@[ else]@
313+
Factory<@(field["ros1"]["cpptype"]),@(field["ros2"]["cpptype"])>::convert_@(frm)_to_@(to)(@
314+
req@(frm).@(field["ros" + frm]["name"])[i], req@(to).@(field["ros" + to]["name"])[i]);
315+
@[ end if]@
316+
@[ elif field["basic"]]@
317+
req@(to).@(field["ros" + to]["name"]) = req@(frm).@(field["ros" + frm]["name"]);
323318
@[ else]@
324319
Factory<@(field["ros1"]["cpptype"]),@(field["ros2"]["cpptype"])>::convert_@(frm)_to_@(to)(@
325-
@(field["ros2"]["name"])@(frm), @(field["ros1"]["name"])@(to));
326-
@[ end if]@
327-
@[ if field["array"]]@
328-
}
320+
req@(frm).@(field["ros" + frm]["name"]), req@(to).@(field["ros" + to]["name"]));
329321
@[ end if]@
330322
@[ end for]@
331323
}

0 commit comments

Comments
 (0)