Chromium Code Reviews

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

Issue 703273002: Update mojo sdk to rev 04a510fb37db10642e156957f9b2c11c2f6442ac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix content/child -> mojo/common linking Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
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 """Generates Python source files from a mojom.Module.""" 5 """Generates Python source files from a mojom.Module."""
6 6
7 import re 7 import re
8 from itertools import ifilter 8 from itertools import ifilter
9 9
10 import mojom.generate.generator as generator 10 import mojom.generate.generator as generator
(...skipping 33 matching lines...)
44 mojom.INT8: 'b', 44 mojom.INT8: 'b',
45 mojom.UINT8: 'B', 45 mojom.UINT8: 'B',
46 mojom.INT16: 'h', 46 mojom.INT16: 'h',
47 mojom.UINT16: 'H', 47 mojom.UINT16: 'H',
48 mojom.INT32: 'i', 48 mojom.INT32: 'i',
49 mojom.UINT32: 'I', 49 mojom.UINT32: 'I',
50 mojom.FLOAT: 'f', 50 mojom.FLOAT: 'f',
51 mojom.DOUBLE: 'd', 51 mojom.DOUBLE: 'd',
52 } 52 }
53 53
54 _kind_to_typecode = dict(_kind_to_typecode_for_native_array)
55 _kind_to_typecode.update({
56 mojom.INT64: 'q',
57 mojom.UINT64: 'Q',
58 mojom.HANDLE: 'i',
59 mojom.DCPIPE: 'i',
60 mojom.DPPIPE: 'i',
61 mojom.MSGPIPE: 'i',
62 mojom.SHAREDBUFFER: 'i',
63 mojom.NULLABLE_HANDLE: 'i',
64 mojom.NULLABLE_DCPIPE: 'i',
65 mojom.NULLABLE_DPPIPE: 'i',
66 mojom.NULLABLE_MSGPIPE: 'i',
67 mojom.NULLABLE_SHAREDBUFFER: 'i',
68 })
69
70 54
71 def NameToComponent(name): 55 def NameToComponent(name):
72 # insert '_' between anything and a Title name (e.g, HTTPEntry2FooBar -> 56 # insert '_' between anything and a Title name (e.g, HTTPEntry2FooBar ->
73 # HTTP_Entry2_FooBar) 57 # HTTP_Entry2_FooBar)
74 name = re.sub('([^_])([A-Z][^A-Z_]+)', r'\1_\2', name) 58 name = re.sub('([^_])([A-Z][^A-Z_]+)', r'\1_\2', name)
75 # insert '_' between non upper and start of upper blocks (e.g., 59 # insert '_' between non upper and start of upper blocks (e.g.,
76 # HTTP_Entry2_FooBar -> HTTP_Entry2_Foo_Bar) 60 # HTTP_Entry2_FooBar -> HTTP_Entry2_Foo_Bar)
77 name = re.sub('([^A-Z_])([A-Z])', r'\1_\2', name) 61 name = re.sub('([^A-Z_])([A-Z])', r'\1_\2', name)
78 return [x.lower() for x in name.split('_')] 62 return [x.lower() for x in name.split('_')]
79 63
(...skipping 50 matching lines...)
130 name = [] 114 name = []
131 if kind.imported_from: 115 if kind.imported_from:
132 name.append(kind.imported_from['python_module']) 116 name.append(kind.imported_from['python_module'])
133 name.append(GetNameForElement(kind)) 117 name.append(GetNameForElement(kind))
134 return '.'.join(name) 118 return '.'.join(name)
135 119
136 def GetFieldType(kind, field=None): 120 def GetFieldType(kind, field=None):
137 if mojom.IsArrayKind(kind): 121 if mojom.IsArrayKind(kind):
138 arguments = [] 122 arguments = []
139 if kind.kind in _kind_to_typecode_for_native_array: 123 if kind.kind in _kind_to_typecode_for_native_array:
140 arguments.append('%r' %_kind_to_typecode_for_native_array[kind.kind]) 124 arguments.append('%r' % _kind_to_typecode_for_native_array[kind.kind])
141 elif kind.kind != mojom.BOOL: 125 elif kind.kind != mojom.BOOL:
142 arguments.append(GetFieldType(kind.kind)) 126 arguments.append(GetFieldType(kind.kind))
143 if mojom.IsNullableKind(kind): 127 if mojom.IsNullableKind(kind):
144 arguments.append('nullable=True') 128 arguments.append('nullable=True')
145 if kind.length is not None: 129 if kind.length is not None:
146 arguments.append('length=%d' % kind.length) 130 arguments.append('length=%d' % kind.length)
147 array_type = 'GenericArrayType' 131 array_type = 'GenericArrayType'
148 if kind.kind == mojom.BOOL: 132 if kind.kind == mojom.BOOL:
149 array_type = 'BooleanArrayType' 133 array_type = 'BooleanArrayType'
150 elif kind.kind in _kind_to_typecode_for_native_array: 134 elif kind.kind in _kind_to_typecode_for_native_array:
(...skipping 11 matching lines...)
162 146
163 if mojom.IsStructKind(kind): 147 if mojom.IsStructKind(kind):
164 arguments = [ 'lambda: %s' % GetFullyQualifiedName(kind) ] 148 arguments = [ 'lambda: %s' % GetFullyQualifiedName(kind) ]
165 if mojom.IsNullableKind(kind): 149 if mojom.IsNullableKind(kind):
166 arguments.append('nullable=True') 150 arguments.append('nullable=True')
167 return '_descriptor.StructType(%s)' % ', '.join(arguments) 151 return '_descriptor.StructType(%s)' % ', '.join(arguments)
168 152
169 if mojom.IsEnumKind(kind): 153 if mojom.IsEnumKind(kind):
170 return GetFieldType(mojom.INT32) 154 return GetFieldType(mojom.INT32)
171 155
172 return _kind_to_type.get(kind, '_descriptor.TYPE_NONE') 156 if mojom.IsInterfaceKind(kind):
157 arguments = [ 'lambda: %s' % GetFullyQualifiedName(kind) ]
158 if mojom.IsNullableKind(kind):
159 arguments.append('nullable=True')
160 return '_descriptor.InterfaceType(%s)' % ', '.join(arguments)
161
162 if mojom.IsInterfaceRequestKind(kind):
163 arguments = []
164 if mojom.IsNullableKind(kind):
165 arguments.append('nullable=True')
166 return '_descriptor.InterfaceRequestType(%s)' % ', '.join(arguments)
167
168 return _kind_to_type[kind]
173 169
174 def GetFieldDescriptor(packed_field): 170 def GetFieldDescriptor(packed_field):
175 field = packed_field.field 171 field = packed_field.field
176 class_name = 'SingleFieldGroup' 172 class_name = 'SingleFieldGroup'
177 if field.kind == mojom.BOOL: 173 if field.kind == mojom.BOOL:
178 class_name = 'FieldDescriptor' 174 class_name = 'FieldDescriptor'
179 arguments = [ '%r' % GetNameForElement(field) ] 175 arguments = [ '%r' % GetNameForElement(field) ]
180 arguments.append(GetFieldType(field.kind, field)) 176 arguments.append(GetFieldType(field.kind, field))
181 arguments.append(str(packed_field.index)) 177 arguments.append(str(packed_field.index))
182 arguments.append(str(packed_field.ordinal)) 178 arguments.append(str(packed_field.ordinal))
(...skipping 148 matching lines...)
331 'Unable to find interface %s declared as client of %s.' % 327 'Unable to find interface %s declared as client of %s.' %
332 (interface.client, interface.name)) 328 (interface.client, interface.name))
333 interface.qualified_client = interfaces_by_name[interface.client] 329 interface.qualified_client = interfaces_by_name[interface.client]
334 return sorted(interfaces, key=lambda i: (bool(i.client), i.name)) 330 return sorted(interfaces, key=lambda i: (bool(i.client), i.name))
335 331
336 def GetJinjaParameters(self): 332 def GetJinjaParameters(self):
337 return { 333 return {
338 'lstrip_blocks': True, 334 'lstrip_blocks': True,
339 'trim_blocks': True, 335 'trim_blocks': True,
340 } 336 }
OLDNEW

Powered by Google App Engine