blob: 0b5a88d5e494ac15a0994ce8dd705c15c909e397 [file] [log] [blame]
{%- macro enum_def(enum) -%}
class {{enum|name}} extends bindings.MojoEnum {
{%- for field in enum.fields %}
static const {{field.name}} = const {{enum|name}}._({{field.resolved_value}});
{%- endfor %}
const {{enum|name}}._(int v) : super(v);
static const Map<String, {{enum|name}}> valuesMap = const {
{%- for field in enum.fields %}
"{{field.name}}": {{field.name}},
{%- endfor %}
};
static const List<{{enum|name}}> values = const [
{%- for field in enum.fields %}
{{field.name}},
{%- endfor %}
];
static {{enum|name}} valueOf(String name) => valuesMap[name];
factory {{enum|name}}(int v) {
switch (v) {
{%- for field in enum.fields %}
case {{field.resolved_value}}:
return {{field.name}};
{%- endfor %}
default:
return null;
}
}
static {{enum|name}} decode(bindings.Decoder decoder0, int offset) {
int v = decoder0.decodeUint32(offset);
{{enum|name}} result = new {{enum|name}}(v);
if (result == null) {
throw new bindings.MojoCodecError(
'Bad value $v for enum {{enum|name}}.');
}
return result;
}
String toString() {
switch(this) {
{%- for field in enum.fields %}
case {{field.name}}:
return '{{enum|name}}.{{field.name}}';
{%- endfor %}
}
}
int toJson() => value;
}
{%- endmacro %}