| Index: mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a91f6102af762659b67edb9e8b1dd7689e12b47f
|
| --- /dev/null
|
| +++ b/mojo/public/tools/bindings/generators/dart_templates/struct_definition.tmpl
|
| @@ -0,0 +1,74 @@
|
| +{#--- Begin #}
|
| +
|
| +class {{struct.name}} implements bindings.MojoType<{{struct.name}}> {
|
| +{#--- Enums #}
|
| +{%- from "enum_definition.tmpl" import enum_def %}
|
| +{% for enum in struct.enums %}
|
| + {{enum_def(" static ", enum)}}
|
| +{%- endfor %}
|
| +
|
| +
|
| +{#--- Constants #}
|
| +{% for constant in struct.constants %}
|
| + static final {{constant.name}} = {{constant.value|expression_to_text}};
|
| +{%- endfor %}
|
| +
|
| +
|
| +{#--- initDefaults() #}
|
| +{%- for packed_field in struct.packed.packed_fields %}
|
| + {{packed_field.field.kind|dart_decl_type}} {{packed_field.field.name}} = {{packed_field.field|default_value}};
|
| +{%- endfor %}
|
| +
|
| + {{struct.name}}();
|
| +
|
| +{#--- Encoding and decoding #}
|
| +
|
| + static const int encodedSize =
|
| + bindings.kStructHeaderSize + {{struct.packed|payload_size}};
|
| +
|
| + static {{struct.name}} decode(bindings.MojoDecoder decoder) {
|
| + var packed;
|
| + var val = new {{struct.name}}();
|
| + var numberOfBytes = decoder.readUint32();
|
| + var numberOfFields = decoder.readUint32();
|
| +{%- for byte in struct.bytes %}
|
| +{%- if byte.packed_fields|length > 1 %}
|
| + packed = decoder.readUint8();
|
| +{%- for packed_field in byte.packed_fields %}
|
| + val.{{packed_field.field.name}} = (((packed >> {{packed_field.bit}}) & 1) != 0) ? true : false;
|
| +{%- endfor %}
|
| +{%- else %}
|
| +{%- for packed_field in byte.packed_fields %}
|
| + val.{{packed_field.field.name}} = decoder.{{packed_field.field.kind|decode_snippet}};
|
| +{%- endfor %}
|
| +{%- endif %}
|
| +{%- if byte.is_padding %}
|
| + decoder.skip(1);
|
| +{%- endif %}
|
| +{%- endfor %}
|
| + return val;
|
| + }
|
| +
|
| + static void encode(bindings.MojoEncoder encoder, {{struct.name}} val) {
|
| + var packed;
|
| + encoder.writeUint32({{struct.name}}.encodedSize);
|
| + encoder.writeUint32({{struct.packed.packed_fields|length}});
|
| +
|
| +{%- for byte in struct.bytes %}
|
| +{%- if byte.packed_fields|length > 1 %}
|
| + packed = 0;
|
| +{%- for packed_field in byte.packed_fields %}
|
| + packed |= (val.{{packed_field.field.name}} & 1) << {{packed_field.bit}}
|
| +{%- endfor %}
|
| + encoder.writeUint8(packed);
|
| +{%- else %}
|
| +{%- for packed_field in byte.packed_fields %}
|
| + encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.name}});
|
| +{%- endfor %}
|
| +{%- endif %}
|
| +{%- if byte.is_padding %}
|
| + encoder.skip(1);
|
| +{%- endif %}
|
| +{%- endfor %}
|
| + }
|
| +}
|
|
|