Improve list_parameters logic

This commit is contained in:
Esteve Fernandez 2015-06-25 15:28:39 -07:00
parent 1b26cd2d3d
commit e39af181d0

View file

@ -368,7 +368,9 @@ Node::list_parameters(
// TODO(esteve): define parameter separator, use "." for now // TODO(esteve): define parameter separator, use "." for now
for (auto & kv : parameters_) { for (auto & kv : parameters_) {
if (std::any_of(prefixes.cbegin(), prefixes.cend(), [&kv, &depth](const std::string & prefix) { if (std::any_of(prefixes.cbegin(), prefixes.cend(), [&kv, &depth](const std::string & prefix) {
if (kv.first.find(prefix + ".") == 0) { if (kv.first == prefix) {
return true;
} else if (kv.first.find(prefix + ".") == 0) {
size_t length = prefix.length(); size_t length = prefix.length();
std::string substr = kv.first.substr(length); std::string substr = kv.first.substr(length);
// Cast as unsigned integer to avoid warning // Cast as unsigned integer to avoid warning
@ -379,6 +381,7 @@ Node::list_parameters(
{ {
result.names.push_back(kv.first); result.names.push_back(kv.first);
size_t last_separator = kv.first.find_last_of('.'); size_t last_separator = kv.first.find_last_of('.');
if (std::string::npos != last_separator) {
std::string prefix = kv.first.substr(0, last_separator); std::string prefix = kv.first.substr(0, last_separator);
if (std::find(result.prefixes.cbegin(), result.prefixes.cend(), if (std::find(result.prefixes.cbegin(), result.prefixes.cend(),
prefix) == result.prefixes.cend()) prefix) == result.prefixes.cend())
@ -387,6 +390,7 @@ Node::list_parameters(
} }
} }
} }
}
return result; return result;
} }
#endif /* RCLCPP_RCLCPP_NODE_IMPL_HPP_ */ #endif /* RCLCPP_RCLCPP_NODE_IMPL_HPP_ */