|  | // 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. | 
|  |  | 
|  | package codegen | 
|  |  | 
|  | const sourceFileTmpl = ` | 
|  | {{- define "GenerateSourceFile" -}} | 
|  | // WARNING: This file is machine generated by fidlgen. | 
|  |  | 
|  | #![allow( | 
|  | unused_parens, // one-element-tuple-case is not a tuple | 
|  | unused_mut, // not all args require mutation, but many do | 
|  | nonstandard_style, // auto-caps does its best, but is not always successful | 
|  | )] | 
|  |  | 
|  | #![recursion_limit="512"] | 
|  |  | 
|  | #[cfg(target_os = "fuchsia")] | 
|  | #[allow(unused_imports)] | 
|  | use fuchsia_zircon as zx; | 
|  |  | 
|  | #[allow(unused_imports)] | 
|  | use { | 
|  | bitflags::bitflags, | 
|  | fuchsia_zircon_status as zx_status, | 
|  | futures::future::{self, MaybeDone, TryFutureExt}, | 
|  | fidl::{ | 
|  | fidl_bits, | 
|  | fidl_empty_struct, | 
|  | fidl_enum, | 
|  | fidl_struct_copy, | 
|  | fidl_struct, | 
|  | fidl_table, | 
|  | fidl_union, | 
|  | wrap_handle_metadata, | 
|  | encoding::{Encodable as _, Decodable as _}, | 
|  | client::{ | 
|  | QueryResponseFut, | 
|  | decode_transaction_body_fut, | 
|  | }, | 
|  | }, | 
|  | }; | 
|  |  | 
|  | {{/* | 
|  | For FIDL tracing, the Rust bindings are assigned a bindings enum of 6. See | 
|  | fidl-trace/trace_impl.cc, enum LogContext for more context. | 
|  |  | 
|  | This constant will be unused in a build that has FIDL tracing disabled, | 
|  | since this constant is used only within trace_duration! macros that will | 
|  | expand to no-ops. However, the constant needs to be present, since the | 
|  | constant is evaluated before the macro expansion. | 
|  |  | 
|  | The constant starts with an underscore to avoid clashing with FIDL | 
|  | declarations, which are not allowed to start with underscores. | 
|  | */ -}} | 
|  | {{ if .Protocols -}} | 
|  | const _FIDL_TRACE_BINDINGS_RUST: u32 = 6; | 
|  | {{ end -}} | 
|  |  | 
|  | {{ range $bits := .Bits -}} | 
|  | {{ template "BitsDeclaration" $bits }} | 
|  | {{ end -}} | 
|  | {{ range $const := .Consts -}} | 
|  | {{ template "ConstDeclaration" $const }} | 
|  | {{ end -}} | 
|  | {{ range $enum := .Enums -}} | 
|  | {{ template "EnumDeclaration" $enum }} | 
|  | {{ end -}} | 
|  | {{ range $result := .Results -}} | 
|  | {{ template "ResultDeclaration" $result}} | 
|  | {{ end -}} | 
|  | {{ range $union := .Unions -}} | 
|  | {{ template "UnionDeclaration" $union }} | 
|  | {{ end -}} | 
|  | {{ range $struct := .Structs -}} | 
|  | {{ template "StructDeclaration" $struct }} | 
|  | {{ end -}} | 
|  | {{ range $table := .Tables -}} | 
|  | {{ template "TableDeclaration" $table }} | 
|  | {{ end -}} | 
|  | {{ range $hmw := .HandleMetadataWrappers -}} | 
|  | {{ template "HandleMetadataWrapperDeclaration" $hmw }} | 
|  | {{ end -}} | 
|  | {{ range $protocol := .Protocols -}} | 
|  | {{ range $transport, $_ := .Transports -}} | 
|  | {{ if eq $transport "Channel" -}}{{ template "ProtocolDeclaration" $protocol }}{{- end }} | 
|  | {{ end -}} | 
|  | {{ end -}} | 
|  | {{ range $service := .Services -}} | 
|  | {{ range $transport, $_ := .Transports -}} | 
|  | {{ if eq $transport "Channel" -}}{{ template "ServiceDeclaration" $service }}{{- end }} | 
|  | {{ end -}} | 
|  | {{ end -}} | 
|  | {{- end -}} | 
|  | ` |