Program Listing for File utilities.hpp
↰ Return to documentation for file (include/grid_map_cv/utilities.hpp
)
#ifndef GRID_MAP_CV__UTILITIES_HPP_
#define GRID_MAP_CV__UTILITIES_HPP_
#include <rclcpp/rclcpp.hpp>
#include <string>
#include <vector>
namespace grid_map
{
class ParameterReader
{
public:
ParameterReader(
std::string param_prefix,
rclcpp::node_interfaces::NodeParametersInterface::SharedPtr params_interface)
: param_prefix_(param_prefix),
params_interface_(params_interface) {}
template<typename T>
bool get_template(const std::string & name, T & value_out, rclcpp::ParameterType param_type)
{
rclcpp::Parameter param;
params_interface_->declare_parameter(param_prefix_ + name, param_type);
params_interface_->get_parameter(param_prefix_ + name, param);
if (param.get_type() != param_type) {
return false;
} else {
value_out = param.get_value<T>();
return true;
}
}
bool get(const std::string & name, int & value_out)
{
return get_template<int>(name, value_out, rclcpp::PARAMETER_INTEGER);
}
bool get(const std::string & name, double & value_out)
{
return get_template<double>(name, value_out, rclcpp::PARAMETER_DOUBLE);
}
bool get(const std::string & name, std::string & value_out)
{
return get_template<std::string>(name, value_out, rclcpp::PARAMETER_STRING);
}
bool get(const std::string & name, bool & value_out)
{
return get_template<bool>(name, value_out, rclcpp::PARAMETER_BOOL);
}
bool get(const std::string & name, std::vector<double> & value_out)
{
return get_template(name, value_out, rclcpp::PARAMETER_DOUBLE_ARRAY);
}
bool get(const std::string & name, std::vector<std::string> & value_out)
{
return get_template<std::vector<std::string>>(name, value_out, rclcpp::PARAMETER_STRING_ARRAY);
}
private:
std::string param_prefix_;
rclcpp::node_interfaces::NodeParametersInterface::SharedPtr params_interface_;
};
} // namespace grid_map
#endif // GRID_MAP_CV__UTILITIES_HPP_