| {%- macro enum_value(enum, field, index) -%} | |
| {%- if field.value -%} | |
| (int) ({{field.value|expression_to_text('i32')}}) | |
| {%- elif index == 0 -%} | |
| 0 | |
| {%- else -%} | |
| {{enum.fields[index - 1]|name}} + 1 | |
| {%- endif -%} | |
| {%- endmacro -%} | |
| {%- macro enum_def(enum, top_level) -%} | |
| public {{ 'static ' if not top_level }}final class {{enum|name}} { | |
| {% for field in enum.fields %} | |
| public static final int {{field|name}} = {{enum_value(enum, field, loop.index0)}}; | |
| {% endfor %} | |
| private {{enum|name}}() {} | |
| } | |
| {%- endmacro -%} |