OLD | NEW |
---|---|
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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
372 if len(struct.fields) > 4: | 372 if len(struct.fields) > 4: |
373 return False | 373 return False |
374 for field in struct.fields: | 374 for field in struct.fields: |
375 if mojom.IsMoveOnlyKind(field.kind): | 375 if mojom.IsMoveOnlyKind(field.kind): |
376 return False | 376 return False |
377 return True | 377 return True |
378 | 378 |
379 def ShouldInlineUnion(union): | 379 def ShouldInlineUnion(union): |
380 return not any(mojom.IsMoveOnlyKind(field.kind) for field in union.fields) | 380 return not any(mojom.IsMoveOnlyKind(field.kind) for field in union.fields) |
381 | 381 |
382 def GetArrayValidateParamsCtorArgs(kind): | 382 def GetContainerValidateParamsCtorArgs(kind): |
383 if mojom.IsStringKind(kind): | 383 if mojom.IsStringKind(kind): |
384 expected_num_elements = 0 | 384 expected_num_elements = 0 |
385 element_is_nullable = False | 385 element_is_nullable = False |
386 key_validate_params = "nullptr" | 386 key_validate_params = "nullptr" |
387 element_validate_params = "nullptr" | 387 element_validate_params = "nullptr" |
388 enum_validate_func = "nullptr" | 388 enum_validate_func = "nullptr" |
389 elif mojom.IsMapKind(kind): | 389 elif mojom.IsMapKind(kind): |
390 expected_num_elements = 0 | 390 expected_num_elements = 0 |
391 element_is_nullable = False | 391 element_is_nullable = False |
392 key_validate_params = GetNewArrayValidateParams(mojom.Array( | 392 key_validate_params = GetNewContainerValidateParams(mojom.Array( |
393 kind=kind.key_kind)) | 393 kind=kind.key_kind)) |
394 element_validate_params = GetNewArrayValidateParams(mojom.Array( | 394 element_validate_params = GetNewContainerValidateParams(mojom.Array( |
395 kind=kind.value_kind)) | 395 kind=kind.value_kind)) |
396 enum_validate_func = "nullptr" | 396 enum_validate_func = "nullptr" |
397 else: # mojom.IsArrayKind(kind) | 397 else: # mojom.IsArrayKind(kind) |
398 expected_num_elements = generator.ExpectedArraySize(kind) or 0 | 398 expected_num_elements = generator.ExpectedArraySize(kind) or 0 |
399 element_is_nullable = mojom.IsNullableKind(kind.kind) | 399 element_is_nullable = mojom.IsNullableKind(kind.kind) |
400 key_validate_params = "nullptr" | 400 key_validate_params = "nullptr" |
401 element_validate_params = GetNewArrayValidateParams(kind.kind) | 401 element_validate_params = GetNewContainerValidateParams(kind.kind) |
402 if mojom.IsEnumKind(kind.kind): | 402 if mojom.IsEnumKind(kind.kind): |
403 enum_validate_func = ("%s::Validate" % | 403 enum_validate_func = ("%s::Validate" % |
404 GetQualifiedNameForKind(kind.kind, internal=True)) | 404 GetQualifiedNameForKind(kind.kind, internal=True)) |
405 else: | 405 else: |
406 enum_validate_func = "nullptr" | 406 enum_validate_func = "nullptr" |
407 | 407 |
408 if enum_validate_func == "nullptr": | 408 if enum_validate_func == "nullptr": |
409 if key_validate_params == "nullptr": | 409 if key_validate_params == "nullptr": |
410 return "%d, %s, %s" % (expected_num_elements, | 410 return "%d, %s, %s" % (expected_num_elements, |
411 "true" if element_is_nullable else "false", | 411 "true" if element_is_nullable else "false", |
412 element_validate_params) | 412 element_validate_params) |
413 else: | 413 else: |
414 return "%s, %s" % (key_validate_params, element_validate_params) | 414 return "%s, %s" % (key_validate_params, element_validate_params) |
415 else: | 415 else: |
416 return "%d, %s" % (expected_num_elements, enum_validate_func) | 416 return "%d, %s" % (expected_num_elements, enum_validate_func) |
417 | 417 |
418 def GetNewArrayValidateParams(kind): | 418 def GetNewContainerValidateParams(kind): |
419 if (not mojom.IsArrayKind(kind) and not mojom.IsMapKind(kind) and | 419 if (not mojom.IsArrayKind(kind) and not mojom.IsMapKind(kind) and |
420 not mojom.IsStringKind(kind)): | 420 not mojom.IsStringKind(kind)): |
421 return "nullptr" | 421 return "nullptr" |
422 | 422 |
423 return "new mojo::internal::ArrayValidateParams(%s)" % ( | 423 return "new mojo::internal::ContainerValidateParams(%s)" % ( |
424 GetArrayValidateParamsCtorArgs(kind)) | 424 GetContainerValidateParamsCtorArgs(kind)) |
425 | 425 |
426 class Generator(generator.Generator): | 426 class Generator(generator.Generator): |
427 | 427 |
428 cpp_filters = { | 428 cpp_filters = { |
429 "constant_value": ConstantValue, | 429 "constant_value": ConstantValue, |
430 "cpp_wrapper_param_type": GetCppWrapperParamType, | 430 "cpp_wrapper_param_type": GetCppWrapperParamType, |
431 "cpp_field_type": GetCppFieldType, | 431 "cpp_field_type": GetCppFieldType, |
432 "cpp_union_field_type": GetCppUnionFieldType, | 432 "cpp_union_field_type": GetCppUnionFieldType, |
433 "cpp_pod_type": GetCppPodType, | 433 "cpp_pod_type": GetCppPodType, |
434 "cpp_union_getter_return_type": GetUnionGetterReturnType, | 434 "cpp_union_getter_return_type": GetUnionGetterReturnType, |
435 "cpp_wrapper_type": GetCppWrapperType, | 435 "cpp_wrapper_type": GetCppWrapperType, |
436 "default_value": DefaultValue, | 436 "default_value": DefaultValue, |
437 "expression_to_text": ExpressionToText, | 437 "expression_to_text": ExpressionToText, |
438 "get_array_validate_params_ctor_args": GetArrayValidateParamsCtorArgs, | 438 "get_array_validate_params_ctor_args": GetContainerValidateParamsCtorArgs, |
yzshen1
2016/06/02 19:57:03
please update get_array_validate_params_ctor_args
tibell
2016/06/03 00:01:30
Done.
| |
439 "get_name_for_kind": GetNameForKind, | 439 "get_name_for_kind": GetNameForKind, |
440 "get_pad": pack.GetPad, | 440 "get_pad": pack.GetPad, |
441 "get_qualified_name_for_kind": GetQualifiedNameForKind, | 441 "get_qualified_name_for_kind": GetQualifiedNameForKind, |
442 "has_callbacks": mojom.HasCallbacks, | 442 "has_callbacks": mojom.HasCallbacks, |
443 "has_sync_methods": mojom.HasSyncMethods, | 443 "has_sync_methods": mojom.HasSyncMethods, |
444 "should_inline": ShouldInlineStruct, | 444 "should_inline": ShouldInlineStruct, |
445 "should_inline_union": ShouldInlineUnion, | 445 "should_inline_union": ShouldInlineUnion, |
446 "is_array_kind": mojom.IsArrayKind, | 446 "is_array_kind": mojom.IsArrayKind, |
447 "is_cloneable_kind": IsCloneableKind, | 447 "is_cloneable_kind": IsCloneableKind, |
448 "is_enum_kind": mojom.IsEnumKind, | 448 "is_enum_kind": mojom.IsEnumKind, |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
526 _for_blink = self.for_blink | 526 _for_blink = self.for_blink |
527 global _variant | 527 global _variant |
528 _variant = self.variant | 528 _variant = self.variant |
529 suffix = "-%s" % self.variant if self.variant else "" | 529 suffix = "-%s" % self.variant if self.variant else "" |
530 self.Write(self.GenerateModuleHeader(), | 530 self.Write(self.GenerateModuleHeader(), |
531 self.MatchMojomFilePath("%s%s.h" % (self.module.name, suffix))) | 531 self.MatchMojomFilePath("%s%s.h" % (self.module.name, suffix))) |
532 self.Write(self.GenerateModuleInternalHeader(), | 532 self.Write(self.GenerateModuleInternalHeader(), |
533 self.MatchMojomFilePath("%s%s-internal.h" % (self.module.name, suffix))) | 533 self.MatchMojomFilePath("%s%s-internal.h" % (self.module.name, suffix))) |
534 self.Write(self.GenerateModuleSource(), | 534 self.Write(self.GenerateModuleSource(), |
535 self.MatchMojomFilePath("%s%s.cc" % (self.module.name, suffix))) | 535 self.MatchMojomFilePath("%s%s.cc" % (self.module.name, suffix))) |
OLD | NEW |