def _EnumField(module, enum, parsed_field, parent_kind): """ Args: module: {mojom.Module} Module currently being constructed. enum: {mojom.Enum} Enum this field belongs to. parsed_field: {ast.EnumValue} Parsed enum value. parent_kind: {mojom.Kind} The enclosing type. Returns: {mojom.EnumField} AST enum field. """ field = mojom.EnumField() field.mojom_name = parsed_field.mojom_name # TODO(mpcomplete): FixupExpression should be done in the second pass, # so constants and enums can refer to each other. # TODO(mpcomplete): But then, what if constants are initialized to an enum? Or # vice versa? if parent_kind: field.value = _FixupExpression( module, parsed_field.value, (module.mojom_namespace, parent_kind.mojom_name), enum) else: field.value = _FixupExpression(module, parsed_field.value, (module.mojom_namespace, ), enum) field.attributes = _AttributeListToDict(parsed_field.attribute_list) value = mojom.EnumValue(module, enum, field) module.values[value.GetSpec()] = value return field
def EnumFieldFromData(module, enum, data, parent_kind): field = mojom.EnumField() field.name = data['name'] if parent_kind: field.value = FixupExpression(module, data['value'], (module.namespace, parent_kind.name)) else: field.value = FixupExpression(module, data['value'], (module.namespace, )) constant = mojom.Constant(module, enum, field) module.constants[constant.GetSpec()] = constant return field
def EnumFieldFromData(module, enum, data, parent_kind): field = mojom.EnumField() field.name = data['name'] # TODO(mpcomplete): FixupExpression should be done in the second pass, # so constants and enums can refer to each other. # TODO(mpcomplete): But then, what if constants are initialized to an enum? Or # vice versa? if parent_kind: field.value = FixupExpression( module, data['value'], (module.namespace, parent_kind.name)) else: field.value = FixupExpression( module, data['value'], (module.namespace, )) value = mojom.EnumValue(module, enum, field) module.values[value.GetSpec()] = value return field
def EnumFieldFromMojom(self, mojom_enum_value): """Translates an mojom_types_mojom.EnumValue to a module.EnumField. mojom_enum_value: {mojom_types_mojom.EnumValue} to be translated. Returns: {module.EnumField} translated from mojom_enum_value. """ field = module.EnumField() field.name = mojom_enum_value.decl_data.short_name field.attributes = self.AttributesFromMojom(mojom_enum_value) field.numeric_value = mojom_enum_value.int_value if mojom_enum_value.initializer_value is not None: field.value = self.ValueFromMojom(mojom_enum_value.initializer_value) return field