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 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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))) |
OLD | NEW |