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

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom/generate/module.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 # 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 # This module's classes provide an interface to mojo modules. Modules are 5 # This module's classes provide an interface to mojo modules. Modules are
6 # collections of interfaces and structs to be used by mojo ipc clients and 6 # collections of interfaces and structs to be used by mojo ipc clients and
7 # servers. 7 # servers.
8 # 8 #
9 # A simple interface would be created this way: 9 # A simple interface would be created this way:
10 # module = mojom.generate.module.Module('Foo') 10 # module = mojom.generate.module.Module('Foo')
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 208
209 209
210 class Struct(ReferenceKind): 210 class Struct(ReferenceKind):
211 ReferenceKind.AddSharedProperty('name') 211 ReferenceKind.AddSharedProperty('name')
212 ReferenceKind.AddSharedProperty('module') 212 ReferenceKind.AddSharedProperty('module')
213 ReferenceKind.AddSharedProperty('imported_from') 213 ReferenceKind.AddSharedProperty('imported_from')
214 ReferenceKind.AddSharedProperty('fields') 214 ReferenceKind.AddSharedProperty('fields')
215 ReferenceKind.AddSharedProperty('attributes') 215 ReferenceKind.AddSharedProperty('attributes')
216 ReferenceKind.AddSharedProperty('constants') 216 ReferenceKind.AddSharedProperty('constants')
217 ReferenceKind.AddSharedProperty('enums') 217 ReferenceKind.AddSharedProperty('enums')
218 ReferenceKind.AddSharedProperty('type_key')
218 219
219 def __init__(self, name=None, module=None, attributes=None): 220 def __init__(self, name=None, module=None, attributes=None):
220 if name is not None: 221 if name is not None:
221 spec = 'x:' + name 222 spec = 'x:' + name
222 else: 223 else:
223 spec = None 224 spec = None
224 ReferenceKind.__init__(self, spec) 225 ReferenceKind.__init__(self, spec)
225 self.name = name 226 self.name = name
226 self.module = module 227 self.module = module
227 self.imported_from = None 228 self.imported_from = None
228 self.fields = [] 229 self.fields = []
229 self.constants = [] 230 self.constants = []
230 self.enums = [] 231 self.enums = []
231 self.attributes = attributes 232 self.attributes = attributes
232 233
233 def AddField(self, name, kind, ordinal=None, default=None, attributes=None): 234 def AddField(self, name, kind, ordinal=None, default=None, attributes=None):
234 field = StructField(name, kind, ordinal, default, attributes) 235 field = StructField(name, kind, ordinal, default, attributes)
235 self.fields.append(field) 236 self.fields.append(field)
236 return field 237 return field
237 238
238 239
239 class Union(ReferenceKind): 240 class Union(ReferenceKind):
240 ReferenceKind.AddSharedProperty('name') 241 ReferenceKind.AddSharedProperty('name')
241 ReferenceKind.AddSharedProperty('module') 242 ReferenceKind.AddSharedProperty('module')
242 ReferenceKind.AddSharedProperty('imported_from') 243 ReferenceKind.AddSharedProperty('imported_from')
243 ReferenceKind.AddSharedProperty('fields') 244 ReferenceKind.AddSharedProperty('fields')
244 ReferenceKind.AddSharedProperty('attributes') 245 ReferenceKind.AddSharedProperty('attributes')
246 ReferenceKind.AddSharedProperty('type_key')
245 247
246 def __init__(self, name=None, module=None, attributes=None): 248 def __init__(self, name=None, module=None, attributes=None):
247 if name is not None: 249 if name is not None:
248 spec = 'x:' + name 250 spec = 'x:' + name
249 else: 251 else:
250 spec = None 252 spec = None
251 ReferenceKind.__init__(self, spec) 253 ReferenceKind.__init__(self, spec)
252 self.name = name 254 self.name = name
253 self.module = module 255 self.module = module
254 self.imported_from = None 256 self.imported_from = None
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 369
368 370
369 class Interface(ReferenceKind): 371 class Interface(ReferenceKind):
370 ReferenceKind.AddSharedProperty('module') 372 ReferenceKind.AddSharedProperty('module')
371 ReferenceKind.AddSharedProperty('name') 373 ReferenceKind.AddSharedProperty('name')
372 ReferenceKind.AddSharedProperty('imported_from') 374 ReferenceKind.AddSharedProperty('imported_from')
373 ReferenceKind.AddSharedProperty('methods') 375 ReferenceKind.AddSharedProperty('methods')
374 ReferenceKind.AddSharedProperty('attributes') 376 ReferenceKind.AddSharedProperty('attributes')
375 ReferenceKind.AddSharedProperty('constants') 377 ReferenceKind.AddSharedProperty('constants')
376 ReferenceKind.AddSharedProperty('enums') 378 ReferenceKind.AddSharedProperty('enums')
379 ReferenceKind.AddSharedProperty('type_key')
377 380
378 def __init__(self, name=None, module=None, attributes=None): 381 def __init__(self, name=None, module=None, attributes=None):
379 if name is not None: 382 if name is not None:
380 spec = 'x:' + name 383 spec = 'x:' + name
381 else: 384 else:
382 spec = None 385 spec = None
383 ReferenceKind.__init__(self, spec) 386 ReferenceKind.__init__(self, spec)
384 self.module = module 387 self.module = module
385 self.name = name 388 self.name = name
386 self.imported_from = None 389 self.imported_from = None
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 elif hasattr(kind, 'name'): 471 elif hasattr(kind, 'name'):
469 return kind.name 472 return kind.name
470 else: 473 else:
471 # These kinds (e.g., simple kinds, maps, and arrays) lack names. 474 # These kinds (e.g., simple kinds, maps, and arrays) lack names.
472 raise Exception('Unexpected kind: %s' % kind) 475 raise Exception('Unexpected kind: %s' % kind)
473 476
474 def GetPackageName(kind): 477 def GetPackageName(kind):
475 """Get the package name from the given kind's module.""" 478 """Get the package name from the given kind's module."""
476 return kind.module.name.split('.')[0] 479 return kind.module.name.split('.')[0]
477 480
481 # TODO(rudominer) Remove this once the switch to the new runtime type
482 # discovery mechanism is complete.
478 def GetMojomTypeIdentifier(kind): 483 def GetMojomTypeIdentifier(kind):
479 """Get the mojom type's unique identifier from the kind's package and name.""" 484 """Get the mojom type's unique identifier from the kind's package and name."""
480 # Note: InterfaceRequest's should use the Interface inside them. 485 # Note: InterfaceRequest's should use the Interface inside them.
481 if hasattr(kind, 'module'): 486 if hasattr(kind, 'module'):
482 package = GetPackageName(kind) 487 package = GetPackageName(kind)
483 elif IsInterfaceRequestKind(kind): 488 elif IsInterfaceRequestKind(kind):
484 package = GetPackageName(kind.kind) 489 package = GetPackageName(kind.kind)
485 else: 490 else:
486 # These kinds (e.g., simple kinds and fields) lack identifiers. 491 # These kinds (e.g., simple kinds and fields) lack identifiers.
487 raise Exception('Unexpected kind: %s' % kind) 492 raise Exception('Unexpected kind: %s' % kind)
488 return "%s_%s__" % (package, GetMojomTypeName(kind)) 493 return "%s_%s__" % (package, GetMojomTypeName(kind))
489 494
490 495
491 # Returns a string of the form package.path.TypeName - the full identifier 496 # Returns a string of the form package.path.TypeName - the full identifier
492 # for an element. 497 # for an element.
498 # TODO(rudominer) Remove this once the switch to the new runtime type
499 # discovery mechanism is complete.
493 def GetMojomTypeFullIdentifier(kind, exported=True): 500 def GetMojomTypeFullIdentifier(kind, exported=True):
494 """Get the Full Identifier for a Mojom Type. Format: package.path.TypeName""" 501 """Get the Full Identifier for a Mojom Type. Format: package.path.TypeName"""
495 return '%s.%s' % (kind.module.namespace, GetMojomTypeName(kind)) 502 return '%s.%s' % (kind.module.namespace, GetMojomTypeName(kind))
496 503
497 504
498 def IsBoolKind(kind): 505 def IsBoolKind(kind):
499 return kind.spec == BOOL.spec 506 return kind.spec == BOOL.spec
500 507
501 508
502 def IsFloatKind(kind): 509 def IsFloatKind(kind):
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 return False 638 return False
632 639
633 return not ContainsHandles(kind, set()) 640 return not ContainsHandles(kind, set())
634 641
635 642
636 def HasCallbacks(interface): 643 def HasCallbacks(interface):
637 for method in interface.methods: 644 for method in interface.methods:
638 if method.response_parameters != None: 645 if method.response_parameters != None:
639 return True 646 return True
640 return False 647 return False
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698