| // 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 structTmpl = ` |
| {{- define "StructDeclaration" }} |
| |
| {{- if .Members }} |
| |
| {{- range .DocComments}} |
| ///{{ . }} |
| {{- end}} |
| {{ .Derives }} |
| {{- if .UseFidlStructCopy }} |
| #[repr(C)] |
| {{- end }} |
| pub struct {{ .Name }} { |
| {{- range .Members }} |
| {{- range .DocComments}} |
| ///{{ . }} |
| {{- end}} |
| pub {{ .Name }}: {{ .Type }}, |
| {{- end }} |
| } |
| |
| {{ if .UseFidlStructCopy -}} |
| fidl_struct_copy! { |
| {{- else -}} |
| fidl_struct! { |
| {{- end }} |
| name: {{ .Name }}, |
| members: [ |
| {{- range .Members }} |
| {{ .Name }} { |
| ty: {{ .Type }}, |
| offset_v1: {{ .Offset }}, |
| {{- if and .HasHandleMetadata (not $.UseFidlStructCopy) }} |
| handle_metadata: { |
| handle_subtype: {{ .HandleSubtype }}, |
| handle_rights: {{ .HandleRights }}, |
| }, |
| {{- end }} |
| }, |
| {{- end }} |
| ], |
| padding: [ |
| {{- if .UseFidlStructCopy -}} |
| {{- range .FlattenedPaddingMarkers }} |
| { |
| ty: {{ .Type }}, |
| offset: {{ .Offset }}, |
| mask: {{ .Mask }}, |
| }, |
| {{- end }} |
| {{- else -}} |
| {{- range .PaddingMarkers }} |
| { |
| ty: {{ .Type }}, |
| offset: {{ .Offset }}, |
| mask: {{ .Mask }}, |
| }, |
| {{- end }} |
| {{- end -}} |
| ], |
| size_v1: {{ .Size }}, |
| align_v1: {{ .Alignment }}, |
| } |
| {{- else }} |
| |
| {{- range .DocComments}} |
| ///{{ . }} |
| {{- end}} |
| #[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] |
| pub struct {{ .Name }}; |
| |
| fidl_empty_struct!({{ .Name }}); |
| |
| {{- end }} |
| {{- end }} |
| ` |