{{/*
// Copyright 2022 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 "Filename:TypeConversionsHeader" -}}
fidl/{{ .LibraryDots }}/cpp/type_conversions.h
{{- end }}

{{- define "File:TypeConversionsHeader" -}}
// WARNING: This file is machine generated by fidlgen.

#pragma once

#include <{{ .Library | Filename "Markers" }}>
#include <{{ .Library | Filename "WireTypesHeader" }}>
#include <{{ .Library | Filename "NaturalTypesHeader" }}>

{{- IfdefFuchsia -}}
#include <{{ .Library | Filename "WireMessagingHeader" }}>
#include <{{ .Library | Filename "NaturalMessagingHeader" }}>
{{- EndifFuchsia -}}

#include <lib/fidl/cpp/wire_natural_conversions.h>

{{ range .Dependencies -}}
  #include <{{ . | Filename "TypeConversionsHeader" }}>
{{ end -}}

{{ EnsureNamespace "fidl::internal" }}
{{ range .Structs }}{{ template "Struct:Traits:TypeConversionsHeader" . }}{{ end }}
{{ range .Tables }}{{ template "Table:Traits:TypeConversionsHeader" . }}{{ end }}
{{ range .Unions }}{{ template "Union:Traits:TypeConversionsHeader" . }}{{ end }}

{{ IfdefFuchsia -}}
{{- range .Decls }}
{{- if Eq .Kind Kinds.Protocol }}{{ $protocol := . }}
{{- range $transport, $_ := .Transports }}
{{- if eq $transport "Channel" -}}

{{- range $protocol.ClientMethods }}
{{ template "Method:Request:Traits:TypeConversionsHeader" . }}
{{- end }}

{{- range $protocol.TwoWayMethods }}
{{ template "Method:Response:Traits:TypeConversionsHeader" . }}
{{- end }}

{{- range $protocol.Events }}
{{ template "Method:Event:Traits:TypeConversionsHeader" . }}
{{- end }}

{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- EndifFuchsia -}}

{{- EndOfFile }}
{{ end }}
