Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: mojom/generators/go/translator/translator.go

Issue 2082173002: New go generator shakedown. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package translator 5 package translator
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 "log" 9 "log"
10 "sort" 10 "sort"
(...skipping 18 matching lines...) Expand all
29 t.goTypeCache = map[string]string{} 29 t.goTypeCache = map[string]string{}
30 return t 30 return t
31 } 31 }
32 32
33 func (t *translator) TranslateMojomFile(fileName string) (tmplFile *TmplFile) { 33 func (t *translator) TranslateMojomFile(fileName string) (tmplFile *TmplFile) {
34 tmplFile = new(TmplFile) 34 tmplFile = new(TmplFile)
35 file := t.fileGraph.Files[fileName] 35 file := t.fileGraph.Files[fileName]
36 36
37 tmplFile.PackageName = fileNameToPackageName(fileName) 37 tmplFile.PackageName = fileNameToPackageName(fileName)
38 38
39 if file.DeclaredMojomObjects.Structs == nil {
40 file.DeclaredMojomObjects.Structs = &[]string{}
41 }
39 tmplFile.Structs = make([]*StructTemplate, len(*file.DeclaredMojomObject s.Structs)) 42 tmplFile.Structs = make([]*StructTemplate, len(*file.DeclaredMojomObject s.Structs))
40 for i, typeKey := range *file.DeclaredMojomObjects.Structs { 43 for i, typeKey := range *file.DeclaredMojomObjects.Structs {
41 tmplFile.Structs[i] = t.translateMojomStruct(typeKey) 44 tmplFile.Structs[i] = t.translateMojomStruct(typeKey)
42 } 45 }
43 46
47 if file.DeclaredMojomObjects.Unions == nil {
48 file.DeclaredMojomObjects.Unions = &[]string{}
49 }
44 tmplFile.Unions = make([]*UnionTemplate, len(*file.DeclaredMojomObjects. Unions)) 50 tmplFile.Unions = make([]*UnionTemplate, len(*file.DeclaredMojomObjects. Unions))
45 for i, typeKey := range *file.DeclaredMojomObjects.Unions { 51 for i, typeKey := range *file.DeclaredMojomObjects.Unions {
46 tmplFile.Unions[i] = t.translateMojomUnion(typeKey) 52 tmplFile.Unions[i] = t.translateMojomUnion(typeKey)
47 } 53 }
48 54
55 if file.DeclaredMojomObjects.TopLevelEnums == nil {
56 file.DeclaredMojomObjects.TopLevelEnums = &[]string{}
57 }
58 if file.DeclaredMojomObjects.EmbeddedEnums == nil {
59 file.DeclaredMojomObjects.EmbeddedEnums = &[]string{}
60 }
49 topLevelEnumsNum := len(*file.DeclaredMojomObjects.TopLevelEnums) 61 topLevelEnumsNum := len(*file.DeclaredMojomObjects.TopLevelEnums)
50 » enumNum := len(*file.DeclaredMojomObjects.EmbeddedEnums) + topLevelEnums Num 62 » embeddedEnumsNum := len(*file.DeclaredMojomObjects.EmbeddedEnums)
63 » enumNum := embeddedEnumsNum + topLevelEnumsNum
51 tmplFile.Enums = make([]*EnumTemplate, enumNum) 64 tmplFile.Enums = make([]*EnumTemplate, enumNum)
52 for i, typeKey := range *file.DeclaredMojomObjects.TopLevelEnums { 65 for i, typeKey := range *file.DeclaredMojomObjects.TopLevelEnums {
53 tmplFile.Enums[i] = t.translateMojomEnum(typeKey) 66 tmplFile.Enums[i] = t.translateMojomEnum(typeKey)
54 } 67 }
55
56 for i, typeKey := range *file.DeclaredMojomObjects.EmbeddedEnums { 68 for i, typeKey := range *file.DeclaredMojomObjects.EmbeddedEnums {
57 tmplFile.Enums[i+topLevelEnumsNum] = t.translateMojomEnum(typeKe y) 69 tmplFile.Enums[i+topLevelEnumsNum] = t.translateMojomEnum(typeKe y)
58 } 70 }
59 71
72 if file.DeclaredMojomObjects.Interfaces == nil {
73 file.DeclaredMojomObjects.Interfaces = &[]string{}
74 }
60 tmplFile.Interfaces = make([]*InterfaceTemplate, len(*file.DeclaredMojom Objects.Interfaces)) 75 tmplFile.Interfaces = make([]*InterfaceTemplate, len(*file.DeclaredMojom Objects.Interfaces))
61 for i, typeKey := range *file.DeclaredMojomObjects.Interfaces { 76 for i, typeKey := range *file.DeclaredMojomObjects.Interfaces {
62 tmplFile.Interfaces[i] = t.translateMojomInterface(typeKey) 77 tmplFile.Interfaces[i] = t.translateMojomInterface(typeKey)
63 } 78 }
64 79
65 tmplFile.Imports = []Import{ 80 tmplFile.Imports = []Import{
66 Import{PackagePath: "mojo/public/go/bindings", PackageName: "bin dings"}, 81 Import{PackagePath: "mojo/public/go/bindings", PackageName: "bin dings"},
67 Import{PackagePath: "fmt", PackageName: "fmt"}, 82 Import{PackagePath: "fmt", PackageName: "fmt"},
68 Import{PackagePath: "sort", PackageName: "sort"}, 83 Import{PackagePath: "sort", PackageName: "sort"},
69 } 84 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 return m 202 return m
188 } 203 }
189 204
190 func (t *translator) translateMojomMethod(mojomMethod mojom_types.MojomMethod, i nterfaceTemplate *InterfaceTemplate) (m *MethodTemplate) { 205 func (t *translator) translateMojomMethod(mojomMethod mojom_types.MojomMethod, i nterfaceTemplate *InterfaceTemplate) (m *MethodTemplate) {
191 m = new(MethodTemplate) 206 m = new(MethodTemplate)
192 m.Interface = interfaceTemplate 207 m.Interface = interfaceTemplate
193 m.MethodName = formatName(*mojomMethod.DeclData.ShortName) 208 m.MethodName = formatName(*mojomMethod.DeclData.ShortName)
194 m.FullName = fmt.Sprintf("%s_%s", interfaceTemplate.PrivateName, m.Metho dName) 209 m.FullName = fmt.Sprintf("%s_%s", interfaceTemplate.PrivateName, m.Metho dName)
195 m.Params = *t.translateMojomStructObject(mojomMethod.Parameters) 210 m.Params = *t.translateMojomStructObject(mojomMethod.Parameters)
196 m.Params.Name = fmt.Sprintf("%s_Params", m.FullName) 211 m.Params.Name = fmt.Sprintf("%s_Params", m.FullName)
197 » m.ResponseParams = t.translateMojomStructObject(*mojomMethod.ResponsePar ams) 212 » m.Params.PrivateName = privateName(m.Params.Name)
198 » m.ResponseParams.Name = fmt.Sprintf("%s_ResponseParams", m.FullName) 213 » if mojomMethod.ResponseParams != nil {
214 » » m.ResponseParams = t.translateMojomStructObject(*mojomMethod.Res ponseParams)
215 » » m.ResponseParams.Name = fmt.Sprintf("%s_ResponseParams", m.FullN ame)
216 » » m.ResponseParams.PrivateName = privateName(m.ResponseParams.Name )
217 » }
199 return m 218 return m
200 } 219 }
201 220
202 //////////////////////////////////////////////////////////////////////////////// 221 ////////////////////////////////////////////////////////////////////////////////
203 222
204 // Implements sort.Interface. 223 // Implements sort.Interface.
205 type structFieldSerializationSorter []mojom_types.StructField 224 type structFieldSerializationSorter []mojom_types.StructField
206 225
207 func (s structFieldSerializationSorter) Len() int { 226 func (s structFieldSerializationSorter) Len() int {
208 return len(s) 227 return len(s)
209 } 228 }
210 229
211 func (s structFieldSerializationSorter) Less(i, j int) bool { 230 func (s structFieldSerializationSorter) Less(i, j int) bool {
212 if s[i].Offset < s[j].Offset { 231 if s[i].Offset < s[j].Offset {
213 return true 232 return true
214 } 233 }
215 234
216 if s[i].Offset == s[j].Offset && s[i].Bit < s[j].Bit { 235 if s[i].Offset == s[j].Offset && s[i].Bit < s[j].Bit {
217 return true 236 return true
218 } 237 }
219 238
220 return false 239 return false
221 } 240 }
222 241
223 func (s structFieldSerializationSorter) Swap(i, j int) { 242 func (s structFieldSerializationSorter) Swap(i, j int) {
224 s[i], s[j] = s[j], s[i] 243 s[i], s[j] = s[j], s[i]
225 } 244 }
OLDNEW
« mojom/generators/go/templates/decoding.go ('K') | « mojom/generators/go/translator/mojom_file.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698