1{% import 'templates/fields/base.tmpl' as base %}
2{% from 'templates/fields/field.tmpl' import getter_expression, setter_expression, decode %}
3
4{% macro decl_public_methods(field) %}
5{{field.type_name}}* {{field.getter_method_name}}() const {
6  return {{decode(field, getter_expression(field))}}.get();
7}
8
9void {{field.setter_method_name}}({{field.wrapper_pointer_name}}<{{field.type_name}}> v) {
10{% if field.group.parent %}
11  {{setter_expression(field)}} = std::move(v);
12{% else %}
13  {{field.name}} = std::move(v);
14{% endif %}
15}
16{%- endmacro %}
17
18{% macro decl_protected_methods(field) -%}
19{%- endmacro %}
20