Ariles
Loading...
Searching...
No Matches
modifier.h
Go to the documentation of this file.
1/**
2 @file
3 @author Alexander Sherikov
4
5 @copyright 2017-2024 Alexander Sherikov, Licensed under the Apache License, Version 2.0.
6 (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
7
8 @brief
9*/
10
11#include "node_wrapper.h"
12
13
14namespace ariles2
15{
16 namespace ns_ros2param
17 {
19 {
20 public:
21 // https://docs.ros2.org/latest/api/rclcpp/classrclcpp_1_1Node.html
22 rclcpp::node_interfaces::NodeParametersInterface::SharedPtr nh_;
23
24 std::vector<rclcpp::Parameter> parameters_;
25
26 const std::string separator_ = ".";
27
28 public:
29 explicit ModifierImplBase(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &nh)
30 {
31 nh_ = nh;
32 }
33
34
35 template <class t_Element>
36 void setParameter(const t_Element element)
37 {
39 CPPUT_TRACE_VALUE(back().node_);
40 CPPUT_TRACE_TYPE(t_Element);
41
42 parameters_.emplace_back(back().node_, element);
43 }
44
45 void setParameter(const std::string &element)
46 {
48 CPPUT_TRACE_VALUE(back().node_);
49 parameters_.emplace_back(back().node_, element);
50 }
51
53 {
55 if (back().isBuiltinArray())
56 {
57 std::visit([this](auto &&arg) { setParameter(arg); }, back().array_values_);
58 }
59 }
60 };
61 } // namespace ns_ros2param
62} // namespace ariles2
rclcpp::node_interfaces::NodeParametersInterface::SharedPtr nh_
Definition modifier.h:22
std::vector< rclcpp::Parameter > parameters_
Definition modifier.h:24
void setParameter(const std::string &element)
Definition modifier.h:45
ModifierImplBase(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &nh)
Definition modifier.h:29
void setParameter(const t_Element element)
Definition modifier.h:36
#define CPPUT_TRACE_FUNCTION
Definition trace.h:126
#define CPPUT_TRACE_TYPE(type)
Definition trace.h:128
#define CPPUT_TRACE_VALUE(value)
Definition trace.h:127