| Index: third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| diff --git a/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/module.py b/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| index 8e52924f27d22cd2615559c29542691301384950..8a0f56ba55a9b52345db3386a0ce23e287a38668 100644
|
| --- a/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| +++ b/third_party/mojo/src/mojo/public/tools/bindings/pylib/mojom/generate/module.py
|
| @@ -130,6 +130,10 @@ PRIMITIVES = (
|
| )
|
|
|
|
|
| +ATTRIBUTE_MIN_VERSION = 'MinVersion'
|
| +ATTRIBUTE_CLIENT = 'Client'
|
| +
|
| +
|
| class NamedValue(object):
|
| def __init__(self, module, parent_kind, name):
|
| self.module = module
|
| @@ -174,11 +178,18 @@ class Constant(object):
|
|
|
|
|
| class Field(object):
|
| - def __init__(self, name=None, kind=None, ordinal=None, default=None):
|
| + def __init__(self, name=None, kind=None, ordinal=None, default=None,
|
| + attributes=None):
|
| self.name = name
|
| self.kind = kind
|
| self.ordinal = ordinal
|
| self.default = default
|
| + self.attributes = attributes
|
| +
|
| + @property
|
| + def min_version(self):
|
| + return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
|
| + if self.attributes else None
|
|
|
|
|
| class Struct(ReferenceKind):
|
| @@ -186,8 +197,9 @@ class Struct(ReferenceKind):
|
| ReferenceKind.AddSharedProperty('module')
|
| ReferenceKind.AddSharedProperty('imported_from')
|
| ReferenceKind.AddSharedProperty('fields')
|
| + ReferenceKind.AddSharedProperty('attributes')
|
|
|
| - def __init__(self, name=None, module=None):
|
| + def __init__(self, name=None, module=None, attributes=None):
|
| if name is not None:
|
| spec = 'x:' + name
|
| else:
|
| @@ -197,9 +209,10 @@ class Struct(ReferenceKind):
|
| self.module = module
|
| self.imported_from = None
|
| self.fields = []
|
| + self.attributes = attributes
|
|
|
| - def AddField(self, name, kind, ordinal=None, default=None):
|
| - field = Field(name, kind, ordinal, default)
|
| + def AddField(self, name, kind, ordinal=None, default=None, attributes=None):
|
| + field = Field(name, kind, ordinal, default, attributes)
|
| self.fields.append(field)
|
| return field
|
|
|
| @@ -209,8 +222,9 @@ class Union(ReferenceKind):
|
| ReferenceKind.AddSharedProperty('module')
|
| ReferenceKind.AddSharedProperty('imported_from')
|
| ReferenceKind.AddSharedProperty('fields')
|
| + ReferenceKind.AddSharedProperty('attributes')
|
|
|
| - def __init__(self, name=None, module=None):
|
| + def __init__(self, name=None, module=None, attributes=None):
|
| if name is not None:
|
| spec = 'x:' + name
|
| else:
|
| @@ -220,9 +234,10 @@ class Union(ReferenceKind):
|
| self.module = module
|
| self.imported_from = None
|
| self.fields = []
|
| + self.attributes = attributes
|
|
|
| - def AddField(self, name, kind, ordinal=None):
|
| - field = Field(name, kind, ordinal, default=None)
|
| + def AddField(self, name, kind, ordinal=None, attributes=None):
|
| + field = Field(name, kind, ordinal, None, attributes)
|
| self.fields.append(field)
|
| return field
|
|
|
| @@ -287,42 +302,57 @@ class InterfaceRequest(ReferenceKind):
|
|
|
|
|
| class Parameter(object):
|
| - def __init__(self, name=None, kind=None, ordinal=None, default=None):
|
| + def __init__(self, name=None, kind=None, ordinal=None, default=None,
|
| + attributes=None):
|
| self.name = name
|
| self.ordinal = ordinal
|
| self.kind = kind
|
| self.default = default
|
| + self.attributes = attributes
|
| +
|
| + @property
|
| + def min_version(self):
|
| + return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
|
| + if self.attributes else None
|
|
|
|
|
| class Method(object):
|
| - def __init__(self, interface, name, ordinal=None):
|
| + def __init__(self, interface, name, ordinal=None, attributes=None):
|
| self.interface = interface
|
| self.name = name
|
| self.ordinal = ordinal
|
| self.parameters = []
|
| self.response_parameters = None
|
| + self.attributes = attributes
|
|
|
| - def AddParameter(self, name, kind, ordinal=None, default=None):
|
| - parameter = Parameter(name, kind, ordinal, default)
|
| + def AddParameter(self, name, kind, ordinal=None, default=None,
|
| + attributes=None):
|
| + parameter = Parameter(name, kind, ordinal, default, attributes)
|
| self.parameters.append(parameter)
|
| return parameter
|
|
|
| - def AddResponseParameter(self, name, kind, ordinal=None, default=None):
|
| + def AddResponseParameter(self, name, kind, ordinal=None, default=None,
|
| + attributes=None):
|
| if self.response_parameters == None:
|
| self.response_parameters = []
|
| - parameter = Parameter(name, kind, ordinal, default)
|
| + parameter = Parameter(name, kind, ordinal, default, attributes)
|
| self.response_parameters.append(parameter)
|
| return parameter
|
|
|
| + @property
|
| + def min_version(self):
|
| + return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
|
| + if self.attributes else None
|
| +
|
|
|
| class Interface(ReferenceKind):
|
| ReferenceKind.AddSharedProperty('module')
|
| ReferenceKind.AddSharedProperty('name')
|
| ReferenceKind.AddSharedProperty('imported_from')
|
| - ReferenceKind.AddSharedProperty('client')
|
| ReferenceKind.AddSharedProperty('methods')
|
| + ReferenceKind.AddSharedProperty('attributes')
|
|
|
| - def __init__(self, name=None, client=None, module=None):
|
| + def __init__(self, name=None, module=None, attributes=None):
|
| if name is not None:
|
| spec = 'x:' + name
|
| else:
|
| @@ -331,23 +361,33 @@ class Interface(ReferenceKind):
|
| self.module = module
|
| self.name = name
|
| self.imported_from = None
|
| - self.client = client
|
| self.methods = []
|
| + self.attributes = attributes
|
|
|
| - def AddMethod(self, name, ordinal=None):
|
| - method = Method(self, name, ordinal=ordinal)
|
| + def AddMethod(self, name, ordinal=None, attributes=None):
|
| + method = Method(self, name, ordinal, attributes)
|
| self.methods.append(method)
|
| return method
|
|
|
| + @property
|
| + def client(self):
|
| + return self.attributes.get(ATTRIBUTE_CLIENT) if self.attributes else None
|
| +
|
|
|
| class EnumField(object):
|
| - def __init__(self, name=None, value=None):
|
| + def __init__(self, name=None, value=None, attributes=None):
|
| self.name = name
|
| self.value = value
|
| + self.attributes = attributes
|
| +
|
| + @property
|
| + def min_version(self):
|
| + return self.attributes.get(ATTRIBUTE_MIN_VERSION) \
|
| + if self.attributes else None
|
|
|
|
|
| class Enum(Kind):
|
| - def __init__(self, name=None, module=None):
|
| + def __init__(self, name=None, module=None, attributes=None):
|
| self.module = module
|
| self.name = name
|
| self.imported_from = None
|
| @@ -357,10 +397,11 @@ class Enum(Kind):
|
| spec = None
|
| Kind.__init__(self, spec)
|
| self.fields = []
|
| + self.attributes = attributes
|
|
|
|
|
| class Module(object):
|
| - def __init__(self, name=None, namespace=None):
|
| + def __init__(self, name=None, namespace=None, attributes=None):
|
| self.name = name
|
| self.path = name
|
| self.namespace = namespace
|
| @@ -368,19 +409,20 @@ class Module(object):
|
| self.unions = []
|
| self.interfaces = []
|
| self.kinds = {}
|
| + self.attributes = attributes
|
|
|
| - def AddInterface(self, name):
|
| - interface = Interface(name, module=self)
|
| + def AddInterface(self, name, attributes=None):
|
| + interface = Interface(name, self, attributes)
|
| self.interfaces.append(interface)
|
| return interface
|
|
|
| - def AddStruct(self, name):
|
| - struct = Struct(name, module=self)
|
| + def AddStruct(self, name, attributes=None):
|
| + struct = Struct(name, self, attributes)
|
| self.structs.append(struct)
|
| return struct
|
|
|
| - def AddUnion(self, name):
|
| - union = Union(name, module=self)
|
| + def AddUnion(self, name, attributes=None):
|
| + union = Union(name, self, attributes)
|
| self.unions.append(union)
|
| return union
|
|
|
|
|