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

Side by Side Diff: mojo/public/tools/bindings/generators/mojom_cpp_generator.py

Issue 468713002: JavaScript bindings for Mojo message validation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Skip unexpected null tests" Created 6 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 | Annotate | Revision Log
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generates C++ source files from a mojom.Module.""" 5 """Generates C++ source files from a mojom.Module."""
6 6
7 import mojom.generate.generator as generator 7 import mojom.generate.generator as generator
8 import mojom.generate.module as mojom 8 import mojom.generate.module as mojom
9 import mojom.generate.pack as pack 9 import mojom.generate.pack as pack
10 from mojom.generate.template_expander import UseJinja 10 from mojom.generate.template_expander import UseJinja
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 name.append( 221 name.append(
222 "%s_%s" % (generator.CamelCaseToAllCaps(token.enum_name), token.name)) 222 "%s_%s" % (generator.CamelCaseToAllCaps(token.enum_name), token.name))
223 else: 223 else:
224 name.append(token.name) 224 name.append(token.name)
225 return "::".join(name) 225 return "::".join(name)
226 return '%s%s' % (token, _kind_to_cpp_literal_suffix.get(kind, '')) 226 return '%s%s' % (token, _kind_to_cpp_literal_suffix.get(kind, ''))
227 227
228 def ExpressionToText(value, kind=None): 228 def ExpressionToText(value, kind=None):
229 return TranslateConstants(value, kind) 229 return TranslateConstants(value, kind)
230 230
231 def HasCallbacks(interface):
232 for method in interface.methods:
233 if method.response_parameters != None:
234 return True
235 return False
236
237 def ShouldInlineStruct(struct): 231 def ShouldInlineStruct(struct):
238 # TODO(darin): Base this on the size of the wrapper class. 232 # TODO(darin): Base this on the size of the wrapper class.
239 if len(struct.fields) > 4: 233 if len(struct.fields) > 4:
240 return False 234 return False
241 for field in struct.fields: 235 for field in struct.fields:
242 if mojom.IsMoveOnlyKind(field.kind): 236 if mojom.IsMoveOnlyKind(field.kind):
243 return False 237 return False
244 return True 238 return True
245 239
246 def GetArrayValidateParams(kind): 240 def GetArrayValidateParams(kind):
(...skipping 25 matching lines...) Expand all
272 "cpp_pod_type": GetCppPodType, 266 "cpp_pod_type": GetCppPodType,
273 "cpp_result_type": GetCppResultWrapperType, 267 "cpp_result_type": GetCppResultWrapperType,
274 "cpp_type": GetCppType, 268 "cpp_type": GetCppType,
275 "cpp_wrapper_type": GetCppWrapperType, 269 "cpp_wrapper_type": GetCppWrapperType,
276 "default_value": DefaultValue, 270 "default_value": DefaultValue,
277 "expected_array_size": generator.ExpectedArraySize, 271 "expected_array_size": generator.ExpectedArraySize,
278 "expression_to_text": ExpressionToText, 272 "expression_to_text": ExpressionToText,
279 "get_array_validate_params": GetArrayValidateParams, 273 "get_array_validate_params": GetArrayValidateParams,
280 "get_name_for_kind": GetNameForKind, 274 "get_name_for_kind": GetNameForKind,
281 "get_pad": pack.GetPad, 275 "get_pad": pack.GetPad,
282 "has_callbacks": HasCallbacks, 276 "has_callbacks": mojom.HasCallbacks,
283 "should_inline": ShouldInlineStruct, 277 "should_inline": ShouldInlineStruct,
284 "is_any_array_kind": mojom.IsAnyArrayKind, 278 "is_any_array_kind": mojom.IsAnyArrayKind,
285 "is_enum_kind": mojom.IsEnumKind, 279 "is_enum_kind": mojom.IsEnumKind,
286 "is_move_only_kind": mojom.IsMoveOnlyKind, 280 "is_move_only_kind": mojom.IsMoveOnlyKind,
287 "is_any_handle_kind": mojom.IsAnyHandleKind, 281 "is_any_handle_kind": mojom.IsAnyHandleKind,
288 "is_interface_kind": mojom.IsInterfaceKind, 282 "is_interface_kind": mojom.IsInterfaceKind,
289 "is_interface_request_kind": mojom.IsInterfaceRequestKind, 283 "is_interface_request_kind": mojom.IsInterfaceRequestKind,
290 "is_nullable_kind": mojom.IsNullableKind, 284 "is_nullable_kind": mojom.IsNullableKind,
291 "is_object_kind": mojom.IsObjectKind, 285 "is_object_kind": mojom.IsObjectKind,
292 "is_string_kind": mojom.IsStringKind, 286 "is_string_kind": mojom.IsStringKind,
(...skipping 27 matching lines...) Expand all
320 314
321 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters) 315 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters)
322 def GenerateModuleSource(self): 316 def GenerateModuleSource(self):
323 return self.GetJinjaExports() 317 return self.GetJinjaExports()
324 318
325 def GenerateFiles(self, args): 319 def GenerateFiles(self, args):
326 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) 320 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name)
327 self.Write(self.GenerateModuleInternalHeader(), 321 self.Write(self.GenerateModuleInternalHeader(),
328 "%s-internal.h" % self.module.name) 322 "%s-internal.h" % self.module.name)
329 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name) 323 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698