From 55da675bce98d0e7690b82ea011b2f4989ad2a52 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Mon, 17 Aug 2015 11:38:38 -0700 Subject: [PATCH] reorder iteration to fix output ordering --- rclcpp/include/rclcpp/node_impl.hpp | 9 ++++++--- rclcpp/include/rclcpp/parameter_service.hpp | 17 ++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/rclcpp/include/rclcpp/node_impl.hpp b/rclcpp/include/rclcpp/node_impl.hpp index 7752e38..9a8402a 100644 --- a/rclcpp/include/rclcpp/node_impl.hpp +++ b/rclcpp/include/rclcpp/node_impl.hpp @@ -30,6 +30,7 @@ #include #include +#include #ifndef RCLCPP_RCLCPP_NODE_HPP_ #include "node.hpp" @@ -353,12 +354,14 @@ Node::get_parameters( { std::lock_guard lock(mutex_); std::vector results; - for (auto & kv : parameters_) { - if (std::any_of(names.cbegin(), names.cend(), [&kv](const std::string & name) { + + for (auto & name : names) { + if (std::any_of(parameters_.cbegin(), parameters_.cend(), + [&name](const std::pair & kv) { return name == kv.first; })) { - results.push_back(kv.second); + results.push_back(parameters_.at(name)); } } return results; diff --git a/rclcpp/include/rclcpp/parameter_service.hpp b/rclcpp/include/rclcpp/parameter_service.hpp index a6d2a60..12beaff 100644 --- a/rclcpp/include/rclcpp/parameter_service.hpp +++ b/rclcpp/include/rclcpp/parameter_service.hpp @@ -53,11 +53,9 @@ public: std::shared_ptr response) { auto values = node->get_parameters(request->names); - std::transform(values.cbegin(), values.cend(), std::back_inserter(response->values), - [](const rclcpp::parameter::ParameterVariant & pvariant) { - return pvariant. - get_parameter_value(); - }); + for (auto & pvariant : values) { + response->values.push_back(pvariant.get_parameter_value()); + } } ); @@ -82,12 +80,9 @@ public: std::shared_ptr response) { std::vector pvariants; - std::transform(request->parameters.cbegin(), request->parameters.cend(), - std::back_inserter(pvariants), - [](const rcl_interfaces::msg::Parameter & p) { - return rclcpp::parameter::ParameterVariant:: - from_parameter(p); - }); + for (auto & p : request->parameters) { + pvariants.push_back(rclcpp::parameter::ParameterVariant::from_parameter(p)); + } auto results = node->set_parameters(pvariants); response->results = results; }