| 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 906d3fde279d4e9546e72e181915c4454157f599..8048e19c60792427b61f70b69b7fb8c4cf5a11cd 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| @@ -83,7 +83,7 @@ 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
|
| + parent_kind: The enclosing type. For example, an enum defined
|
| inside an interface has that interface as its parent. May be None.
|
| """
|
| def __init__(self, spec=None, module=None):
|
| @@ -225,15 +225,19 @@ ATTRIBUTE_SYNC = 'Sync'
|
|
|
|
|
| class NamedValue(object):
|
| - def __init__(self, module, parent_kind, name):
|
| + def __init__(self, module, parent_kind, mojom_name):
|
| self.module = module
|
| self.parent_kind = parent_kind
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
|
|
| def GetSpec(self):
|
| - return (self.module.namespace + '.' +
|
| - (self.parent_kind and (self.parent_kind.name + '.') or "") +
|
| - self.name)
|
| + print self.module.mojom_namespace
|
| + if self.parent_kind:
|
| + print self.parent_kind.mojom_name
|
| + print self.mojom_name
|
| + return (self.module.mojom_namespace + '.' +
|
| + (self.parent_kind and (self.parent_kind.mojom_name + '.') or "") +
|
| + self.mojom_name)
|
|
|
|
|
| class BuiltinValue(object):
|
| @@ -243,35 +247,52 @@ class BuiltinValue(object):
|
|
|
| class ConstantValue(NamedValue):
|
| def __init__(self, module, parent_kind, constant):
|
| - NamedValue.__init__(self, module, parent_kind, constant.name)
|
| + NamedValue.__init__(self, module, parent_kind, constant.mojom_name)
|
| self.constant = constant
|
|
|
| + @property
|
| + def name(self):
|
| + return self.constant.name
|
| +
|
|
|
| class EnumValue(NamedValue):
|
| def __init__(self, module, enum, field):
|
| - NamedValue.__init__(self, module, enum.parent_kind, field.name)
|
| + NamedValue.__init__(self, module, enum.parent_kind, field.mojom_name)
|
| + self.field = field
|
| self.enum = enum
|
|
|
| def GetSpec(self):
|
| - return (self.module.namespace + '.' +
|
| - (self.parent_kind and (self.parent_kind.name + '.') or "") +
|
| - self.enum.name + '.' + self.name)
|
| + print self.module.mojom_namespace
|
| + if self.parent_kind:
|
| + print self.parent_kind.mojom_name
|
| + print self.enum.mojom_name
|
| + print self.mojom_name
|
| + return (self.module.mojom_namespace + '.' +
|
| + (self.parent_kind and (self.parent_kind.mojom_name + '.') or "") +
|
| + self.enum.mojom_name + '.' + self.mojom_name)
|
| +
|
| + @property
|
| + def name(self):
|
| + return self.field.name
|
|
|
|
|
| class Constant(object):
|
| - def __init__(self, name=None, kind=None, value=None, parent_kind=None):
|
| - self.name = name
|
| + def __init__(self, mojom_name=None, kind=None, value=None, parent_kind=None):
|
| + self.mojom_name = mojom_name
|
| self.kind = kind
|
| self.value = value
|
| self.parent_kind = parent_kind
|
|
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeConstant(self.mojom_name)
|
| +
|
|
|
| class Field(object):
|
| - def __init__(self, name=None, kind=None, ordinal=None, default=None,
|
| + def __init__(self, mojom_name=None, kind=None, ordinal=None, default=None,
|
| attributes=None):
|
| if self.__class__.__name__ == 'Field':
|
| raise Exception()
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.kind = kind
|
| self.ordinal = ordinal
|
| self.default = default
|
| @@ -280,7 +301,10 @@ class Field(object):
|
| def Repr(self, as_ref=True):
|
| # Fields are only referenced by objects which define them and thus
|
| # they are always displayed as non-references.
|
| - return GenericRepr(self, {'name': False, 'kind': True})
|
| + return GenericRepr(self, {'mojom_name': False, 'kind': True})
|
| +
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeField(self.mojom_name)
|
|
|
| @property
|
| def min_version(self):
|
| @@ -298,65 +322,86 @@ class Struct(ReferenceKind):
|
| """A struct with typed fields.
|
|
|
| Attributes:
|
| - name: {str} The name of the struct type.
|
| + mojom_name: {str} The name of the struct type as defined in mojom.
|
| + name: {str} The stylized name.
|
| native_only: {bool} Does the struct have a body (i.e. any fields) or is it
|
| purely a native struct.
|
| fields: {List[StructField]} The members of the struct.
|
| + enums: {List[Enum]} The enums defined in the struct scope.
|
| + constants: {List[Constant]} The constants defined in the struct scope.
|
| attributes: {dict} Additional information about the struct, such as
|
| if it's a native struct.
|
| """
|
|
|
| + ReferenceKind.AddSharedProperty('mojom_name')
|
| ReferenceKind.AddSharedProperty('name')
|
| ReferenceKind.AddSharedProperty('native_only')
|
| ReferenceKind.AddSharedProperty('fields')
|
| + ReferenceKind.AddSharedProperty('enums')
|
| + ReferenceKind.AddSharedProperty('constants')
|
| ReferenceKind.AddSharedProperty('attributes')
|
|
|
| - def __init__(self, name=None, module=None, attributes=None):
|
| - if name is not None:
|
| - spec = 'x:' + name
|
| + def __init__(self, mojom_name=None, module=None, attributes=None):
|
| + if mojom_name is not None:
|
| + spec = 'x:' + mojom_name
|
| else:
|
| spec = None
|
| ReferenceKind.__init__(self, spec, False, module)
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.native_only = False
|
| self.fields = []
|
| + self.enums = []
|
| + self.constants = []
|
| self.attributes = attributes
|
|
|
| def Repr(self, as_ref=True):
|
| if as_ref:
|
| - return '<%s name=%r module=%s>' % (
|
| - self.__class__.__name__, self.name,
|
| + return '<%s mojom_name=%r module=%s>' % (
|
| + self.__class__.__name__, self.mojom_name,
|
| Repr(self.module, as_ref=True))
|
| else:
|
| - return GenericRepr(self, {'name': False, 'fields': False, 'module': True})
|
| + return GenericRepr(self,
|
| + {'mojom_name': False, 'fields': False, 'module': True})
|
|
|
| - def AddField(self, name, kind, ordinal=None, default=None, attributes=None):
|
| - field = StructField(name, kind, ordinal, default, attributes)
|
| + def AddField(self, mojom_name, kind, ordinal=None, default=None,
|
| + attributes=None):
|
| + field = StructField(mojom_name, kind, ordinal, default, attributes)
|
| self.fields.append(field)
|
| return field
|
|
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeStruct(self.mojom_name)
|
| + for field in self.fields:
|
| + field.Stylize(stylizer)
|
| + for enum in self.enums:
|
| + enum.Stylize(stylizer)
|
| + for constant in self.constants:
|
| + constant.Stylize(stylizer)
|
| +
|
|
|
| class Union(ReferenceKind):
|
| """A union of several kinds.
|
|
|
| Attributes:
|
| - name: {str} The name of the union type.
|
| + mojom_name: {str} The name of the union type as defined in mojom.
|
| + name: {str} The stylized name.
|
| 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('mojom_name')
|
| ReferenceKind.AddSharedProperty('name')
|
| ReferenceKind.AddSharedProperty('fields')
|
| ReferenceKind.AddSharedProperty('attributes')
|
|
|
| - def __init__(self, name=None, module=None, attributes=None):
|
| - if name is not None:
|
| - spec = 'x:' + name
|
| + def __init__(self, mojom_name=None, module=None, attributes=None):
|
| + if mojom_name is not None:
|
| + spec = 'x:' + mojom_name
|
| else:
|
| spec = None
|
| ReferenceKind.__init__(self, spec, False, module)
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.fields = []
|
| self.attributes = attributes
|
|
|
| @@ -368,11 +413,16 @@ class Union(ReferenceKind):
|
| else:
|
| return GenericRepr(self, {'fields': True, 'is_nullable': False})
|
|
|
| - def AddField(self, name, kind, ordinal=None, attributes=None):
|
| - field = UnionField(name, kind, ordinal, None, attributes)
|
| + def AddField(self, mojom_name, kind, ordinal=None, attributes=None):
|
| + field = UnionField(mojom_name, kind, ordinal, None, attributes)
|
| self.fields.append(field)
|
| return field
|
|
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeUnion(self.mojom_name)
|
| + for field in self.fields:
|
| + field.Stylize(stylizer)
|
| +
|
|
|
| class Array(ReferenceKind):
|
| """An array.
|
| @@ -477,17 +527,20 @@ class AssociatedInterfaceRequest(ReferenceKind):
|
|
|
|
|
| class Parameter(object):
|
| - def __init__(self, name=None, kind=None, ordinal=None, default=None,
|
| + def __init__(self, mojom_name=None, kind=None, ordinal=None, default=None,
|
| attributes=None):
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.ordinal = ordinal
|
| self.kind = kind
|
| self.default = default
|
| self.attributes = attributes
|
|
|
| def Repr(self, as_ref=True):
|
| - return '<%s name=%r kind=%s>' % (self.__class__.__name__, self.name,
|
| - self.kind.Repr(as_ref=True))
|
| + return '<%s mojom_name=%r kind=%s>' % (
|
| + self.__class__.__name__, self.mojom_name, self.kind.Repr(as_ref=True))
|
| +
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeParameter(self.mojom_name)
|
|
|
| @property
|
| def min_version(self):
|
| @@ -496,9 +549,9 @@ class Parameter(object):
|
|
|
|
|
| class Method(object):
|
| - def __init__(self, interface, name, ordinal=None, attributes=None):
|
| + def __init__(self, interface, mojom_name, ordinal=None, attributes=None):
|
| self.interface = interface
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.ordinal = ordinal
|
| self.parameters = []
|
| self.response_parameters = None
|
| @@ -506,25 +559,33 @@ class Method(object):
|
|
|
| def Repr(self, as_ref=True):
|
| if as_ref:
|
| - return '<%s name=%r>' % (self.__class__.__name__, self.name)
|
| + return '<%s mojom_name=%r>' % (self.__class__.__name__, self.mojom_name)
|
| else:
|
| - return GenericRepr(self, {'name': False, 'parameters': True,
|
| + return GenericRepr(self, {'mojom_name': False, 'parameters': True,
|
| 'response_parameters': True})
|
|
|
| - def AddParameter(self, name, kind, ordinal=None, default=None,
|
| + def AddParameter(self, mojom_name, kind, ordinal=None, default=None,
|
| attributes=None):
|
| - parameter = Parameter(name, kind, ordinal, default, attributes)
|
| + parameter = Parameter(mojom_name, kind, ordinal, default, attributes)
|
| self.parameters.append(parameter)
|
| return parameter
|
|
|
| - def AddResponseParameter(self, name, kind, ordinal=None, default=None,
|
| + def AddResponseParameter(self, mojom_name, kind, ordinal=None, default=None,
|
| attributes=None):
|
| if self.response_parameters == None:
|
| self.response_parameters = []
|
| - parameter = Parameter(name, kind, ordinal, default, attributes)
|
| + parameter = Parameter(mojom_name, kind, ordinal, default, attributes)
|
| self.response_parameters.append(parameter)
|
| return parameter
|
|
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeMethod(self.mojom_name)
|
| + for param in self.parameters:
|
| + param.Stylize(stylizer)
|
| + if self.response_parameters is not None:
|
| + for param in self.response_parameters:
|
| + param.Stylize(stylizer)
|
| +
|
| @property
|
| def min_version(self):
|
| return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
|
| @@ -537,36 +598,45 @@ class Method(object):
|
|
|
|
|
| class Interface(ReferenceKind):
|
| + ReferenceKind.AddSharedProperty('mojom_name')
|
| ReferenceKind.AddSharedProperty('name')
|
| ReferenceKind.AddSharedProperty('methods')
|
| + ReferenceKind.AddSharedProperty('enums')
|
| + ReferenceKind.AddSharedProperty('constants')
|
| ReferenceKind.AddSharedProperty('attributes')
|
|
|
| - def __init__(self, name=None, module=None, attributes=None):
|
| - if name is not None:
|
| - spec = 'x:' + name
|
| + def __init__(self, mojom_name=None, module=None, attributes=None):
|
| + if mojom_name is not None:
|
| + spec = 'x:' + mojom_name
|
| else:
|
| spec = None
|
| ReferenceKind.__init__(self, spec, False, module)
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.methods = []
|
| + self.enums = []
|
| + self.constants = []
|
| self.attributes = attributes
|
|
|
| def Repr(self, as_ref=True):
|
| if as_ref:
|
| - return '<%s name=%r>' % (self.__class__.__name__, self.name)
|
| + return '<%s mojom_name=%r>' % (self.__class__.__name__, self.mojom_name)
|
| else:
|
| - return GenericRepr(self, {'name': False, 'attributes': False,
|
| + return GenericRepr(self, {'mojom_name': False, 'attributes': False,
|
| 'methods': False})
|
|
|
| - def AddMethod(self, name, ordinal=None, attributes=None):
|
| - method = Method(self, name, ordinal, attributes)
|
| + def AddMethod(self, mojom_name, ordinal=None, attributes=None):
|
| + method = Method(self, mojom_name, ordinal, attributes)
|
| self.methods.append(method)
|
| return method
|
|
|
| - # TODO(451323): Remove when the language backends no longer rely on this.
|
| - @property
|
| - def client(self):
|
| - return None
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeInterface(self.mojom_name)
|
| + for method in self.methods:
|
| + method.Stylize(stylizer)
|
| + for enum in self.enums:
|
| + enum.Stylize(stylizer)
|
| + for constant in self.constants:
|
| + constant.Stylize(stylizer)
|
|
|
|
|
| class AssociatedInterface(ReferenceKind):
|
| @@ -585,13 +655,16 @@ class AssociatedInterface(ReferenceKind):
|
|
|
|
|
| class EnumField(object):
|
| - def __init__(self, name=None, value=None, attributes=None,
|
| + def __init__(self, mojom_name=None, value=None, attributes=None,
|
| numeric_value=None):
|
| - self.name = name
|
| + self.mojom_name = mojom_name
|
| self.value = value
|
| self.attributes = attributes
|
| self.numeric_value = numeric_value
|
|
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeEnumField(self.mojom_name)
|
| +
|
| @property
|
| def min_version(self):
|
| return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
|
| @@ -599,11 +672,11 @@ class EnumField(object):
|
|
|
|
|
| class Enum(Kind):
|
| - def __init__(self, name=None, module=None, attributes=None):
|
| - self.name = name
|
| + def __init__(self, mojom_name=None, module=None, attributes=None):
|
| + self.mojom_name = mojom_name
|
| self.native_only = False
|
| - if name is not None:
|
| - spec = 'x:' + name
|
| + if mojom_name is not None:
|
| + spec = 'x:' + mojom_name
|
| else:
|
| spec = None
|
| Kind.__init__(self, spec, module)
|
| @@ -612,9 +685,14 @@ class Enum(Kind):
|
|
|
| def Repr(self, as_ref=True):
|
| if as_ref:
|
| - return '<%s name=%r>' % (self.__class__.__name__, self.name)
|
| + return '<%s mojom_name=%r>' % (self.__class__.__name__, self.mojom_name)
|
| else:
|
| - return GenericRepr(self, {'name': False, 'fields': False})
|
| + return GenericRepr(self, {'mojom_name': False, 'fields': False})
|
| +
|
| + def Stylize(self, stylizer):
|
| + self.name = stylizer.StylizeEnum(self.mojom_name)
|
| + for field in self.fields:
|
| + field.Stylize(stylizer)
|
|
|
| @property
|
| def extensible(self):
|
| @@ -623,14 +701,17 @@ class Enum(Kind):
|
|
|
|
|
| class Module(object):
|
| - def __init__(self, path=None, namespace=None, attributes=None):
|
| + def __init__(self, path=None, mojom_namespace=None, attributes=None):
|
| self.path = path
|
| - self.namespace = namespace
|
| + self.mojom_namespace = mojom_namespace
|
| self.structs = []
|
| self.unions = []
|
| self.interfaces = []
|
| + self.enums = []
|
| + self.constants = []
|
| self.kinds = {}
|
| self.attributes = attributes
|
| + self.imports = []
|
|
|
| def __repr__(self):
|
| # Gives us a decent __repr__ for modules.
|
| @@ -638,28 +719,46 @@ class Module(object):
|
|
|
| def Repr(self, as_ref=True):
|
| if as_ref:
|
| - return '<%s path=%r namespace=%r>' % (
|
| - self.__class__.__name__, self.path, self.namespace)
|
| + return '<%s path=%r mojom_namespace=%r>' % (
|
| + self.__class__.__name__, self.path, self.mojom_namespace)
|
| else:
|
| - return GenericRepr(self, {'path': False, 'namespace': False,
|
| + return GenericRepr(self, {'path': False, 'mojom_namespace': False,
|
| 'attributes': False, 'structs': False,
|
| 'interfaces': False, 'unions': False})
|
|
|
| - def AddInterface(self, name, attributes=None):
|
| - interface = Interface(name, self, attributes)
|
| + def AddInterface(self, mojom_name, attributes=None):
|
| + interface = Interface(mojom_name, self, attributes)
|
| self.interfaces.append(interface)
|
| return interface
|
|
|
| - def AddStruct(self, name, attributes=None):
|
| - struct = Struct(name, self, attributes)
|
| + def AddStruct(self, mojom_name, attributes=None):
|
| + struct = Struct(mojom_name, self, attributes)
|
| self.structs.append(struct)
|
| return struct
|
|
|
| - def AddUnion(self, name, attributes=None):
|
| - union = Union(name, self, attributes)
|
| + def AddUnion(self, mojom_name, attributes=None):
|
| + union = Union(mojom_name, self, attributes)
|
| self.unions.append(union)
|
| return union
|
|
|
| + def Stylize(self, stylizer):
|
| + print 'stylizing module %s' % self.name
|
| + self.namespace = stylizer.StylizeModule(self.mojom_namespace)
|
| + for struct in self.structs:
|
| + struct.Stylize(stylizer)
|
| + for union in self.unions:
|
| + union.Stylize(stylizer)
|
| + for interface in self.interfaces:
|
| + interface.Stylize(stylizer)
|
| + for enum in self.enums:
|
| + enum.Stylize(stylizer)
|
| + for constant in self.constants:
|
| + constant.Stylize(stylizer)
|
| +
|
| + for imported_module in self.imports:
|
| + imported_module.Stylize(stylizer)
|
| + print 'stylizing module %s done' % self.name
|
| +
|
|
|
| def IsBoolKind(kind):
|
| return kind.spec == BOOL.spec
|
|
|