Fix get_node_interfaces functions taking a pointer (#821)
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
This commit is contained in:
parent
65188b021d
commit
4dbc7192d2
4 changed files with 35 additions and 9 deletions
|
@ -123,16 +123,18 @@ template<
|
||||||
typename std::enable_if<std::is_pointer<NodeType>::value, int>::type = 0
|
typename std::enable_if<std::is_pointer<NodeType>::value, int>::type = 0
|
||||||
>
|
>
|
||||||
rclcpp::node_interfaces::NodeBaseInterface *
|
rclcpp::node_interfaces::NodeBaseInterface *
|
||||||
get_node_base_interface(NodeType && node_pointer)
|
get_node_base_interface(NodeType node_pointer)
|
||||||
{
|
{
|
||||||
// Forward pointers to detail implmentation directly.
|
// Forward pointers to detail implmentation directly.
|
||||||
return detail::get_node_base_interface_from_pointer(std::forward<NodeType>(node_pointer));
|
return detail::get_node_base_interface_from_pointer(node_pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the NodeBaseInterface as a pointer from a "Node like" object.
|
/// Get the NodeBaseInterface as a pointer from a "Node like" object.
|
||||||
template<
|
template<
|
||||||
typename NodeType,
|
typename NodeType,
|
||||||
typename std::enable_if<!std::is_pointer<NodeType>::value, int>::type = 0
|
typename std::enable_if<
|
||||||
|
!std::is_pointer<typename std::remove_reference<NodeType>::type>::value, int
|
||||||
|
>::type = 0
|
||||||
>
|
>
|
||||||
rclcpp::node_interfaces::NodeBaseInterface *
|
rclcpp::node_interfaces::NodeBaseInterface *
|
||||||
get_node_base_interface(NodeType && node_reference)
|
get_node_base_interface(NodeType && node_reference)
|
||||||
|
|
|
@ -123,16 +123,18 @@ template<
|
||||||
typename std::enable_if<std::is_pointer<NodeType>::value, int>::type = 0
|
typename std::enable_if<std::is_pointer<NodeType>::value, int>::type = 0
|
||||||
>
|
>
|
||||||
rclcpp::node_interfaces::NodeTimersInterface *
|
rclcpp::node_interfaces::NodeTimersInterface *
|
||||||
get_node_timers_interface(NodeType && node_pointer)
|
get_node_timers_interface(NodeType node_pointer)
|
||||||
{
|
{
|
||||||
// Forward pointers to detail implmentation directly.
|
// Forward pointers to detail implmentation directly.
|
||||||
return detail::get_node_timers_interface_from_pointer(std::forward<NodeType>(node_pointer));
|
return detail::get_node_timers_interface_from_pointer(node_pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the NodeTimersInterface as a pointer from a "Node like" object.
|
/// Get the NodeTimersInterface as a pointer from a "Node like" object.
|
||||||
template<
|
template<
|
||||||
typename NodeType,
|
typename NodeType,
|
||||||
typename std::enable_if<!std::is_pointer<NodeType>::value, int>::type = 0
|
typename std::enable_if<
|
||||||
|
!std::is_pointer<typename std::remove_reference<NodeType>::type>::value, int
|
||||||
|
>::type = 0
|
||||||
>
|
>
|
||||||
rclcpp::node_interfaces::NodeTimersInterface *
|
rclcpp::node_interfaces::NodeTimersInterface *
|
||||||
get_node_timers_interface(NodeType && node_reference)
|
get_node_timers_interface(NodeType && node_reference)
|
||||||
|
|
|
@ -123,16 +123,18 @@ template<
|
||||||
typename std::enable_if<std::is_pointer<NodeType>::value, int>::type = 0
|
typename std::enable_if<std::is_pointer<NodeType>::value, int>::type = 0
|
||||||
>
|
>
|
||||||
rclcpp::node_interfaces::NodeTopicsInterface *
|
rclcpp::node_interfaces::NodeTopicsInterface *
|
||||||
get_node_topics_interface(NodeType && node_pointer)
|
get_node_topics_interface(NodeType node_pointer)
|
||||||
{
|
{
|
||||||
// Forward pointers to detail implmentation directly.
|
// Forward pointers to detail implmentation directly.
|
||||||
return detail::get_node_topics_interface_from_pointer(std::forward<NodeType>(node_pointer));
|
return detail::get_node_topics_interface_from_pointer(node_pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the NodeTopicsInterface as a pointer from a "Node like" object.
|
/// Get the NodeTopicsInterface as a pointer from a "Node like" object.
|
||||||
template<
|
template<
|
||||||
typename NodeType,
|
typename NodeType,
|
||||||
typename std::enable_if<!std::is_pointer<NodeType>::value, int>::type = 0
|
typename std::enable_if<
|
||||||
|
!std::is_pointer<typename std::remove_reference<NodeType>::type>::value, int
|
||||||
|
>::type = 0
|
||||||
>
|
>
|
||||||
rclcpp::node_interfaces::NodeTopicsInterface *
|
rclcpp::node_interfaces::NodeTopicsInterface *
|
||||||
get_node_topics_interface(NodeType && node_reference)
|
get_node_topics_interface(NodeType && node_reference)
|
||||||
|
|
|
@ -85,6 +85,26 @@ TEST_F(TestGetNodeInterfaces, node_reference) {
|
||||||
>::value, "expected rclcpp::node_interfaces::NodeTopicsInterface *");
|
>::value, "expected rclcpp::node_interfaces::NodeTopicsInterface *");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(TestGetNodeInterfaces, rclcpp_node_pointer) {
|
||||||
|
rclcpp::Node * node_pointer = this->node.get();
|
||||||
|
auto result = rclcpp::node_interfaces::get_node_topics_interface(node_pointer);
|
||||||
|
static_assert(
|
||||||
|
std::is_same<
|
||||||
|
rclcpp::node_interfaces::NodeTopicsInterface *,
|
||||||
|
decltype(result)
|
||||||
|
>::value, "expected rclcpp::node_interfaces::NodeTopicsInterface *");
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TestGetNodeInterfaces, node_pointer) {
|
||||||
|
NodeWrapper * wrapped_node_pointer = this->wrapped_node.get();
|
||||||
|
auto result = rclcpp::node_interfaces::get_node_topics_interface(wrapped_node_pointer);
|
||||||
|
static_assert(
|
||||||
|
std::is_same<
|
||||||
|
rclcpp::node_interfaces::NodeTopicsInterface *,
|
||||||
|
decltype(result)
|
||||||
|
>::value, "expected rclcpp::node_interfaces::NodeTopicsInterface *");
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(TestGetNodeInterfaces, interface_shared_pointer) {
|
TEST_F(TestGetNodeInterfaces, interface_shared_pointer) {
|
||||||
std::shared_ptr<rclcpp::node_interfaces::NodeTopicsInterface> interface_shared_ptr =
|
std::shared_ptr<rclcpp::node_interfaces::NodeTopicsInterface> interface_shared_ptr =
|
||||||
this->node->get_node_topics_interface();
|
this->node->get_node_topics_interface();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue