| OLD | NEW |
| 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 ` |
| OLD | NEW |