{{/*
// Copyright 2021 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:NaturalTypesHeader" -}}
fidl/{{ .LibraryDots }}/cpp/natural_types.h
{{- end }}


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

#pragma once

#include <cinttypes>
#include <string>

#include <lib/fidl/cpp/natural_types.h>
#include <lib/fidl/cpp/natural_coding_traits.h>

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

{{ IfdefFuchsia }}
  {{ range .HandleTypes -}}
    #include <{{ . }}>
  {{ end -}}
  {{ if .ContainsDriverReferences -}}
    #include <lib/fidl_driver/cpp/natural_types.h>
  {{ end -}}
{{ EndifFuchsia }}

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

{{ range .Structs }}{{ template "Struct:ForwardDeclaration:NaturalTypesHeader" . }}{{ end }}
{{ range .Tables }}{{ template "Table:ForwardDeclaration:NaturalTypesHeader" . }}{{ end }}
{{ range .Unions }}{{ template "Union:ForwardDeclaration:NaturalTypesHeader" . }}{{ end }}

{{ range .Decls }}
  {{ if Eq .Kind Kinds.Struct }}{{ template "Struct:NaturalTypesHeader" . }}{{ end }}
  {{ if Eq .Kind Kinds.Table }}{{ template "Table:NaturalTypesHeader" . }}{{ end }}
  {{ if Eq .Kind Kinds.Union }}{{ template "Union:NaturalTypesHeader" . }}{{ end }}
{{- end }}
{{ range .Consts }}{{ template "Const:NaturalTypesHeader" . }}{{ end }}

{{ EnsureNamespace "fidl" }}
{{ range .Structs }}{{ template "Struct:Traits:NaturalTypesHeader" . }}{{ end }}
{{ range .Tables }}{{ template "Table:Traits:NaturalTypesHeader" . }}{{ end }}
{{ range .Unions }}{{ template "Union:Traits:NaturalTypesHeader" . }}{{ end }}
{{ range .Bits }}{{ template "Bits:Traits:NaturalTypesHeader" . }}{{ end }}
{{ range .Enums }}{{ template "Enum:Traits:NaturalTypesHeader" . }}{{ end }}

{{ EndOfFile }}
{{ end }}

