15 #ifndef RCLCPP__NODE_INTERFACES__NODE_INTERFACES_HPP_
16 #define RCLCPP__NODE_INTERFACES__NODE_INTERFACES_HPP_
20 #include "rclcpp/detail/template_unique.hpp"
21 #include "rclcpp/node_interfaces/detail/node_interfaces_helpers.hpp"
23 #define ALL_RCLCPP_NODE_INTERFACES \
24 rclcpp::node_interfaces::NodeBaseInterface, \
25 rclcpp::node_interfaces::NodeClockInterface, \
26 rclcpp::node_interfaces::NodeGraphInterface, \
27 rclcpp::node_interfaces::NodeLoggingInterface, \
28 rclcpp::node_interfaces::NodeParametersInterface, \
29 rclcpp::node_interfaces::NodeServicesInterface, \
30 rclcpp::node_interfaces::NodeTimeSourceInterface, \
31 rclcpp::node_interfaces::NodeTimersInterface, \
32 rclcpp::node_interfaces::NodeTopicsInterface, \
33 rclcpp::node_interfaces::NodeTypeDescriptionsInterface, \
34 rclcpp::node_interfaces::NodeWaitablesInterface
39 namespace node_interfaces
44 template<
typename ... InterfaceTs>
47 detail::NodeInterfacesStorage<InterfaceTs ...>,
51 detail::NodeInterfacesStorage<InterfaceTs ...>,
56 0 !=
sizeof ...(InterfaceTs),
57 "must provide at least one interface as a template argument");
59 rclcpp::detail::template_unique_v<InterfaceTs ...>,
60 "must provide unique template parameters");
149 template<
typename NodeT>
156 : NodeInterfacesSupportsT()
159 explicit NodeInterfaces(std::shared_ptr<InterfaceTs>... args)
160 : NodeInterfacesSupportsT(args ...)
A helper class for aggregating node interfaces.
NodeInterfaces(NodeT &node)
Create a new NodeInterfaces object using the given node-like object's interfaces.
Versions of rosidl_typesupport_cpp::get_message_type_support_handle that handle adapted types.
Stores the interfaces in a tuple, provides constructors, and getters.
Prototype of NodeInterfacesSupportCheck template meta-function.
Prototype of NodeInterfacesSupports.