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

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

Issue 2855263002: Mojo bindings: support generating identifers using different style rules for different target langu…
Patch Set: . Created 3 years, 7 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
1 {#--- Begin #} 1 {#--- Begin #}
2 function {{struct.name}}(values) { 2 function {{struct.stylized_name}}(values) {
3 this.initDefaults_(); 3 this.initDefaults_();
4 this.initFields_(values); 4 this.initFields_(values);
5 } 5 }
6 6
7 {#--- Enums #} 7 {#--- Enums #}
8 {%- from "enum_definition.tmpl" import enum_def %} 8 {%- from "enum_definition.tmpl" import enum_def %}
9 {% for enum in struct.enums %} 9 {% for enum in struct.enums %}
10 {{enum_def("%s.%s"|format(struct.name, enum.name), enum)}} 10 {{enum_def("%s.%s"|format(struct.stylized_name, enum.stylized_name), enum)}}
11 {%- endfor %} 11 {%- endfor %}
12 12
13 {#--- Constants #} 13 {#--- Constants #}
14 {% for constant in struct.constants %} 14 {% for constant in struct.constants %}
15 {{struct.name}}.{{constant.name}} = {{constant.value|expression_to_text}}; 15 {{struct.stylized_name}}.{{constant.stylized_name}} =
16 {{constant.value|expression_to_text}};
16 {%- endfor %} 17 {%- endfor %}
17 18
18 {#--- initDefaults() #} 19 {#--- initDefaults() #}
19 {{struct.name}}.prototype.initDefaults_ = function() { 20 {{struct.stylized_name}}.prototype.initDefaults_ = function() {
20 {%- for packed_field in struct.packed.packed_fields %} 21 {%- for packed_field in struct.packed.packed_fields %}
21 this.{{packed_field.field.name}} = {{packed_field.field|default_value}}; 22 this.{{packed_field.field.stylized_name}} =
23 {{packed_field.field|default_value}};
22 {%- endfor %} 24 {%- endfor %}
23 }; 25 };
24 26
25 {#--- initFields() #} 27 {#--- initFields() #}
26 {{struct.name}}.prototype.initFields_ = function(fields) { 28 {{struct.stylized_name}}.prototype.initFields_ = function(fields) {
27 for(var field in fields) { 29 for(var field in fields) {
28 if (this.hasOwnProperty(field)) 30 if (this.hasOwnProperty(field))
29 this[field] = fields[field]; 31 this[field] = fields[field];
30 } 32 }
31 }; 33 };
32 34
33 {#--- Validation #} 35 {#--- Validation #}
34 36
35 {{struct.name}}.validate = function(messageValidator, offset) { 37 {{struct.stylized_name}}.validate = function(messageValidator, offset) {
36 var err; 38 var err;
37 err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize) ; 39 err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize) ;
38 if (err !== validator.validationError.NONE) 40 if (err !== validator.validationError.NONE)
39 return err; 41 return err;
40 42
41 var kVersionSizes = [ 43 var kVersionSizes = [
42 {%- for version in struct.versions %} 44 {%- for version in struct.versions %}
43 {version: {{version.version}}, numBytes: {{version.num_bytes}}}{% if not l oop.last %}, 45 {version: {{version.version}}, numBytes: {{version.num_bytes}}}{% if not l oop.last %},
44 {%- endif -%} 46 {%- endif -%}
45 {% endfor %} 47 {% endfor %}
46 ]; 48 ];
47 err = messageValidator.validateStructVersion(offset, kVersionSizes); 49 err = messageValidator.validateStructVersion(offset, kVersionSizes);
48 if (err !== validator.validationError.NONE) 50 if (err !== validator.validationError.NONE)
49 return err; 51 return err;
50 52
51 {#- Before validating fields introduced at a certain version, we need to add 53 {#- Before validating fields introduced at a certain version, we need to add
52 a version check, which makes sure we skip further validation if |object| 54 a version check, which makes sure we skip further validation if |object|
53 is from an earlier version. |last_checked_version| records the last 55 is from an earlier version. |last_checked_version| records the last
54 version that we have added such version check. #} 56 version that we have added such version check. #}
55 {%- from "validation_macros.tmpl" import validate_struct_field %} 57 {%- from "validation_macros.tmpl" import validate_struct_field %}
56 {%- set last_checked_version = 0 %} 58 {%- set last_checked_version = 0 %}
57 {%- for packed_field in struct.packed.packed_fields_in_ordinal_order %} 59 {%- for packed_field in struct.packed.packed_fields_in_ordinal_order %}
58 {%- set offset = packed_field|field_offset %} 60 {%- set offset = packed_field|field_offset %}
59 {%- set field = packed_field.field %} 61 {%- set field = packed_field.field %}
60 {%- set name = struct.name ~ '.' ~ field.name %} 62 {%- set name = struct.stylized_name ~ '.' ~ field.stylized_name %}
61 {% if field|is_object_field or field|is_any_handle_or_interface_field or 63 {% if field|is_object_field or field|is_any_handle_or_interface_field or
62 field|is_enum_field %} 64 field|is_enum_field %}
63 {% if packed_field.min_version > last_checked_version %} 65 {% if packed_field.min_version > last_checked_version %}
64 {% set last_checked_version = packed_field.min_version %} 66 {% set last_checked_version = packed_field.min_version %}
65 // version check {{name}} 67 // version check {{name}}
66 if (!messageValidator.isFieldInStructVersion(offset, {{packed_field.min_vers ion}})) 68 if (!messageValidator.isFieldInStructVersion(offset, {{packed_field.min_vers ion}}))
67 return validator.validationError.NONE; 69 return validator.validationError.NONE;
68 {%- endif -%} 70 {%- endif -%}
69 {{validate_struct_field(field, offset, name)|indent(4)}} 71 {{validate_struct_field(field, offset, name)|indent(4)}}
70 {%- endif %} 72 {%- endif %}
71 {%- endfor %} 73 {%- endfor %}
72 74
73 return validator.validationError.NONE; 75 return validator.validationError.NONE;
74 }; 76 };
75 77
76 {#--- Encoding and decoding #} 78 {#--- Encoding and decoding #}
77 79
78 {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payloa d_size}}; 80 {{struct.stylized_name}}.encodedSize = codec.kStructHeaderSize +
81 {{struct.packed|payload_size}};
79 82
80 {{struct.name}}.decode = function(decoder) { 83 {{struct.stylized_name}}.decode = function(decoder) {
81 var packed; 84 var packed;
82 var val = new {{struct.name}}(); 85 var val = new {{struct.stylized_name}}();
83 var numberOfBytes = decoder.readUint32(); 86 var numberOfBytes = decoder.readUint32();
84 var version = decoder.readUint32(); 87 var version = decoder.readUint32();
85 {%- for byte in struct.bytes %} 88 {%- for byte in struct.bytes %}
86 {%- if byte.packed_fields|length >= 1 and 89 {%- if byte.packed_fields|length >= 1 and
87 byte.packed_fields[0].field|is_bool_field %} 90 byte.packed_fields[0].field|is_bool_field %}
88 packed = decoder.readUint8(); 91 packed = decoder.readUint8();
89 {%- for packed_field in byte.packed_fields %} 92 {%- for packed_field in byte.packed_fields %}
90 val.{{packed_field.field.name}} = (packed >> {{packed_field.bit}}) & 1 ? tru e : false; 93 val.{{packed_field.field.stylized_name}} =
94 (packed >> {{packed_field.bit}}) & 1 ? true : false;
91 {%- endfor %} 95 {%- endfor %}
92 {%- else %} 96 {%- else %}
93 {%- for packed_field in byte.packed_fields %} 97 {%- for packed_field in byte.packed_fields %}
94 val.{{packed_field.field.name}} = decoder.{{packed_field.field.kind|decode_s nippet}}; 98 val.{{packed_field.field.stylized_name}} =
99 decoder.{{packed_field.field.kind|decode_snippet}};
95 {%- endfor %} 100 {%- endfor %}
96 {%- endif %} 101 {%- endif %}
97 {%- if byte.is_padding %} 102 {%- if byte.is_padding %}
98 decoder.skip(1); 103 decoder.skip(1);
99 {%- endif %} 104 {%- endif %}
100 {%- endfor %} 105 {%- endfor %}
101 return val; 106 return val;
102 }; 107 };
103 108
104 {{struct.name}}.encode = function(encoder, val) { 109 {{struct.stylized_name}}.encode = function(encoder, val) {
105 var packed; 110 var packed;
106 encoder.writeUint32({{struct.name}}.encodedSize); 111 encoder.writeUint32({{struct.stylized_name}}.encodedSize);
107 encoder.writeUint32({{struct.versions[-1].version}}); 112 encoder.writeUint32({{struct.versions[-1].version}});
108 113
109 {%- for byte in struct.bytes %} 114 {%- for byte in struct.bytes %}
110 {%- if byte.packed_fields|length >= 1 and 115 {%- if byte.packed_fields|length >= 1 and
111 byte.packed_fields[0].field|is_bool_field %} 116 byte.packed_fields[0].field|is_bool_field %}
112 packed = 0; 117 packed = 0;
113 {%- for packed_field in byte.packed_fields %} 118 {%- for packed_field in byte.packed_fields %}
114 packed |= (val.{{packed_field.field.name}} & 1) << {{packed_field.bit}} 119 packed |=
120 val.{{packed_field.field.stylized_name}} & 1) << {{packed_field.bit}}
115 {%- endfor %} 121 {%- endfor %}
116 encoder.writeUint8(packed); 122 encoder.writeUint8(packed);
117 {%- else %} 123 {%- else %}
118 {%- for packed_field in byte.packed_fields %} 124 {%- for packed_field in byte.packed_fields %}
119 encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.n ame}}); 125 encoder.{{packed_field.field.kind|encode_snippet}}val.
126 {{packed_field.field.stylized_name}});
120 {%- endfor %} 127 {%- endfor %}
121 {%- endif %} 128 {%- endif %}
122 {%- if byte.is_padding %} 129 {%- if byte.is_padding %}
123 encoder.skip(1); 130 encoder.skip(1);
124 {%- endif %} 131 {%- endif %}
125 {%- endfor %} 132 {%- endfor %}
126 }; 133 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698