| Index: mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py b/mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py
|
| index 222261d47ec9fa38e43e1b6c622a3fe14316933a..ed117c090e501e7492e52601bcec38199c7f8861 100755
|
| --- a/mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py
|
| @@ -73,7 +73,7 @@ class FileTranslator(object):
|
| if mojom_file.declared_mojom_objects:
|
| if mojom_file.declared_mojom_objects.top_level_constants:
|
| mod.constants = [
|
| - self.ConstantFromValueKey(key)
|
| + self.ConstantFromKey(key)
|
| for key in mojom_file.declared_mojom_objects.top_level_constants]
|
|
|
| user_defined_types = ['interfaces', 'structs', 'unions']
|
| @@ -336,7 +336,7 @@ class FileTranslator(object):
|
|
|
| if contained_declarations.constants:
|
| for const_key in contained_declarations.constants:
|
| - const = self.ConstantFromValueKey(const_key)
|
| + const = self.ConstantFromKey(const_key)
|
| parent_kind.constants.append(const)
|
|
|
| def EnumFromMojom(self, enum, mojom_type):
|
| @@ -511,22 +511,23 @@ class FileTranslator(object):
|
|
|
| return method
|
|
|
| - def ConstantFromValueKey(self, value_key):
|
| - """Takes a value key into a graph.resolved_values referring to a constant
|
| - and returns the module equivalent.
|
| + def ConstantFromKey(self, constant_key):
|
| + """Takes a key into the map graph.resolved_constants and returns the module
|
| + equivalent constant.
|
|
|
| Args:
|
| - value_key: {str} the value key referring to the value to be returned.
|
| + constant_key: {str} the key referring to the constant whose translation
|
| + is to be returned.
|
|
|
| Returns:
|
| {module.Constant} translated.
|
| """
|
| - if value_key in self._constant_cache:
|
| - return self._constant_cache[value_key]
|
| + if constant_key in self._constant_cache:
|
| + return self._constant_cache[constant_key]
|
|
|
| - mojom_const = self._graph.resolved_values[value_key].declared_constant
|
| + mojom_const = self._graph.resolved_constants[constant_key]
|
| const = module.Constant()
|
| - self._constant_cache[value_key] = const
|
| + self._constant_cache[constant_key] = const
|
|
|
| self.ConstantFromMojom(const, mojom_const)
|
| return const
|
| @@ -598,75 +599,82 @@ class FileTranslator(object):
|
| mojom_types_mojom.BuiltinConstantValue.FLOAT_NAN: 'float.NAN',
|
| }
|
| return module.BuiltinValue(mojom_to_builtin[value.builtin_value])
|
| + return self.FromUserValueReference(value)
|
|
|
| - assert value.tag == mojom_types_mojom.Value.Tags.user_value_reference
|
| - return self.UserDefinedFromValueKey(value.user_value_reference.value_key)
|
| -
|
| - def UserDefinedFromValueKey(self, value_key):
|
| - """Takes a value key into graph.resolved_values and returns the module
|
| - equivalent.
|
| + def FromUserValueReference(self, value):
|
| + """Translates a mojom_types.EnumValueReference or ConstantReference into the
|
| + module equivalent.
|
|
|
| Args:
|
| - value_key: {str} the value key referring to the value to be returned.
|
| + value: {mojom_types_mojom.Value} the value ref to be translated. It
|
| + must be of type EnumValueReference or ConstantReference.
|
|
|
| Returns:
|
| {module.EnumValue|module.ConstantValue} translated.
|
| """
|
| - if value_key in self._value_cache:
|
| - return self._value_cache[value_key]
|
| + if value.tag == mojom_types_mojom.Value.Tags.constant_reference:
|
| + return self.ConstantValueFromKey(value.constant_reference.constant_key)
|
| + assert value.tag == mojom_types_mojom.Value.Tags.enum_value_reference
|
| + return self.EnumValueFromKey(value.enum_value_reference.enum_type_key,
|
| + value.enum_value_reference.enum_value_index)
|
|
|
| - value = self._graph.resolved_values[value_key]
|
| - if value.tag == mojom_types_mojom.UserDefinedValue.Tags.enum_value:
|
| - return self.EnumValueFromMojom(value.enum_value)
|
| - return self.ConstantValueFromValueKey(value_key)
|
| -
|
| - def ConstantValueFromValueKey(self, value_key):
|
| - """Takes a value key into graph.resolved_values referring to a declared
|
| - constant and returns the module equivalent.
|
| + def ConstantValueFromKey(self, constant_key):
|
| + """Takes a key into graph.resolved_constants referring to a
|
| + mojom declared_constant and returns a module.ConstantValue referring to the
|
| + module equivalent constant.
|
|
|
| Args:
|
| - value_key: {str} the value key referring to the value to be returned.
|
| + constant_key: {str} the constant key referring to a constant.
|
|
|
| Returns:
|
| {module.ConstantValue} translated.
|
| """
|
| + if constant_key in self._value_cache:
|
| + return self._value_cache[constant_key]
|
| +
|
| const_value = module.ConstantValue()
|
| - self._value_cache[value_key] = const_value
|
| + self._value_cache[constant_key] = const_value
|
|
|
| - const = self.ConstantFromValueKey(value_key)
|
| + const = self.ConstantFromKey(constant_key)
|
| const_value.constant = const
|
| const_value.name = const.name
|
| const_value.parent_kind = const.parent_kind
|
| self.PopulateModuleOrImportedFrom(const_value,
|
| - self._graph.resolved_values[value_key].declared_constant)
|
| + self._graph.resolved_constants[constant_key])
|
| const_value.namespace = const_value.module.namespace
|
| return const_value
|
|
|
| - def EnumValueFromMojom(self, mojom_enum_value):
|
| - """Translates an mojom_types_mojom.EnumValue to a module.EnumValue.
|
| + def EnumValueFromKey(self, enum_type_key, enum_value_index):
|
| + """Takes an enum type key and an enum value index (together these
|
| + form a key to a mojom_enum_value) and returns a module.EnumValue referring
|
| + the module equivalent enum value
|
|
|
| - mojom_enum_value: {mojom_types_mojom.EnumValue} to be translated.
|
| + Args:
|
| + enum_type_key: {str} the type key of a mojom_enum
|
| + enum_value_index: {int} the 0-based index into the |values| array of
|
| + the mojom_enum
|
|
|
| Returns:
|
| {module.EnumValue} translated from mojom_enum_value.
|
| """
|
| - enum_type_key = mojom_enum_value.enum_type_key
|
| - name = mojom_enum_value.decl_data.short_name
|
| - value_key = (enum_type_key, name)
|
| - if value_key in self._value_cache:
|
| - return self._value_cache[value_key]
|
| + enum_value_key = (enum_type_key, enum_value_index)
|
| + if enum_value_key in self._value_cache:
|
| + return self._value_cache[enum_value_key]
|
| +
|
| + mojom_enum = self._graph.resolved_types[enum_type_key].enum_type
|
| + mojom_enum_value = mojom_enum.values[enum_value_index]
|
|
|
| # We need to create and cache the EnumValue object just in case later calls
|
| # require the creation of that same EnumValue object.
|
| enum_value = module.EnumValue()
|
| - self._value_cache[value_key] = enum_value
|
| + self._value_cache[enum_value_key] = enum_value
|
|
|
| enum = self.UserDefinedFromTypeKey(enum_type_key)
|
| enum_value.enum = enum
|
| self.PopulateModuleOrImportedFrom(enum_value, mojom_enum_value)
|
| enum_value.namespace = enum_value.module.namespace
|
| enum_value.parent_kind = enum.parent_kind
|
| - enum_value.name = name
|
| + enum_value.name = mojom_enum_value.decl_data.short_name
|
|
|
| return enum_value
|
|
|
|
|