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

#include <fidl/test.versions/cpp/common_types.h>

namespace test_versions {
extern "C" const fidl_type_t test_versions_EnumTable;
}  // namespace test_versions
size_t fidl::internal::DisplayError<::test_versions::Enum>::Format(
    const ::test_versions::Enum& value, char* destination, size_t capacity) {
  const char* name = [&]() -> const char* {
    switch (static_cast<uint32_t>(value)) {
      case 1u:
        return "A";
      default:
        return nullptr;
    }
  }();
  return ::fidl::internal::FormatApplicationError(
      static_cast<uint32_t>(value), name,
      &::test_versions::test_versions_EnumTable, destination, capacity);
}
