{{/*
// 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:driver/WireMessagingHeader" -}}
fidl/{{ .LibraryDots }}/cpp/driver/wire_messaging.h
{{- end }}


{{- define "File:driver/WireMessagingHeader" -}}
  {{- UseWire -}}
  {{- SetTransport "Driver" -}}
  // WARNING: This file is machine generated by fidlgen.

  #pragma once

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

  #include <lib/fidl_driver/cpp/wire_messaging.h>

  {{ IfdefFuchsia }}
    #include <lib/fidl_driver/cpp/wire_client.h>
    #include <lib/fidl_driver/cpp/server.h>
    #include <lib/fidl/llcpp/connect_service.h>
    #include <lib/fidl/llcpp/server.h>
    #include <lib/fidl/llcpp/service_handler_interface.h>
    #include <lib/fidl/llcpp/sync_call.h>
  {{ EndifFuchsia }}

  {{ range .Dependencies -}}
    #include <{{ . | Filename "driver/WireMessagingHeader" }}>
  {{ end -}}


  {{- range (call .ProtocolsForTransport "Driver") }}
    {{ template "Protocol:ForwardDeclaration:WireMessagingHeader" . }}
  {{- end }}

  {{- range (call .ProtocolsForTransport "Driver") }}
    {{ template "Protocol:WireMessagingHeader" . }}
  {{- end }}

  {{ EnsureNamespace "fidl" }}

  {{- range (call .ProtocolsForTransport "Driver") }}
    {{ template "Protocol:ClientImpl:driver/MessagingHeader" . }}
  {{- end }}

  {{ UnsetTransport -}}
  {{ EndOfFile }}
{{ end }}


