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

Side by Side Diff: mojom/generators/go/templates/declarations.go

Issue 2045063002: [New go generator] Implement declaring unions. (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 templates 5 package templates
6 6
7 const structDeclTmplText = ` 7 const structDeclTmplText = `
8 {{- define "StructDecl" -}} 8 {{- define "StructDecl" -}}
9 {{$struct := . -}} 9 {{$struct := . -}}
10 type {{$struct.Name}} struct { 10 type {{$struct.Name}} struct {
11 {{- range $field := $struct.Fields}} 11 {{- range $field := $struct.Fields}}
12 {{$field.Name}} {{$field.Type}} 12 {{$field.Name}} {{$field.Type}}
13 {{- end}} 13 {{- end}}
14 } 14 }
15 {{- end -}} 15 {{- end -}}
16 ` 16 `
17
18 const unionDeclTmplText = `
19 {{- define "UnionDecl" -}}
20 {{- $struct := . }}
21 {{ template "UnionInterfaceDecl" $struct }}
22
23 {{ template "UnknownUnionFieldDecl" $struct }}
24
25 {{- range $field := $struct.Field}}
26 {{ template "UnionFieldDecl" $field }}
27 {{- end}}
28 {{- end -}}
29 `
30
31 const unionInterfaceDeclTmplText = `
32 {{- define "UnionInterfaceDecl" -}}
33 {{$union := . -}}
34 type {{$union.Name}} interface {
35 Tag() uint32
36 Interface() interface{}
37 __Reflect(__SomeUnionReflect)
38 Encode(encoder *bindings.Encoder) error
39 }
40
41 type __{{$union.Name}}Reflect struct {
42 {{- range $field := $union.Fields}}
43 {{$field.Name}} {{$field.Type}}
44 {{- end}}
45 }
46 {{- end -}}
47 `
48
49 const unionFieldDeclTmplText = `
50 {{- define "UnionFieldDecl" -}}
51 {{$field := . -}}
52 {{$unionName := $field.Union.Name -}}
53 type {{$unionName}}{{$field.Name}} struct{ Value {{$field.Type}} }
54 func (u *{{$unionName}}{{$field.Name}}) Tag() uint32 { return {{$field.Tag}} }
55 func (u *{{$unionName}}{{$field.Name}}) Interface() interface{} { return u.Value }
56 func (u *{{$unionName}}{{$field.Name}}) __Reflect(__{{$unionName}}Reflect) {}
57 {{- end -}}
58 `
59
60 const unknownUnionFieldDeclTmplText = `
61 {{- define "UnknownUnionFieldDecl" -}}
62 {{$union := . -}}
63 type {{$union.Name}}Unknown struct { tag uint32 }
64 func (u *{{$union.Name}}Unknown) Tag() uint32 { return u.tag }
65 func (u *{{$union.Name}}Unknown) Interface() interface{} { return nil }
66 func (u *{{$union.Name}}Unknown) __Reflect(__{{$union.Name}}Reflect) {}
67 {{- end -}}
68 `
OLDNEW
« no previous file with comments | « no previous file | mojom/generators/go/templates/declarations_test.go » ('j') | mojom/generators/go/translator/translator.go » ('J')

Powered by Google App Engine
This is Rietveld 408576698