@@ -24,10 +24,28 @@ namespace hardware_interface
2424constexpr char DEFAULT_REGISTRY_KEY[] = " ros2_control" ;
2525constexpr char DEFAULT_INTROSPECTION_TOPIC[] = " ~/introspection_data" ;
2626
27- #define REGISTER_ROS2_CONTROL_INTROSPECTION (ID, ENTITY ) \
27+ #define REGISTER_ROS2_CONTROL_INTROSPECTION_2_ARGS (ID, ENTITY ) \
2828 REGISTER_ENTITY ( \
2929 hardware_interface::DEFAULT_REGISTRY_KEY, get_name() + " ." + ID, ENTITY, \
3030 &stats_registrations_, false )
31+
32+ #define REGISTER_ROS2_CONTROL_INTROSPECTION_3_ARGS (ID, ENTITY, ENABLE ) \
33+ REGISTER_ENTITY ( \
34+ hardware_interface::DEFAULT_REGISTRY_KEY, get_name() + " ." + ID, ENTITY, \
35+ &stats_registrations_, ENABLE)
36+
37+ #ifndef GET_4TH_ARG
38+ #define GET_4TH_ARG (arg1, arg2, arg3, arg4, ...) arg4
39+ #endif
40+
41+ #define REGISTER_ROS2_CONTROL_INTROSPECTION_MACRO_CHOOSER (...) \
42+ GET_4TH_ARG ( \
43+ __VA_ARGS__, REGISTER_ROS2_CONTROL_INTROSPECTION_3_ARGS, \
44+ REGISTER_ROS2_CONTROL_INTROSPECTION_2_ARGS)
45+
46+ #define REGISTER_ROS2_CONTROL_INTROSPECTION (...) \
47+ REGISTER_ROS2_CONTROL_INTROSPECTION_MACRO_CHOOSER (__VA_ARGS__)(__VA_ARGS__)
48+
3149} // namespace hardware_interface
3250
3351#endif // HARDWARE_INTERFACE__INTROSPECTION_HPP_
0 commit comments