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

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/module-common.cc.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 // NOTE: This file was generated by the Mojo bindings generator.
2 #include "{{module.path}}-common.h"
3
4 #include <math.h>
5 #include <ostream>
6
7 #include "mojo/public/cpp/bindings/lib/array_serialization.h"
8 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h"
9 #include "mojo/public/cpp/bindings/lib/bounds_checker.h"
10 #include "mojo/public/cpp/bindings/lib/map_data_internal.h"
11 #include "mojo/public/cpp/bindings/lib/map_serialization.h"
12 #include "mojo/public/cpp/bindings/lib/message_builder.h"
13 #include "mojo/public/cpp/bindings/lib/message_validation.h"
14 #include "mojo/public/cpp/bindings/lib/string_serialization.h"
15 #include "mojo/public/cpp/bindings/lib/validate_params.h"
16 #include "mojo/public/cpp/bindings/lib/validation_errors.h"
17 #include "mojo/public/cpp/bindings/lib/validation_util.h"
18 #include "mojo/public/cpp/environment/logging.h"
19 #include "mojo/public/interfaces/bindings/interface_control_messages.mojom.h"
20
21 {%- for namespace in namespaces_as_array %}
22 namespace {{namespace}} {
23 {%- endfor %}
24
25 // --- Constants ---
26 {%- for constant in module.constants %}
27 {%- if not constant.kind|is_integral_kind %}
28 const {{constant.kind|cpp_pod_type}} {{constant.name}}
29 = {{constant|constant_value}};
30 {%- endif %}
31 {%- endfor %}
32
33 namespace internal {
34
35 // --- Struct definitions ---
36 {% for struct in structs %}
37 {%- include "struct_definition.tmpl" %}
38 {%- endfor %}
39
40 // --- Union definitions ---
41 {% for union in unions %}
42 {%- include "union_definition.tmpl" %}
43 {%- endfor %}
44
45 // --- Definitions of the data structs for interface methods ---
46 {%- for interface in interfaces %}
47 {%- for method in interface.methods %}
48 {% set struct = method.param_struct %}
49 {%- include "struct_definition.tmpl" %}
50 {%- if method.response_parameters != None %}
51 {%- set struct = method.response_param_struct %}
52 {%- include "struct_definition.tmpl" %}
53 {%- endif %}
54 {%- endfor %}
55 {%- endfor %}
56
57 } // namespace internal
58
59 // --- Request and response validator definitions for interfaces ---
60 {%- for interface in interfaces %}
61 {%- set base_name = "internal::%s_Base"|format(interface.name) %}
62 mojo::internal::ValidationError {{interface.name}}RequestValidator::Validate(
63 const mojo::Message* message,
64 std::string* err) {
65 mojo::internal::ValidationError retval;
66 if (mojo::internal::ControlMessageHandler::IsControlMessage(message)) {
67 retval = mojo::internal::ValidateControlRequest(message, err);
68 if (retval != mojo::internal::ValidationError::NONE) {
69 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
70 << "request validation error for interface '{{interface.name}}', "
71 "message name '" << message->header()->name << "': " <<
72 (err ? *err : "");
73 ReportValidationError(retval, err);
74 return retval;
75 }
76 return mojo::internal::ValidationError::NONE;
77 }
78
79 {{base_name}}::MessageOrdinals method_ordinal =
80 static_cast<{{base_name}}::MessageOrdinals>(message->header()->name);
81 switch (method_ordinal) {
82 {%- for method in interface.methods %}
83 case {{base_name}}::MessageOrdinals::{{method.name}}: {
84 {%- if method.response_parameters != None %}
85 retval =
86 mojo::internal::ValidateMessageIsRequestExpectingResponse(message,
87 err);
88 if (retval != mojo::internal::ValidationError::NONE) {
89 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
90 << "request validation error for interface '{{interface.name}}', "
91 "message name '" << message->header()->name << "': " <<
92 (err ? *err : "");
93 ReportValidationError(retval, err);
94 return retval;
95 }
96 {%- else %}
97 retval = mojo::internal::ValidateMessageIsRequestWithoutResponse(message,
98 err);
99 if (retval != mojo::internal::ValidationError::NONE) {
100 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
101 << "request validation error for interface '{{interface.name}}', "
102 "message name '" << message->header()->name << "': " <<
103 (err ? *err : "");
104 ReportValidationError(retval, err);
105 return retval;
106 }
107 {%- endif %}
108 retval = mojo::internal::ValidateMessagePayload<
109 internal::{{interface.name}}_{{method.name}}_Params_Data>(
110 message, err);
111 if (retval != mojo::internal::ValidationError::NONE) {
112 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
113 << "request validation error for interface '{{interface.name}}', "
114 "message name '" << message->header()->name << "': " <<
115 (err ? *err : "");
116 ReportValidationError(retval, err);
117 return retval;
118 }
119 return mojo::internal::ValidationError::NONE;
120 }
121 {%- endfor %}
122 default:
123 break;
124 }
125
126 // Unrecognized message.
127 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err) << "unknown request message name '"
128 << message->header()->name
129 << "' for interface "
130 "'{{interface.name}}'";
131 ReportValidationError(
132 mojo::internal::ValidationError::MESSAGE_HEADER_UNKNOWN_METHOD, err);
133 return mojo::internal::ValidationError::MESSAGE_HEADER_UNKNOWN_METHOD;
134 }
135
136 {#--- Response validator definitions #}
137 {%- if interface|has_callbacks %}
138 mojo::internal::ValidationError {{interface.name}}ResponseValidator::Validate(
139 const mojo::Message* message,
140 std::string* err) {
141 mojo::internal::ValidationError retval;
142 if (mojo::internal::ControlMessageHandler::IsControlMessage(message)) {
143 retval = mojo::internal::ValidateControlResponse(message, err);
144 if (retval != mojo::internal::ValidationError::NONE) {
145 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
146 << "response validation error for interface '{{interface.name}}', "
147 "message name '" << message->header()->name << "': " <<
148 (err ? *err : "");
149 ReportValidationError(retval, err);
150 return retval;
151 }
152 return mojo::internal::ValidationError::NONE;
153 }
154
155 retval = mojo::internal::ValidateMessageIsResponse(message, err);
156 if (retval != mojo::internal::ValidationError::NONE) {
157 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
158 << "response validation error for interface '{{interface.name}}', "
159 "message name '" << message->header()->name << "': " <<
160 (err ? *err : "");
161 ReportValidationError(retval, err);
162 return retval;
163 }
164
165 {{base_name}}::MessageOrdinals method_ordinal =
166 static_cast<{{base_name}}::MessageOrdinals>(message->header()->name);
167 switch (method_ordinal) {
168 {%- for method in interface.methods if method.response_parameters != None %}
169 case {{base_name}}::MessageOrdinals::{{method.name}}: {
170 retval = mojo::internal::ValidateMessagePayload<
171 internal::{{interface.name}}_{{method.name}}_ResponseParams_Da ta>(
172 message, err);
173 if (retval != mojo::internal::ValidationError::NONE) {
174 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err)
175 << "response validation error for interface '{{interface.name}}',"
176 " message name '" << message->header()->name << "': " <<
177 (err ? *err : "");
178 ReportValidationError(retval, err);
179 return retval;
180 }
181 return mojo::internal::ValidationError::NONE;
182 }
183 {%- endfor %}
184 default:
185 break;
186 }
187
188 // Unrecognized message.
189 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err) << "unknown response message name '"
190 << message->header()->name
191 << "' for interface "
192 "'{{interface.name}}'";
193 ReportValidationError(
194 mojo::internal::ValidationError::MESSAGE_HEADER_UNKNOWN_METHOD, err);
195 return mojo::internal::ValidationError::MESSAGE_HEADER_UNKNOWN_METHOD;
196 }
197 {%- endif -%}
198
199 {%- endfor %} {# for each interface #}
200
201 // --- Enums ---
202 {%- from "enum_macros.tmpl" import is_valid_enum_def -%}
203 {%- from "enum_macros.tmpl" import global_enum_operators_def -%}
204 {%- for enum in enums -%}
205 {{is_valid_enum_def(enum, class_name='')}}
206 {{global_enum_operators_def(enum, class_name='')}}
207 {%- endfor %}
208
209 // Base interface definitions (Name_, Version_, Constants, Enums)
210 {%- for interface in interfaces %}
211 {%- set base_name = "internal::%s_Base"|format(interface.name) -%}
212 {%- if interface.service_name %}
213 const char {{base_name}}::Name_[] = "{{interface.service_name}}";
214 {%- endif %}
215 const uint32_t {{base_name}}::Version_;
216
217 // Constants
218 {%- for constant in interface.constants %}
219 {%- if constant.kind|is_integral_kind %}
220 const {{constant.kind|cpp_pod_type}} {{base_name}}::{{constant.name}};
221 {%- else %}
222 const {{constant.kind|cpp_pod_type}} {{base_name}}::{{constant.name}} = {{consta nt|constant_value}};
223 {%- endif %}
224 {%- endfor %}
225
226 // Enums
227 {%- for enum in interface.enums %}
228 {{is_valid_enum_def(enum, class_name=base_name)}}
229 {{global_enum_operators_def(enum, class_name=base_name)}}
230 {%- endfor %}
231 {%- endfor %}
232
233 // Struct Constants
234 {%- for struct in structs %}
235 {%- for constant in struct.constants %}
236 {%- if constant.kind|is_integral_kind %}
237 const {{constant.kind|cpp_pod_type}} {{struct.name}}::{{constant.name}};
238 {%- else %}
239 const {{constant.kind|cpp_pod_type}} {{struct.name}}::{{constant.name}} = {{cons tant|constant_value}};
240 {%- endif %}
241 {%- endfor %}
242 {%- endfor %}
243
244 // --- Struct builder definitions ---
245 {%- for struct in structs %}
246 {%- include "wrapper_class_definition.tmpl" %}
247 {%- endfor %}
248
249 // --- Union builder definitions ---
250 {%- for union in unions %}
251 {%- include "wrapper_union_class_definition.tmpl" %}
252 {%- endfor %}
253
254 // --- Struct Serialization Helpers ---
255 {%- for struct in structs %}
256 {%- include "struct_serialization_definition.tmpl" %}
257 {%- endfor %}
258
259 // --- Union Serialization Helpers ---
260 {%- for union in unions %}
261 {%- include "union_serialization_definition.tmpl" %}
262 {%- endfor %}
263
264 // --- Structs for interface method parameters ---
265 {%- for interface in interfaces %}
266 {%- for method in interface.methods %}
267 {% set struct = method.param_struct %}
268 {%- include "wrapper_class_definition.tmpl" %}
269 {%- include "struct_serialization_definition.tmpl" %}
270 {%- if method.response_parameters != None %}
271 {%- set struct = method.response_param_struct %}
272 {%- include "wrapper_class_definition.tmpl" %}
273 {%- include "struct_serialization_definition.tmpl" %}
274 {%- endif %}
275 {%- endfor %}
276 {%- endfor %}
277
278 {%- for namespace in namespaces_as_array|reverse %}
279 } // namespace {{namespace}}
280 {%- endfor %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698