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

Side by Side Diff: mojo/public/tools/bindings/generators/dart_templates/mojom_type_macros.tmpl

Issue 1539673003: Generate Mojom Types in Dart (Take 2) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Move and Standardize Mojom Type Functions Created 4 years, 11 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 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 {%- macro writeMojomTypeDef(type, typepkg, pkg) -%}
6 {%- if should_gen_mojom_types -%}
7 {%- if type|is_enum_kind -%}
8 {{typepkg}}MojomEnum _{{type|mojom_type_identifier|lower_camel}}() {
9 return {{ writeMojomType(type, typepkg, pkg) }};
10 }
11 {%- elif type|is_struct_kind -%}
12 {{typepkg}}MojomStruct _{{type|mojom_type_identifier|lower_camel}}() {
13 return {{ writeMojomType(type, typepkg, pkg) }};
14 }
15 {%- elif type|is_union_kind -%}
16 {{typepkg}}MojomUnion _{{type|mojom_type_identifier|lower_camel}}() {
17 return {{ writeMojomType(type, typepkg, pkg) }};
18 }
19 {%- elif type|is_interface_kind -%}
20 {{typepkg}}MojomInterface _{{type|mojom_type_identifier|lower_camel}}() {
21 return new {{typepkg}}MojomInterface()
22 ..declData = (new {{typepkg}}DeclarationData()
23 ..shortName = '{{type|mojom_type_name|upper_camel}}'
24 ..fullIdentifier = '{{type|fullidentifier}}')
25 ..interfaceName = '{{type|name}}'
26 ..methods = <int, {{typepkg}}MojomMethod>{
27 {%- for method in type.methods %}
28 _{{type|name}}_{{method|name}}Name: new {{typepkg}}MojomMethod()
29 ..declData = (new {{typepkg}}DeclarationData()
30 ..shortName = '{{method|mojom_type_name|upper_camel}}')
31 ..ordinal = _{{type|name}}_{{method|name}}Name
32 {%- if method.response_parameters != None %}
33 ..responseParams = _{{method.response_param_struct|mojom_type_identifier |lower_camel}}()
34 {%- endif %}
35 ..parameters = _{{method.param_struct|mojom_type_identifier|lower_camel} }(),
36 {%- endfor %}
37 };
38 }
39
40 {%- else -%}
41 {{ raise("Bad type name given: {{type|name}}") }}
42 {%- endif -%}
43 {%- endif -%}
44 {%- endmacro -%}
45
46
47 {%- macro writeMojomType(type, typepkg, pkg, topLevel=true) -%}
48 {%- if type|is_numerical_kind -%}{#- bool, int, and uint case -#}
49 new {{typepkg}}Type()
50 ..simpleType = {{typepkg}}SimpleType.{{type|simple_mojom_type_name}}
51 {%- elif type|is_any_handle_kind and not type|is_interface_request_kind -%}
52 new {{typepkg}}Type()
53 ..handleType = (new {{typepkg}}HandleType()
54 ..kind = {{typepkg}}HandleTypeKind.{{type|simple_mojom_type_name}}
55 {%- if type|is_nullable_kind %}
56 ..nullable = true
57 {% endif %})
58 {%- elif type|is_string_kind -%}
59 new {{typepkg}}Type()
60 ..stringType = (new {{typepkg}}StringType()
61 {%- if type|is_nullable_kind %}
62 ..nullable = true
63 {% endif %})
64 {%- elif type|is_array_kind -%}
65 {{writeTypeArrayType(type, typepkg, pkg)}}
66 {%- elif type|is_map_kind -%}
67 {{writeTypeMapType(type, typepkg, pkg)}}
68 {%- elif type|is_enum_kind or type|is_struct_kind or type|is_union_kind -%}
69 {%- if topLevel -%}
70 {%- if type|is_enum_kind -%}
71 {{writeMojomEnumType(type, typepkg, pkg)}}
72 {%- elif type|is_struct_kind -%}
73 {{writeMojomStructType(type, typepkg, pkg)}}
74 {%- else -%} {#- Must be a union -#}
75 {{writeMojomUnionType(type, typepkg, pkg)}}
76 {%- endif -%}
77 {%- else -%}
78 {{writeTypeTypeReference(type, typepkg, pkg)}}
79 {%- endif -%}
80 {%- elif type|is_interface_kind or type|is_interface_request_kind -%}
81 {{writeTypeTypeReference(type, typepkg, pkg)}}
82 {%- else -%}
83 {{ raise("Unsupported type: {{type|name}}") }}
84 {%- endif -%}
85 {%- endmacro -%}
86
87
88 {%- macro writeTypeArrayType(type, typepkg, pkg) -%}
89 new {{typepkg}}Type()..arrayType = (new {{typepkg}}ArrayType()
90 {%- if type|is_nullable_kind %}
91 ..nullable = true
92 {% endif -%}
93 {%- if type.length is not none -%}
94 ..fixedLength = {{type.length}}
95 {%- endif %}
96 ..elementType = ({{writeMojomType(type.kind, typepkg, pkg, false)|indent(8)} }))
97 {%- endmacro -%}
98
99 {%- macro writeTypeMapType(type, typepkg, pkg) -%}
100 new {{typepkg}}Type()..mapType = (new {{typepkg}}MapType()
101 {%- if type|is_nullable_kind %}
102 ..nullable = true
103 {% endif %}
104 ..keyType = ({{writeMojomType(type.key_kind, typepkg, pkg, false)|indent(8)} })
105 ..valueType = ({{writeMojomType(type.value_kind, typepkg, pkg, false)|indent (8)}}))
106 {%- endmacro -%}
107
108 {%- macro writeMojomEnumType(type, typepkg, pkg) -%}
109 new {{typepkg}}MojomEnum()
110 ..declData = (new {{typepkg}}DeclarationData()
111 ..shortName = '{{type|mojom_type_name|upper_camel}}'
112 ..fullIdentifier = '{{type|fullidentifier}}')
113 ..values = <{{typepkg}}EnumValue>[
114 {%- for field in type.fields %}
115 new {{typepkg}}EnumValue()
116 ..declData = (new {{typepkg}}DeclarationData()
117 ..shortName = '{{field|mojom_type_name|upper_camel}}')
118 ..enumTypeKey = {{writePackagedTypeID(type)}}
119 ..intValue = {{field.numeric_value}},
120 {%- endfor -%}
121 ]
122 {%- endmacro -%}
123
124
125 {%- macro writeTypeTypeReference(type, typepkg, pkg) -%}
126 new {{typepkg}}Type()
127 ..typeReference = ({{writeTypeReference(type, typepkg, pkg)}})
128 {%- endmacro -%}
129
130 {%- macro writeTypeReference(type, typepkg, pkg) -%}
131 new {{typepkg}}TypeReference()
132 {%- if type|is_nullable_kind %}
133 ..nullable = true
134 {% endif %}
135 {% if type|is_interface_request_kind %}{# Interface request collapses to inter face. #}
136 ..isInterfaceRequest = true
137 ..identifier = {{writePackagedTypeID(type.kind)}}
138 ..typeKey = {{writePackagedTypeID(type.kind)}}
139 {% else %}
140 ..identifier = {{writePackagedTypeID(type)}}
141 ..typeKey = {{writePackagedTypeID(type)}}
142 {% endif -%}
143 {%- endmacro -%}
144
145 {%- macro writePackagedTypeID(type) -%}
146 '{{type|mojom_type_identifier}}'
147 {%- endmacro -%}
148
149 {%- macro writeMojomStructType(type, typepkg, pkg) -%}
150 new {{typepkg}}MojomStruct()
151 ..declData = (new {{typepkg}}DeclarationData()
152 ..shortName = '{{type|mojom_type_name|upper_camel}}'
153 ..fullIdentifier = '{{type|fullidentifier}}')
154 {%- if type|is_nullable_kind %}
155 ..nullable = true
156 {% endif %}
157 ..fields = <{{typepkg}}StructField>[
158 {%- for field in type.fields %}
159 new {{typepkg}}StructField()
160 ..declData = (new {{typepkg}}DeclarationData()
161 ..shortName = '{{field|mojom_type_name|upper_camel}}')
162 ..type = ({{writeMojomType(field.kind, typepkg, pkg, false)|indent(6)}}) ,
163 {%- endfor -%}
164 ]
165 {%- endmacro -%}
166
167 {%- macro writeMojomUnionType(type, typepkg, pkg) -%}
168 new {{typepkg}}MojomUnion()
169 ..declData = (new {{typepkg}}DeclarationData()
170 ..shortName = '{{type|mojom_type_name|upper_camel}}'
171 ..fullIdentifier = '{{type|fullidentifier}}')
172 {%- if type|is_nullable_kind %}
173 ..nullable = true
174 {% endif %}
175 ..fields = <{{typepkg}}UnionField>[
176 {%- for field in type.fields %}
177 new {{typepkg}}UnionField()
178 ..declData = (new {{typepkg}}DeclarationData()
179 ..shortName = '{{field|name|upper_camel}}')
180 ..type = ({{writeMojomType(field.kind, typepkg, pkg, false)|indent(6)}})
181 ..tag = {{field.ordinal}},
182 {%- endfor -%}
183 ]
184 {%- endmacro -%}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698