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

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

Issue 2091493002: Switch to the new go generator in the mojo tree. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Update names as suggested. 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
« no previous file with comments | « mojom/generators/go/templates/unions.go ('k') | mojom/generators/go/translator/types.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 11
12 "mojom/generated/mojom_files" 12 "mojom/generated/mojom_files"
13 "mojom/generated/mojom_types" 13 "mojom/generated/mojom_types"
14 "mojom/generators/common"
14 ) 15 )
15 16
16 type Translator interface { 17 type Translator interface {
17 TranslateMojomFile(fileName string) *TmplFile 18 TranslateMojomFile(fileName string) *TmplFile
18 } 19 }
19 20
20 type translator struct { 21 type translator struct {
21 fileGraph *mojom_files.MojomFileGraph 22 fileGraph *mojom_files.MojomFileGraph
22 // goTypeCache maps type keys to go type strings. 23 // goTypeCache maps type keys to go type strings.
23 » goTypeCache map[string]string 24 » goTypeCache map[string]string
25 » imports map[string]string
26 » currentFileName string
27 » Config common.GeneratorConfig
24 } 28 }
25 29
26 func NewTranslator(fileGraph *mojom_files.MojomFileGraph) (t *translator) { 30 func NewTranslator(fileGraph *mojom_files.MojomFileGraph) (t *translator) {
27 t = new(translator) 31 t = new(translator)
28 t.fileGraph = fileGraph 32 t.fileGraph = fileGraph
29 t.goTypeCache = map[string]string{} 33 t.goTypeCache = map[string]string{}
30 return t 34 return t
31 } 35 }
32 36
33 func (t *translator) TranslateMojomFile(fileName string) (tmplFile *TmplFile) { 37 func (t *translator) TranslateMojomFile(fileName string) (tmplFile *TmplFile) {
38 t.currentFileName = fileName
39 t.imports = map[string]string{}
40
34 tmplFile = new(TmplFile) 41 tmplFile = new(TmplFile)
35 file := t.fileGraph.Files[fileName] 42 file := t.fileGraph.Files[fileName]
36 43
37 tmplFile.PackageName = fileNameToPackageName(fileName) 44 tmplFile.PackageName = fileNameToPackageName(fileName)
38 45
39 if file.DeclaredMojomObjects.Structs == nil { 46 if file.DeclaredMojomObjects.Structs == nil {
40 file.DeclaredMojomObjects.Structs = &[]string{} 47 file.DeclaredMojomObjects.Structs = &[]string{}
41 } 48 }
42 tmplFile.Structs = make([]*StructTemplate, len(*file.DeclaredMojomObject s.Structs)) 49 tmplFile.Structs = make([]*StructTemplate, len(*file.DeclaredMojomObject s.Structs))
43 for i, typeKey := range *file.DeclaredMojomObjects.Structs { 50 for i, typeKey := range *file.DeclaredMojomObjects.Structs {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 tmplFile.Interfaces = make([]*InterfaceTemplate, len(*file.DeclaredMojom Objects.Interfaces)) 82 tmplFile.Interfaces = make([]*InterfaceTemplate, len(*file.DeclaredMojom Objects.Interfaces))
76 for i, typeKey := range *file.DeclaredMojomObjects.Interfaces { 83 for i, typeKey := range *file.DeclaredMojomObjects.Interfaces {
77 tmplFile.Interfaces[i] = t.translateMojomInterface(typeKey) 84 tmplFile.Interfaces[i] = t.translateMojomInterface(typeKey)
78 } 85 }
79 86
80 tmplFile.Imports = []Import{ 87 tmplFile.Imports = []Import{
81 Import{PackagePath: "mojo/public/go/bindings", PackageName: "bin dings"}, 88 Import{PackagePath: "mojo/public/go/bindings", PackageName: "bin dings"},
82 Import{PackagePath: "fmt", PackageName: "fmt"}, 89 Import{PackagePath: "fmt", PackageName: "fmt"},
83 Import{PackagePath: "sort", PackageName: "sort"}, 90 Import{PackagePath: "sort", PackageName: "sort"},
84 } 91 }
92
93 for pkgName, pkgPath := range t.imports {
94 tmplFile.Imports = append(
95 tmplFile.Imports,
96 Import{PackagePath: pkgPath, PackageName: pkgName},
97 )
98 }
85 return tmplFile 99 return tmplFile
86 } 100 }
87 101
88 func (t *translator) GetUserDefinedType(typeKey string) (mojomType mojom_types.U serDefinedType) { 102 func (t *translator) GetUserDefinedType(typeKey string) (mojomType mojom_types.U serDefinedType) {
89 return t.fileGraph.ResolvedTypes[typeKey] 103 return t.fileGraph.ResolvedTypes[typeKey]
90 } 104 }
91 105
92 func (t *translator) translateMojomStruct(typeKey string) (m *StructTemplate) { 106 func (t *translator) translateMojomStruct(typeKey string) (m *StructTemplate) {
93 m = new(StructTemplate) 107 m = new(StructTemplate)
94 u := t.GetUserDefinedType(typeKey) 108 u := t.GetUserDefinedType(typeKey)
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 if s[i].Offset == s[j].Offset && s[i].Bit < s[j].Bit { 249 if s[i].Offset == s[j].Offset && s[i].Bit < s[j].Bit {
236 return true 250 return true
237 } 251 }
238 252
239 return false 253 return false
240 } 254 }
241 255
242 func (s structFieldSerializationSorter) Swap(i, j int) { 256 func (s structFieldSerializationSorter) Swap(i, j int) {
243 s[i], s[j] = s[j], s[i] 257 s[i], s[j] = s[j], s[i]
244 } 258 }
OLDNEW
« no previous file with comments | « mojom/generators/go/templates/unions.go ('k') | mojom/generators/go/translator/types.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698