From 070d54d2d46f3ef38d81b1c31a3b38dcfaef5201 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Fri, 7 Jun 2019 17:42:16 -0700 Subject: [PATCH] Use rpputils::find_and_replace instead of std::regex_replace The rcpputils implementation is more performant. Signed-off-by: Jacob Perron --- rmw_connext_shared_cpp/CMakeLists.txt | 2 ++ rmw_connext_shared_cpp/package.xml | 1 + rmw_connext_shared_cpp/src/demangle.cpp | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/rmw_connext_shared_cpp/CMakeLists.txt b/rmw_connext_shared_cpp/CMakeLists.txt index f06a2081..7afa888c 100644 --- a/rmw_connext_shared_cpp/CMakeLists.txt +++ b/rmw_connext_shared_cpp/CMakeLists.txt @@ -22,6 +22,7 @@ if(NOT Connext_FOUND) message(WARNING "Could not find RTI Connext - skipping '${PROJECT_NAME}'") return() endif() +find_package(rcpputils REQUIRED) find_package(rcutils REQUIRED) find_package(rmw REQUIRED) @@ -57,6 +58,7 @@ add_library( src/types/custom_publisher_listener.cpp src/types/custom_subscriber_listener.cpp) ament_target_dependencies(rmw_connext_shared_cpp + "rcpputils" "rcutils" "rmw" "Connext") diff --git a/rmw_connext_shared_cpp/package.xml b/rmw_connext_shared_cpp/package.xml index ab1b1817..a0b67aa9 100644 --- a/rmw_connext_shared_cpp/package.xml +++ b/rmw_connext_shared_cpp/package.xml @@ -13,6 +13,7 @@ ament_cmake connext_cmake_module + rcpputils rcutils rmw rti-connext-dds-5.3.1 diff --git a/rmw_connext_shared_cpp/src/demangle.cpp b/rmw_connext_shared_cpp/src/demangle.cpp index 25aa7cda..4a9388ba 100644 --- a/rmw_connext_shared_cpp/src/demangle.cpp +++ b/rmw_connext_shared_cpp/src/demangle.cpp @@ -15,10 +15,10 @@ #include #include #include -#include #include #include +#include "rcpputils/find_and_replace.hpp" #include "rcutils/logging_macros.h" #include "rmw_connext_shared_cpp/namespace_prefix.hpp" @@ -44,7 +44,7 @@ _demangle_if_ros_type(const std::string & dds_type_string) substring_position != std::string::npos) { std::string type_namespace = dds_type_string.substr(0, substring_position); - type_namespace = std::regex_replace(type_namespace, std::regex("::"), "/"); + type_namespace = rcpputils::find_and_replace(type_namespace, "::", "/"); size_t start = substring_position + substring.size(); std::string type_name = dds_type_string.substr(start, dds_type_string.length() - 1 - start); return type_namespace + type_name; @@ -131,7 +131,7 @@ _demangle_service_type_only(const std::string & dds_type_name) // everything checks out, reformat it from '::dds_::' // to '/' std::string type_namespace = dds_type_name.substr(0, ns_substring_position); - type_namespace = std::regex_replace(type_namespace, std::regex("::"), "/"); + type_namespace = rcpputils::find_and_replace(type_namespace, "::", "/"); size_t start = ns_substring_position + ns_substring.length(); std::string type_name = dds_type_name.substr(start, suffix_position - start); return type_namespace + type_name;