{{/*
// 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:NaturalMessagingSource" -}}
  fidl/{{ .LibraryDots }}/cpp/natural_messaging.cc
{{- end }}


{{- define "File:NaturalMessagingSource" -}}
{{- UseUnified -}}
{{- SetTransport "Channel" -}}

// WARNING: This file is machine generated by fidlgen_llcpp.

{{/* When the library name only has one component, it is always special.
Those libraries should not define business logic types or protocols, and we
do not support them in the bindings. */}}
{{- if not .SingleComponentLibraryName }}

#include <{{ .Library | Filename "NaturalMessagingHeader" }}>

{{/* Define natural extensions to the wire messaging layer. */}}
{{- range .Decls }}
{{- if Eq .Kind Kinds.Protocol }}{{ $protocol := . }}
{{- range $transport, $_ := .Transports }}
{{- if eq $transport "Channel" -}}
  {{- template "Protocol:Details:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- template "Protocol:Client:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- template "Protocol:Caller:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- template "Protocol:EventHandler:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- template "Protocol:EventSender:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- template "Protocol:Interface:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- template "Protocol:Dispatcher:NaturalMessagingSource" $protocol }}
{{ "" }}
  {{- /* TODO(fxbug.dev/60240): Add more */}}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

{{- end }}{{/* if not SingleComponentLibraryName */}}

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

