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

// fidl_experiment = output_index_json

#include <fidl/test.byteandbytes/cpp/natural_ostream.h>

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

std::ostream& fidl::ostream::Formatter<::test_byteandbytes::ByteAndBytes>::Format(std::ostream& os, const ::test_byteandbytes::ByteAndBytes& value) {
  os << "test_byteandbytes::ByteAndBytes";
  os << "{ ";
  os << "single_byte";
  os << " = " << fidl::ostream::Formatted<uint8_t>(value.single_byte()) << ", ";
  os << "}";
  return os;
}

namespace test_byteandbytes {

std::ostream& operator<<(std::ostream& os, const ::test_byteandbytes::ByteAndBytes& value) {
  return fidl::ostream::Formatter<::test_byteandbytes::ByteAndBytes>::Format(os, value);
}

#pragma clang diagnostic pop

}  // namespace test_byteandbytes
