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

{% 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, field.name)}};
}
{%- endmacro %}

{% macro decl_setter_method(field) -%}
void {{field.setter_method_name}}({{const_ref(field)}} v) {
  {{field.name}} = {{encode(field, "v")}};
}
{%- endmacro %}

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

{% macro decl_mutable_method(field) -%}
{{nonconst_ref(field)}} {{field.mutable_method_name}}() const {
  return {{decode(field, field.name)}};
}
{%- endmacro %}

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

{% macro decl_internal_setter_method(field) -%}
void {{field.internal_setter_method_name}}({{const_ref(field)}} v) {
  {{field.name}} = {{encode(field, "v")}};
}
{%- endmacro %}
