/**
 * {{obj.c_type}}:
{%- if obj.comments %}
 *
{%- for comment in obj.comments %}
 * {{comment}}
{%- endfor %}
{%- endif %}
 */
typedef enum {
{%- for item in obj.items %}
    /**
     * {{item.c_define}}:
{%- if item.comments %}
     *
{%- for comment in item.comments %}
     * {{comment}}
{%- endfor %}
{%- endif %}
{%- if item.since %}
     *
     * Since: {{item.since}}
{%- endif %}
     */
{%- if item.default %}
    {{item.c_define}} = {{item.default}},
{%- else %}
    {{item.c_define}},
{%- endif %}
{%- endfor %}
} {% if obj.is_bitfield %}G_GNUC_FLAG_ENUM{%- endif %} {{obj.c_type}};

{%- if not obj.items_any_defaults and not obj.item('Last') %}
#define {{obj.c_define_last}} {{obj.items|length}}
{%- endif %}

{%- if obj.export('ToString') == Export.PUBLIC %}
{%- if obj.is_bitfield %}
gchar *{{obj.c_method('ToString')}}({{obj.c_type}} val) G_GNUC_CONST;
{%- else %}
const gchar *{{obj.c_method('ToString')}}({{obj.c_type}} val) G_GNUC_CONST;
{%- endif %}
{%- endif %}

{%- if obj.export('FromString') == Export.PUBLIC %}
{{obj.c_type}} {{obj.c_method('FromString')}}(const gchar *val) G_GNUC_CONST G_GNUC_NON_NULL(1);
{%- endif %}
