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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.escaping/cpp/markers.h>
#include <fidl/test.escaping/cpp/natural_types.h>
#include <fidl/test.escaping/cpp/wire_types.h>
#ifdef __Fuchsia__
#include <fidl/test.escaping/cpp/natural_messaging.h>
#include <fidl/test.escaping/cpp/wire_messaging.h>

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

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

namespace fidl {
namespace internal {

template <>
struct WireNaturalConversionTraits<::test_escaping::wire::DocCommentWithQuotes, ::test_escaping::DocCommentWithQuotes> {
  static ::test_escaping::DocCommentWithQuotes ToNatural(::test_escaping::wire::DocCommentWithQuotes src);
  static ::test_escaping::wire::DocCommentWithQuotes ToWire(fidl::AnyArena& arena, ::test_escaping::DocCommentWithQuotes src);
};

template <>
struct NaturalTypeForWireType<::test_escaping::wire::DocCommentWithQuotes> {
  using type = ::test_escaping::DocCommentWithQuotes;
};
template <>
struct WireTypeForNaturalType<::test_escaping::DocCommentWithQuotes> {
  using type = ::test_escaping::wire::DocCommentWithQuotes;
};

#ifdef __Fuchsia__

#endif  // __Fuchsia__
#pragma clang diagnostic pop

}  // namespace internal
}  // namespace fidl
