| 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 and (not $info.IsUnion) $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 or $info.IsInterfaceRequest $info.IsHandle -}} |
| 19 encoder.WriteInvalidHandle() | 19 encoder.WriteInvalidHandle() |
| 20 {{- else if $info.IsInterface -}} |
| 21 encoder.WriteInvalidInterface() |
| 20 {{- end -}} | 22 {{- end -}} |
| 21 } else { | 23 } else { |
| 22 {{ template "NonNullableFieldEncodingTmpl" $info }} | 24 {{ template "NonNullableFieldEncodingTmpl" $info }} |
| 23 } | 25 } |
| 24 {{- else -}} | 26 {{- else -}} |
| 25 {{ template "NonNullableFieldEncodingTmpl" $info }} | 27 {{ template "NonNullableFieldEncodingTmpl" $info }} |
| 26 {{- end -}} | 28 {{- end -}} |
| 27 {{- end -}} | 29 {{- end -}} |
| 28 ` | 30 ` |
| 29 | 31 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 {{- if $info.IsNullable -}} | 65 {{- if $info.IsNullable -}} |
| 64 encoder.WriteNullUnion() | 66 encoder.WriteNullUnion() |
| 65 {{- else -}} | 67 {{- else -}} |
| 66 return &bindings.ValidationError{bindings.UnexpectedNullUnion, "unexpect
ed null union"} | 68 return &bindings.ValidationError{bindings.UnexpectedNullUnion, "unexpect
ed null union"} |
| 67 {{- end -}} | 69 {{- end -}} |
| 68 } else { | 70 } else { |
| 69 if err := {{$info.Identifier}}.Encode(encoder); err != nil { | 71 if err := {{$info.Identifier}}.Encode(encoder); err != nil { |
| 70 return err | 72 return err |
| 71 } | 73 } |
| 72 } | 74 } |
| 75 {{- else if $info.IsInterface -}} |
| 76 if err := encoder.{{$info.WriteFunction}}({{$info.Identifier}}.PassMessagePipe()
); err != nil { |
| 77 return err |
| 78 } |
| 73 {{- else if $info.IsArray -}} | 79 {{- else if $info.IsArray -}} |
| 74 {{ $elInfo := $info.ElementEncodingInfo -}} | 80 {{ $elInfo := $info.ElementEncodingInfo -}} |
| 75 encoder.StartArray(uint32(len({{$info.Identifier}})), {{$elInfo.BitSize}}) | 81 encoder.StartArray(uint32(len({{$info.Identifier}})), {{$elInfo.BitSize}}) |
| 76 for _, {{$elInfo.Identifier}} := range {{$info.Identifier}} { | 82 for _, {{$elInfo.Identifier}} := range {{$info.Identifier}} { |
| 77 {{ template "FieldEncodingTmpl" $elInfo }} | 83 {{ template "FieldEncodingTmpl" $elInfo }} |
| 78 } | 84 } |
| 79 if err := encoder.Finish(); err != nil { | 85 if err := encoder.Finish(); err != nil { |
| 80 return err | 86 return err |
| 81 } | 87 } |
| 82 {{- else if $info.IsMap -}} | 88 {{- else if $info.IsMap -}} |
| (...skipping 21 matching lines...) Expand all Loading... |
| 104 return err | 110 return err |
| 105 } | 111 } |
| 106 {{- end -}} | 112 {{- end -}} |
| 107 {{- end -}} | 113 {{- end -}} |
| 108 ` | 114 ` |
| 109 | 115 |
| 110 func initEncodingTemplates() { | 116 func initEncodingTemplates() { |
| 111 template.Must(goFileTmpl.Parse(nonNullableFieldEncodingTmplText)) | 117 template.Must(goFileTmpl.Parse(nonNullableFieldEncodingTmplText)) |
| 112 template.Must(goFileTmpl.Parse(fieldEncodingTmplText)) | 118 template.Must(goFileTmpl.Parse(fieldEncodingTmplText)) |
| 113 } | 119 } |
| OLD | NEW |