{% for mapped_param in mapped_params -%}
for (const auto & value_{{loop.index}} : updated_params.{{mapped_param}}) {
{% endfor -%}
{%- filter indent(width=4) -%}
std::string value = fmt::format("{%- for mapped_param in mapped_params -%}{% if loop.index == 1 %}{}{% else %}.{}{% endif -%} {%- endfor -%}",
{%- for mapped_param in mapped_params -%}{% if loop.index == 1 %} value_{{loop.index}}{% else %}, value_{{loop.index}}{% endif -%} {%- endfor %});
{% if struct_name != "" %}
auto param_name = fmt::format("{}{}.{}.{}", prefix_, "{{struct_name}}", value, "{{parameter_field}}");
{% else %}
auto param_name = fmt::format("{}{}.{}", prefix_, value, "{{parameter_field}}");
{% endif -%}
if (param.get_name() == param_name) {
{%- filter indent(width=4) %}
{% if parameter_validations|length -%}
{{parameter_validations-}}
{% endif -%}
{% if struct_name != "" %}
updated_params.{{struct_name}}{% for map in parameter_map%}.{{map}}[value_{{loop.index}}]{% endfor %}.{{parameter_field}} = param.{{parameter_as_function}};
{% else %}
updated_params{% for map in parameter_map%}.{{map}}[value_{{loop.index}}]{% endfor %}.{{parameter_field}} = param.{{parameter_as_function}};
{% endif -%}
RCLCPP_DEBUG_STREAM(logger_, param.get_name() << ": " << param.get_type_name() << " = " << param.value_to_string());
{% endfilter -%}
}
{% endfilter -%}
{%- for mapped_param in mapped_params -%}
}
{% endfor -%}
