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

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom/parse/translate.py

Issue 1635613002: [mojo-bindings] Support reuse of native enum classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix more missing public_deps 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
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/parse/parser.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 """Translates parse tree to Mojom IR.""" 5 """Translates parse tree to Mojom IR."""
6 6
7 import re 7 import re
8 8
9 from . import ast 9 from . import ast
10 10
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 def _EnumToDict(enum): 91 def _EnumToDict(enum):
92 def EnumValueToDict(enum_value): 92 def EnumValueToDict(enum_value):
93 assert isinstance(enum_value, ast.EnumValue) 93 assert isinstance(enum_value, ast.EnumValue)
94 data = {'name': enum_value.name} 94 data = {'name': enum_value.name}
95 _AddOptional(data, 'value', enum_value.value) 95 _AddOptional(data, 'value', enum_value.value)
96 _AddOptional(data, 'attributes', 96 _AddOptional(data, 'attributes',
97 _AttributeListToDict(enum_value.attribute_list)) 97 _AttributeListToDict(enum_value.attribute_list))
98 return data 98 return data
99 99
100 assert isinstance(enum, ast.Enum) 100 assert isinstance(enum, ast.Enum)
101 data = {'name': enum.name, 101 data = {'name': enum.name, 'native_only': enum.enum_value_list is None }
102 'fields': map(EnumValueToDict, enum.enum_value_list)} 102 if not data['native_only']:
103 data['fields'] = map(EnumValueToDict, enum.enum_value_list)
103 _AddOptional(data, 'attributes', _AttributeListToDict(enum.attribute_list)) 104 _AddOptional(data, 'attributes', _AttributeListToDict(enum.attribute_list))
104 return data 105 return data
105 106
106 def _ConstToDict(const): 107 def _ConstToDict(const):
107 assert isinstance(const, ast.Const) 108 assert isinstance(const, ast.Const)
108 return {'name': const.name, 109 return {'name': const.name,
109 'kind': _MapKind(const.typename), 110 'kind': _MapKind(const.typename),
110 'value': const.value} 111 'value': const.value}
111 112
112 113
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 self.mojom['constants'] = \ 217 self.mojom['constants'] = \
217 _MapTreeForType(_ConstToDict, tree.definition_list, ast.Const, name) 218 _MapTreeForType(_ConstToDict, tree.definition_list, ast.Const, name)
218 _AddOptional(self.mojom, 'attributes', 219 _AddOptional(self.mojom, 'attributes',
219 _AttributeListToDict(tree.module.attribute_list) 220 _AttributeListToDict(tree.module.attribute_list)
220 if tree.module else None) 221 if tree.module else None)
221 return self.mojom 222 return self.mojom
222 223
223 224
224 def Translate(tree, name): 225 def Translate(tree, name):
225 return _MojomBuilder().Build(tree, name) 226 return _MojomBuilder().Build(tree, name)
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/parse/parser.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698