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

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py

Issue 1719873003: Mojom runtime type info: New implementation for Go. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Rebasing Created 4 years, 10 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 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved. 2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 # This module is responsible for translating a MojomFileGraph (see 6 # This module is responsible for translating a MojomFileGraph (see
7 # mojom_files.mojom) to one or more module.Module. 7 # mojom_files.mojom) to one or more module.Module.
8 # 8 #
9 # This module takes the output of the mojom parser, a MojomFileGraph and 9 # This module takes the output of the mojom parser, a MojomFileGraph and
10 # translates it to the input of the code generators, a module.Module object. 10 # translates it to the input of the code generators, a module.Module object.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 user_defined_types = ['interfaces', 'structs', 'unions'] 78 user_defined_types = ['interfaces', 'structs', 'unions']
79 for user_defined_type in user_defined_types: 79 for user_defined_type in user_defined_types:
80 if getattr(mojom_file.declared_mojom_objects, user_defined_type): 80 if getattr(mojom_file.declared_mojom_objects, user_defined_type):
81 setattr(mod, user_defined_type, [self.UserDefinedFromTypeKey(key) 81 setattr(mod, user_defined_type, [self.UserDefinedFromTypeKey(key)
82 for key in getattr( 82 for key in getattr(
83 mojom_file.declared_mojom_objects, user_defined_type)]) 83 mojom_file.declared_mojom_objects, user_defined_type)])
84 if mojom_file.declared_mojom_objects.top_level_enums: 84 if mojom_file.declared_mojom_objects.top_level_enums:
85 mod.enums = [self.UserDefinedFromTypeKey(key) 85 mod.enums = [self.UserDefinedFromTypeKey(key)
86 for key in mojom_file.declared_mojom_objects.top_level_enums] 86 for key in mojom_file.declared_mojom_objects.top_level_enums]
87 87
88 mod.serialized_runtime_type_info = mojom_file.serialized_runtime_type_info
89
88 return mod 90 return mod
89 91
90 def PopulateModuleMetadata(self, mod, mojom_file): 92 def PopulateModuleMetadata(self, mod, mojom_file):
91 """Populates some fields of a module.Module based on a MojomFile. 93 """Populates some fields of a module.Module based on a MojomFile.
92 94
93 Populates name, path, namespace and attributes of mod. 95 Populates name, path, namespace and attributes of mod.
94 96
95 Args: 97 Args:
96 mod: {module.Module} the module to be populated. 98 mod: {module.Module} the module to be populated.
97 mojom_file: {MojomFile} the file to be translated. 99 mojom_file: {MojomFile} the file to be translated.
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 # constructing map, array, and interface request types, but the value 788 # constructing map, array, and interface request types, but the value
787 # appears to be only used for error messages. 789 # appears to be only used for error messages.
788 module_type.spec = 'dummyspec' 790 module_type.spec = 'dummyspec'
789 791
790 # It is necessary to cache the type object before populating it since in 792 # It is necessary to cache the type object before populating it since in
791 # the course of populating it, it may be necessary to resolve that same 793 # the course of populating it, it may be necessary to resolve that same
792 # type (say, a struct with a field of its own type). 794 # type (say, a struct with a field of its own type).
793 self._type_cache[type_key] = module_type 795 self._type_cache[type_key] = module_type
794 from_mojom(module_type, mojom_type) 796 from_mojom(module_type, mojom_type)
795 797
798 module_type.type_key = type_key
799
796 return module_type 800 return module_type
797 801
798 802
799 def TranslateFileGraph(graph): 803 def TranslateFileGraph(graph):
800 """Translates a mojom_types_mojom.MojomFileGraph to module.Module(s). 804 """Translates a mojom_types_mojom.MojomFileGraph to module.Module(s).
801 805
802 The input is the output of the parser. The output is the input to the 806 The input is the output of the parser. The output is the input to the
803 various bindings generators. 807 various bindings generators.
804 808
805 Args: 809 Args:
806 graph: {mojom_types_mojom.MojomFileGraph} to be translated. 810 graph: {mojom_types_mojom.MojomFileGraph} to be translated.
807 811
808 Return: 812 Return:
809 {dict<str, module.Module>} mapping the file's name to its module.Module 813 {dict<str, module.Module>} mapping the file's name to its module.Module
810 translation for all files in graph.files. 814 translation for all files in graph.files.
811 """ 815 """
812 return {file_name: FileTranslator(graph, file_name).Translate() 816 return {file_name: FileTranslator(graph, file_name).Translate()
813 for file_name in graph.files} 817 for file_name in graph.files}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698