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

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

namespace test_typealiases {
extern "C" const fidl_type_t test_typealiases_obj_typeTable;
}  // namespace test_typealiases
size_t fidl::internal::DisplayError<::test_typealiases::ObjType>::Format(
    const ::test_typealiases::ObjType& value, char* destination,
    size_t capacity) {
  const char* name = [&]() -> const char* {
    switch (static_cast<uint32_t>(value)) {
      case 0u:
        return "NONE";
      case 4u:
        return "CHANNEL";
      default:
        return nullptr;
    }
  }();
  return ::fidl::internal::FormatApplicationError(
      static_cast<uint32_t>(value), name,
      &::test_typealiases::test_typealiases_obj_typeTable, destination,
      capacity);
}
