{% from 'fields/field.tmpl' import encode, decode, const_ref, nonconst_ref, getter_expression, setter_expression, set_if_changed %}

{% macro decl_initial_method(field) -%}
inline static {{field.type_name}} {{field.initial_method_name}}() {
  return {{field.default_value}};
}
{%- endmacro %}

{% macro decl_getter_method(field) -%}
{{const_ref(field)}} {{field.getter_method_name}}() const {
  return {{decode(field, getter_expression(field))}};
}
{%- endmacro %}

{% macro decl_setter_method(field) -%}
void {{field.setter_method_name}}({{const_ref(field)}} v) {
  {{set_if_changed(field, encode(field, "v"))|indent(2)}}
}
{%- endmacro %}

{% macro decl_resetter_method(field) -%}
inline void {{field.resetter_method_name}}() {
  {{setter_expression(field)}} = {{encode(field, field.default_value)}};
}
{%- endmacro %}

{% macro decl_mutable_method(field) -%}
{{nonconst_ref(field)}} {{field.internal_mutable_method_name}}() {
  return {{decode(field, setter_expression(field))}};
}
{%- endmacro %}

{% macro decl_internal_getter_method(field) -%}
{{const_ref(field)}} {{field.internal_getter_method_name}}() const {
  return {{decode(field, getter_expression(field))}};
}
{%- endmacro %}

{% macro decl_internal_setter_method(field) -%}
void {{field.internal_setter_method_name}}({{const_ref(field)}} v) {
  {{set_if_changed(field, encode(field, "v"))|indent(2)}}
}
{%- endmacro %}
