| Index: mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/module.py b/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| index 8fa4e442690436dc6b04a426de2c5dc045e0a932..fd346e2f6efd32a1f83ce797ea64faca095549a4 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| @@ -82,11 +82,13 @@ class Kind(object):
|
|
|
| Attributes:
|
| spec: A string uniquely identifying the type. May be None.
|
| + module: {Module} The defining module. Set to None for built-in types.
|
| parent_kind: The enclosing type. For example, a struct defined
|
| inside an interface has that interface as its parent. May be None.
|
| """
|
| - def __init__(self, spec=None):
|
| + def __init__(self, spec=None, module=None):
|
| self.spec = spec
|
| + self.module = module
|
| self.parent_kind = None
|
|
|
| def Repr(self, as_ref=True):
|
| @@ -106,10 +108,9 @@ class ReferenceKind(Kind):
|
| Attributes:
|
| is_nullable: True if the type is nullable.
|
| """
|
| -
|
| - def __init__(self, spec=None, is_nullable=False):
|
| + def __init__(self, spec=None, is_nullable=False, module=None):
|
| assert spec is None or is_nullable == spec.startswith('?')
|
| - Kind.__init__(self, spec)
|
| + Kind.__init__(self, spec, module)
|
| self.is_nullable = is_nullable
|
| self.shared_definition = {}
|
|
|
| @@ -138,6 +139,8 @@ class ReferenceKind(Kind):
|
| if self.spec is not None:
|
| nullable_kind.spec = '?' + self.spec
|
| nullable_kind.is_nullable = True
|
| + nullable_kind.parent_kind = self.parent_kind
|
| + nullable_kind.module = self.module
|
|
|
| return nullable_kind
|
|
|
| @@ -224,13 +227,11 @@ ATTRIBUTE_SYNC = 'Sync'
|
| class NamedValue(object):
|
| def __init__(self, module, parent_kind, name):
|
| self.module = module
|
| - self.namespace = module.namespace
|
| self.parent_kind = parent_kind
|
| self.name = name
|
| - self.imported_from = None
|
|
|
| def GetSpec(self):
|
| - return (self.namespace + '.' +
|
| + return (self.module.namespace + '.' +
|
| (self.parent_kind and (self.parent_kind.name + '.') or "") +
|
| self.name)
|
|
|
| @@ -252,7 +253,7 @@ class EnumValue(NamedValue):
|
| self.enum = enum
|
|
|
| def GetSpec(self):
|
| - return (self.namespace + '.' +
|
| + return (self.module.namespace + '.' +
|
| (self.parent_kind and (self.parent_kind.name + '.') or "") +
|
| self.enum.name + '.' + self.name)
|
|
|
| @@ -300,9 +301,6 @@ class Struct(ReferenceKind):
|
| name: {str} The name of the struct type.
|
| native_only: {bool} Does the struct have a body (i.e. any fields) or is it
|
| purely a native struct.
|
| - module: {Module} The defining module.
|
| - imported_from: {dict} Information about where this union was
|
| - imported from.
|
| fields: {List[StructField]} The members of the struct.
|
| attributes: {dict} Additional information about the struct, such as
|
| if it's a native struct.
|
| @@ -310,8 +308,6 @@ class Struct(ReferenceKind):
|
|
|
| ReferenceKind.AddSharedProperty('name')
|
| ReferenceKind.AddSharedProperty('native_only')
|
| - ReferenceKind.AddSharedProperty('module')
|
| - ReferenceKind.AddSharedProperty('imported_from')
|
| ReferenceKind.AddSharedProperty('fields')
|
| ReferenceKind.AddSharedProperty('attributes')
|
|
|
| @@ -320,22 +316,19 @@ class Struct(ReferenceKind):
|
| spec = 'x:' + name
|
| else:
|
| spec = None
|
| - ReferenceKind.__init__(self, spec)
|
| + ReferenceKind.__init__(self, spec, False, module)
|
| self.name = name
|
| self.native_only = False
|
| - self.module = module
|
| - self.imported_from = None
|
| self.fields = []
|
| self.attributes = attributes
|
|
|
| def Repr(self, as_ref=True):
|
| if as_ref:
|
| - return '<%s name=%r imported_from=%s>' % (
|
| + return '<%s name=%r module=%s>' % (
|
| self.__class__.__name__, self.name,
|
| - Repr(self.imported_from, as_ref=True))
|
| + Repr(self.module, as_ref=True))
|
| else:
|
| - return GenericRepr(self, {'name': False, 'fields': False,
|
| - 'imported_from': True})
|
| + return GenericRepr(self, {'name': False, 'fields': False, 'module': True})
|
|
|
| def AddField(self, name, kind, ordinal=None, default=None, attributes=None):
|
| field = StructField(name, kind, ordinal, default, attributes)
|
| @@ -348,17 +341,12 @@ class Union(ReferenceKind):
|
|
|
| Attributes:
|
| name: {str} The name of the union type.
|
| - module: {Module} The defining module.
|
| - imported_from: {dict} Information about where this union was
|
| - imported from.
|
| fields: {List[UnionField]} The members of the union.
|
| attributes: {dict} Additional information about the union, such as
|
| which Java class name to use to represent it in the generated
|
| bindings.
|
| """
|
| ReferenceKind.AddSharedProperty('name')
|
| - ReferenceKind.AddSharedProperty('module')
|
| - ReferenceKind.AddSharedProperty('imported_from')
|
| ReferenceKind.AddSharedProperty('fields')
|
| ReferenceKind.AddSharedProperty('attributes')
|
|
|
| @@ -367,10 +355,8 @@ class Union(ReferenceKind):
|
| spec = 'x:' + name
|
| else:
|
| spec = None
|
| - ReferenceKind.__init__(self, spec)
|
| + ReferenceKind.__init__(self, spec, False, module)
|
| self.name = name
|
| - self.module = module
|
| - self.imported_from = None
|
| self.fields = []
|
| self.attributes = attributes
|
|
|
| @@ -551,9 +537,7 @@ class Method(object):
|
|
|
|
|
| class Interface(ReferenceKind):
|
| - ReferenceKind.AddSharedProperty('module')
|
| ReferenceKind.AddSharedProperty('name')
|
| - ReferenceKind.AddSharedProperty('imported_from')
|
| ReferenceKind.AddSharedProperty('methods')
|
| ReferenceKind.AddSharedProperty('attributes')
|
|
|
| @@ -562,10 +546,8 @@ class Interface(ReferenceKind):
|
| spec = 'x:' + name
|
| else:
|
| spec = None
|
| - ReferenceKind.__init__(self, spec)
|
| - self.module = module
|
| + ReferenceKind.__init__(self, spec, False, module)
|
| self.name = name
|
| - self.imported_from = None
|
| self.methods = []
|
| self.attributes = attributes
|
|
|
| @@ -618,15 +600,13 @@ class EnumField(object):
|
|
|
| class Enum(Kind):
|
| def __init__(self, name=None, module=None, attributes=None):
|
| - self.module = module
|
| self.name = name
|
| self.native_only = False
|
| - self.imported_from = None
|
| if name is not None:
|
| spec = 'x:' + name
|
| else:
|
| spec = None
|
| - Kind.__init__(self, spec)
|
| + Kind.__init__(self, spec, module)
|
| self.fields = []
|
| self.attributes = attributes
|
|
|
|
|