func enumType(t *vdl.Type) mojom_types.UserDefinedType { enumValues := make([]mojom_types.EnumValue, t.NumEnumLabel()) for i := 0; i < t.NumEnumLabel(); i++ { enumValues[i] = mojom_types.EnumValue{ DeclData: &mojom_types.DeclarationData{ShortName: strPtr(t.EnumLabel(i))}, IntValue: int32(i), } } _, name := vdl.SplitIdent(t.Name()) return &mojom_types.UserDefinedTypeEnumType{ mojom_types.MojomEnum{ DeclData: &mojom_types.DeclarationData{ ShortName: strPtr(name), FullIdentifier: strPtr(mojomIdentifier(t)), }, Values: enumValues, }, } }
func unionType(t *vdl.Type, mp map[string]mojom_types.UserDefinedType) mojom_types.UserDefinedType { unionFields := make([]mojom_types.UnionField, t.NumField()) for i := 0; i < t.NumField(); i++ { unionFields[i] = mojom_types.UnionField{ DeclData: &mojom_types.DeclarationData{ShortName: strPtr(t.Field(i).Name)}, Type: vdlToMojomTypeInternal(t.Field(i).Type, false, false, mp), Tag: uint32(i), } } _, name := vdl.SplitIdent(t.Name()) return &mojom_types.UserDefinedTypeUnionType{ mojom_types.MojomUnion{ DeclData: &mojom_types.DeclarationData{ ShortName: strPtr(name), FullIdentifier: strPtr(mojomIdentifier(t)), }, Fields: unionFields, }, } }
func structType(t *vdl.Type, mp map[string]mojom_types.UserDefinedType) mojom_types.UserDefinedType { structFields := make([]mojom_types.StructField, t.NumField()) for i := 0; i < t.NumField(); i++ { structFields[i] = mojom_types.StructField{ DeclData: &mojom_types.DeclarationData{ShortName: strPtr(t.Field(i).Name)}, Type: vdlToMojomTypeInternal(t.Field(i).Type, false, false, mp), Offset: 0, // Despite the fact that we can calculated the offset, set it to zero to match the generator } } _, name := vdl.SplitIdent(t.Name()) return &mojom_types.UserDefinedTypeStructType{ mojom_types.MojomStruct{ DeclData: &mojom_types.DeclarationData{ ShortName: strPtr(name), FullIdentifier: strPtr(mojomIdentifier(t)), }, Fields: structFields, }, } }
func mojomIdentifier(t *vdl.Type) string { return strings.Replace(t.Name(), "/", ".", -1) }