Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(652)

Side by Side Diff: mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 {#--- Begin #}
2 function {{struct.name}}(values) {
3 this.initDefaults_();
4 this.initFields_(values);
5 }
6
7 {#--- Enums #}
8 {%- from "enum_definition.tmpl" import enum_def %}
9 {% for enum in struct.enums %}
10 {{enum_def("%s.%s"|format(struct.name, enum.name), enum)}}
11 {%- endfor %}
12
13 {#--- Constants #}
14 {% for constant in struct.constants %}
15 {{struct.name}}.{{constant.name}} = {{constant.value|expression_to_text}};
16 {%- endfor %}
17
18 {#--- initDefaults() #}
19 {{struct.name}}.prototype.initDefaults_ = function() {
20 {%- for packed_field in struct.packed.packed_fields %}
21 this.{{packed_field.field.name}} = {{packed_field.field|default_value}};
22 {%- endfor %}
23 };
24
25 {#--- initFields() #}
26 {{struct.name}}.prototype.initFields_ = function(fields) {
27 for(var field in fields) {
28 if (this.hasOwnProperty(field))
29 this[field] = fields[field];
30 }
31 };
32
33 {#--- Validation #}
34
35 {{struct.name}}.validate = function(messageValidator, offset) {
36 var err;
37 err = messageValidator.validateStructHeader(offset, {{struct.name}}.encodedS ize, {{struct.versions[-1].version}});
38 if (err !== validator.validationError.NONE)
39 return err;
40
41 {%- from "validation_macros.tmpl" import validate_struct_field %}
42 {%- for packed_field in struct.packed.packed_fields %}
43 {%- set offset = packed_field|field_offset %}
44 {%- set field = packed_field.field %}
45 {%- set name = struct.name ~ '.' ~ field.name %}
46 {{validate_struct_field(field, offset, name)|indent(4)}}
47 {%- endfor %}
48
49 return validator.validationError.NONE;
50 };
51
52 {#--- Encoding and decoding #}
53
54 {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payloa d_size}};
55
56 {{struct.name}}.decode = function(decoder) {
57 var packed;
58 var val = new {{struct.name}}();
59 var numberOfBytes = decoder.readUint32();
60 var version = decoder.readUint32();
61 {%- for byte in struct.bytes %}
62 {%- if byte.packed_fields|length > 1 %}
63 packed = decoder.readUint8();
64 {%- for packed_field in byte.packed_fields %}
65 val.{{packed_field.field.name}} = (packed >> {{packed_field.bit}}) & 1 ? tru e : false;
66 {%- endfor %}
67 {%- else %}
68 {%- for packed_field in byte.packed_fields %}
69 val.{{packed_field.field.name}} = decoder.{{packed_field.field.kind|decode_s nippet}};
70 {%- endfor %}
71 {%- endif %}
72 {%- if byte.is_padding %}
73 decoder.skip(1);
74 {%- endif %}
75 {%- endfor %}
76 return val;
77 };
78
79 {{struct.name}}.encode = function(encoder, val) {
80 var packed;
81 encoder.writeUint32({{struct.name}}.encodedSize);
82 encoder.writeUint32({{struct.versions[-1].version}});
83
84 {%- for byte in struct.bytes %}
85 {%- if byte.packed_fields|length > 1 %}
86 packed = 0;
87 {%- for packed_field in byte.packed_fields %}
88 packed |= (val.{{packed_field.field.name}} & 1) << {{packed_field.bit}}
89 {%- endfor %}
90 encoder.writeUint8(packed);
91 {%- else %}
92 {%- for packed_field in byte.packed_fields %}
93 encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.n ame}});
94 {%- endfor %}
95 {%- endif %}
96 {%- if byte.is_padding %}
97 encoder.skip(1);
98 {%- endif %}
99 {%- endfor %}
100 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698