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

#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>

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__
}  // namespace internal
}  // namespace fidl
