| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package codegen |
| |
| const tableTmpl = ` |
| {{- define "TableDeclaration" -}} |
| {{- range .Doc }} |
| ///{{ . -}} |
| {{- end }} |
| class {{ .Name }} extends $fidl.Table { |
| const {{ .Name }}({ |
| this.$unknownData, |
| {{- range .Members }} |
| this.{{ .Name }}{{ if .DefaultValue }}: {{ .DefaultValue }}{{ end }}, |
| {{- end }} |
| }); |
| |
| {{ .Name }}._(Map<int, dynamic> argv, this.$unknownData) |
| {{- if len .Members }}: |
| {{- range $index, $member := .Members -}} |
| {{- if $index }}, |
| {{ else }} {{ end -}} |
| {{ .Name }} = argv[{{ .Ordinal }}] |
| {{- end }}{{- end }}; |
| |
| @override |
| final Map<int, $fidl.UnknownRawData>? $unknownData; |
| {{- range .Members }} |
| {{- range .Doc }} |
| ///{{ . -}} |
| {{- end }} |
| final {{ .Type.OptionalDecl }} {{ .Name }}; |
| {{- end }} |
| |
| @override |
| dynamic $field(int index) { |
| switch (index) { |
| {{- range .Members }} |
| case {{ .Index }}: |
| return {{ .Name }}; |
| {{- end }} |
| } |
| return null; |
| } |
| |
| @override |
| Map<int, dynamic> get $fields { |
| return { |
| {{- range .Members }} |
| {{ .Ordinal }}: {{ .Name }}, |
| {{- end }} |
| }; |
| } |
| |
| static {{ .Name }} _ctor(Map<int, dynamic> argv, |
| [Map<int, $fidl.UnknownRawData>? unknownData]) => |
| {{ .Name }}._(argv, unknownData); |
| } |
| |
| // See fxbug.dev/7644: |
| // ignore: recursive_compile_time_constant |
| const $fidl.TableType<{{ .Name }}> {{ .TypeSymbol }} = {{ .TypeExpr }}; |
| {{ end }} |
| ` |