| 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 import ( | 7 import ( |
| 8 "text/template" | 8 "text/template" |
| 9 ) | 9 ) |
| 10 | 10 |
| 11 const fieldEncodingTmplText = ` | 11 const fieldEncodingTmplText = ` |
| 12 {{- define "FieldEncodingTmpl" -}} | 12 {{- define "FieldEncodingTmpl" -}} |
| 13 {{- $info := . -}} | 13 {{- $info := . -}} |
| 14 {{- if $info.IsNullable -}} | 14 {{- if and (not $info.IsUnion) $info.IsNullable -}} |
| 15 if {{$info.Identifier}} == nil { | 15 if {{$info.Identifier}} == nil { |
| 16 {{- if $info.IsPointer -}} | 16 {{- if $info.IsPointer -}} |
| 17 encoder.WriteNullPointer() | 17 encoder.WriteNullPointer() |
| 18 {{- else if $info.IsHandle -}} | 18 {{- else if $info.IsHandle -}} |
| 19 encoder.WriteInvalidHandle() | 19 encoder.WriteInvalidHandle() |
| 20 {{- end -}} | 20 {{- end -}} |
| 21 } else { | 21 } else { |
| 22 {{ template "NonNullableFieldEncodingTmpl" $info }} | 22 {{ template "NonNullableFieldEncodingTmpl" $info }} |
| 23 } | 23 } |
| 24 {{- else -}} | 24 {{- else -}} |
| (...skipping 19 matching lines...) Expand all Loading... |
| 44 if err := encoder.WriteHandle(*({{$info.Identifier}})); err != nil { | 44 if err := encoder.WriteHandle(*({{$info.Identifier}})); err != nil { |
| 45 {{- else -}} | 45 {{- else -}} |
| 46 if err := encoder.WriteHandle({{$info.Identifier}}); err != nil { | 46 if err := encoder.WriteHandle({{$info.Identifier}}); err != nil { |
| 47 {{- end -}} | 47 {{- end -}} |
| 48 return err | 48 return err |
| 49 } | 49 } |
| 50 {{- else if $info.IsStruct -}} | 50 {{- else if $info.IsStruct -}} |
| 51 if err := {{$info.Identifier}}.Encode(encoder); err != nil { | 51 if err := {{$info.Identifier}}.Encode(encoder); err != nil { |
| 52 return err | 52 return err |
| 53 } | 53 } |
| 54 {{- else if $info.IsUnion -}} |
| 55 {{- if $info.IsPointer -}} |
| 56 encoder.StartNestedUnion() |
| 57 {{end -}} |
| 58 if {{$info.Identifier}} == nil { |
| 59 {{- if $info.IsNullable -}} |
| 60 encoder.WriteNullUnion() |
| 61 {{- else -}} |
| 62 return &bindings.ValidationError{bindings.UnexpectedNullUnion, "unexpect
ed null union"} |
| 63 {{- end -}} |
| 64 } else { |
| 65 if err := {{$info.Identifier}}.Encode(encoder); err != nil { |
| 66 return err |
| 67 } |
| 68 } |
| 54 {{- else if $info.IsArray -}} | 69 {{- else if $info.IsArray -}} |
| 55 {{ $elInfo := $info.ElementEncodingInfo -}} | 70 {{ $elInfo := $info.ElementEncodingInfo -}} |
| 56 encoder.StartArray(uint32(len({{$info.Identifier}})), {{$elInfo.BitSize}}) | 71 encoder.StartArray(uint32(len({{$info.Identifier}})), {{$elInfo.BitSize}}) |
| 57 for _, {{$elInfo.Identifier}} := range {{$info.Identifier}} { | 72 for _, {{$elInfo.Identifier}} := range {{$info.Identifier}} { |
| 58 {{ template "FieldEncodingTmpl" $elInfo }} | 73 {{ template "FieldEncodingTmpl" $elInfo }} |
| 59 } | 74 } |
| 60 if err := encoder.Finish(); err != nil { | 75 if err := encoder.Finish(); err != nil { |
| 61 return err | 76 return err |
| 62 } | 77 } |
| 63 {{- else if $info.IsMap -}} | 78 {{- else if $info.IsMap -}} |
| (...skipping 21 matching lines...) Expand all Loading... |
| 85 return err | 100 return err |
| 86 } | 101 } |
| 87 {{- end -}} | 102 {{- end -}} |
| 88 {{- end -}} | 103 {{- end -}} |
| 89 ` | 104 ` |
| 90 | 105 |
| 91 func initEncodingTemplates() { | 106 func initEncodingTemplates() { |
| 92 template.Must(goFileTmpl.Parse(nonNullableFieldEncodingTmplText)) | 107 template.Must(goFileTmpl.Parse(nonNullableFieldEncodingTmplText)) |
| 93 template.Must(goFileTmpl.Parse(fieldEncodingTmplText)) | 108 template.Must(goFileTmpl.Parse(fieldEncodingTmplText)) |
| 94 } | 109 } |
| OLD | NEW |