Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
  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