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

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

Issue 1345263002: Generate Mojom Types in Go (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Address Naming changes and Comment Updates Created 5 years, 2 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 writeMojomType(typepkg, type, pkg, exported=true, topLevel=true) -%}
6 {%- if type|identifier|identifier_check('WriteMojomType') -%} {#- Already printe d out -#}
7 {{writeTypeTypeReference(typepkg, type, pkg)}}
8 {%- else -%}
9
10 {%- if type|mojom_type(typepkg) != "" -%}{#- simple kind case -#}
11 &{{type|mojom_type(typepkg)}}
12 {%- elif type|is_array -%}
13 &{{writeTypeArrayType(typepkg, type, pkg, exported)}}
14 {%- elif type|is_map -%}
15 &{{writeTypeMapType(typepkg, type, pkg, exported)}}
16 {%- elif type|is_enum or type|is_struct or type|is_union -%}
17 {%- if topLevel -%}
18 {{- type|identifier|identifier_store('WriteMojomType') -}}
19 {%- if type|is_enum -%}
20 {{writeMojomEnumType(typepkg, type, pkg, exported)}}
21 {%- elif type|is_struct -%}
22 {{writeMojomStructType(typepkg, type, pkg, exported)}}
23 {%- else -%} {#- Must be a union -#}
24 {{writeMojomUnionType(typepkg, type, pkg, exported)}}
25 {%- endif -%}
26 {%- else -%}
27 {{writeTypeTypeReference(typepkg, type, pkg)}}
28 {%- endif -%}
29 {%- elif type|is_interface or type|is_interface_request -%}
30 {{- type|identifier|identifier_store('WriteMojomType') -}}
31 {{writeTypeTypeReference(typepkg, type, pkg)}}
32 {%- else -%}
33 ERROR: UNSUPPORTED TYPE
34 {%- endif -%}
35 {%- endif -%}
36 {%- endmacro -%}
37
38 {%- macro writeTypeTypeReference(typepkg, type, pkg) -%}
39 &{{typepkg}}TypeTypeReference{
40 Value: {{writeTypeReference(typepkg, type, pkg)}},
41 }
42 {%- endmacro -%}
43
44 {%- macro writeTypeReference(typepkg, type, pkg) -%}
45 {{typepkg}}TypeReference {
46 {%- if type|is_nullable -%}
47 Nullable: true,
48 {%- endif -%}
49 {%- if type|is_interface_request -%}{# Interface request collapses to interfac e. #}
50 IsInterfaceRequest: true,
51 Identifier: &{{writePackagedTypeID(typepkg, type.kind, pkg)}},
52 TypeKey: &{{writePackagedTypeID(typepkg, type.kind, pkg)}},
53 {%- else -%}
54 Identifier: &{{writePackagedTypeID(typepkg, type, pkg)}},
55 TypeKey: &{{writePackagedTypeID(typepkg, type, pkg)}},
56 {%- endif -%}
57 }
58 {%- endmacro -%}
59
60 {%- macro writePackagedTypeID(typepkg, type, pkg) -%}
61 {%- if type|package != '' -%}{{type|package}}.{%- endif -%}ID_{{type|mojom_type_ identifier}}
62 {%- endmacro -%}
63
64
65 {%- macro writeMojomTypeDef(typepkg, type, pkg, exported=True) -%}
66 {%- if should_gen_mojom_types -%}
67 {%- if type|is_enum -%}
68 // String names and labels used by the MojomEnum types.
69 var (
70 enumName_{{type|name}} = "{{type|name}}"
71 {% for field in type.fields %}
72 enumFieldName_{{type|name}}_{{field|name}} = "{{field|name}}"
73 {% endfor %}
74 )
75
76 func {{type|mojom_type_identifier}}() {{typepkg}}MojomEnum {
77 return {{ writeMojomType(typepkg, type, pkg, exported) }}
78 }
79 {%- elif type|is_struct -%}
80 // String names and labels used by the MojomStruct types.
81 var (
82 structName_{{type|name}} = "{{type|name}}"
83 {% for field in type.fields %}
84 structFieldName_{{type|name}}_{{field|name}} = "{{field|name}}"
85 {% endfor %}
86 )
87
88 func {{type|mojom_type_identifier}}() {{typepkg}}MojomStruct {
89 return {{ writeMojomType(typepkg, type, pkg, exported) }}
90 }
91 {%- elif type|is_union -%}
92 // String names and labels used by the MojomUnion types.
93 var (
94 unionName_{{type|name}} = "{{type|name}}"
95 {% for field in type.fields %}
96 unionFieldName_{{type|name}}_{{field|name}} = "{{field|name}}"
97 {% endfor %}
98 )
99
100 func {{type|mojom_type_identifier}}() {{typepkg}}MojomUnion {
101 return {{ writeMojomType(typepkg, type, pkg, exported) }}
102 }
103 {%- elif type|is_interface -%}
104 var (
105 interfaceName_{{type|name}} = "{{type|name}}"
106 {% for method in type.methods %}
107 interfaceMethodName_{{type|name}}_{{method|name}} = "{{method|name}}"
108 {% endfor %}
109 )
110
111 func {{type|mojom_type_identifier}}() {{typepkg}}MojomInterface {
112 responseParamsMap := make(map[string]*{{typepkg}}MojomStruct)
113 _ = responseParamsMap // To avoid the declared but unused compiler error
114 {% for method in type.methods %}
115 {% if method|has_response %}
116 mstruct_{{method|name}} := {{method.response_param_struct|mojom_type_identifie r}}()
117 responseParamsMap[interfaceMethodName_{{type|name}}_{{method|name}}] = &mstruc t_{{method|name}}
118 {% endif %}
119 {% endfor %}
120 return {{typepkg}}MojomInterface{
121 DeclData: &{{typepkg}}DeclarationData{
122 ShortName: &interfaceName_{{type|name}},
123 },
124 Methods: map[uint32]{{typepkg}}MojomMethod{
125 {%- for method in type.methods -%}
126 {{type|name(False)}}_{{method|name}}_Name: {{typepkg}}MojomMethod{
127 DeclData: &{{typepkg}}DeclarationData{
128 ShortName: &interfaceMethodName_{{type|name}}_{{method|name}},
129 },
130 Parameters: {{method.param_struct|mojom_type_identifier}}(),
131 ResponseParams: responseParamsMap[interfaceMethodName_{{type|name}}_{{me thod|name}}],
132 },
133 {%- endfor -%}
134 },
135 }
136 }
137 {%- else -%}
138 BAD TYPE NAME GIVEN
139 {%- endif -%}
140 {%- endif -%}
141 {%- endmacro -%}
142
143 {%- macro writeTypeArrayType(typepkg, type, pkg, exported) -%}
144 {{typepkg}}TypeArrayType{
145 Value: {{typepkg}}ArrayType{
146 {%- if type|is_nullable -%}
147 Nullable: true,
148 {%- endif -%}
149 {%- if type.length is not none -%}
150 FixedLength: {{type.length}},
151 {%- endif -%}
152 ElementType: {{writeMojomType(typepkg, type.kind, pkg, exported, false)}},
153 },
154 }
155 {%- endmacro -%}
156
157 {%- macro writeTypeMapType(typepkg, type, pkg, exported) -%}
158 {{typepkg}}TypeMapType{
159 Value: {{typepkg}}MapType{
160 {%- if type|is_nullable -%}
161 Nullable: true,
162 {%- endif -%}
163 KeyType: {{writeMojomType(typepkg, type.key_kind, pkg, exported, false)}},
164 ValueType: {{writeMojomType(typepkg, type.value_kind, pkg, exported, false )}},
165 },
166 }
167 {%- endmacro -%}
168
169 {%- macro writeMojomEnumType(typepkg, type, pkg, exported) -%}
170 {{typepkg}}MojomEnum{
171 DeclData: &{{typepkg}}DeclarationData{
172 ShortName: &enumName_{{type|name}},
173 },
174 Values: []{{typepkg}}EnumValue{
175 {%- for field in type.fields -%}
176 {{typepkg}}EnumValue{
177 DeclData: &{{typepkg}}DeclarationData{
178 ShortName: &enumFieldName_{{type|name}}_{{field|name}},
179 },
180 EnumTypeKey: {{writePackagedTypeID(typepkg, type, pkg)}},
181 IntValue: int32({{field.numeric_value}}),
182 },
183 {%- endfor -%}
184 },
185 }
186 {%- endmacro -%}
187
188
189 {%- macro writeMojomStructType(typepkg, type, pkg, exported) -%}
190 {{typepkg}}MojomStruct{
191 DeclData: &{{typepkg}}DeclarationData{
192 ShortName: &structName_{{type|name}},
193 },
194 {%- if type|is_nullable -%}
195 Nullable: true,
196 {%- endif -%}
197 Fields: []{{typepkg}}StructField{
198 {%- for field in type.fields -%}
199 {{typepkg}}StructField{
200 DeclData: &{{typepkg}}DeclarationData{
201 ShortName: &structFieldName_{{type|name}}_{{field|name}},
202 },
203 Type: {{writeMojomType(typepkg, field.kind, pkg, exported, false)}},
204 },
205 {%- endfor -%}
206 },
207 }
208 {%- endmacro -%}
209
210
211 {%- macro writeMojomUnionType(typepkg, type, pkg, exported) -%}
212 {{typepkg}}MojomUnion{
213 DeclData: &{{typepkg}}DeclarationData{
214 ShortName: &unionName_{{type|name}},
215 },
216 {%- if type|is_nullable -%}
217 Nullable: true,
218 {%- endif -%}
219 Fields: []{{typepkg}}UnionField{
220 {%- for field in type.fields -%}
221 {{typepkg}}UnionField{
222 DeclData: &{{typepkg}}DeclarationData{
223 ShortName: &unionFieldName_{{type|name}}_{{field|name}},
224 },
225 Type: {{writeMojomType(typepkg, field.kind, pkg, exported, false)}},
226 Tag: {{field.ordinal}},
227 },
228 {%- endfor -%}
229 },
230 }
231 {%- endmacro -%}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698