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

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

Issue 2855263002: Mojo bindings: support generating identifers using different style rules for different target langu…
Patch Set: . Created 3 years, 7 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
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 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 "is_map_kind": mojom.IsMapKind, 642 "is_map_kind": mojom.IsMapKind,
643 "is_nullable_kind": mojom.IsNullableKind, 643 "is_nullable_kind": mojom.IsNullableKind,
644 "is_object_kind": mojom.IsObjectKind, 644 "is_object_kind": mojom.IsObjectKind,
645 "is_reference_kind": mojom.IsReferenceKind, 645 "is_reference_kind": mojom.IsReferenceKind,
646 "is_string_kind": mojom.IsStringKind, 646 "is_string_kind": mojom.IsStringKind,
647 "is_struct_kind": mojom.IsStructKind, 647 "is_struct_kind": mojom.IsStructKind,
648 "is_typemapped_kind": IsTypemappedKind, 648 "is_typemapped_kind": IsTypemappedKind,
649 "is_union_kind": mojom.IsUnionKind, 649 "is_union_kind": mojom.IsUnionKind,
650 "passes_associated_kinds": mojom.PassesAssociatedKinds, 650 "passes_associated_kinds": mojom.PassesAssociatedKinds,
651 "struct_constructors": GetStructConstructors, 651 "struct_constructors": GetStructConstructors,
652 "stylize_method": generator.StudlyCapsToCamel, 652 "under_to_camel": generator.ToCamel,
653 "under_to_camel": generator.UnderToCamel,
654 "unmapped_type_for_serializer": GetUnmappedTypeForSerializer, 653 "unmapped_type_for_serializer": GetUnmappedTypeForSerializer,
655 "wtf_hash_fn_name_for_enum": GetWtfHashFnNameForEnum, 654 "wtf_hash_fn_name_for_enum": GetWtfHashFnNameForEnum,
656 } 655 }
657 656
658 def GetExtraTraitsHeaders(self): 657 def GetExtraTraitsHeaders(self):
659 extra_headers = set() 658 extra_headers = set()
660 for typemap in self._GetAllUsedTypemaps(): 659 for typemap in self._GetAllUsedTypemaps():
661 extra_headers.update(typemap.get("traits_headers", [])) 660 extra_headers.update(typemap.get("traits_headers", []))
662 return sorted(extra_headers) 661 return sorted(extra_headers)
663 662
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 for struct in self.module.structs + self.module.unions: 726 for struct in self.module.structs + self.module.unions:
728 for field in struct.fields: 727 for field in struct.fields:
729 yield field.kind 728 yield field.kind
730 729
731 for interface in self.module.interfaces: 730 for interface in self.module.interfaces:
732 for method in interface.methods: 731 for method in interface.methods:
733 for param in method.parameters + (method.response_parameters or []): 732 for param in method.parameters + (method.response_parameters or []):
734 yield param.kind 733 yield param.kind
735 734
736 def GetJinjaExports(self): 735 def GetJinjaExports(self):
737 structs = self.GetStructs()
738 interfaces = self.GetInterfaces()
739 all_enums = list(self.module.enums) 736 all_enums = list(self.module.enums)
740 for struct in structs: 737 for struct in self.module.structs:
741 all_enums.extend(struct.enums) 738 all_enums.extend(struct.enums)
742 for interface in interfaces: 739 for interface in self.module.interfaces:
743 all_enums.extend(interface.enums) 740 all_enums.extend(interface.enums)
744 741
745 return { 742 return {
746 "module": self.module, 743 "module": self.module,
747 "namespace": self.module.namespace, 744 "namespace": self.module.namespace,
748 "namespaces_as_array": NamespaceToArray(self.module.namespace), 745 "namespaces_as_array": NamespaceToArray(self.module.namespace),
749 "imports": self.module.imports, 746 "imports": self.module.imports,
750 "kinds": self.module.kinds, 747 "kinds": self.module.kinds,
751 "enums": self.module.enums, 748 "enums": self.module.enums,
752 "all_enums": all_enums, 749 "all_enums": all_enums,
753 "structs": structs, 750 "structs": self.module.structs,
754 "unions": self.GetUnions(), 751 "unions": self.module.unions,
755 "interfaces": interfaces, 752 "interfaces": self.module.interfaces,
756 "variant": self.variant, 753 "variant": self.variant,
757 "extra_traits_headers": self.GetExtraTraitsHeaders(), 754 "extra_traits_headers": self.GetExtraTraitsHeaders(),
758 "extra_public_headers": self.GetExtraPublicHeaders(), 755 "extra_public_headers": self.GetExtraPublicHeaders(),
759 "for_blink": self.for_blink, 756 "for_blink": self.for_blink,
760 "use_once_callback": self.use_once_callback, 757 "use_once_callback": self.use_once_callback,
761 "export_attribute": self.export_attribute, 758 "export_attribute": self.export_attribute,
762 "export_header": self.export_header, 759 "export_header": self.export_header,
763 } 760 }
764 761
765 @staticmethod 762 @staticmethod
(...skipping 18 matching lines...) Expand all
784 781
785 @UseJinja("module-shared-internal.h.tmpl") 782 @UseJinja("module-shared-internal.h.tmpl")
786 def GenerateModuleSharedInternalHeader(self): 783 def GenerateModuleSharedInternalHeader(self):
787 return self.GetJinjaExports() 784 return self.GetJinjaExports()
788 785
789 @UseJinja("module-shared.cc.tmpl") 786 @UseJinja("module-shared.cc.tmpl")
790 def GenerateModuleSharedSource(self): 787 def GenerateModuleSharedSource(self):
791 return self.GetJinjaExports() 788 return self.GetJinjaExports()
792 789
793 def GenerateFiles(self, args): 790 def GenerateFiles(self, args):
791 self.FinalizeModule()
792
794 if self.generate_non_variant_code: 793 if self.generate_non_variant_code:
795 self.Write(self.GenerateModuleSharedHeader(), 794 self.Write(self.GenerateModuleSharedHeader(),
796 self.MatchMojomFilePath("%s-shared.h" % self.module.name)) 795 self.MatchMojomFilePath("%s-shared.h" % self.module.name))
797 self.Write( 796 self.Write(
798 self.GenerateModuleSharedInternalHeader(), 797 self.GenerateModuleSharedInternalHeader(),
799 self.MatchMojomFilePath("%s-shared-internal.h" % self.module.name)) 798 self.MatchMojomFilePath("%s-shared-internal.h" % self.module.name))
800 self.Write(self.GenerateModuleSharedSource(), 799 self.Write(self.GenerateModuleSharedSource(),
801 self.MatchMojomFilePath("%s-shared.cc" % self.module.name)) 800 self.MatchMojomFilePath("%s-shared.cc" % self.module.name))
802 else: 801 else:
803 global _current_typemap 802 global _current_typemap
804 _current_typemap = self.typemap 803 _current_typemap = self.typemap
805 global _for_blink 804 global _for_blink
806 _for_blink = self.for_blink 805 _for_blink = self.for_blink
807 global _use_once_callback 806 global _use_once_callback
808 _use_once_callback = self.use_once_callback 807 _use_once_callback = self.use_once_callback
809 global _variant 808 global _variant
810 _variant = self.variant 809 _variant = self.variant
811 global _export_attribute 810 global _export_attribute
812 _export_attribute = self.export_attribute 811 _export_attribute = self.export_attribute
813 suffix = "-%s" % self.variant if self.variant else "" 812 suffix = "-%s" % self.variant if self.variant else ""
814 self.Write(self.GenerateModuleHeader(), 813 self.Write(self.GenerateModuleHeader(),
815 self.MatchMojomFilePath("%s%s.h" % (self.module.name, suffix))) 814 self.MatchMojomFilePath("%s%s.h" % (self.module.name, suffix)))
816 self.Write( 815 self.Write(
817 self.GenerateModuleSource(), 816 self.GenerateModuleSource(),
818 self.MatchMojomFilePath("%s%s.cc" % (self.module.name, suffix))) 817 self.MatchMojomFilePath("%s%s.cc" % (self.module.name, suffix)))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698