From 8844880edde09f3931f8ca6af522cdfab1580d9a Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Wed, 21 Aug 2019 14:29:52 +0200 Subject: [PATCH] Implement no_demangle in various get_... functions Signed-off-by: Erik Boasson --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index c5d2813..e2a8866 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -2242,7 +2242,7 @@ static rmw_ret_t get_endpoint_names_and_types_by_node( std::regex("^" + std::string(ros_topic_prefix) + "(/.*)", std::regex::extended); const auto re_typ = std::regex("^(.*::)dds_::(.*)_$", std::regex::extended); const auto filter_and_map = - [re_tp, re_typ, guids, node_name](const dds_builtintopic_endpoint_t & sample, + [re_tp, re_typ, guids, node_name, no_demangle](const dds_builtintopic_endpoint_t & sample, std::string & topic_name, std::string & type_name) -> bool { std::cmatch cm_tp, cm_typ; if (node_name != nullptr && guids.count(sample.participant_key) == 0) { @@ -2253,10 +2253,14 @@ static rmw_ret_t get_endpoint_names_and_types_by_node( { return false; } else { - std::string demangled_type = std::regex_replace(std::string(cm_typ[1]), std::regex( - "::"), "/"); topic_name = std::string(cm_tp[1]); - type_name = std::string(demangled_type) + std::string(cm_typ[2]); + if (no_demangle) { + type_name = std::string(type_name); + } else { + std::string demangled_type = std::regex_replace(std::string(cm_typ[1]), std::regex( + "::"), "/"); + type_name = std::string(demangled_type) + std::string(cm_typ[2]); + } return true; } }