blob: b18d2e7ed70e8497f85dee0f34a2cc470a26b135 [file] [log] [blame]
{{/*
// 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.
*/}}
{{- 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 .IsValueType }}
impl fidl::encoding::Persistable for {{ .Name }} {}
{{- end }}
{{ if .UseFidlStructCopy -}}
fidl_struct_copy! {
{{- else -}}
fidl_struct! {
{{- end }}
name: {{ .Name }},
members: [
{{- range .Members }}
{{ .Name }} {
ty: {{ .Type }},
offset_v1: {{ .OffsetV1 }},
offset_v2: {{ .OffsetV2 }},
{{- if and .HasHandleMetadata (not $.UseFidlStructCopy) }}
handle_metadata: {
handle_subtype: {{ .HandleSubtype }},
handle_rights: {{ .HandleRights }},
},
{{- end }}
},
{{- end }}
],
padding_v1: [
{{- if .UseFidlStructCopy -}}
{{- range .FlattenedPaddingMarkersV1 }}
{
ty: {{ .Type }},
offset: {{ .Offset }},
mask: {{ .Mask }},
},
{{- end }}
{{- else -}}
{{- range .PaddingMarkersV1 }}
{
ty: {{ .Type }},
offset: {{ .Offset }},
mask: {{ .Mask }},
},
{{- end }}
{{- end -}}
],
padding_v2: [
{{- if .UseFidlStructCopy -}}
{{- range .FlattenedPaddingMarkersV2 }}
{
ty: {{ .Type }},
offset: {{ .Offset }},
mask: {{ .Mask }},
},
{{- end }}
{{- else -}}
{{- range .PaddingMarkersV2 }}
{
ty: {{ .Type }},
offset: {{ .Offset }},
mask: {{ .Mask }},
},
{{- end }}
{{- end -}}
],
size_v1: {{ .SizeV1 }},
size_v2: {{ .SizeV2 }},
align_v1: {{ .AlignmentV1 }},
align_v2: {{ .AlignmentV2 }},
}
{{- else }}
{{- range .DocComments}}
///{{ . }}
{{- end}}
#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct {{ .Name }};
{{ if .IsValueType }}
impl fidl::encoding::Persistable for {{ .Name }} {}
{{- end }}
fidl_empty_struct!({{ .Name }});
{{- end }}
{{- end }}