From 8bf54f6f740bd6043a9e16e769edb95e65ea5af7 Mon Sep 17 00:00:00 2001 From: "David V. Lu" Date: Mon, 21 Oct 2024 22:46:44 -0400 Subject: [PATCH 1/2] List plugins script Signed-off-by: David V. Lu --- CMakeLists.txt | 18 ++++++++++++++ src/list_plugins.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/list_plugins.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c4b1385..39941c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,24 @@ target_link_libraries(${PROJECT_NAME} INTERFACE rcpputils::rcpputils tinyxml2::tinyxml2) +add_executable(list_plugins src/list_plugins.cpp) +target_include_directories(list_plugins PUBLIC + $ + $ +) +target_link_libraries(list_plugins + ${PROJECT_NAME} +) +ament_target_dependencies(list_plugins + ament_index_cpp + class_loader + rcpputils + rcutils +) +install(TARGETS list_plugins + DESTINATION lib/${PROJECT_NAME} +) + ament_export_dependencies(ament_index_cpp class_loader rcutils rcpputils tinyxml2_vendor TinyXML2) ament_export_targets(export_${PROJECT_NAME}) diff --git a/src/list_plugins.cpp b/src/list_plugins.cpp new file mode 100644 index 0000000..5371917 --- /dev/null +++ b/src/list_plugins.cpp @@ -0,0 +1,57 @@ +/********************************************************************* + * Software License Agreement (BSD License) + * + * Copyright (c) 2024, Metro Robots + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Metro Robots nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *********************************************************************/ + +/* Author: David V. Lu!! */ + +#include +#include + +int main(int argc, char** argv) +{ + if (argc != 3) + { + std::cerr << "Requires two arguments!" << std::endl; + std::cerr << "Usage: " << argv[0]; + std::cerr << " [package] [base_class]" << std::endl; + return -1; + } + + // Note: You cannot use void if you want to use the templated createSharedInstance methods + pluginlib::ClassLoader cl(argv[1], argv[2]); + for (const auto& declared : cl.getDeclaredClasses()) + { + std::cout << declared << std::endl; + } + return 0; +} From a3b20c08e74358038a7be6481078d63a0473391b Mon Sep 17 00:00:00 2001 From: Alejandro Hernandez Cordero Date: Thu, 2 Oct 2025 14:37:58 +0200 Subject: [PATCH 2/2] make linters happy Signed-off-by: Alejandro Hernandez Cordero --- CMakeLists.txt | 6 ---- src/list_plugins.cpp | 70 ++++++++++++++++++++------------------------ 2 files changed, 31 insertions(+), 45 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 39941c0..f16a9e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,12 +38,6 @@ target_include_directories(list_plugins PUBLIC target_link_libraries(list_plugins ${PROJECT_NAME} ) -ament_target_dependencies(list_plugins - ament_index_cpp - class_loader - rcpputils - rcutils -) install(TARGETS list_plugins DESTINATION lib/${PROJECT_NAME} ) diff --git a/src/list_plugins.cpp b/src/list_plugins.cpp index 5371917..684a405 100644 --- a/src/list_plugins.cpp +++ b/src/list_plugins.cpp @@ -1,46 +1,39 @@ -/********************************************************************* - * Software License Agreement (BSD License) - * - * Copyright (c) 2024, Metro Robots - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Metro Robots nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - *********************************************************************/ +// Copyright (c) 2025, Metro Robots +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// * Neither the name of the Willow Garage nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. /* Author: David V. Lu!! */ -#include #include +#include -int main(int argc, char** argv) +int main(int argc, char ** argv) { - if (argc != 3) - { + if (argc != 3) { std::cerr << "Requires two arguments!" << std::endl; std::cerr << "Usage: " << argv[0]; std::cerr << " [package] [base_class]" << std::endl; @@ -49,8 +42,7 @@ int main(int argc, char** argv) // Note: You cannot use void if you want to use the templated createSharedInstance methods pluginlib::ClassLoader cl(argv[1], argv[2]); - for (const auto& declared : cl.getDeclaredClasses()) - { + for (const auto & declared : cl.getDeclaredClasses()) { std::cout << declared << std::endl; } return 0;