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

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

Issue 268363003: Mojo: Add support for constants to the IDL compiler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: JS export constants Created 6 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 | Annotate | Revision Log
OLDNEW
1 {%- macro set_default(module, kind, value, depth) -%} 1 {%- macro set_default(module, kind, value, depth) -%}
2 {#--- Strings ---#} 2 {#--- Strings ---#}
3 {%- if kind|is_string_kind -%} 3 {%- if kind|is_string_kind -%}
4 {{caller(value|expression_to_text(module))}} 4 {{caller(value|expression_to_text(module))}}
5 {#--- Arrays ---#} 5 {#--- Arrays ---#}
6 {%- elif kind|is_array_kind %} 6 {%- elif kind|is_array_kind %}
7 {%- set _ = value|verify_token_type("ARRAY") %} 7 {%- set _ = value|verify_token_type("ARRAY") %}
8 { 8 {
9 var tmp{{depth}} = []; 9 var tmp{{depth}} = [];
10 {%- for element in value[1] %} 10 {%- for element in value[1] %}
(...skipping 22 matching lines...) Expand all
33 {%- endfor -%} 33 {%- endfor -%}
34 {{caller("tmp" ~ depth)|indent(2)}} 34 {{caller("tmp" ~ depth)|indent(2)}}
35 } 35 }
36 {#--- POD types ---#} 36 {#--- POD types ---#}
37 {%- else -%} 37 {%- else -%}
38 {{caller(value|expression_to_text(module))}} 38 {{caller(value|expression_to_text(module))}}
39 {%- endif %} 39 {%- endif %}
40 {%- endmacro %} 40 {%- endmacro %}
41 41
42 {#--- Begin #} 42 {#--- Begin #}
43 {#--- Enums. We must define these before the constructor because they 43 function {{struct.name}}() {
44 may be used there. Later, we alias these to be class static variables. #} 44 this.initDefaults_();
45 }
46
47 {#--- Enums #}
45 {%- from "enum_definition.tmpl" import enum_def %} 48 {%- from "enum_definition.tmpl" import enum_def %}
46 {% for enum in struct.enums %} 49 {% for enum in struct.enums %}
47 var {{enum_def("%s_%s"|format(struct.name, enum.name), enum, module)}} 50 {{enum_def("%s.%s"|format(struct.name, enum.name), enum, module)}}
48 {% endfor %} 51 {% endfor %}
49 52
50 {#--- Constructor #} 53 {#--- Constants #}
51 function {{struct.name}}() { 54 {% for constant in struct.constants %}
55 {{struct.name}}.{{constant.name}} = {{constant.value|expression_to_text(module )}};
56 {% endfor %}
57
58 {#--- Set up defaults #}
59 {{struct.name}}.prototype.initDefaults_ = function() {
52 {%- for packed_field in struct.packed.packed_fields %} 60 {%- for packed_field in struct.packed.packed_fields %}
53 {%- if packed_field.field.default %} 61 {%- if packed_field.field.default %}
54 {%- filter indent(4) %} 62 {%- filter indent(4) %}
55 {%- call(result) set_default(module, packed_field.field.kind, packed_field.f ield.default, 0) %} 63 {%- call(result) set_default(module, packed_field.field.kind, packed_field.f ield.default, 0) %}
56 this.{{packed_field.field.name}} = {{result}}; 64 this.{{packed_field.field.name}} = {{result}};
57 {%- endcall %} 65 {%- endcall %}
58 {%- endfilter %} 66 {%- endfilter %}
59 {%- else %} 67 {%- else %}
60 this.{{packed_field.field.name}} = {{packed_field.field|default_value}}; 68 this.{{packed_field.field.name}} = {{packed_field.field|default_value}};
61 {%- endif %} 69 {%- endif %}
62 {%- endfor %} 70 {%- endfor %}
63 } 71 };
64
65 {#--- Alias any Struct_Enum enums to Struct.Enum #}
66 {% for enum in struct.enums %}
67 {{struct.name}}.{{enum.name}} = {{struct.name}}_{{enum.name}};
68 {%- endfor %}
69 72
70 {#--- Encoding and decoding #} 73 {#--- Encoding and decoding #}
71 74
72 {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payloa d_size}}; 75 {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payloa d_size}};
73 76
74 {{struct.name}}.decode = function(decoder) { 77 {{struct.name}}.decode = function(decoder) {
75 var packed; 78 var packed;
76 var val = new {{struct.name}}(); 79 var val = new {{struct.name}}();
77 var numberOfBytes = decoder.readUint32(); 80 var numberOfBytes = decoder.readUint32();
78 var numberOfFields = decoder.readUint32(); 81 var numberOfFields = decoder.readUint32();
(...skipping 30 matching lines...) Expand all
109 {%- else %} 112 {%- else %}
110 {%- for packed_field in byte.packed_fields %} 113 {%- for packed_field in byte.packed_fields %}
111 encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.n ame}}); 114 encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.n ame}});
112 {%- endfor %} 115 {%- endfor %}
113 {%- endif %} 116 {%- endif %}
114 {%- if byte.is_padding %} 117 {%- if byte.is_padding %}
115 encoder.skip(1); 118 encoder.skip(1);
116 {%- endif %} 119 {%- endif %}
117 {%- endfor %} 120 {%- endfor %}
118 }; 121 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698